{"version":3,"file":"pwc-smartplayer.9182c2f9.chunk.js","mappings":"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","sources":["../node_modules/@techsmith/techsmith-smartplayer/dist/techsmith-smart-player.esm.js"],"sourcesContent":["/**\n * TechSmith Smart Player v5.117.0\n */\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nvar pep = {exports: {}};\n\n/*!\n * PEP v0.4.3 | https://github.com/jquery/PEP\n * Copyright jQuery Foundation and other contributors | http://jquery.org/license\n */\n(function (module, exports) {\n (function (global, factory) {\n module.exports = factory() ;\n })(commonjsGlobal, function () {\n\n /**\n * This is the constructor for new PointerEvents.\n *\n * New Pointer Events must be given a type, and an optional dictionary of\n * initialization properties.\n *\n * Due to certain platform requirements, events returned from the constructor\n * identify as MouseEvents.\n *\n * @constructor\n * @param {String} inType The type of the event to create.\n * @param {Object} [inDict] An optional dictionary of initial event properties.\n * @return {Event} A new PointerEvent of type `inType`, initialized with properties from `inDict`.\n */\n var MOUSE_PROPS = ['bubbles', 'cancelable', 'view', 'detail', 'screenX', 'screenY', 'clientX', 'clientY', 'ctrlKey', 'altKey', 'shiftKey', 'metaKey', 'button', 'relatedTarget', 'pageX', 'pageY'];\n var MOUSE_DEFAULTS = [false, false, null, null, 0, 0, 0, 0, false, false, false, false, 0, null, 0, 0];\n function PointerEvent(inType, inDict) {\n inDict = inDict || Object.create(null);\n var e = document.createEvent('Event');\n e.initEvent(inType, inDict.bubbles || false, inDict.cancelable || false);\n\n // define inherited MouseEvent properties\n // skip bubbles and cancelable since they're set above in initEvent()\n for (var i = 2, p; i < MOUSE_PROPS.length; i++) {\n p = MOUSE_PROPS[i];\n e[p] = inDict[p] || MOUSE_DEFAULTS[i];\n }\n e.buttons = inDict.buttons || 0;\n\n // Spec requires that pointers without pressure specified use 0.5 for down\n // state and 0 for up state.\n var pressure = 0;\n if (inDict.pressure && e.buttons) {\n pressure = inDict.pressure;\n } else {\n pressure = e.buttons ? 0.5 : 0;\n }\n\n // add x/y properties aliased to clientX/Y\n e.x = e.clientX;\n e.y = e.clientY;\n\n // define the properties of the PointerEvent interface\n e.pointerId = inDict.pointerId || 0;\n e.width = inDict.width || 0;\n e.height = inDict.height || 0;\n e.pressure = pressure;\n e.tiltX = inDict.tiltX || 0;\n e.tiltY = inDict.tiltY || 0;\n e.twist = inDict.twist || 0;\n e.tangentialPressure = inDict.tangentialPressure || 0;\n e.pointerType = inDict.pointerType || '';\n e.hwTimestamp = inDict.hwTimestamp || 0;\n e.isPrimary = inDict.isPrimary || false;\n return e;\n }\n\n /**\n * This module implements a map of pointer states\n */\n var USE_MAP = window.Map && window.Map.prototype.forEach;\n var PointerMap = USE_MAP ? Map : SparseArrayMap;\n function SparseArrayMap() {\n this.array = [];\n this.size = 0;\n }\n SparseArrayMap.prototype = {\n set: function set(k, v) {\n if (v === undefined) {\n return this[\"delete\"](k);\n }\n if (!this.has(k)) {\n this.size++;\n }\n this.array[k] = v;\n },\n has: function has(k) {\n return this.array[k] !== undefined;\n },\n \"delete\": function _delete(k) {\n if (this.has(k)) {\n delete this.array[k];\n this.size--;\n }\n },\n get: function get(k) {\n return this.array[k];\n },\n clear: function clear() {\n this.array.length = 0;\n this.size = 0;\n },\n // return value, key, map\n forEach: function forEach(callback, thisArg) {\n return this.array.forEach(function (v, k) {\n callback.call(thisArg, v, k, this);\n }, this);\n }\n };\n var CLONE_PROPS = [\n // MouseEvent\n 'bubbles', 'cancelable', 'view', 'detail', 'screenX', 'screenY', 'clientX', 'clientY', 'ctrlKey', 'altKey', 'shiftKey', 'metaKey', 'button', 'relatedTarget',\n // DOM Level 3\n 'buttons',\n // PointerEvent\n 'pointerId', 'width', 'height', 'pressure', 'tiltX', 'tiltY', 'pointerType', 'hwTimestamp', 'isPrimary',\n // event instance\n 'type', 'target', 'currentTarget', 'which', 'pageX', 'pageY', 'timeStamp'];\n var CLONE_DEFAULTS = [\n // MouseEvent\n false, false, null, null, 0, 0, 0, 0, false, false, false, false, 0, null,\n // DOM Level 3\n 0,\n // PointerEvent\n 0, 0, 0, 0, 0, 0, '', 0, false,\n // event instance\n '', null, null, 0, 0, 0, 0];\n var BOUNDARY_EVENTS = {\n 'pointerover': 1,\n 'pointerout': 1,\n 'pointerenter': 1,\n 'pointerleave': 1\n };\n var HAS_SVG_INSTANCE = typeof SVGElementInstance !== 'undefined';\n\n /**\n * This module is for normalizing events. Mouse and Touch events will be\n * collected here, and fire PointerEvents that have the same semantics, no\n * matter the source.\n * Events fired:\n * - pointerdown: a pointing is added\n * - pointerup: a pointer is removed\n * - pointermove: a pointer is moved\n * - pointerover: a pointer crosses into an element\n * - pointerout: a pointer leaves an element\n * - pointercancel: a pointer will no longer generate events\n */\n var dispatcher = {\n pointermap: new PointerMap(),\n eventMap: Object.create(null),\n captureInfo: Object.create(null),\n // Scope objects for native events.\n // This exists for ease of testing.\n eventSources: Object.create(null),\n eventSourceList: [],\n /**\n * Add a new event source that will generate pointer events.\n *\n * `inSource` must contain an array of event names named `events`, and\n * functions with the names specified in the `events` array.\n * @param {string} name A name for the event source\n * @param {Object} source A new source of platform events.\n */\n registerSource: function registerSource(name, source) {\n var s = source;\n var newEvents = s.events;\n if (newEvents) {\n newEvents.forEach(function (e) {\n if (s[e]) {\n this.eventMap[e] = s[e].bind(s);\n }\n }, this);\n this.eventSources[name] = s;\n this.eventSourceList.push(s);\n }\n },\n register: function register(element) {\n var l = this.eventSourceList.length;\n for (var i = 0, es; i < l && (es = this.eventSourceList[i]); i++) {\n // call eventsource register\n es.register.call(es, element);\n }\n },\n unregister: function unregister(element) {\n var l = this.eventSourceList.length;\n for (var i = 0, es; i < l && (es = this.eventSourceList[i]); i++) {\n // call eventsource register\n es.unregister.call(es, element);\n }\n },\n contains: /*scope.external.contains || */function contains(container, contained) {\n try {\n return container.contains(contained);\n } catch (ex) {\n // most likely: https://bugzilla.mozilla.org/show_bug.cgi?id=208427\n return false;\n }\n },\n // EVENTS\n down: function down(inEvent) {\n inEvent.bubbles = true;\n this.fireEvent('pointerdown', inEvent);\n },\n move: function move(inEvent) {\n inEvent.bubbles = true;\n this.fireEvent('pointermove', inEvent);\n },\n up: function up(inEvent) {\n inEvent.bubbles = true;\n this.fireEvent('pointerup', inEvent);\n },\n enter: function enter(inEvent) {\n inEvent.bubbles = false;\n this.fireEvent('pointerenter', inEvent);\n },\n leave: function leave(inEvent) {\n inEvent.bubbles = false;\n this.fireEvent('pointerleave', inEvent);\n },\n over: function over(inEvent) {\n inEvent.bubbles = true;\n this.fireEvent('pointerover', inEvent);\n },\n out: function out(inEvent) {\n inEvent.bubbles = true;\n this.fireEvent('pointerout', inEvent);\n },\n cancel: function cancel(inEvent) {\n inEvent.bubbles = true;\n this.fireEvent('pointercancel', inEvent);\n },\n leaveOut: function leaveOut(event) {\n this.out(event);\n this.propagate(event, this.leave, false);\n },\n enterOver: function enterOver(event) {\n this.over(event);\n this.propagate(event, this.enter, true);\n },\n // LISTENER LOGIC\n eventHandler: function eventHandler(inEvent) {\n // This is used to prevent multiple dispatch of pointerevents from\n // platform events. This can happen when two elements in different scopes\n // are set up to create pointer events, which is relevant to Shadow DOM.\n if (inEvent._handledByPE) {\n return;\n }\n var type = inEvent.type;\n var fn = this.eventMap && this.eventMap[type];\n if (fn) {\n fn(inEvent);\n }\n inEvent._handledByPE = true;\n },\n // set up event listeners\n listen: function listen(target, events) {\n events.forEach(function (e) {\n this.addEvent(target, e);\n }, this);\n },\n // remove event listeners\n unlisten: function unlisten(target, events) {\n events.forEach(function (e) {\n this.removeEvent(target, e);\n }, this);\n },\n addEvent: /*scope.external.addEvent || */function addEvent(target, eventName) {\n target.addEventListener(eventName, this.boundHandler);\n },\n removeEvent: /*scope.external.removeEvent || */function removeEvent(target, eventName) {\n target.removeEventListener(eventName, this.boundHandler);\n },\n // EVENT CREATION AND TRACKING\n /**\n * Creates a new Event of type `inType`, based on the information in\n * `inEvent`.\n *\n * @param {string} inType A string representing the type of event to create\n * @param {Event} inEvent A platform event with a target\n * @return {Event} A PointerEvent of type `inType`\n */\n makeEvent: function makeEvent(inType, inEvent) {\n // relatedTarget must be null if pointer is captured\n if (this.captureInfo[inEvent.pointerId]) {\n inEvent.relatedTarget = null;\n }\n var e = new PointerEvent(inType, inEvent);\n if (inEvent.preventDefault) {\n e.preventDefault = inEvent.preventDefault;\n }\n e._target = e._target || inEvent.target;\n return e;\n },\n // make and dispatch an event in one call\n fireEvent: function fireEvent(inType, inEvent) {\n var e = this.makeEvent(inType, inEvent);\n return this.dispatchEvent(e);\n },\n /**\n * Returns a snapshot of inEvent, with writable properties.\n *\n * @param {Event} inEvent An event that contains properties to copy.\n * @return {Object} An object containing shallow copies of `inEvent`'s\n * properties.\n */\n cloneEvent: function cloneEvent(inEvent) {\n var eventCopy = Object.create(null);\n var p;\n for (var i = 0; i < CLONE_PROPS.length; i++) {\n p = CLONE_PROPS[i];\n eventCopy[p] = inEvent[p] || CLONE_DEFAULTS[i];\n\n // Work around SVGInstanceElement shadow tree\n // Return the element that is represented by the instance for Safari, Chrome, IE.\n // This is the behavior implemented by Firefox.\n if (HAS_SVG_INSTANCE && (p === 'target' || p === 'relatedTarget')) {\n if (eventCopy[p] instanceof SVGElementInstance) {\n eventCopy[p] = eventCopy[p].correspondingUseElement;\n }\n }\n }\n\n // keep the semantics of preventDefault\n if (inEvent.preventDefault) {\n eventCopy.preventDefault = function () {\n inEvent.preventDefault();\n };\n }\n return eventCopy;\n },\n getTarget: function getTarget(inEvent) {\n var capture = this.captureInfo[inEvent.pointerId];\n if (!capture) {\n return inEvent._target;\n }\n if (inEvent._target === capture || !(inEvent.type in BOUNDARY_EVENTS)) {\n return capture;\n }\n },\n propagate: function propagate(event, fn, propagateDown) {\n var target = event.target;\n var targets = [];\n\n // Order of conditions due to document.contains() missing in IE.\n while (target !== document && !target.contains(event.relatedTarget)) {\n targets.push(target);\n target = target.parentNode;\n\n // Touch: Do not propagate if node is detached.\n if (!target) {\n return;\n }\n }\n if (propagateDown) {\n targets.reverse();\n }\n targets.forEach(function (target) {\n event.target = target;\n fn.call(this, event);\n }, this);\n },\n setCapture: function setCapture(inPointerId, inTarget, skipDispatch) {\n if (this.captureInfo[inPointerId]) {\n this.releaseCapture(inPointerId, skipDispatch);\n }\n this.captureInfo[inPointerId] = inTarget;\n this.implicitRelease = this.releaseCapture.bind(this, inPointerId, skipDispatch);\n document.addEventListener('pointerup', this.implicitRelease);\n document.addEventListener('pointercancel', this.implicitRelease);\n var e = new PointerEvent('gotpointercapture');\n e.pointerId = inPointerId;\n e._target = inTarget;\n if (!skipDispatch) {\n this.asyncDispatchEvent(e);\n }\n },\n releaseCapture: function releaseCapture(inPointerId, skipDispatch) {\n var t = this.captureInfo[inPointerId];\n if (!t) {\n return;\n }\n this.captureInfo[inPointerId] = undefined;\n document.removeEventListener('pointerup', this.implicitRelease);\n document.removeEventListener('pointercancel', this.implicitRelease);\n var e = new PointerEvent('lostpointercapture');\n e.pointerId = inPointerId;\n e._target = t;\n if (!skipDispatch) {\n this.asyncDispatchEvent(e);\n }\n },\n /**\n * Dispatches the event to its target.\n *\n * @param {Event} inEvent The event to be dispatched.\n * @return {Boolean} True if an event handler returns true, false otherwise.\n */\n dispatchEvent: /*scope.external.dispatchEvent || */function dispatchEvent(inEvent) {\n var t = this.getTarget(inEvent);\n if (t) {\n return t.dispatchEvent(inEvent);\n }\n },\n asyncDispatchEvent: function asyncDispatchEvent(inEvent) {\n requestAnimationFrame(this.dispatchEvent.bind(this, inEvent));\n }\n };\n dispatcher.boundHandler = dispatcher.eventHandler.bind(dispatcher);\n var targeting = {\n shadow: function shadow(inEl) {\n if (inEl) {\n return inEl.shadowRoot || inEl.webkitShadowRoot;\n }\n },\n canTarget: function canTarget(shadow) {\n return shadow && Boolean(shadow.elementFromPoint);\n },\n targetingShadow: function targetingShadow(inEl) {\n var s = this.shadow(inEl);\n if (this.canTarget(s)) {\n return s;\n }\n },\n olderShadow: function olderShadow(shadow) {\n var os = shadow.olderShadowRoot;\n if (!os) {\n var se = shadow.querySelector('shadow');\n if (se) {\n os = se.olderShadowRoot;\n }\n }\n return os;\n },\n allShadows: function allShadows(element) {\n var shadows = [];\n var s = this.shadow(element);\n while (s) {\n shadows.push(s);\n s = this.olderShadow(s);\n }\n return shadows;\n },\n searchRoot: function searchRoot(inRoot, x, y) {\n if (inRoot) {\n var t = inRoot.elementFromPoint(x, y);\n var st, sr;\n\n // is element a shadow host?\n sr = this.targetingShadow(t);\n while (sr) {\n // find the the element inside the shadow root\n st = sr.elementFromPoint(x, y);\n if (!st) {\n // check for older shadows\n sr = this.olderShadow(sr);\n } else {\n // shadowed element may contain a shadow root\n var ssr = this.targetingShadow(st);\n return this.searchRoot(ssr, x, y) || st;\n }\n }\n\n // light dom element is the target\n return t;\n }\n },\n owner: function owner(element) {\n var s = element;\n\n // walk up until you hit the shadow root or document\n while (s.parentNode) {\n s = s.parentNode;\n }\n\n // the owner element is expected to be a Document or ShadowRoot\n if (s.nodeType !== Node.DOCUMENT_NODE && s.nodeType !== Node.DOCUMENT_FRAGMENT_NODE) {\n s = document;\n }\n return s;\n },\n findTarget: function findTarget(inEvent) {\n var x = inEvent.clientX;\n var y = inEvent.clientY;\n\n // if the listener is in the shadow root, it is much faster to start there\n var s = this.owner(inEvent.target);\n\n // if x, y is not in this root, fall back to document search\n if (!s.elementFromPoint(x, y)) {\n s = document;\n }\n return this.searchRoot(s, x, y);\n }\n };\n var forEach = Array.prototype.forEach.call.bind(Array.prototype.forEach);\n var map = Array.prototype.map.call.bind(Array.prototype.map);\n var toArray = Array.prototype.slice.call.bind(Array.prototype.slice);\n var filter = Array.prototype.filter.call.bind(Array.prototype.filter);\n var MO = window.MutationObserver || window.WebKitMutationObserver;\n var SELECTOR = '[touch-action]';\n var OBSERVER_INIT = {\n subtree: true,\n childList: true,\n attributes: true,\n attributeOldValue: true,\n attributeFilter: ['touch-action']\n };\n function Installer(add, remove, changed, binder) {\n this.addCallback = add.bind(binder);\n this.removeCallback = remove.bind(binder);\n this.changedCallback = changed.bind(binder);\n if (MO) {\n this.observer = new MO(this.mutationWatcher.bind(this));\n }\n }\n Installer.prototype = {\n watchSubtree: function watchSubtree(target) {\n // Only watch scopes that can target find, as these are top-level.\n // Otherwise we can see duplicate additions and removals that add noise.\n //\n // TODO(dfreedman): For some instances with ShadowDOMPolyfill, we can see\n // a removal without an insertion when a node is redistributed among\n // shadows. Since it all ends up correct in the document, watching only\n // the document will yield the correct mutations to watch.\n if (this.observer && targeting.canTarget(target)) {\n this.observer.observe(target, OBSERVER_INIT);\n }\n },\n enableOnSubtree: function enableOnSubtree(target) {\n this.watchSubtree(target);\n if (target === document && document.readyState !== 'complete') {\n this.installOnLoad();\n } else {\n this.installNewSubtree(target);\n }\n },\n installNewSubtree: function installNewSubtree(target) {\n forEach(this.findElements(target), this.addElement, this);\n },\n findElements: function findElements(target) {\n if (target.querySelectorAll) {\n return target.querySelectorAll(SELECTOR);\n }\n return [];\n },\n removeElement: function removeElement(el) {\n this.removeCallback(el);\n },\n addElement: function addElement(el) {\n this.addCallback(el);\n },\n elementChanged: function elementChanged(el, oldValue) {\n this.changedCallback(el, oldValue);\n },\n concatLists: function concatLists(accum, list) {\n return accum.concat(toArray(list));\n },\n // register all touch-action = none nodes on document load\n installOnLoad: function installOnLoad() {\n document.addEventListener('readystatechange', function () {\n if (document.readyState === 'complete') {\n this.installNewSubtree(document);\n }\n }.bind(this));\n },\n isElement: function isElement(n) {\n return n.nodeType === Node.ELEMENT_NODE;\n },\n flattenMutationTree: function flattenMutationTree(inNodes) {\n // find children with touch-action\n var tree = map(inNodes, this.findElements, this);\n\n // make sure the added nodes are accounted for\n tree.push(filter(inNodes, this.isElement));\n\n // flatten the list\n return tree.reduce(this.concatLists, []);\n },\n mutationWatcher: function mutationWatcher(mutations) {\n mutations.forEach(this.mutationHandler, this);\n },\n mutationHandler: function mutationHandler(m) {\n if (m.type === 'childList') {\n var added = this.flattenMutationTree(m.addedNodes);\n added.forEach(this.addElement, this);\n var removed = this.flattenMutationTree(m.removedNodes);\n removed.forEach(this.removeElement, this);\n } else if (m.type === 'attributes') {\n this.elementChanged(m.target, m.oldValue);\n }\n }\n };\n function shadowSelector(v) {\n return 'body /shadow-deep/ ' + selector(v);\n }\n function selector(v) {\n return '[touch-action=\"' + v + '\"]';\n }\n function rule(v) {\n return '{ -ms-touch-action: ' + v + '; touch-action: ' + v + '; }';\n }\n var attrib2css = ['none', 'auto', 'pan-x', 'pan-y', {\n rule: 'pan-x pan-y',\n selectors: ['pan-x pan-y', 'pan-y pan-x']\n }];\n var styles = '';\n\n // only install stylesheet if the browser has touch action support\n var hasNativePE = window.PointerEvent || window.MSPointerEvent;\n\n // only add shadow selectors if shadowdom is supported\n var hasShadowRoot = !window.ShadowDOMPolyfill && document.head.createShadowRoot;\n function applyAttributeStyles() {\n if (hasNativePE) {\n attrib2css.forEach(function (r) {\n if (String(r) === r) {\n styles += selector(r) + rule(r) + '\\n';\n if (hasShadowRoot) {\n styles += shadowSelector(r) + rule(r) + '\\n';\n }\n } else {\n styles += r.selectors.map(selector) + rule(r.rule) + '\\n';\n if (hasShadowRoot) {\n styles += r.selectors.map(shadowSelector) + rule(r.rule) + '\\n';\n }\n }\n });\n var el = document.createElement('style');\n el.textContent = styles;\n document.head.appendChild(el);\n }\n }\n var pointermap = dispatcher.pointermap;\n\n // radius around touchend that swallows mouse events\n var DEDUP_DIST = 25;\n\n // left, middle, right, back, forward\n var BUTTON_TO_BUTTONS = [1, 4, 2, 8, 16];\n var HAS_BUTTONS = false;\n try {\n HAS_BUTTONS = new MouseEvent('test', {\n buttons: 1\n }).buttons === 1;\n } catch (e) {}\n\n // handler block for native mouse events\n var mouseEvents = {\n POINTER_ID: 1,\n POINTER_TYPE: 'mouse',\n events: ['mousedown', 'mousemove', 'mouseup', 'mouseover', 'mouseout'],\n register: function register(target) {\n dispatcher.listen(target, this.events);\n },\n unregister: function unregister(target) {\n dispatcher.unlisten(target, this.events);\n },\n lastTouches: [],\n // collide with the global mouse listener\n isEventSimulatedFromTouch: function isEventSimulatedFromTouch(inEvent) {\n var lts = this.lastTouches;\n var x = inEvent.clientX;\n var y = inEvent.clientY;\n for (var i = 0, l = lts.length, t; i < l && (t = lts[i]); i++) {\n // simulated mouse events will be swallowed near a primary touchend\n var dx = Math.abs(x - t.x);\n var dy = Math.abs(y - t.y);\n if (dx <= DEDUP_DIST && dy <= DEDUP_DIST) {\n return true;\n }\n }\n },\n prepareEvent: function prepareEvent(inEvent) {\n var e = dispatcher.cloneEvent(inEvent);\n\n // forward mouse preventDefault\n var pd = e.preventDefault;\n e.preventDefault = function () {\n inEvent.preventDefault();\n pd();\n };\n e.pointerId = this.POINTER_ID;\n e.isPrimary = true;\n e.pointerType = this.POINTER_TYPE;\n return e;\n },\n prepareButtonsForMove: function prepareButtonsForMove(e, inEvent) {\n var p = pointermap.get(this.POINTER_ID);\n\n // Update buttons state after possible out-of-document mouseup.\n if (inEvent.which === 0 || !p) {\n e.buttons = 0;\n } else {\n e.buttons = p.buttons;\n }\n inEvent.buttons = e.buttons;\n },\n mousedown: function mousedown(inEvent) {\n if (!this.isEventSimulatedFromTouch(inEvent)) {\n var p = pointermap.get(this.POINTER_ID);\n var e = this.prepareEvent(inEvent);\n if (!HAS_BUTTONS) {\n e.buttons = BUTTON_TO_BUTTONS[e.button];\n if (p) {\n e.buttons |= p.buttons;\n }\n inEvent.buttons = e.buttons;\n }\n pointermap.set(this.POINTER_ID, inEvent);\n if (!p || p.buttons === 0) {\n dispatcher.down(e);\n } else {\n dispatcher.move(e);\n }\n }\n },\n mousemove: function mousemove(inEvent) {\n if (!this.isEventSimulatedFromTouch(inEvent)) {\n var e = this.prepareEvent(inEvent);\n if (!HAS_BUTTONS) {\n this.prepareButtonsForMove(e, inEvent);\n }\n e.button = -1;\n pointermap.set(this.POINTER_ID, inEvent);\n dispatcher.move(e);\n }\n },\n mouseup: function mouseup(inEvent) {\n if (!this.isEventSimulatedFromTouch(inEvent)) {\n var p = pointermap.get(this.POINTER_ID);\n var e = this.prepareEvent(inEvent);\n if (!HAS_BUTTONS) {\n var up = BUTTON_TO_BUTTONS[e.button];\n\n // Produces wrong state of buttons in Browsers without `buttons` support\n // when a mouse button that was pressed outside the document is released\n // inside and other buttons are still pressed down.\n e.buttons = p ? p.buttons & ~up : 0;\n inEvent.buttons = e.buttons;\n }\n pointermap.set(this.POINTER_ID, inEvent);\n\n // Support: Firefox <=44 only\n // FF Ubuntu includes the lifted button in the `buttons` property on\n // mouseup.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1223366\n e.buttons &= ~BUTTON_TO_BUTTONS[e.button];\n if (e.buttons === 0) {\n dispatcher.up(e);\n } else {\n dispatcher.move(e);\n }\n }\n },\n mouseover: function mouseover(inEvent) {\n if (!this.isEventSimulatedFromTouch(inEvent)) {\n var e = this.prepareEvent(inEvent);\n if (!HAS_BUTTONS) {\n this.prepareButtonsForMove(e, inEvent);\n }\n e.button = -1;\n pointermap.set(this.POINTER_ID, inEvent);\n dispatcher.enterOver(e);\n }\n },\n mouseout: function mouseout(inEvent) {\n if (!this.isEventSimulatedFromTouch(inEvent)) {\n var e = this.prepareEvent(inEvent);\n if (!HAS_BUTTONS) {\n this.prepareButtonsForMove(e, inEvent);\n }\n e.button = -1;\n dispatcher.leaveOut(e);\n }\n },\n cancel: function cancel(inEvent) {\n var e = this.prepareEvent(inEvent);\n dispatcher.cancel(e);\n this.deactivateMouse();\n },\n deactivateMouse: function deactivateMouse() {\n pointermap[\"delete\"](this.POINTER_ID);\n }\n };\n var captureInfo = dispatcher.captureInfo;\n var findTarget = targeting.findTarget.bind(targeting);\n var allShadows = targeting.allShadows.bind(targeting);\n var pointermap$1 = dispatcher.pointermap;\n\n // This should be long enough to ignore compat mouse events made by touch\n var DEDUP_TIMEOUT = 2500;\n var CLICK_COUNT_TIMEOUT = 200;\n var ATTRIB = 'touch-action';\n var INSTALLER;\n\n // handler block for native touch events\n var touchEvents = {\n events: ['touchstart', 'touchmove', 'touchend', 'touchcancel'],\n register: function register(target) {\n INSTALLER.enableOnSubtree(target);\n },\n unregister: function unregister() {\n\n // TODO(dfreedman): is it worth it to disconnect the MO?\n },\n elementAdded: function elementAdded(el) {\n var a = el.getAttribute(ATTRIB);\n var st = this.touchActionToScrollType(a);\n if (st) {\n el._scrollType = st;\n dispatcher.listen(el, this.events);\n\n // set touch-action on shadows as well\n allShadows(el).forEach(function (s) {\n s._scrollType = st;\n dispatcher.listen(s, this.events);\n }, this);\n }\n },\n elementRemoved: function elementRemoved(el) {\n el._scrollType = undefined;\n dispatcher.unlisten(el, this.events);\n\n // remove touch-action from shadow\n allShadows(el).forEach(function (s) {\n s._scrollType = undefined;\n dispatcher.unlisten(s, this.events);\n }, this);\n },\n elementChanged: function elementChanged(el, oldValue) {\n var a = el.getAttribute(ATTRIB);\n var st = this.touchActionToScrollType(a);\n var oldSt = this.touchActionToScrollType(oldValue);\n\n // simply update scrollType if listeners are already established\n if (st && oldSt) {\n el._scrollType = st;\n allShadows(el).forEach(function (s) {\n s._scrollType = st;\n }, this);\n } else if (oldSt) {\n this.elementRemoved(el);\n } else if (st) {\n this.elementAdded(el);\n }\n },\n scrollTypes: {\n EMITTER: 'none',\n XSCROLLER: 'pan-x',\n YSCROLLER: 'pan-y',\n SCROLLER: /^(?:pan-x pan-y)|(?:pan-y pan-x)|auto$/\n },\n touchActionToScrollType: function touchActionToScrollType(touchAction) {\n var t = touchAction;\n var st = this.scrollTypes;\n if (t === 'none') {\n return 'none';\n } else if (t === st.XSCROLLER) {\n return 'X';\n } else if (t === st.YSCROLLER) {\n return 'Y';\n } else if (st.SCROLLER.exec(t)) {\n return 'XY';\n }\n },\n POINTER_TYPE: 'touch',\n firstTouch: null,\n isPrimaryTouch: function isPrimaryTouch(inTouch) {\n return this.firstTouch === inTouch.identifier;\n },\n setPrimaryTouch: function setPrimaryTouch(inTouch) {\n // set primary touch if there no pointers, or the only pointer is the mouse\n if (pointermap$1.size === 0 || pointermap$1.size === 1 && pointermap$1.has(1)) {\n this.firstTouch = inTouch.identifier;\n this.firstXY = {\n X: inTouch.clientX,\n Y: inTouch.clientY\n };\n this.scrolling = false;\n this.cancelResetClickCount();\n }\n },\n removePrimaryPointer: function removePrimaryPointer(inPointer) {\n if (inPointer.isPrimary) {\n this.firstTouch = null;\n this.firstXY = null;\n this.resetClickCount();\n }\n },\n clickCount: 0,\n resetId: null,\n resetClickCount: function resetClickCount() {\n var fn = function () {\n this.clickCount = 0;\n this.resetId = null;\n }.bind(this);\n this.resetId = setTimeout(fn, CLICK_COUNT_TIMEOUT);\n },\n cancelResetClickCount: function cancelResetClickCount() {\n if (this.resetId) {\n clearTimeout(this.resetId);\n }\n },\n typeToButtons: function typeToButtons(type) {\n var ret = 0;\n if (type === 'touchstart' || type === 'touchmove') {\n ret = 1;\n }\n return ret;\n },\n touchToPointer: function touchToPointer(inTouch) {\n var cte = this.currentTouchEvent;\n var e = dispatcher.cloneEvent(inTouch);\n\n // We reserve pointerId 1 for Mouse.\n // Touch identifiers can start at 0.\n // Add 2 to the touch identifier for compatibility.\n var id = e.pointerId = inTouch.identifier + 2;\n e.target = captureInfo[id] || findTarget(e);\n e.bubbles = true;\n e.cancelable = true;\n e.detail = this.clickCount;\n e.button = 0;\n e.buttons = this.typeToButtons(cte.type);\n e.width = (inTouch.radiusX || inTouch.webkitRadiusX || 0) * 2;\n e.height = (inTouch.radiusY || inTouch.webkitRadiusY || 0) * 2;\n e.pressure = inTouch.force || inTouch.webkitForce || 0.5;\n e.isPrimary = this.isPrimaryTouch(inTouch);\n e.pointerType = this.POINTER_TYPE;\n\n // forward modifier keys\n e.altKey = cte.altKey;\n e.ctrlKey = cte.ctrlKey;\n e.metaKey = cte.metaKey;\n e.shiftKey = cte.shiftKey;\n\n // forward touch preventDefaults\n var self = this;\n e.preventDefault = function () {\n self.scrolling = false;\n self.firstXY = null;\n cte.preventDefault();\n };\n return e;\n },\n processTouches: function processTouches(inEvent, inFunction) {\n var tl = inEvent.changedTouches;\n this.currentTouchEvent = inEvent;\n for (var i = 0, t; i < tl.length; i++) {\n t = tl[i];\n inFunction.call(this, this.touchToPointer(t));\n }\n },\n // For single axis scrollers, determines whether the element should emit\n // pointer events or behave as a scroller\n shouldScroll: function shouldScroll(inEvent) {\n if (this.firstXY) {\n var ret;\n var scrollAxis = inEvent.currentTarget._scrollType;\n if (scrollAxis === 'none') {\n // this element is a touch-action: none, should never scroll\n ret = false;\n } else if (scrollAxis === 'XY') {\n // this element should always scroll\n ret = true;\n } else {\n var t = inEvent.changedTouches[0];\n\n // check the intended scroll axis, and other axis\n var a = scrollAxis;\n var oa = scrollAxis === 'Y' ? 'X' : 'Y';\n var da = Math.abs(t['client' + a] - this.firstXY[a]);\n var doa = Math.abs(t['client' + oa] - this.firstXY[oa]);\n\n // if delta in the scroll axis > delta other axis, scroll instead of\n // making events\n ret = da >= doa;\n }\n this.firstXY = null;\n return ret;\n }\n },\n findTouch: function findTouch(inTL, inId) {\n for (var i = 0, l = inTL.length, t; i < l && (t = inTL[i]); i++) {\n if (t.identifier === inId) {\n return true;\n }\n }\n },\n // In some instances, a touchstart can happen without a touchend. This\n // leaves the pointermap in a broken state.\n // Therefore, on every touchstart, we remove the touches that did not fire a\n // touchend event.\n // To keep state globally consistent, we fire a\n // pointercancel for this \"abandoned\" touch\n vacuumTouches: function vacuumTouches(inEvent) {\n var tl = inEvent.touches;\n\n // pointermap.size should be < tl.length here, as the touchstart has not\n // been processed yet.\n if (pointermap$1.size >= tl.length) {\n var d = [];\n pointermap$1.forEach(function (value, key) {\n // Never remove pointerId == 1, which is mouse.\n // Touch identifiers are 2 smaller than their pointerId, which is the\n // index in pointermap.\n if (key !== 1 && !this.findTouch(tl, key - 2)) {\n var p = value.out;\n d.push(p);\n }\n }, this);\n d.forEach(this.cancelOut, this);\n }\n },\n touchstart: function touchstart(inEvent) {\n this.vacuumTouches(inEvent);\n this.setPrimaryTouch(inEvent.changedTouches[0]);\n this.dedupSynthMouse(inEvent);\n if (!this.scrolling) {\n this.clickCount++;\n this.processTouches(inEvent, this.overDown);\n }\n },\n overDown: function overDown(inPointer) {\n pointermap$1.set(inPointer.pointerId, {\n target: inPointer.target,\n out: inPointer,\n outTarget: inPointer.target\n });\n dispatcher.enterOver(inPointer);\n dispatcher.down(inPointer);\n },\n touchmove: function touchmove(inEvent) {\n if (!this.scrolling) {\n if (this.shouldScroll(inEvent)) {\n this.scrolling = true;\n this.touchcancel(inEvent);\n } else {\n inEvent.preventDefault();\n this.processTouches(inEvent, this.moveOverOut);\n }\n }\n },\n moveOverOut: function moveOverOut(inPointer) {\n var event = inPointer;\n var pointer = pointermap$1.get(event.pointerId);\n\n // a finger drifted off the screen, ignore it\n if (!pointer) {\n return;\n }\n var outEvent = pointer.out;\n var outTarget = pointer.outTarget;\n dispatcher.move(event);\n if (outEvent && outTarget !== event.target) {\n outEvent.relatedTarget = event.target;\n event.relatedTarget = outTarget;\n\n // recover from retargeting by shadow\n outEvent.target = outTarget;\n if (event.target) {\n dispatcher.leaveOut(outEvent);\n dispatcher.enterOver(event);\n } else {\n // clean up case when finger leaves the screen\n event.target = outTarget;\n event.relatedTarget = null;\n this.cancelOut(event);\n }\n }\n pointer.out = event;\n pointer.outTarget = event.target;\n },\n touchend: function touchend(inEvent) {\n this.dedupSynthMouse(inEvent);\n this.processTouches(inEvent, this.upOut);\n },\n upOut: function upOut(inPointer) {\n if (!this.scrolling) {\n dispatcher.up(inPointer);\n dispatcher.leaveOut(inPointer);\n }\n this.cleanUpPointer(inPointer);\n },\n touchcancel: function touchcancel(inEvent) {\n this.processTouches(inEvent, this.cancelOut);\n },\n cancelOut: function cancelOut(inPointer) {\n dispatcher.cancel(inPointer);\n dispatcher.leaveOut(inPointer);\n this.cleanUpPointer(inPointer);\n },\n cleanUpPointer: function cleanUpPointer(inPointer) {\n pointermap$1[\"delete\"](inPointer.pointerId);\n this.removePrimaryPointer(inPointer);\n },\n // prevent synth mouse events from creating pointer events\n dedupSynthMouse: function dedupSynthMouse(inEvent) {\n var lts = mouseEvents.lastTouches;\n var t = inEvent.changedTouches[0];\n\n // only the primary finger will synth mouse events\n if (this.isPrimaryTouch(t)) {\n // remember x/y of last touch\n var lt = {\n x: t.clientX,\n y: t.clientY\n };\n lts.push(lt);\n var fn = function (lts, lt) {\n var i = lts.indexOf(lt);\n if (i > -1) {\n lts.splice(i, 1);\n }\n }.bind(null, lts, lt);\n setTimeout(fn, DEDUP_TIMEOUT);\n }\n }\n };\n INSTALLER = new Installer(touchEvents.elementAdded, touchEvents.elementRemoved, touchEvents.elementChanged, touchEvents);\n var pointermap$2 = dispatcher.pointermap;\n var HAS_BITMAP_TYPE = window.MSPointerEvent && typeof window.MSPointerEvent.MSPOINTER_TYPE_MOUSE === 'number';\n var msEvents = {\n events: ['MSPointerDown', 'MSPointerMove', 'MSPointerUp', 'MSPointerOut', 'MSPointerOver', 'MSPointerCancel', 'MSGotPointerCapture', 'MSLostPointerCapture'],\n register: function register(target) {\n dispatcher.listen(target, this.events);\n },\n unregister: function unregister(target) {\n dispatcher.unlisten(target, this.events);\n },\n POINTER_TYPES: ['', 'unavailable', 'touch', 'pen', 'mouse'],\n prepareEvent: function prepareEvent(inEvent) {\n var e = inEvent;\n if (HAS_BITMAP_TYPE) {\n e = dispatcher.cloneEvent(inEvent);\n e.pointerType = this.POINTER_TYPES[inEvent.pointerType];\n }\n return e;\n },\n cleanup: function cleanup(id) {\n pointermap$2[\"delete\"](id);\n },\n MSPointerDown: function MSPointerDown(inEvent) {\n pointermap$2.set(inEvent.pointerId, inEvent);\n var e = this.prepareEvent(inEvent);\n dispatcher.down(e);\n },\n MSPointerMove: function MSPointerMove(inEvent) {\n var e = this.prepareEvent(inEvent);\n dispatcher.move(e);\n },\n MSPointerUp: function MSPointerUp(inEvent) {\n var e = this.prepareEvent(inEvent);\n dispatcher.up(e);\n this.cleanup(inEvent.pointerId);\n },\n MSPointerOut: function MSPointerOut(inEvent) {\n var e = this.prepareEvent(inEvent);\n dispatcher.leaveOut(e);\n },\n MSPointerOver: function MSPointerOver(inEvent) {\n var e = this.prepareEvent(inEvent);\n dispatcher.enterOver(e);\n },\n MSPointerCancel: function MSPointerCancel(inEvent) {\n var e = this.prepareEvent(inEvent);\n dispatcher.cancel(e);\n this.cleanup(inEvent.pointerId);\n },\n MSLostPointerCapture: function MSLostPointerCapture(inEvent) {\n var e = dispatcher.makeEvent('lostpointercapture', inEvent);\n dispatcher.dispatchEvent(e);\n },\n MSGotPointerCapture: function MSGotPointerCapture(inEvent) {\n var e = dispatcher.makeEvent('gotpointercapture', inEvent);\n dispatcher.dispatchEvent(e);\n }\n };\n function applyPolyfill() {\n // only activate if this platform does not have pointer events\n if (!window.PointerEvent) {\n window.PointerEvent = PointerEvent;\n if (window.navigator.msPointerEnabled) {\n var tp = window.navigator.msMaxTouchPoints;\n Object.defineProperty(window.navigator, 'maxTouchPoints', {\n value: tp,\n enumerable: true\n });\n dispatcher.registerSource('ms', msEvents);\n } else {\n Object.defineProperty(window.navigator, 'maxTouchPoints', {\n value: 0,\n enumerable: true\n });\n dispatcher.registerSource('mouse', mouseEvents);\n if (window.ontouchstart !== undefined) {\n dispatcher.registerSource('touch', touchEvents);\n }\n }\n dispatcher.register(document);\n }\n }\n var n = window.navigator;\n var s;\n var r;\n var h;\n function assertActive(id) {\n if (!dispatcher.pointermap.has(id)) {\n var error = new Error('InvalidPointerId');\n error.name = 'InvalidPointerId';\n throw error;\n }\n }\n function assertConnected(elem) {\n var parent = elem.parentNode;\n while (parent && parent !== elem.ownerDocument) {\n parent = parent.parentNode;\n }\n if (!parent) {\n var error = new Error('InvalidStateError');\n error.name = 'InvalidStateError';\n throw error;\n }\n }\n function inActiveButtonState(id) {\n var p = dispatcher.pointermap.get(id);\n return p.buttons !== 0;\n }\n if (n.msPointerEnabled) {\n s = function s(pointerId) {\n assertActive(pointerId);\n assertConnected(this);\n if (inActiveButtonState(pointerId)) {\n dispatcher.setCapture(pointerId, this, true);\n this.msSetPointerCapture(pointerId);\n }\n };\n r = function r(pointerId) {\n assertActive(pointerId);\n dispatcher.releaseCapture(pointerId, true);\n this.msReleasePointerCapture(pointerId);\n };\n } else {\n s = function setPointerCapture(pointerId) {\n assertActive(pointerId);\n assertConnected(this);\n if (inActiveButtonState(pointerId)) {\n dispatcher.setCapture(pointerId, this);\n }\n };\n r = function releasePointerCapture(pointerId) {\n assertActive(pointerId);\n dispatcher.releaseCapture(pointerId);\n };\n }\n h = function hasPointerCapture(pointerId) {\n return !!dispatcher.captureInfo[pointerId];\n };\n function applyPolyfill$1() {\n if (window.Element && !Element.prototype.setPointerCapture) {\n Object.defineProperties(Element.prototype, {\n 'setPointerCapture': {\n value: s\n },\n 'releasePointerCapture': {\n value: r\n },\n 'hasPointerCapture': {\n value: h\n }\n });\n }\n }\n applyAttributeStyles();\n applyPolyfill();\n applyPolyfill$1();\n var pointerevents = {\n dispatcher: dispatcher,\n Installer: Installer,\n PointerEvent: PointerEvent,\n PointerMap: PointerMap,\n targetFinding: targeting\n };\n return pointerevents;\n });\n})(pep);\n\n// external smart player events (value casing matters to maintain backward capability)\nvar _videoStartInitiated = 'VIDEO_START_INITIATED';\nvar _videoStart = 'VIDEO_START';\nvar _mediaReady = 'MEDIA_READY';\nvar _captionChange = 'CAPTION_CHANGE';\nvar _ready = 'READY';\nvar _videoPlayEvent = 'VIDEO_PLAY';\nvar _playerFullScreenModeChanged = 'PLAYER_FULL_SCREEN_MODE_CHANGED';\nvar _playerRumData = 'PLAYER_RUM_DATA';\nvar _videoEnd = 'tscspVideoEnd';\nvar _videoReplay = 'tscspVideoReplay';\nvar _externalMediaError = 'tscspMediaError';\nvar _playerSettingsOpenEvent = 'tscspPlayerSettingsOpen';\nvar _playerSettingsCloseEvent = 'tscspPlayerSettingsClose';\nvar _playerControlsHiddenEvent = 'tscspPlayerControlsHiddenEvent';\nvar _playerControlsVisibleEvent = 'tscspPlayerControlsVisibleEvent';\nvar _externalPlayerResize = 'tscspPlayerResize';\nvar _heroControlHidden = 'tscspHeroControlHidden';\nvar _imagePointerOver = 'tscspImagePointerOver';\nvar _imagePointerLeave = 'tscspImagePointerLeave';\nvar _displayModeChanged = 'tscspDisplayModeChanged';\nvar _captionsHidden = 'tscspCaptionsHidden';\nvar _captionsVisible = 'tscspCaptionsVisible';\n// this is the overload to set up a listener for the playerConfiguration.useCustomEventTracking related to google-analytics. this event will fire the handler for several\n// when they would normally trigger internally and deliver data to GA (i.e. 'Video_Started', 'Video_Replay', 'Video_Loading_Time', 'Video_Finished', others?)\n// the event will trigger with the related event name and data formatted for google-analytics\nvar _googleAnalyticsCustomEvent = 'gacustomevents';\n\n// external smart player html5 events\n// these events are bubbled up from the html5 video element and _most_ are simulated by the youtube player in our code\nvar _videoLoadStart = 'loadstart';\nvar _videoLoadedMetadata = 'loadedmetadata';\nvar _videoLoadedData = 'loadeddata';\nvar _externalVideoCanPlay = 'canplay';\nvar _videoCanPlayThrough = 'canplaythrough';\nvar _videoPlaying = 'playing';\nvar _videoWaiting = 'waiting';\nvar _videoSeeking = 'seeking';\nvar _videoSeeked = 'seeked';\nvar _videoEnded = 'ended';\nvar _videoPlay = 'play';\nvar _videoPause = 'pause';\nvar _videoResize = 'resize';\nvar _videoError = 'error';\nvar _videoVolumeChange = 'volumechange';\nvar _videoDurationChange = 'durationchange';\nvar _videoRateChange = 'ratechange';\nvar _videoTimeUpdate = 'timeupdate';\nvar _videoProgress = 'progress';\nvar _initializeCurrent = 'initializecurrent';\nvar _sourceChanged = 'sourcechanged';\nvar _tryToAutoPlay = 'tscspTryToAutoPlay';\nvar _firstPlay = 'tscspFirstPlayer';\nvar _videoSuspend = 'suspend';\nvar _videoAbort = 'abort';\nvar _videoEmptied = 'emptied';\nvar _videoStalled = 'stalled';\n\n// Player Events\nvar _mediaControlsReady = 'tscspMediaControlsReady';\nvar _mediaExtensionsReady = 'tscspMediaExtensionsReady';\n\n// Control Events\nvar _clickPrevControl = 'tscspClickPrevControl';\nvar _clickNextControl = 'tscspClickNextControl';\nvar _toggleFullScreen = 'tscspToggleFullScreen';\nvar _fullScreenChange = 'tscspFullScreenChange';\nvar _expandVideo = 'tscspExpandVideo';\nvar _showToc = 'tscspShowToc';\nvar _hideToc = 'tscspHideToc';\nvar _tocScroll = 'tscspTocScroll';\nvar _disableControls$1 = 'tscspDisableControls';\nvar _enableControls = 'tscspEnableControls';\nvar _controlsUpdated = 'tscspControlsUpdated';\nvar _pipChanged = 'tscspPipChange';\nvar _theaterModeChanged = 'tscspTheaterModeChange';\nvar _playerResize = 'tscspPlayerResize';\nvar _mediaResize = 'tscspMediaResize';\nvar _controlsPlayerInitialized = 'tscspPlayerInitialized';\nvar _showVideoBufferingView = 'tscspShowVideoBufferingView';\nvar _hideVideoBufferingView = 'tscspHideVideoBufferingView';\nvar _switchToFullscreen = 'tscspSwitchToFullscreen';\nvar _exitFullscreen = 'tscspExitFullscreen';\nvar _videoControlsHidden = 'tscspVideoControlsHidden';\nvar _hideVideoControls = 'tscspHideVideoControls';\nvar _videoControlsVisible = 'tscspVideoControlsHVisible';\nvar _showVideoControls = 'tscspShowVideoControls';\nvar _displayCaptionControl = 'tscspDisplayCaptionControl';\nvar _displayTocControl = 'tscspDisplayTocControl';\nvar _tocDisplayToggled = 'tscspTocDisplayToggled';\nvar _focusTocButton = 'tscspFocusTocButton';\nvar _heroPlayControlClicked = 'tscspHeroPlayControlClicked';\nvar _heroPlayControlVisible = 'tscspHeroPlayControlVisible';\nvar _heroPlayControlHidden = 'tscspHeroPlayControlHidden';\nvar _replayControlVisible = 'tscspReplayControlVisible';\nvar _replayControlHidden = 'tscspReplayControlHidden';\nvar _startedPlayback = 'tscspStartedPlayback';\nvar _hideIOOverlay = 'tscspHideIOOverlay';\nvar _searchFocusChange = 'tscspSearchFocusChange';\nvar _hideLoadingMessage = 'tscspHideLoadingMessage';\nvar _playerSettingsOpen = 'tscspPlayerSettingsOpen';\nvar _playerSettingsClose = 'tscspPlayerSettingsClose';\n\n// Media Element Events\nvar _seekMediaToTime = 'tscspSeekMediaToTime';\nvar _replayMedia = 'tscspReplayMedia';\nvar _endMedia = 'tscspEndMedia';\nvar _setVolume = 'tscspSetVolume';\nvar _setMutedState = 'tscspSetMutedState';\nvar _setPlaybackRate = 'tscspSetPlaybackRate';\nvar _mediaError = 'tscspMediaError';\n\n// IFrame Events\nvar _enterFullFrame = 'ENTER-FULLFRAME';\nvar _exitFullFrame = 'EXIT-FULLFRAME';\n\n// Update Events\nvar _updateQuizMarkers = 'tscspUpdateQuizMarkers';\nvar _updatePlayProgress = 'tscspUpdatePlayProgress';\nvar _updateLoadProgress = 'tscspUpdateLoadProgress';\nvar _updateNextQuestionPos = 'tscspUpdateNextQuestionXPos';\n\n// Scrubbing Events\nvar _startedScrubbing = 'tscspStartedScrubbing';\nvar _endedScrubbing = 'tscspEndedScrubbing';\n\n// Quiz Events\nvar _quizSetupComplete = 'tscspQuizSetupComplete';\nvar _quizPaused = 'tscspMediaPaused';\nvar _quizComplete = 'tscspQuizComplete';\nvar _quizReview = 'tscspQuizReview';\nvar _quizBegin = 'tscspQuizBegin';\nvar _quizBeginClicked = 'tscspQuizBeginClicked';\nvar _quizSkip = 'tscspQuizSkip';\nvar _quizSkipClicked = 'tscspSkipQuizClicked';\nvar _quizError = 'tscspQuizError';\nvar _quizStatus = 'tscspQuizStatus';\nvar _quizSubmittingInstance = 'tscspSubmittingInstance';\nvar _quizCreatedInstance = 'tscspCreatedInstance';\nvar _quizSubmitted = 'tscspQuizSubmitted';\nvar _quizShowSubmissionRetryMessage = 'tscspQuizShowSubmissionRetryMessage';\nvar _quizHideSubmissionRetryMessage = 'tscspQuizHideSubmissionRetryMessage';\nvar _quizHideLoadingMessage = 'tscspQuizHideLoadingMessage';\nvar _transitionImageQuizToAnswers = 'tscspTransitionImageQuizToAnswers';\nvar _hideQuiz = 'tscspHideQuiz';\nvar _showQuizBar = 'tscspShowQuizBar';\nvar _showStartQuizPrompt = 'tscspShowStartQuizPrompt';\nvar _showQuizSetup = 'tscspShowQuizSetup';\nvar _hideStartQuizPrompt = 'tscspHideStartQuizPrompt';\nvar _showQuestionSetView = 'tscspShowQuestionSetView';\nvar _closeQuestionSetView = 'tscspCloseQuestionSetView';\nvar _submitQuestionSet = 'tscspSubmitQuestionSet';\nvar _rationaleActionLocation = 'tscspRationaleActionLocation';\nvar _rationaleActionJumpToTime = 'tscspRationaleActionJumpToTime';\nvar _quizIsOutOfDate = 'tscspQuizIsOutOfDate';\nvar _quizBadDefinition = 'tscspQuizBadDefinition';\nvar _quizVisible = 'tscspQuizVisible';\nvar _quizHidden = 'tscspQuizHidden';\nvar _minimizeQuizUI = 'tscspMinimizeQuizUI';\nvar _maximizeQuizUI = 'tscspMaximizeQuizUI';\nvar _quizUIVisible = 'tscspQuizUIVisible';\nvar _quizUIHidden = 'tscspQuizUIHidden';\n\n// Captions\nvar _captionsToggled = 'tscpCaptionsToggled';\nvar _stateLoaded = 'tscpCaptionsStateLoaded';\nvar _captionsChanged = 'tscspCaptionChanged';\nvar _captionsLanguageChanged = 'tscspLanguageChanged';\nvar _captionsDragStart = 'tscspCaptionsDragStart';\nvar _captionsDragEnd = 'tscspCaptionsDragEnd';\nvar _captionsResized = 'tscspCaptionsResized';\n\n// Caption Service\nvar _newCaptionTrack = 'tscspNewCaptionTrack';\n\n// Audio Description\nvar _audioDescriptionChanged = 'tscspAudioDescriptionChanged';\nvar _audioDescriptionFailed = 'tscspAudioDescriptionFailed';\n\n// Hotspots\nvar _hotspotPaused = 'tscspHotspotPaused';\nvar _hotspotResume = 'tscspHotspotResume';\nvar _hotspotClicked = 'tscspHotspotClicked';\nvar _hotspotAreaActive = 'tscspHotspotAreaActive';\nvar _hotspotAreaInactive = 'tscspHotspotAreaInactive';\n\n// Modals\nvar _modalOpen = 'tscspModalOpen';\nvar _modalClosed = 'tscspModalClosed';\n\n//Timing\nvar _smartPlayerInitialized = 'smart_player_initialized';\nvar _smartPlayerLoaded = 'smart_player_loaded';\nvar _videoMetadataLoaded = 'video_metadata_loaded';\nvar _videoLoadedDataTiming = 'video_loaded_data';\nvar _videoCanPlay = 'video_can_play';\nvar _videoHasEnoughData = 'video_has_enough_data';\n\n// Analytics\nvar _analyticsVideoStarted = 'Video_Started';\nvar _analyticsContentLoaded = 'Content_Loaded';\nvar _analyticsVideoPercentViewed = 'Video_Percent_Viewed';\nvar _analyticsVideoFinishedAction = 'Video_Finished_Action';\nvar _analyticsVideoFinished = 'Video_Finished';\nvar _analyticsVideoReplay = 'Video_Replay';\nvar _analyticsVideoLoadingTimeInSeconds = 'Video_Loading_Time_In_Seconds';\nvar _analyticsVideoLoadingTime = 'Video_Loading_Time';\nvar _analyticsOpenExternalLinkView = 'Open_External_Link_View';\nvar _analyticsOpenExternalLinkClick = 'Open_External_Link_Click';\nvar _analyticsHotspotAction = 'Hotspot_Action';\nvar _analyticsVideoCouldNotPlaySmoothlyIn20Secs = 'Could_Not_Play_Smoothly_In_20_Secs';\nvar _analyticsVideoPlaybackWasStoppedToBuffer = 'Video_Stopped_To_Buffer';\n\n// Plugins\nvar _pluginAdded = 'pluginAdded';\nvar _mediaAreaPluginMouseDown = 'mediaAreaPluginMouseDown';\nvar _mediaAreaPluginMouseUp = 'mediaAreaPluginMouseUp';\nvar _mediaAreaPluginKeyDown = 'mediaAreaPluginKeyDown';\nvar _mediaAreaPluginKeyUp = 'mediaAreaPluginKeyUp';\n\n// Network\nvar _retryingRequest = 'retryingRequest';\n\n// Fathom\nvar _fathomGetComplete = 'GET_COMPLETE';\nvar _fathomError = 'ERROR';\n\n// External link view\nvar _openUrlViewOpened = 'tscspExternalUrlViewOpen';\nvar _openUrlViewClosed = 'tscspExternalUrlViewClosed';\nvar _openUrlViewClicked = 'tscspExternalUrlViewClick';\n\n// SCORM\nvar _exitScormSession = 'tscspExitScormSession';\nvar _exitScormSessionConfirmed = 'tscspExitScormSessionConfirmed';\nvar _exitScormSessionWithOutProgressConfirmed = 'tscspExitScormSessionWithOutProgressConfirmed';\nvar _resumeScormSession = 'tscspScormSession';\nvar _failedToFindApi = 'tscspScormFailedToFindApi';\n\n// Images\nvar _imagesPointerOver = 'tscspImagesPointerOver';\nvar _imagesPointerLeave = 'tscspImagesPointerLeave';\nvar events = Object.freeze({\n External: {\n VideoStartInitiated: _videoStartInitiated,\n VideoStart: _videoStart,\n VideoEnd: _videoEnd,\n VideoReplay: _videoReplay,\n MediaError: _externalMediaError,\n MediaReady: _mediaReady,\n CaptionChange: _captionChange,\n Ready: _ready,\n VideoPlay: _videoPlayEvent,\n PlayerFullScreenModeChanged: _playerFullScreenModeChanged,\n PlayerRumData: _playerRumData,\n GoogleAnalyticsCustomEvent: _googleAnalyticsCustomEvent,\n QuizVisible: _quizVisible,\n QuizHidden: _quizHidden,\n ShowStartQuizPrompt: _showStartQuizPrompt,\n HideStartQuizPrompt: _hideStartQuizPrompt,\n SwitchToFullscreen: _switchToFullscreen,\n ExitFullscreen: _exitFullscreen,\n PlayerSettingsOpen: _playerSettingsOpenEvent,\n PlayerSettingsClose: _playerSettingsCloseEvent,\n PlayerControlsHidden: _playerControlsHiddenEvent,\n PlayerControlsVisible: _playerControlsVisibleEvent,\n PlayerResize: _externalPlayerResize,\n HeroControlHidden: _heroControlHidden,\n ImagePointerOver: _imagePointerOver,\n ImagePointerLeave: _imagePointerLeave,\n DisplayModeChanged: _displayModeChanged,\n CaptionsHidden: _captionsHidden,\n CaptionsVisible: _captionsVisible\n },\n ExternalVideo: {\n VideoLoadStart: _videoLoadStart,\n VideoLoadedMetadata: _videoLoadedMetadata,\n VideoLoadedData: _videoLoadedData,\n VideoCanPlay: _externalVideoCanPlay,\n VideoCanPlayThrough: _videoCanPlayThrough,\n VideoPlaying: _videoPlaying,\n VideoWaiting: _videoWaiting,\n VideoSeeking: _videoSeeking,\n VideoSeeked: _videoSeeked,\n VideoEnded: _videoEnded,\n VideoPlay: _videoPlay,\n VideoPause: _videoPause,\n VideoResize: _videoResize,\n VideoError: _videoError,\n VideoVolumeChange: _videoVolumeChange,\n VideoDurationChange: _videoDurationChange,\n VideoRateChange: _videoRateChange,\n VideoTimeUpdate: _videoTimeUpdate,\n VideoProgress: _videoProgress\n },\n Player: {\n MediaControlsReady: _mediaControlsReady,\n MediaExtensionsReady: _mediaExtensionsReady\n },\n Controls: {\n ClickPrev: _clickPrevControl,\n ClickNext: _clickNextControl,\n FullScreenChange: _fullScreenChange,\n ToggleFullScreen: _toggleFullScreen,\n ExpandVideo: _expandVideo,\n ShowToc: _showToc,\n HideToc: _hideToc,\n TocScroll: _tocScroll,\n Disable: _disableControls$1,\n Enable: _enableControls,\n Updated: _controlsUpdated,\n HotspotClicked: _hotspotClicked,\n PipChanged: _pipChanged,\n TheaterModeChanged: _theaterModeChanged,\n PlayerResize: _playerResize,\n MediaResize: _mediaResize,\n PlayerInitialized: _controlsPlayerInitialized,\n ShowVideoBufferingView: _showVideoBufferingView,\n HideVideoBufferingView: _hideVideoBufferingView,\n VideoControlsHidden: _videoControlsHidden,\n HideVideoControls: _hideVideoControls,\n VideoControlsVisible: _videoControlsVisible,\n ShowVideoControls: _showVideoControls,\n DisplayCaptionControl: _displayCaptionControl,\n DisplayTocControl: _displayTocControl,\n TocDisplayToggled: _tocDisplayToggled,\n FocusTocButton: _focusTocButton,\n HeroPlayControlClicked: _heroPlayControlClicked,\n HeroPlayControlVisible: _heroPlayControlVisible,\n HeroPlayControlHidden: _heroPlayControlHidden,\n ReplayControlVisible: _replayControlVisible,\n ReplayControlHidden: _replayControlHidden,\n StartedPlayback: _startedPlayback,\n HideIOOverlay: _hideIOOverlay,\n SearchFocusChange: _searchFocusChange,\n HideLoadingMessage: _hideLoadingMessage,\n PlayerSettingsOpen: _playerSettingsOpen,\n PlayerSettingsClose: _playerSettingsClose\n },\n Hotspots: {\n Paused: _hotspotPaused,\n Resume: _hotspotResume,\n AreaActive: _hotspotAreaActive,\n AreaInactive: _hotspotAreaInactive\n },\n Media: {\n Play: _videoPlay,\n Playing: _videoPlaying,\n Pause: _videoPause,\n SeekToTime: _seekMediaToTime,\n Replay: _replayMedia,\n End: _endMedia,\n Abort: _videoAbort,\n Suspend: _videoSuspend,\n Emptied: _videoEmptied,\n Stalled: _videoStalled,\n Progress: _videoProgress,\n InitializeCurrent: _initializeCurrent,\n SourceChanged: _sourceChanged,\n TryToAutoPlay: _tryToAutoPlay,\n SetVolume: _setVolume,\n SetMutedState: _setMutedState,\n SetPlaybackRate: _setPlaybackRate,\n FirstPlay: _firstPlay,\n Error: _mediaError\n },\n IFrame: {\n EnterFullFrame: _enterFullFrame,\n ExitFullFrame: _exitFullFrame\n },\n Update: {\n QuizMarkers: _updateQuizMarkers,\n PlayProgress: _updatePlayProgress,\n LoadProgress: _updateLoadProgress,\n NextQuestionPosition: _updateNextQuestionPos\n },\n Scrubbing: {\n Started: _startedScrubbing,\n Ended: _endedScrubbing\n },\n Quizzing: {\n QuizSetupComplete: _quizSetupComplete,\n Paused: _quizPaused,\n Complete: _quizComplete,\n Review: _quizReview,\n Begin: _quizBegin,\n BeginClicked: _quizBeginClicked,\n Skip: _quizSkip,\n SkipClicked: _quizSkipClicked,\n Error: _quizError,\n Status: _quizStatus,\n SubmittingInstance: _quizSubmittingInstance,\n CreatedInstance: _quizCreatedInstance,\n Submitted: _quizSubmitted,\n ShowSubmissionRetryMessage: _quizShowSubmissionRetryMessage,\n HideSubmissionRetryMessage: _quizHideSubmissionRetryMessage,\n HideLoadingMessage: _quizHideLoadingMessage,\n TransitionImageQuizToAnswers: _transitionImageQuizToAnswers,\n HideQuiz: _hideQuiz,\n ShowQuizBar: _showQuizBar,\n ShowStartQuizPrompt: _showStartQuizPrompt,\n ShowQuizSetup: _showQuizSetup,\n ShowQuestionSetView: _showQuestionSetView,\n CloseQuestionSetView: _closeQuestionSetView,\n SubmitQuestionSet: _submitQuestionSet,\n RationaleActionLocation: _rationaleActionLocation,\n RationaleActionJumpToTime: _rationaleActionJumpToTime,\n QuizIsOutOfDate: _quizIsOutOfDate,\n QuizBadDefinition: _quizBadDefinition,\n MinimizeUI: _minimizeQuizUI,\n MaximizeUI: _maximizeQuizUI,\n UIVisible: _quizUIVisible,\n UIHidden: _quizUIHidden\n },\n Captions: {\n Toggled: _captionsToggled,\n StateLoaded: _stateLoaded,\n Changed: _captionsChanged,\n LanguageChanged: _captionsLanguageChanged,\n DragStart: _captionsDragStart,\n DragEnd: _captionsDragEnd,\n Resized: _captionsResized\n },\n CaptionService: {\n NewCaptionTrack: _newCaptionTrack\n },\n AudioDescription: {\n Changed: _audioDescriptionChanged,\n Failed: _audioDescriptionFailed\n },\n Timing: {\n PlayerInitialized: _smartPlayerInitialized,\n PlayerLoaded: _smartPlayerLoaded,\n VideoMetadataLoaded: _videoMetadataLoaded,\n VideoLoadedData: _videoLoadedDataTiming,\n VideoCanPlay: _videoCanPlay,\n VideoHasEnoughData: _videoHasEnoughData\n },\n Analytics: {\n VideoStarted: _analyticsVideoStarted,\n ContentLoaded: _analyticsContentLoaded,\n VideoPercentViewed: _analyticsVideoPercentViewed,\n VideoFinishedAction: _analyticsVideoFinishedAction,\n VideoFinished: _analyticsVideoFinished,\n VideoReplay: _analyticsVideoReplay,\n VideoLoadingTimeInSeconds: _analyticsVideoLoadingTimeInSeconds,\n VideoLoadingTime: _analyticsVideoLoadingTime,\n OpenExternalLinkView: _analyticsOpenExternalLinkView,\n OpenExternalLinkClick: _analyticsOpenExternalLinkClick,\n HotspotAction: _analyticsHotspotAction,\n CouldNotPlaySmoothlyIn20Secs: _analyticsVideoCouldNotPlaySmoothlyIn20Secs,\n PlaybackWasStoppedToBuffer: _analyticsVideoPlaybackWasStoppedToBuffer\n },\n Plugin: {\n Added: _pluginAdded,\n MediaAreaPluginMouseDown: _mediaAreaPluginMouseDown,\n MediaAreaPluginMouseUp: _mediaAreaPluginMouseUp,\n MediaAreaPluginKeyDown: _mediaAreaPluginKeyDown,\n MediaAreaPluginKeyUp: _mediaAreaPluginKeyUp\n },\n Network: {\n Retrying: _retryingRequest\n },\n Fathom: {\n GetComplete: _fathomGetComplete,\n Error: _fathomError\n },\n Modals: {\n Open: _modalOpen,\n Closed: _modalClosed\n },\n ExternalLinkView: {\n Open: _openUrlViewOpened,\n Closed: _openUrlViewClosed,\n Clicked: _openUrlViewClicked\n },\n SCORM: {\n ExitSession: _exitScormSession,\n ExitSessionConfirmed: _exitScormSessionConfirmed,\n ExitSessionWithOutProgressConfirmed: _exitScormSessionWithOutProgressConfirmed,\n ResumeSession: _resumeScormSession,\n FailedToFindApi: _failedToFindApi\n },\n Images: {\n PointerOver: _imagesPointerOver,\n PointerLeave: _imagesPointerLeave\n }\n});\n\nvar supportedPluginViewElements = Object.freeze({\n PROGRESS_BAR: 'progressBar',\n MEDIA: 'media',\n BEFORE_AFTER_PLAY_CONTROLS: 'beforeAfterPlayControls',\n PLAYER: 'player'\n});\n\nvar _english = 'en-US';\nvar _german = 'de-DE';\nvar _japanese = 'ja-JP';\nvar _french = 'fr-FR';\nvar _spanish = 'es-ES';\nvar _chinese = 'zh-CN';\nvar _portuguese = 'pt-BR';\nvar _supportedLanguages = [_english, _german, _japanese, _french, _spanish, _chinese, _portuguese];\nvar languageCodes = Object.freeze({\n ENGLISH: _english,\n GERMAN: _german,\n JAPANESE: _japanese,\n FRENCH: _french,\n SPANISH: _spanish,\n CHINESE: _chinese,\n PORTUGUESE: _portuguese,\n ENU: _english,\n DEU: _german,\n JPN: _japanese,\n FRA: _french,\n SP: _spanish,\n ZH: _chinese,\n PT: _portuguese,\n isValid: function isValid(language) {\n return _supportedLanguages.some(function (supportedLanguage) {\n return supportedLanguage === language;\n });\n }\n});\n\nvar mediaInterfaceConstants = Object.freeze({\n controls: {\n \"true\": 'true',\n \"false\": 'false',\n autohide: 'autohide',\n youtube: 'youtube'\n }\n});\n\nfunction _typeof$1(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof$1 = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof$1(o);\n}\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || value !== value && other !== other;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache();\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = (typeof global === \"undefined\" ? \"undefined\" : _typeof$1(global)) == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = (typeof self === \"undefined\" ? \"undefined\" : _typeof$1(self)) == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Built-in value references. */\nvar _Symbol = root.Symbol;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = _Symbol ? _Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/** Used for built-in method references. */\nvar objectProto$1 = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString$1 = objectProto$1.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString$1.call(value);\n}\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag$1 = _Symbol ? _Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return symToStringTag$1 && symToStringTag$1 in Object(value) ? getRawTag(value) : objectToString(value);\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = _typeof$1(value);\n return value != null && (type == 'object' || type == 'function');\n}\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = function () {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? 'Symbol(src)_1.' + uid : '';\n}();\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && maskSrcKey in func;\n}\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return func + '';\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto$1 = Function.prototype,\n objectProto$2 = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString$1 = funcProto$1.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$1 = objectProto$2.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' + funcToString$1.call(hasOwnProperty$1).replace(reRegExpChar, '\\\\$&').replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$');\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/* Built-in method references that are verified to be native. */\nvar Map$1 = getNative(root, 'Map');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto$3 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$2 = objectProto$3.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty$2.call(data, key) ? data[key] : undefined;\n}\n\n/** Used for built-in method references. */\nvar objectProto$4 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$3 = objectProto$4.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty$3.call(data, key);\n}\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED$1 = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = nativeCreate && value === undefined ? HASH_UNDEFINED$1 : value;\n return this;\n}\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash(),\n 'map': new (Map$1 || ListCache)(),\n 'string': new Hash()\n };\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = _typeof$1(value);\n return type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean' ? value !== '__proto__' : value === null;\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key) ? data[typeof key == 'string' ? 'string' : 'hash'] : data.map;\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map$1 || pairs.length < LARGE_ARRAY_SIZE - 1) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED$2 = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED$2);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n this.__data__ = new MapCache();\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = bitmask & COMPARE_UNORDERED_FLAG ? new SetCache() : undefined;\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n if (customizer) {\n var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function (othValue, othIndex) {\n if (!cacheHas(seen, othIndex) && (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n map.forEach(function (value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n set.forEach(function (value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG$1 = 1,\n COMPARE_UNORDERED_FLAG$1 = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = _Symbol ? _Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n case arrayBufferTag:\n if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n case errorTag:\n return object.name == other.name && object.message == other.message;\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == other + '';\n case mapTag:\n var convert = mapToArray;\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG$1;\n convert || (convert = setToArray);\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG$1;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray$1 = Array.isArray;\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray$1(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/** Used for built-in method references. */\nvar objectProto$5 = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto$5.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function (object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function (symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && _typeof$1(value) == 'object';\n}\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/** Used for built-in method references. */\nvar objectProto$6 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$4 = objectProto$6.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable$1 = objectProto$6.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function () {\n return arguments;\n}()) ? baseIsArguments : function (value) {\n return isObjectLike(value) && hasOwnProperty$4.call(value, 'callee') && !propertyIsEnumerable$1.call(value, 'callee');\n};\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\n/** Detect free variable `exports`. */\nvar freeExports = (typeof exports === \"undefined\" ? \"undefined\" : _typeof$1(exports)) == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && (typeof module === \"undefined\" ? \"undefined\" : _typeof$1(module)) == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = _typeof$1(value);\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length && (type == 'number' || type != 'symbol' && reIsUint.test(value)) && value > -1 && value % 1 == 0 && value < length;\n}\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER$1 = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER$1;\n}\n\n/** `Object#toString` result references. */\nvar argsTag$1 = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag$1 = '[object Boolean]',\n dateTag$1 = '[object Date]',\n errorTag$1 = '[object Error]',\n funcTag$1 = '[object Function]',\n mapTag$1 = '[object Map]',\n numberTag$1 = '[object Number]',\n objectTag = '[object Object]',\n regexpTag$1 = '[object RegExp]',\n setTag$1 = '[object Set]',\n stringTag$1 = '[object String]',\n weakMapTag = '[object WeakMap]';\nvar arrayBufferTag$1 = '[object ArrayBuffer]',\n dataViewTag$1 = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag$1] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag$1] = typedArrayTags[boolTag$1] = typedArrayTags[dataViewTag$1] = typedArrayTags[dateTag$1] = typedArrayTags[errorTag$1] = typedArrayTags[funcTag$1] = typedArrayTags[mapTag$1] = typedArrayTags[numberTag$1] = typedArrayTags[objectTag] = typedArrayTags[regexpTag$1] = typedArrayTags[setTag$1] = typedArrayTags[stringTag$1] = typedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function (value) {\n return func(value);\n };\n}\n\n/** Detect free variable `exports`. */\nvar freeExports$1 = (typeof exports === \"undefined\" ? \"undefined\" : _typeof$1(exports)) == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule$1 = freeExports$1 && (typeof module === \"undefined\" ? \"undefined\" : _typeof$1(module)) == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports$1 = freeModule$1 && freeModule$1.exports === freeExports$1;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports$1 && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = function () {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule$1 && freeModule$1.require && freeModule$1.require('util').types;\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}();\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/** Used for built-in method references. */\nvar objectProto$7 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$5 = objectProto$7.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray$1(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n for (var key in value) {\n if ((inherited || hasOwnProperty$5.call(value, key)) && !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n isBuff && (key == 'offset' || key == 'parent') ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset') ||\n // Skip index properties.\n isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/** Used for built-in method references. */\nvar objectProto$8 = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = typeof Ctor == 'function' && Ctor.prototype || objectProto$8;\n return value === proto;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function (arg) {\n return func(transform(arg));\n };\n}\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\n/** Used for built-in method references. */\nvar objectProto$9 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$6 = objectProto$9.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty$6.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys$1(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys$1, getSymbols);\n}\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG$2 = 1;\n\n/** Used for built-in method references. */\nvar objectProto$a = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$7 = objectProto$a.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG$2,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty$7.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n if (customizer) {\n var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor && 'constructor' in object && 'constructor' in other && !(typeof objCtor == 'function' && objCtor instanceof objCtor && typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\n/* Built-in method references that are verified to be native. */\nvar Promise$2 = getNative(root, 'Promise');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\n/** `Object#toString` result references. */\nvar mapTag$2 = '[object Map]',\n objectTag$1 = '[object Object]',\n promiseTag = '[object Promise]',\n setTag$2 = '[object Set]',\n weakMapTag$1 = '[object WeakMap]';\nvar dataViewTag$2 = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map$1),\n promiseCtorString = toSource(Promise$2),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag$2 || Map$1 && getTag(new Map$1()) != mapTag$2 || Promise$2 && getTag(Promise$2.resolve()) != promiseTag || Set && getTag(new Set()) != setTag$2 || WeakMap && getTag(new WeakMap()) != weakMapTag$1) {\n getTag = function getTag(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag$1 ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString:\n return dataViewTag$2;\n case mapCtorString:\n return mapTag$2;\n case promiseCtorString:\n return promiseTag;\n case setCtorString:\n return setTag$2;\n case weakMapCtorString:\n return weakMapTag$1;\n }\n }\n return result;\n };\n}\nvar getTag$1 = getTag;\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG$3 = 1;\n\n/** `Object#toString` result references. */\nvar argsTag$2 = '[object Arguments]',\n arrayTag$1 = '[object Array]',\n objectTag$2 = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto$b = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$8 = objectProto$b.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray$1(object),\n othIsArr = isArray$1(other),\n objTag = objIsArr ? arrayTag$1 : getTag$1(object),\n othTag = othIsArr ? arrayTag$1 : getTag$1(other);\n objTag = objTag == argsTag$2 ? objectTag$2 : objTag;\n othTag = othTag == argsTag$2 ? objectTag$2 : othTag;\n var objIsObj = objTag == objectTag$2,\n othIsObj = othTag == objectTag$2,\n isSameTag = objTag == othTag;\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack());\n return objIsArr || isTypedArray(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG$3)) {\n var objIsWrapped = objIsObj && hasOwnProperty$8.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty$8.call(other, '__wrapped__');\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n stack || (stack = new Stack());\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack());\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || !isObjectLike(value) && !isObjectLike(other)) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG$4 = 1,\n COMPARE_UNORDERED_FLAG$2 = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if (noCustomizer && data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack();\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG$4 | COMPARE_UNORDERED_FLAG$2, customizer, stack) : result)) {\n return false;\n }\n }\n }\n return true;\n}\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys$1(object),\n length = result.length;\n while (length--) {\n var key = result[length],\n value = object[key];\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\n/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function (object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue && (srcValue !== undefined || key in Object(object));\n };\n}\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function (object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\n/** `Object#toString` result references. */\nvar symbolTag$1 = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return _typeof$1(value) == 'symbol' || isObjectLike(value) && baseGetTag(value) == symbolTag$1;\n}\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray$1(value)) {\n return false;\n }\n var type = _typeof$1(value);\n if (type == 'number' || type == 'symbol' || type == 'boolean' || value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object(object);\n}\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || resolver != null && typeof resolver != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function memoized() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache)();\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function (key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n var cache = result.cache;\n return result;\n}\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function (string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function (match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : number || match);\n });\n return result;\n});\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto$1 = _Symbol ? _Symbol.prototype : undefined,\n symbolToString = symbolProto$1 ? symbolProto$1.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray$1(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = value + '';\n return result == '0' && 1 / value == -INFINITY ? '-0' : result;\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray$1(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\n/** Used as references for various `Number` constants. */\nvar INFINITY$1 = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = value + '';\n return result == '0' && 1 / value == -INFINITY$1 ? '-0' : result;\n}\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n var index = 0,\n length = path.length;\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return index && index == length ? object : undefined;\n}\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\n/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n var index = -1,\n length = path.length,\n result = false;\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) && (isArray$1(object) || isArguments(object));\n}\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG$5 = 1,\n COMPARE_UNORDERED_FLAG$3 = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function (object) {\n var objValue = get(object, path);\n return objValue === undefined && objValue === srcValue ? hasIn(object, path) : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG$5 | COMPARE_UNORDERED_FLAG$3);\n };\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function (object) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function (object) {\n return baseGet(object, path);\n };\n}\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (_typeof$1(value) == 'object') {\n return isArray$1(value) ? baseMatchesProperty(value[0], value[1]) : baseMatches(value);\n }\n return property(value);\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function (object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys$1);\n}\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function (collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n while (fromRight ? index-- : ++index < length) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n baseEach(collection, function (value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray$1(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee));\n}\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\n/**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\nfunction castFunction(value) {\n return typeof value == 'function' ? value : identity;\n}\n\n/**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forEach(collection, iteratee) {\n var func = isArray$1(collection) ? arrayEach : baseEach;\n return func(collection, castFunction(iteratee));\n}\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n return function (collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate);\n collection = keys$1(collection);\n predicate = function predicate(key) {\n return iteratee(iterable[key], key, iterable);\n };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n while (fromRight ? index-- : ++index < length) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? other + '' : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;\n}\n\n/** Used as references for various `Number` constants. */\nvar INFINITY$2 = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY$2 || value === -INFINITY$2) {\n var sign = value < 0 ? -1 : 1;\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n return result === result ? remainder ? result - remainder : result : 0;\n}\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate), index);\n}\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\n/**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function (value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n}\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT$1 = 'Expected a function';\n\n/**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\nfunction negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT$1);\n }\n return function () {\n var args = arguments;\n switch (args.length) {\n case 0:\n return !predicate.call(this);\n case 1:\n return !predicate.call(this, args[0]);\n case 2:\n return !predicate.call(this, args[0], args[1]);\n case 3:\n return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n}\n\n/**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\nfunction reject$1(collection, predicate) {\n var func = isArray$1(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(baseIteratee(predicate)));\n}\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0:\n return func.call(thisArg);\n case 1:\n return func.call(thisArg, args[0]);\n case 2:\n return func.call(thisArg, args[0], args[1]);\n case 3:\n return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\n/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n if (start < 0) {\n start = -start > length ? 0 : length + start;\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : end - start >>> 0;\n start >>>= 0;\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\n/**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\nfunction baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n}\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax$1 = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax$1(start === undefined ? func.length - 1 : start, 0);\n return function () {\n var args = arguments,\n index = -1,\n length = nativeMax$1(args.length - start, 0),\n array = Array(length);\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function () {\n return value;\n };\n}\nvar defineProperty = function () {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}();\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function (func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n return function () {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\n/**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\nvar invokeMap = baseRest(function (collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n baseEach(collection, function (value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n});\n\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\nfunction baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n}\n\n/** Used for built-in method references. */\nvar arrayProto$1 = Array.prototype;\n\n/** Built-in value references. */\nvar splice$1 = arrayProto$1.splice;\n\n/**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\nfunction basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice$1.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n}\n\n/**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\nfunction remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n predicate = baseIteratee(predicate);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n}\nvar wellKnownNamespaces = {\n x: 'adobe:ns:meta/',\n xml: 'http://www.w3.org/1999/xhtml',\n rdf: 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',\n dc: 'http://purl.org/dc/elements/1.1/',\n exif: 'http://ns.adobe.com/exif/1.0',\n stDim: 'http://ns.adobe.com/xap/1.0/sType/Dimensions#',\n stFnt: 'http://ns.adobe.com/xap/1.0/sType/Font#',\n tsc: 'http://www.techsmith.com/xmp/tsc/',\n tscDM: 'http://www.techsmith.com/xmp/tscDM/',\n tscHS: 'http://www.techsmith.com/xmp/tscHS/',\n tscIQ: 'http://www.techsmith.com/xmp/tscIQ/',\n xmp: 'http://ns.adobe.com/xap/1.0/',\n xmpDM: 'http://ns.adobe.com/xmp/1.0/DynamicMedia/',\n xmpG: 'http://ns.adobe.com/xap/1.0/g/',\n xmpMM: 'http://ns.adobe.com/xap/1.0/mm/'\n};\n\n/**\n * Namespace resolver for xmp namespaces.\n * @function namespaceResolver\n * @param {String} prefix - XML namespace prefix\n * @static\n * @return {String} The namespace corresponding to the prefix or null if not found\n */\nvar namespaceResolver = function namespaceResolver(prefix) {\n return wellKnownNamespaces[prefix] || null;\n};\n\n/** `Object#toString` result references. */\nvar stringTag$2 = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' || !isArray$1(value) && isObjectLike(value) && baseGetTag(value) == stringTag$2;\n}\n\n/**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\nfunction isNil(value) {\n return value == null;\n}\nvar parseXml;\n\n// Taken from http://stackoverflow.com/a/17604251\nif (typeof window.DOMParser !== 'undefined') {\n var DOMParserProto = DOMParser.prototype;\n var realParseFromString = DOMParserProto.parseFromString;\n\n // Firefox/Opera/IE throw errors on unsupported types\n var canParseHtmlNatively;\n try {\n // WebKit returns null on unsupported types\n if (new DOMParser().parseFromString('', 'text/html')) {\n // text/html parsing is natively supported\n canParseHtmlNatively = true;\n }\n } catch (ex) {\n // nothing to do\n }\n if (!canParseHtmlNatively) {\n DOMParserProto.parseFromString = function (markup, type) {\n if (/^\\s*text\\/html\\s*(?:;|$)/i.test(type)) {\n var doc = document.implementation.createHTMLDocument('');\n var docElement = doc.documentElement;\n var firstElement;\n docElement.innerHTML = markup;\n firstElement = docElement.firstElementChild;\n if (docElement.childElementCount === 1 && firstElement.localName.toLowerCase() === 'html') {\n doc.replaceChild(firstElement, docElement);\n }\n return doc;\n }\n return realParseFromString.apply(this, arguments);\n };\n }\n parseXml = function parseXml(xmlStr, contentType) {\n contentType = contentType || 'text/xml';\n return new window.DOMParser().parseFromString(xmlStr, contentType);\n };\n} else if (typeof window.ActiveXObject !== 'undefined' && new window.ActiveXObject('Microsoft.XMLDOM')) {\n parseXml = function parseXml(xmlStr) {\n var xmlDoc = new window.ActiveXObject('Microsoft.XMLDOM');\n xmlDoc.async = 'false';\n xmlDoc.loadXML(xmlStr);\n return xmlDoc;\n };\n} else {\n throw new Error('No XML parser found');\n}\nvar xmlDocFragmentToString = function xmlDocFragmentToString(xmlDoc) {\n var xmlSerializer = new XMLSerializer();\n return xmlSerializer.serializeToString(xmlDoc);\n};\nvar xmlDocToString = function xmlDocToString(xmlDoc) {\n return '\\n' + this.xmlDocFragmentToString(xmlDoc);\n};\nvar getElementText = function getElementText(element) {\n return element.textContent;\n};\nvar hasAttribute = function hasAttribute(element, attributeName) {\n var attrValue = element.getAttribute(attributeName);\n return !isNil(attrValue);\n};\nvar hasAttributeWithValue = function hasAttributeWithValue(element, attributeName, value) {\n var attrValue = element.getAttribute(attributeName);\n return attrValue === value;\n};\nvar createDocument = function createDocument() {\n var xmlDocument = document.implementation.createDocument('', '', null);\n return xmlDocument;\n};\nvar createElement = function createElement(doc, name) {\n var element = doc.createElement(name);\n return element;\n};\nvar createElementWithValue = function createElementWithValue(doc, name, value) {\n var element = doc.createElement(name);\n element.appendChild(doc.createTextNode(value));\n return element;\n};\nvar getElementsByTagName = function getElementsByTagName(element, name) {\n var ns = '*';\n var childElements = element.getElementsByTagNameNS(ns, name);\n return childElements;\n};\nvar getFirstElementByTagName = function getFirstElementByTagName(element, name) {\n var childElements = getElementsByTagName(element, name);\n return childElements && childElements[0] ? childElements[0] : null;\n};\nvar getFirstChildElementTextByTagName = function getFirstChildElementTextByTagName(element, name) {\n var childElement = getFirstElementByTagName(element, name);\n return childElement ? getElementText(childElement) : null;\n};\nvar XmlUtility = function XmlUtility() {}; // eslint-disable-line no-empty-function\nXmlUtility.prototype.parseXml = parseXml;\nXmlUtility.prototype.xmlDocFragmentToString = xmlDocFragmentToString;\nXmlUtility.prototype.xmlDocToString = xmlDocToString;\nXmlUtility.prototype.getElementText = getElementText;\nXmlUtility.prototype.hasAttribute = hasAttribute;\nXmlUtility.prototype.hasAttributeWithValue = hasAttributeWithValue;\nXmlUtility.prototype.createDocument = createDocument;\nXmlUtility.prototype.createElement = createElement;\nXmlUtility.prototype.createElementWithValue = createElementWithValue;\nXmlUtility.prototype.getElementsByTagName = getElementsByTagName;\nXmlUtility.prototype.getFirstElementByTagName = getFirstElementByTagName;\nXmlUtility.prototype.getFirstChildElementTextByTagName = getFirstChildElementTextByTagName;\nvar isDocument = function isDocument(docOrElement) {\n return isFunction(docOrElement.evaluate);\n};\nvar getFirstElementByTagNameNSPrefix = function getFirstElementByTagNameNSPrefix(docOrElement, name) {\n if (isDocument(docOrElement)) {\n return docOrElement.evaluate('//' + name, docOrElement, this.namespaceResolver, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;\n }\n var childElements = this.getElementsByTagNameNSPrefix(docOrElement, name);\n return childElements && childElements[0] ? childElements[0] : undefined;\n};\nvar getElementsByTagNameNSPrefix = function getElementsByTagNameNSPrefix(element, name) {\n if (!element) {\n return null;\n }\n if (name.indexOf(':') === -1) {\n throw new Error('getElementsByTagNameNSPrefix requires the name passed in to have a namespace prefix. getElementsByTagName can be used if you do not know the prefix.');\n }\n var tokens = name.split(':');\n var ns = this.namespaceResolver(tokens[0]);\n var tagName = name.split(':')[1];\n var childElements = element.getElementsByTagNameNS(ns, tagName);\n return childElements;\n};\nvar getFirstChildElementTextByTagNameNSPrefix = function getFirstChildElementTextByTagNameNSPrefix(element, name) {\n var childElement = this.getFirstElementByTagNameNSPrefix(element, name);\n return childElement ? this.getElementText(childElement) : undefined;\n};\nvar createDocumentNS = function createDocumentNS(ns, prefix, name) {\n var xmlDocument = document.implementation.createDocument(ns, prefix + ':' + name, null);\n return xmlDocument;\n};\nvar createElementNS = function createElementNS(doc, ns, prefix, name) {\n var element = doc.createElementNS(ns, prefix + ':' + name);\n return element;\n};\nvar createElementNSWithValue = function createElementNSWithValue(doc, ns, prefix, name, value) {\n var element = createElementNS(doc, ns, prefix, name);\n element.appendChild(doc.createTextNode(value));\n return element;\n};\nvar getNSInfo = function getNSInfo(tagName, namespaceResolver) {\n var nameParts = tagName.split(':', 2);\n if (nameParts.length !== 2) {\n throw new Error('invalid tag name [' + tagName + '] should contain \\':\\' to define namespace');\n } else if (!namespaceResolver(nameParts[0])) {\n throw new Error('invalid namespace prefix [' + nameParts[0] + '] was not able to be mapped to known namespace');\n }\n return {\n nsUrl: namespaceResolver(nameParts[0]),\n nsPrefix: nameParts[0],\n tagShortName: nameParts[1]\n };\n};\nvar createElementFromObject = function createElementFromObject(tagInfo, doc) {\n doc = doc || this.createDocument();\n var that = this;\n if (isString(tagInfo)) {\n return createElement(doc, tagInfo);\n } else if (_typeof$1(tagInfo) === 'object' && typeof tagInfo.toXmp === 'function') {\n return tagInfo.toXmp();\n } else if (_typeof$1(tagInfo) === 'object' && tagInfo.name) {\n var nsInfo = getNSInfo(tagInfo.name, this.namespaceResolver);\n var newElement = createElementNS(doc, nsInfo.nsUrl, nsInfo.nsPrefix, nsInfo.tagShortName);\n if (tagInfo.atts && _typeof$1(tagInfo.atts) === 'object') {\n forEach(tagInfo.atts, function (attrVal, attrName) {\n if (!isNil(attrVal)) {\n var attNsInfo = getNSInfo(attrName, that.namespaceResolver);\n if (attNsInfo.nsPrefix !== 'xml') {\n newElement.setAttributeNS(attNsInfo.nsUrl, attrName, attrVal);\n } else {\n newElement.setAttribute(attrName, attrVal);\n }\n }\n });\n }\n if (tagInfo.children && Array.isArray(tagInfo.children)) {\n forEach(tagInfo.children, function (child) {\n if (child) {\n newElement.appendChild(that.createElementFromObject(child, doc));\n }\n });\n }\n if (tagInfo.text !== undefined && tagInfo.text !== null) {\n newElement.textContent = tagInfo.text;\n }\n return newElement;\n }\n throw new Error('invalid tag info');\n};\nvar NamespaceXmlUtility = function NamespaceXmlUtility(namespaceResolver) {\n if (!namespaceResolver) {\n throw new Error('namespaceResolver is required');\n }\n this.namespaceResolver = namespaceResolver;\n};\nNamespaceXmlUtility.prototype = Object.create(XmlUtility.prototype);\nNamespaceXmlUtility.prototype.getFirstElementByTagNameNSPrefix = getFirstElementByTagNameNSPrefix;\nNamespaceXmlUtility.prototype.getElementsByTagNameNSPrefix = getElementsByTagNameNSPrefix;\nNamespaceXmlUtility.prototype.getFirstChildElementTextByTagNameNSPrefix = getFirstChildElementTextByTagNameNSPrefix;\nNamespaceXmlUtility.prototype.createDocumentNS = createDocumentNS;\nNamespaceXmlUtility.prototype.createElementFromObject = createElementFromObject;\nNamespaceXmlUtility.prototype.createElementNS = createElementNS;\nNamespaceXmlUtility.prototype.createElementNSWithValue = createElementNSWithValue;\nvar LanguageIdentifier = function LanguageIdentifier(languageIdentifier) {\n if (typeof languageIdentifier !== 'string') {\n throw new Error('Language Identifier is expecting a string, but got (' + languageIdentifier + ')');\n }\n var _identifier = languageIdentifier.toLowerCase();\n var _language = '';\n var _region = '';\n var parseLanguageIdentifier = function parseLanguageIdentifier() {\n var languageIdentifierParts = _identifier.split('-');\n if (languageIdentifierParts.length > 1) {\n _region = languageIdentifierParts.pop();\n }\n _language = languageIdentifierParts.join('-');\n };\n var toPOJO = function toPOJO() {\n return {\n identifier: _identifier,\n language: _language,\n region: _region\n };\n };\n parseLanguageIdentifier();\n return Object.defineProperties({\n toPOJO: toPOJO\n }, {\n identifier: {\n get: function get() {\n return _identifier;\n }\n },\n language: {\n get: function get() {\n return _language;\n }\n },\n region: {\n get: function get() {\n return _region;\n }\n }\n });\n};\n\n/** @module LanguageIdentifier */\nvar LanguageIdentifier$1 = {\n /**\n * Factory method that returns a new LanguageIdentifier object.\n * @function create\n * @param {string} languageIdentifier - RFC 3066 notation language string\n * @static\n * @return {module:LanguageIdentifier} new LanguageIdentifier instance\n */\n create: LanguageIdentifier\n};\nvar _identifiers = Object.freeze({\n \"default\": 'default',\n af: {\n name: 'Afrikaans',\n displayName: 'Afrikaans',\n regions: {\n za: 'South Africa'\n }\n },\n sq: {\n name: 'Albanian',\n displayName: 'Shqip',\n regions: {\n al: 'Albania'\n }\n },\n ar: {\n name: 'Arabic',\n displayName: 'العربية',\n regions: {\n dz: 'Algeria',\n bh: 'Bahrain',\n eg: 'Egypt',\n iq: 'Iraq',\n jo: 'Jordan',\n kw: 'Kuwait',\n lb: 'Lebanon',\n ly: 'Libya',\n ma: 'Morocco',\n om: 'Oman',\n qa: 'Qatar',\n sa: 'Saudi Arabia',\n sy: 'Syria',\n tn: 'Tunisia',\n ae: 'United Arab Emirates',\n ye: 'Yemen'\n }\n },\n hy: {\n name: 'Armenian',\n displayName: 'Արևելահայերեն',\n regions: {\n am: 'Armenia'\n }\n },\n 'cy-az': {\n name: 'Azeri (Cyrillic)',\n displayName: 'Азәрбајҹан дили',\n regions: {\n az: 'Azerbaijan'\n }\n },\n 'lt-az': {\n name: 'Azeri (Latin)',\n displayName: 'Azərbaycanca',\n regions: {\n az: 'Azerbaijan'\n }\n },\n eu: {\n name: 'Basque',\n displayName: 'Euskara',\n regions: {\n es: 'Basque'\n }\n },\n be: {\n name: 'Belarusian',\n displayName: 'Беларуская',\n regions: {\n by: 'Belarus'\n }\n },\n bg: {\n name: 'Bulgarian',\n displayName: 'Български',\n regions: {\n bg: 'Bulgaria'\n }\n },\n ca: {\n name: 'Catalan',\n displayName: 'Català',\n regions: {\n es: 'Catalan'\n }\n },\n zh: {\n name: 'Chinese',\n displayName: '简体中文',\n regions: {\n cn: 'China',\n hk: 'Hong Kong SAR',\n mo: 'Macau SAR',\n sg: 'Singapore',\n tw: 'Taiwan',\n chs: '(Simplified)',\n cht: '(Traditional)'\n }\n },\n hr: {\n name: 'Croatian',\n displayName: 'hrvatski',\n regions: {\n hr: 'Croatia'\n }\n },\n cs: {\n name: 'Czech',\n displayName: 'Čeština',\n regions: {\n cz: 'Czech Republic'\n }\n },\n da: {\n name: 'Danish',\n displayName: 'Dansk',\n regions: {\n dk: 'Denmark'\n }\n },\n div: {\n name: 'Dhivehi',\n displayName: 'ދިވެހި',\n regions: {\n mv: 'Maldives'\n }\n },\n nl: {\n name: 'Dutch',\n displayName: 'Nederlands',\n regions: {\n be: 'Belgium',\n nl: 'The Netherlands'\n }\n },\n en: {\n name: 'English',\n displayName: 'English',\n regions: {\n au: 'Australia',\n bz: 'Belize',\n ca: 'Canada',\n cb: 'Caribbean',\n ie: 'Ireland',\n jm: 'Jamaica',\n nz: 'New Zealand',\n ph: 'Philippines',\n za: 'South Africa',\n tt: 'Trinidad and Tobago',\n gb: 'United Kingdom',\n us: 'United States',\n zw: 'Zimbabwe'\n }\n },\n et: {\n name: 'Estonian',\n displayName: 'Eesti',\n regions: {\n ee: 'Estonia'\n }\n },\n fo: {\n name: 'Faroese',\n displayName: 'Føroyskt',\n regions: {\n fo: 'Faroe Islands'\n }\n },\n fa: {\n name: 'Farsi',\n displayName: 'فارسی',\n regions: {\n ir: 'Iran'\n }\n },\n fi: {\n name: 'Finnish',\n displayName: 'Suomi',\n regions: {\n fi: 'Finland'\n }\n },\n fr: {\n name: 'French',\n displayName: 'Français',\n regions: {\n be: 'Belgium',\n ca: 'Canada',\n fr: 'France',\n lu: 'Luxembourg',\n mc: 'Monaco',\n ch: 'Switzerland'\n }\n },\n gl: {\n name: 'Galician',\n displayName: 'galego',\n regions: {\n es: 'Galician'\n }\n },\n ka: {\n name: 'Georgian',\n displayName: 'ქართული',\n regions: {\n ge: 'Georgia'\n }\n },\n de: {\n name: 'German',\n displayName: 'Deutsch',\n regions: {\n at: 'Austria',\n de: 'Germany',\n li: 'Liechtenstein',\n lu: 'Luxembourg',\n ch: 'Switzerland'\n }\n },\n el: {\n name: 'Greek',\n displayName: 'Ελληνικά',\n regions: {\n gr: 'Greece'\n }\n },\n gu: {\n name: 'Gujarati',\n displayName: 'ગુજરાતી',\n regions: {\n \"in\": 'India'\n }\n },\n he: {\n name: 'Hebrew',\n displayName: 'עברית',\n regions: {\n il: 'Israel'\n }\n },\n hi: {\n name: 'Hindi',\n displayName: 'हिन्दी',\n regions: {\n \"in\": 'India'\n }\n },\n hu: {\n name: 'Hungarian',\n displayName: 'Magyar',\n regions: {\n hu: 'Hungary'\n }\n },\n is: {\n name: 'Icelandic',\n displayName: 'Íslenska',\n regions: {\n is: 'Iceland'\n }\n },\n id: {\n name: 'Indonesian',\n displayName: 'Bahasa Indonesia',\n regions: {\n id: 'Indonesia'\n }\n },\n it: {\n name: 'Italian',\n displayName: 'Italiano',\n regions: {\n it: 'Italy',\n ch: 'Switzerland'\n }\n },\n ja: {\n name: 'Japanese',\n displayName: '日本語',\n regions: {\n jp: 'Japan'\n }\n },\n kn: {\n name: 'Kannada',\n displayName: 'ಕನ್ನಡ',\n regions: {\n \"in\": 'India'\n }\n },\n kk: {\n name: 'Kazakh',\n displayName: 'Қазақ Tілі',\n regions: {\n kz: 'Kazakhstan'\n }\n },\n kok: {\n name: 'Konkani',\n displayName: 'कोंकणी',\n regions: {\n \"in\": 'India'\n }\n },\n ko: {\n name: 'Korean',\n displayName: '한국어',\n regions: {\n kr: 'Korea'\n }\n },\n ky: {\n name: 'Kyrgyz',\n displayName: 'кыргызча',\n regions: {\n kz: 'Kazakhstan'\n }\n },\n lv: {\n name: 'Latvian',\n displayName: 'Latviešu',\n regions: {\n lv: 'Latvia'\n }\n },\n lt: {\n name: 'Lithuanian',\n displayName: 'Lietuvių',\n regions: {\n lt: 'Lithuania'\n }\n },\n mk: {\n name: 'Macedonian',\n displayName: 'Mакедонски',\n regions: {\n mk: '(FYROM)'\n }\n },\n ms: {\n name: 'Malay',\n displayName: 'Bahasa Melayu',\n regions: {\n bn: 'Brunei',\n my: 'Malaysia'\n }\n },\n mr: {\n name: 'Marathi',\n displayName: 'मराठी',\n regions: {\n \"in\": 'India'\n }\n },\n mn: {\n name: 'Mongolian',\n displayName: 'Монгол Хэл',\n regions: {\n mn: 'Mongolia'\n }\n },\n nb: {\n name: 'Norwegian (Bokmål)',\n displayName: 'Norsk (Bokmål)',\n regions: {\n no: 'Norway'\n }\n },\n nn: {\n name: 'Norwegian (Nynorsk)',\n displayName: 'Norsk (Nynorsk)',\n regions: {\n no: 'Norway'\n }\n },\n pl: {\n name: 'Polish',\n displayName: 'Polsk',\n regions: {\n pl: 'Poland'\n }\n },\n pt: {\n name: 'Portuguese',\n displayName: 'Português',\n regions: {\n br: 'Brazil',\n pt: 'Portugal'\n }\n },\n pa: {\n name: 'Punjabi',\n displayName: 'ਪੰਜਾਬੀ',\n regions: {\n \"in\": 'India'\n }\n },\n ro: {\n name: 'Romanian',\n displayName: 'Română',\n regions: {\n ro: 'Romania'\n }\n },\n ru: {\n name: 'Russian',\n displayName: 'Русский',\n regions: {\n ru: 'Russia'\n }\n },\n sa: {\n name: 'Sanskrit',\n displayName: 'संस्कृतम्',\n regions: {\n \"in\": 'India'\n }\n },\n 'cy-sr': {\n name: 'Serbian (Cyrillic)',\n displayName: 'Српски',\n regions: {\n sp: 'Serbia'\n }\n },\n 'lt-sr': {\n name: 'Serbian (Latin)',\n displayName: 'Srpski',\n regions: {\n sp: 'Serbia'\n }\n },\n sk: {\n name: 'Slovak',\n displayName: 'Slovenčina',\n regions: {\n sk: 'Slovakia'\n }\n },\n sl: {\n name: 'Slovenian',\n displayName: 'Slovenščina',\n regions: {\n si: 'Slovenia'\n }\n },\n es: {\n name: 'Spanish',\n displayName: 'Español',\n regions: {\n ar: 'Argentina',\n bo: 'Bolivia',\n cl: 'Chile',\n co: 'Colombia',\n cr: 'Costa Rica',\n \"do\": 'Dominican Republic',\n ec: 'Ecuador',\n sv: 'El Salvador',\n gt: 'Guatemala',\n hn: 'Honduras',\n mx: 'Mexico',\n ni: 'Nicaragua',\n pa: 'Panama',\n py: 'Paraguay',\n pe: 'Peru',\n pr: 'Puerto Rico',\n es: 'Spain',\n uy: 'Uruguay',\n ve: 'Venezuela'\n }\n },\n sw: {\n name: 'Swahili',\n displayName: 'Kiswahili',\n regions: {\n ke: 'Kenya'\n }\n },\n sv: {\n name: 'Swedish',\n displayName: 'Svenska',\n regions: {\n fi: 'Finland',\n se: 'Sweden'\n }\n },\n syr: {\n name: 'Syriac',\n displayName: 'ܠܫܢܐ ܣܘܪܝܝܐ‎',\n regions: {\n sy: 'Syria'\n }\n },\n ta: {\n name: 'Tamil',\n displayName: 'தமிழ்‎',\n regions: {\n \"in\": 'India'\n }\n },\n tt: {\n name: 'Tatar',\n displayName: 'татар теле',\n regions: {\n ru: 'Russia'\n }\n },\n te: {\n name: 'Telugu',\n displayName: 'తెలుగు',\n regions: {\n \"in\": 'India'\n }\n },\n th: {\n name: 'Thai',\n displayName: 'ไทย',\n regions: {\n th: 'Thailand'\n }\n },\n tr: {\n name: 'Turkish',\n displayName: 'Türkçe',\n regions: {\n tr: 'Turkey'\n }\n },\n uk: {\n name: 'Ukrainian',\n displayName: 'Українська',\n regions: {\n ua: 'Ukraine'\n }\n },\n ur: {\n name: 'Urdu',\n displayName: 'اُردُو',\n regions: {\n pk: 'Pakistan'\n }\n },\n 'cy-uz': {\n name: 'Uzbek (Cyrillic)',\n displayName: 'Ўзбек',\n regions: {\n uz: 'Uzbekistan'\n }\n },\n 'lt-uz': {\n name: 'Uzbek (Latin)',\n displayName: 'oʻzbek tili',\n regions: {\n uz: 'Uzbekistan'\n }\n },\n vi: {\n name: 'Vietnamese',\n displayName: 'Tiếng Việt',\n regions: {\n vn: 'Vietnam'\n }\n }\n});\n\n/** @module LanguageIdentifiers */\n\n/**\n * Check if a language is supported.\n * @function isSupportedLanguage\n * @param {string} languageIdentifierString - RFC 3066 notation language string\n * @static\n * @return {boolean} is the language found in the languageIdentifier is found.\n */\nvar isSupportedLanguage = function isSupportedLanguage(languageIdentifierString) {\n var identifier = LanguageIdentifier$1.create(languageIdentifierString);\n return _identifiers[identifier.language] !== undefined;\n};\nvar languageIdentifiers = Object.defineProperties({\n isSupportedLanguage: isSupportedLanguage\n}, {\n identifiers: {\n get: function get() {\n return _identifiers;\n }\n }\n});\n\n/**\n * @this {Promise}\n */\nfunction finallyConstructor$1(callback) {\n var constructor = this.constructor;\n return this.then(function (value) {\n return constructor.resolve(callback()).then(function () {\n return value;\n });\n }, function (reason) {\n return constructor.resolve(callback()).then(function () {\n return constructor.reject(reason);\n });\n });\n}\n\n// Store setTimeout reference so promise-polyfill will be unaffected by\n// other code modifying setTimeout (like sinon.useFakeTimers())\nvar setTimeoutFunc$1 = setTimeout;\nfunction noop$2() {}\n\n// Polyfill for Function.prototype.bind\nfunction bind$1(fn, thisArg) {\n return function () {\n fn.apply(thisArg, arguments);\n };\n}\n\n/**\n * @constructor\n * @param {Function} fn\n */\nfunction Promise$1$1(fn) {\n if (!(this instanceof Promise$1$1)) throw new TypeError('Promises must be constructed via new');\n if (typeof fn !== 'function') throw new TypeError('not a function');\n /** @type {!number} */\n this._state = 0;\n /** @type {!boolean} */\n this._handled = false;\n /** @type {Promise|undefined} */\n this._value = undefined;\n /** @type {!Array} */\n this._deferreds = [];\n doResolve$1(fn, this);\n}\nfunction handle$1(self, deferred) {\n while (self._state === 3) {\n self = self._value;\n }\n if (self._state === 0) {\n self._deferreds.push(deferred);\n return;\n }\n self._handled = true;\n Promise$1$1._immediateFn(function () {\n var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;\n if (cb === null) {\n (self._state === 1 ? resolve$1 : reject$1$1)(deferred.promise, self._value);\n return;\n }\n var ret;\n try {\n ret = cb(self._value);\n } catch (e) {\n reject$1$1(deferred.promise, e);\n return;\n }\n resolve$1(deferred.promise, ret);\n });\n}\nfunction resolve$1(self, newValue) {\n try {\n // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n if (newValue === self) throw new TypeError('A promise cannot be resolved with itself.');\n if (newValue && (_typeof$1(newValue) === 'object' || typeof newValue === 'function')) {\n var then = newValue.then;\n if (newValue instanceof Promise$1$1) {\n self._state = 3;\n self._value = newValue;\n finale$1(self);\n return;\n } else if (typeof then === 'function') {\n doResolve$1(bind$1(then, newValue), self);\n return;\n }\n }\n self._state = 1;\n self._value = newValue;\n finale$1(self);\n } catch (e) {\n reject$1$1(self, e);\n }\n}\nfunction reject$1$1(self, newValue) {\n self._state = 2;\n self._value = newValue;\n finale$1(self);\n}\nfunction finale$1(self) {\n if (self._state === 2 && self._deferreds.length === 0) {\n Promise$1$1._immediateFn(function () {\n if (!self._handled) {\n Promise$1$1._unhandledRejectionFn(self._value);\n }\n });\n }\n for (var i = 0, len = self._deferreds.length; i < len; i++) {\n handle$1(self, self._deferreds[i]);\n }\n self._deferreds = null;\n}\n\n/**\n * @constructor\n */\nfunction Handler$1(onFulfilled, onRejected, promise) {\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.promise = promise;\n}\n\n/**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\nfunction doResolve$1(fn, self) {\n var done = false;\n try {\n fn(function (value) {\n if (done) return;\n done = true;\n resolve$1(self, value);\n }, function (reason) {\n if (done) return;\n done = true;\n reject$1$1(self, reason);\n });\n } catch (ex) {\n if (done) return;\n done = true;\n reject$1$1(self, ex);\n }\n}\nPromise$1$1.prototype['catch'] = function (onRejected) {\n return this.then(null, onRejected);\n};\nPromise$1$1.prototype.then = function (onFulfilled, onRejected) {\n // @ts-ignore\n var prom = new this.constructor(noop$2);\n handle$1(this, new Handler$1(onFulfilled, onRejected, prom));\n return prom;\n};\nPromise$1$1.prototype['finally'] = finallyConstructor$1;\nPromise$1$1.all = function (arr) {\n return new Promise$1$1(function (resolve, reject) {\n if (!arr || typeof arr.length === 'undefined') throw new TypeError('Promise.all accepts an array');\n var args = Array.prototype.slice.call(arr);\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n function res(i, val) {\n try {\n if (val && (_typeof$1(val) === 'object' || typeof val === 'function')) {\n var then = val.then;\n if (typeof then === 'function') {\n then.call(val, function (val) {\n res(i, val);\n }, reject);\n return;\n }\n }\n args[i] = val;\n if (--remaining === 0) {\n resolve(args);\n }\n } catch (ex) {\n reject(ex);\n }\n }\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n};\nPromise$1$1.resolve = function (value) {\n if (value && _typeof$1(value) === 'object' && value.constructor === Promise$1$1) {\n return value;\n }\n return new Promise$1$1(function (resolve) {\n resolve(value);\n });\n};\nPromise$1$1.reject = function (value) {\n return new Promise$1$1(function (resolve, reject) {\n reject(value);\n });\n};\nPromise$1$1.race = function (values) {\n return new Promise$1$1(function (resolve, reject) {\n for (var i = 0, len = values.length; i < len; i++) {\n values[i].then(resolve, reject);\n }\n });\n};\n\n// Use polyfill for setImmediate for performance gains\nPromise$1$1._immediateFn = typeof setImmediate === 'function' && function (fn) {\n setImmediate(fn);\n} || function (fn) {\n setTimeoutFunc$1(fn, 0);\n};\nPromise$1$1._unhandledRejectionFn = function _unhandledRejectionFn(err) {\n if (typeof console !== 'undefined' && console) {\n console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console\n }\n};\nvar UndoAction = function UndoAction(undoFunc, undoParams, redoFunc, redoParams) {\n var execute = function execute() {\n return new Promise$1$1(function (resolve, reject) {\n try {\n undoFunc(undoParams);\n } catch (error) {\n reject(error);\n }\n var redo = UndoAction(redoFunc, redoParams, undoFunc, undoParams);\n resolve(redo);\n });\n };\n return {\n execute: execute\n };\n};\nvar NoOpAction = function NoOpAction() {\n return {\n execute: function execute() {\n return Promise$1$1.resolve();\n }\n };\n};\n\n/** @module UndoAction */\nvar UndoAction$1 = {\n /**\n * Factory method that returns a new UndoAction object.\n * @function create\n * @param {Function} undoFunc - The function that will be used to undo the action.\n * @param {Object} undoParams - Parameters that will be passed to undo function.\n * @param {Function} redoFunc - The function that will be use to redo the action.\n * @param {Object} redoParams - Parameters that will be passed to redo function.\n * @static\n * @return {module:UndoAction} new Command instance\n */\n create: function create(undoFunc, undoParams, redoFunc, redoParams) {\n return UndoAction(undoFunc, undoParams, redoFunc, redoParams);\n },\n noOp: function noOp() {\n return NoOpAction();\n }\n};\nvar ImageRectangle = function ImageRectangle(propertyInfo) {\n var _x;\n var _y;\n var _width;\n var _height;\n if (isString(propertyInfo)) {\n var tokens = propertyInfo.split(',');\n _x = Number(tokens[0]);\n _y = Number(tokens[1]);\n _width = Number(tokens[2]);\n _height = Number(tokens[3]);\n } else if (isObject(propertyInfo)) {\n _x = propertyInfo.x;\n _y = propertyInfo.y;\n _width = propertyInfo.width;\n _height = propertyInfo.height;\n } else {\n throw new Error('ImageRectangle is expecting a rectangle property string format: \"x, y, width, height\"');\n }\n var _public = Object.defineProperties({}, {\n x: {\n get: function get() {\n return _x;\n }\n },\n y: {\n get: function get() {\n return _y;\n }\n },\n width: {\n get: function get() {\n return _width;\n }\n },\n height: {\n get: function get() {\n return _height;\n }\n }\n });\n _public.toPOJO = function () {\n return {\n x: _x,\n y: _y,\n width: _width,\n height: _height\n };\n };\n _public.toXmpAtt = function () {\n return [_x, _y, _width, _height].join(', ');\n };\n return _public;\n};\n\n/** @module ImageRectangle */\nvar ImageRectangle$1 = {\n /**\n * Factory method that returns a new ImageRectangle object.\n * @function create\n * @param {String|Object} propertyInfo - Required property string of the rectangle. A Rectangle object\n * is an area defined by its position, as indicated by its top-left corner point (x, y) and by its width\n * and its height. The properties should be comma separated in the following format \"x, y, width, height\". Alternatively,\n * this can be an object containing x,y,width,height properties (i.e. the object that comes out from .toPOJO())\n * @static\n * @return {module:ImageRectangle} new ImageRectangle instance\n */\n create: function create(propertyInfo) {\n return ImageRectangle(propertyInfo);\n }\n};\nvar TAG_BEGIN_NOTATION = '\\\\';\nvar TAG_CLOSE_NOTATION = '0';\nvar TAG_END_NOTATION = ' ';\nvar TAG_SPACE = ' ';\nvar LOWER_CASE_A_CHAR_CODE = 97;\nvar LOWER_CASE_Z_CHAR_CODE = 122;\nvar isBlacklistedTag = function isBlacklistedTag(strTag) {\n var LINE_BREAK = 'par ';\n return strTag.toLowerCase() === LINE_BREAK;\n};\nvar findNextTag = function findNextTag(strTextToSearch, nStartPoint) {\n if (nStartPoint === undefined) {\n nStartPoint = 0;\n }\n var nPosition = -1;\n // Make sure we're not null\n if (strTextToSearch) {\n // Get the first tag-looking sequence\n nPosition = strTextToSearch.indexOf(TAG_BEGIN_NOTATION, nStartPoint);\n // While we've got a tag-looking sequence....\n while (nPosition !== -1) {\n // As long as this point is not the last character in the string\n if (nPosition + 1 < strTextToSearch.length) {\n var nCode = strTextToSearch.toLowerCase().charCodeAt(nPosition + 1);\n // If the lower-case character is a lower-case alpha character\n if (LOWER_CASE_A_CHAR_CODE <= nCode && nCode <= LOWER_CASE_Z_CHAR_CODE) {\n break;\n }\n }\n // Get the next location of a tag-looking sequence\n nPosition = strTextToSearch.indexOf(TAG_BEGIN_NOTATION, nPosition + 1);\n }\n }\n\n // Return -1 of the position of the first valid tag\n return nPosition;\n};\nvar getTagAt = function getTagAt(strText, nTagPosition) {\n var strTag;\n if (nTagPosition !== -1) {\n var nEnd = strText.indexOf(TAG_END_NOTATION, nTagPosition + 1);\n if (nEnd !== -1) {\n strTag = strText.substring(nTagPosition + 1, nEnd + 1);\n } else {\n strTag = strText.substring(nTagPosition + 1);\n }\n }\n return strTag;\n};\nvar findNextTagNotBlacklisted = function findNextTagNotBlacklisted(strTextToSearch, nStartPoint) {\n if (nStartPoint === undefined) {\n nStartPoint = 0;\n }\n var nPosition = findNextTag(strTextToSearch, nStartPoint);\n while (nPosition !== -1) {\n var strTag = getTagAt(strTextToSearch, nPosition);\n if (strTag && !isBlacklistedTag(strTag)) {\n break;\n }\n nPosition = findNextTag(strTextToSearch, nPosition + 1);\n }\n return nPosition;\n};\nvar getTextToCloseTag = function getTextToCloseTag(strTag, arrStack) {\n var strCloseTags = '';\n var arrOpenTags = [];\n var strCloseTagNeeded = arrStack.pop();\n while (strCloseTagNeeded && strCloseTagNeeded !== strTag && arrStack.length) {\n strCloseTags += TAG_BEGIN_NOTATION + strCloseTagNeeded;\n arrOpenTags.push(matchingTag(strCloseTagNeeded));\n if (arrStack.length) {\n strCloseTagNeeded = arrStack.pop();\n }\n }\n strCloseTags += TAG_BEGIN_NOTATION + strTag;\n while (arrOpenTags.length) {\n var strOpenTagNeeded = arrOpenTags.pop();\n if (strOpenTagNeeded) {\n strCloseTags += TAG_BEGIN_NOTATION + strOpenTagNeeded;\n arrStack.push(matchingTag(strOpenTagNeeded));\n }\n }\n return strCloseTags;\n};\nvar isClosingTag = function isClosingTag(strTag) {\n return strTag.indexOf(TAG_CLOSE_NOTATION) !== -1;\n};\nvar matchingTag = function matchingTag(strToMatch) {\n var strMatch = '';\n if (strToMatch !== '') {\n // An end tag\n if (isClosingTag(strToMatch)) {\n strMatch = strToMatch.substring(0, strToMatch.indexOf(TAG_CLOSE_NOTATION));\n } else {\n // Not an end tag\n // If we need to remove space (and we should)\n if (strToMatch.indexOf(TAG_SPACE) !== -1) {\n strMatch = strToMatch.substring(0, strToMatch.indexOf(TAG_SPACE));\n }\n strMatch += TAG_CLOSE_NOTATION;\n }\n strMatch += TAG_SPACE;\n }\n return strMatch;\n};\nvar removeTag = function removeTag(strToFix, nTagPosition) {\n if (nTagPosition !== -1 && strToFix && nTagPosition < strToFix.length) {\n // Get the end of the tag\n var nTagEnd = strToFix.indexOf(TAG_END_NOTATION, nTagPosition);\n // If end exists\n if (nTagEnd !== -1) {\n // Remove it\n strToFix = strToFix.substring(0, nTagPosition) + strToFix.substring(nTagEnd + 1);\n } else {\n strToFix = strToFix.substring(0, nTagPosition);\n }\n }\n return strToFix;\n};\nvar trimString = function trimString(strToFix) {\n while (strToFix.length > 1 && strToFix.charAt(0) === TAG_SPACE) {\n strToFix = strToFix.substring(1);\n }\n while (strToFix.length > 1 && strToFix.charAt(strToFix.length - 1) === TAG_SPACE) {\n strToFix = strToFix.substring(0, strToFix.length - 1);\n }\n if (strToFix === TAG_SPACE) {\n strToFix = '';\n }\n return strToFix;\n};\nvar nestTags = function nestTags(strToFix) {\n if (strToFix) {\n var arrTagStack = [];\n var nPosition = findNextTagNotBlacklisted(strToFix);\n while (nPosition !== -1) {\n // Please note: the \"tag\" is considered to be what follows the backslash that signals it's beginning.\n var strTag = getTagAt(strToFix, nPosition);\n if (strTag && isClosingTag(strTag)) {\n // Get the new tag set required to add it in to the string\n var strCloseTags = getTextToCloseTag(strTag, arrTagStack);\n\n // Insert the tags and don't forget the rest of the original, if there is any\n var nTagEnd = strToFix.indexOf(TAG_END_NOTATION, nPosition);\n if (nTagEnd !== -1) {\n strToFix = strToFix.substring(0, nPosition) + strCloseTags + strToFix.substring(nTagEnd + 1);\n } else {\n strToFix = strToFix.substring(0, nPosition) + strCloseTags;\n }\n\n // Increment this so that we're not going through the stuff we just inserted\n nPosition += strCloseTags.length;\n } else {\n if (strTag && !isBlacklistedTag(strTag)) {\n arrTagStack.push(matchingTag(strTag));\n }\n nPosition = Number(nPosition) + 1;\n }\n nPosition = findNextTag(strToFix, nPosition);\n }\n }\n return strToFix;\n};\nvar removeEmptyTags = function removeEmptyTags(strToFix) {\n var strFixed = strToFix;\n if (strFixed) {\n // Loop through the entire string as long as there were corrections made last time\n // (in case more can be made based on the previous ones)\n var nCountCorrectedThisLoop = 1;\n while (nCountCorrectedThisLoop > 0) {\n nCountCorrectedThisLoop = 0;\n // Get the first tag that isn't blacklisted\n var nPosition = findNextTagNotBlacklisted(strFixed);\n while (nPosition !== -1) {\n // Get the next tag that's not blacklisted\n var nNextPosition = findNextTagNotBlacklisted(strFixed, nPosition + 1);\n\n // Get the actual tag\n var strTag = getTagAt(strFixed, nPosition);\n // If the actual tag exists\n if (strTag) {\n // As long as that next tag is actually found\n if (nNextPosition !== -1) {\n // Set up the alternate tag that we're trying to match with\n var strAlternateTag = matchingTag(strTag);\n\n // Get the actual next tag\n var strNextTag = getTagAt(strFixed, nNextPosition);\n // If the actual next tag exists and is the same as what we're looking for\n if (strNextTag && strNextTag === strAlternateTag) {\n // Get the string between the two tags\n var nStringBetweenBegin = nPosition + 1 + strTag.length;\n var strBetween = strFixed.substring(nStringBetweenBegin, nNextPosition);\n // If the trimmed string is empty\n if (!trimString(strBetween).length) {\n // Remove the ending tag\n strFixed = removeTag(strFixed, nNextPosition);\n // Then remove the beginning tag that we're actually at\n strFixed = removeTag(strFixed, nPosition);\n\n // Adjust the position of that next tag by the amount of space we've reduced\n nNextPosition -= strTag.length + 1;\n // Note that we've made a correction\n nCountCorrectedThisLoop++;\n }\n }\n }\n }\n\n // Set the actual next position for the inner loop\n nPosition = nNextPosition;\n }\n }\n }\n return strFixed;\n};\nvar toText = function toText(str) {\n if (str.match(/{\\\\rtf1 /)) {\n str = str.replace(/{\\\\rtf1 /, '');\n if (str.charAt(str.length - 1) === '}') {\n str = str.substring(0, str.length - 1);\n }\n }\n str = str.replace(/\\\\i /g, '');\n str = str.replace(/\\\\i0 /g, '');\n str = str.replace(/\\\\b /g, '');\n str = str.replace(/\\\\b0 /g, '');\n str = str.replace(/\\\\ul /g, '');\n str = str.replace(/\\\\ul0 /g, '');\n str = str.replace(/\\\\par/g, '');\n str = str.replace(/\\\\{/g, '{');\n str = str.replace(/\\\\}/g, '}');\n str = str.replace(/\\\\\\\\/g, '\\\\');\n return str;\n};\nvar toHtml = function toHtml(str) {\n str = nestTags(str);\n str = removeEmptyTags(str);\n str = str.split('<').join('<');\n str = str.split('>').join('>');\n var removeLastBracket = false;\n\n // remove the RTF and Replace with HTML\n if (str.indexOf('{\\\\rtf1') !== -1) {\n str = str.split('{\\\\rtf1 ').join('');\n removeLastBracket = true;\n }\n str = str.split('\\\\i0 ').join('');\n str = str.split('\\\\b0 ').join('');\n str = str.split(\"\\\\ul0 \").join('');\n str = str.split('\\\\i ').join('');\n str = str.split('\\\\b ').join('');\n str = str.split(\"\\\\ul \").join('');\n str = str.split('\\\\par ').join('
');\n str = str.split('\\\\{').join('{');\n str = str.split('\\\\}').join('}');\n str = str.split('\\\\\\\\').join('\\\\');\n if (removeLastBracket && str.charAt(str.length - 1) === '}') {\n str = str.substring(0, str.length - 1);\n }\n\n // convert these so they are displayed and not used as HTML Tags ( exception
)\n str = str.split('<br>').join('
');\n str = str.split('<BR>').join('
');\n return str;\n};\n\n/** @module Rtf */\nvar Rtf = {\n /**\n * Take a string with rtf markup and translate it to text\n * @function toText\n * @param {String} str - The rtf formatted input string to parse.\n * @static\n * @return {String} The string as text-only\n */\n toText: toText,\n /**\n * Take a string with rtf markup and translate it to html\n * @function toHtml\n * @param {String} str - The rtf formatted input string to parse.\n * @static\n * @return {String} The string with html markup aligning to the rtf markup\n */\n toHtml: toHtml\n};\nvar validateParams = function validateParams(params) {\n return params && typeof params.text === 'string' && (!params.languageIdentifierString || typeof params.languageIdentifierString === 'string');\n};\nvar CaptionText = function CaptionText(params) {\n var _languageIdentifier = LanguageIdentifier$1.create(languageIdentifiers.identifiers[\"default\"]);\n var _text;\n var _plainText;\n var _markupText;\n var _additionalParamProperties = {};\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var setLanguageIdentifier = function setLanguageIdentifier(languageIdentifierString) {\n if (!languageIdentifiers.isSupportedLanguage(languageIdentifierString)) {\n languageIdentifierString = languageIdentifiers.identifiers[\"default\"];\n }\n var previousLanguageIdentifierString = _languageIdentifier.identifier;\n _languageIdentifier = LanguageIdentifier$1.create(languageIdentifierString);\n return UndoAction$1.create(setLanguageIdentifier, previousLanguageIdentifierString, setLanguageIdentifier, languageIdentifierString);\n };\n var setText = function setText(text) {\n if (typeof text !== 'string') {\n throw new Error('Caption text is expecting a string, but got (' + text + ')');\n }\n var previous = _text;\n _text = text;\n _plainText = Rtf.toText(_text);\n _markupText = Rtf.toHtml(_text);\n return UndoAction$1.create(setText, previous, setText, _text);\n };\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n atts: {\n 'xml:lang': _languageIdentifier.identifier\n },\n text: _text\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n languageIdentifier: {\n get: function get() {\n return _languageIdentifier;\n }\n },\n language: {\n get: function get() {\n return _languageIdentifier.language;\n }\n },\n text: {\n get: function get() {\n return _text;\n }\n },\n plainText: {\n get: function get() {\n return _plainText;\n }\n },\n markupText: {\n get: function get() {\n return _markupText;\n }\n }\n });\n _public.setLanguageIdentifier = setLanguageIdentifier;\n _public.setText = setText;\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n languageIdentifier: _languageIdentifier.toPOJO(),\n language: _languageIdentifier.language,\n text: _text,\n plainText: _plainText,\n markupText: _markupText\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n forEach(keys$1(_additionalParamProperties), function (key) {\n pojo[key] = _additionalParamProperties[key];\n });\n return pojo;\n };\n if (validateParams(params)) {\n forEach(keys$1(params), function (key) {\n if (key === 'languageIdentifierString') {\n setLanguageIdentifier(params.languageIdentifierString);\n } else if (key === 'text') {\n setText(params.text);\n } else if (!isFunction(_additionalParamProperties[key])) {\n _additionalParamProperties[key] = params[key];\n }\n });\n } else {\n throw new Error('CaptionText expects text and language parameters');\n }\n return _public;\n};\nvar createFromXmpElement = function createFromXmpElement(textElement) {\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var rtfText = _xmlUtility.getElementText(textElement);\n var params = {\n languageIdentifierString: textElement.getAttribute('xml:lang'),\n text: rtfText\n };\n return CaptionText(params);\n};\n\n/** @module CaptionText */\nvar CaptionText$1 = {\n /**\n * Factory method that returns a new CaptionText object.\n * @function create\n * @param {Object} params - Optional params for caption\n * @param {String} [params.languageIdentifierString] - RFC 3066 notation language string\n * @param {String} [params.text] - Text of caption item.\n * @static\n * @return {module:CaptionText} new CaptionText instance\n */\n create: function create(params) {\n return CaptionText(params);\n },\n /**\n * Factory method that returns a new CaptionText object from an XMP caption element.\n * @function createFromXmpElement\n * @param {Object} element - XMP caption item element.\n * @static\n * @return {module:CaptionText} new CaptionText instance\n */\n createFromXmpElement: createFromXmpElement\n};\nvar decoratorFunctions = [];\nvar nullCaptionText = {\n text: undefined,\n plainText: undefined,\n markupText: undefined\n};\nvar Caption = function Caption(params) {\n var _startTime;\n var _duration;\n var _captionTextList = [];\n var _horizontalAlignment;\n var _verticalAlignment;\n var _file;\n var _image;\n var _imageIndex;\n var _imageOffset;\n var _imageRectangle;\n var _activeLanguageIdentifier = LanguageIdentifier$1.create(languageIdentifiers.identifiers[\"default\"]);\n var _additionalParamProperties = {};\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var getAvailableLanguages = function getAvailableLanguages() {\n return map(_captionTextList, function (captionText) {\n return captionText.languageIdentifier.identifier;\n });\n };\n var setStartTime = function setStartTime(startTime) {\n if (typeof startTime !== 'number') {\n throw new Error('Caption startTime is expecting a number, but got (' + startTime + ')');\n }\n var previous = _startTime;\n _startTime = Math.floor(startTime);\n return UndoAction$1.create(setStartTime, previous, setStartTime, _startTime);\n };\n var setDuration = function setDuration(duration) {\n if (typeof duration !== 'number') {\n throw new Error('Caption duration is expecting a number, but got (' + duration + ')');\n }\n var previous = _duration;\n _duration = Math.floor(duration);\n return UndoAction$1.create(setDuration, previous, setDuration, _duration);\n };\n var addOrReplaceCaptionText = function addOrReplaceCaptionText(newCaptionText) {\n var existingCaptionItemIndex = findIndex(_captionTextList, function (captionItem) {\n return captionItem.languageIdentifier.identifier === newCaptionText.languageIdentifier.identifier;\n });\n if (existingCaptionItemIndex !== -1) {\n var oldCaptionItem = _captionTextList[existingCaptionItemIndex];\n _captionTextList.splice(existingCaptionItemIndex, 1, newCaptionText);\n return UndoAction$1.create(addOrReplaceCaptionText, oldCaptionItem, addOrReplaceCaptionText, newCaptionText);\n }\n if (newCaptionText.toPOJO) {\n _captionTextList.push(newCaptionText);\n } else {\n _captionTextList.push(CaptionText$1.create(newCaptionText));\n }\n return UndoAction$1.create(removeCaptionText, newCaptionText, addOrReplaceCaptionText, newCaptionText);\n };\n var removeCaptionText = function removeCaptionText(captionText) {\n var removedCaptionItems = remove(_captionTextList, function (captionTextItem) {\n return captionTextItem.languageIdentifier.identifier === captionText.languageIdentifier.identifier && captionTextItem.text === captionText.text;\n });\n var removedCaptionItem = removedCaptionItems.length > 0 ? removedCaptionItems[0] : undefined;\n return UndoAction$1.create(addOrReplaceCaptionText, removedCaptionItem, removeCaptionText, captionText);\n };\n var setHorizontalAlignment = function setHorizontalAlignment(horizontalAlignment) {\n if (typeof horizontalAlignment !== 'string') {\n throw new Error('Caption horizontalAlignment is expecting a string, but got (' + horizontalAlignment + ')');\n }\n var previous = _horizontalAlignment;\n _horizontalAlignment = horizontalAlignment;\n return UndoAction$1.create(setHorizontalAlignment, previous, setHorizontalAlignment, _horizontalAlignment);\n };\n var setVerticalAlignment = function setVerticalAlignment(verticalAlignment) {\n if (typeof verticalAlignment !== 'string') {\n throw new Error('Caption verticalAlignment is expecting a string, but got (' + verticalAlignment + ')');\n }\n var previous = _verticalAlignment;\n _verticalAlignment = verticalAlignment;\n return UndoAction$1.create(setVerticalAlignment, previous, setVerticalAlignment, _verticalAlignment);\n };\n var setFile = function setFile(file) {\n if (typeof file !== 'string') {\n throw new Error('Caption file is expecting a string, but got (' + file + ')');\n }\n var previous = _file;\n _file = file;\n return UndoAction$1.create(setFile, previous, setFile, _file);\n };\n var setImage = function setImage(image) {\n if (typeof image !== 'string') {\n throw new Error('Caption image is expecting a string, but got (' + image + ')');\n }\n var previous = _image;\n _image = image;\n return UndoAction$1.create(setImage, previous, setImage, _image);\n };\n var setImageIndex = function setImageIndex(imageIndex) {\n if (typeof imageIndex !== 'number') {\n throw new Error('Caption imageIndex is expecting a number, but got (' + imageIndex + ')');\n }\n var previous = _imageIndex;\n _imageIndex = imageIndex;\n return UndoAction$1.create(setImageIndex, previous, setImageIndex, _imageIndex);\n };\n var setImageOffset = function setImageOffset(imageOffset) {\n if (typeof imageOffset !== 'number') {\n throw new Error('Caption imageOffset is expecting a number, but got (' + imageOffset + ')');\n }\n var previous = _imageOffset;\n _imageOffset = imageOffset;\n return UndoAction$1.create(setImageOffset, previous, setImageOffset, _imageOffset);\n };\n var setImageRectangle = function setImageRectangle(imageRectangle) {\n if (_typeof$1(imageRectangle) !== 'object') {\n throw new Error('Caption imageRectangle is expecting an object, but got (' + imageRectangle + ')');\n }\n var previous = _imageRectangle;\n _imageRectangle = imageRectangle;\n return UndoAction$1.create(setImageRectangle, previous, setImageRectangle, _imageRectangle);\n };\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'xmpDM:startTime': _startTime,\n 'xmpDM:duration': _duration,\n 'tscDM:halign': _horizontalAlignment,\n 'tscDM:valign': _verticalAlignment,\n 'tscDM:file': _file,\n 'tscDM:image': _image,\n 'tscDM:imageindex': _imageIndex,\n 'tscDM:imageoffset': _imageOffset,\n 'tscDM:imagerect': _imageRectangle ? [_imageRectangle.x, _imageRectangle.y, _imageRectangle.width, _imageRectangle.height].join(', ') : undefined\n },\n children: [{\n name: 'xmpDM:name',\n children: [{\n name: 'rdf:Alt',\n children: _captionTextList\n }]\n }]\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var getCaptionText = function getCaptionText() {\n if (_captionTextList.length === 0) {\n return nullCaptionText;\n }\n if (_activeLanguageIdentifier.identifier === languageIdentifiers.identifiers[\"default\"]) {\n return _captionTextList[0];\n }\n var preferredCaptionText = find(_captionTextList, function (captionText) {\n return captionText.languageIdentifier.identifier === _activeLanguageIdentifier.identifier;\n });\n if (!preferredCaptionText) {\n preferredCaptionText = find(_captionTextList, function (captionText) {\n return captionText.language === _activeLanguageIdentifier.language;\n });\n }\n return preferredCaptionText || nullCaptionText;\n };\n var _public = Object.defineProperties({}, {\n startTime: {\n get: function get() {\n return _startTime;\n }\n },\n duration: {\n get: function get() {\n return _duration;\n }\n },\n endTime: {\n get: function get() {\n return _startTime + _duration;\n }\n },\n captionTextList: {\n get: function get() {\n return _captionTextList;\n }\n },\n text: {\n get: function get() {\n return getCaptionText().text;\n }\n },\n plainText: {\n get: function get() {\n return getCaptionText().plainText;\n }\n },\n markupText: {\n get: function get() {\n return getCaptionText().markupText;\n }\n },\n horizontalAlignment: {\n get: function get() {\n return _horizontalAlignment;\n }\n },\n verticalAlignment: {\n get: function get() {\n return _verticalAlignment;\n }\n },\n file: {\n get: function get() {\n return _file;\n }\n },\n image: {\n get: function get() {\n return _image;\n }\n },\n imageIndex: {\n get: function get() {\n return _imageIndex;\n }\n },\n imageOffset: {\n get: function get() {\n return _imageOffset;\n }\n },\n imageRectangle: {\n get: function get() {\n return _imageRectangle;\n }\n },\n activeLanguageIdentifier: {\n get: function get() {\n return _activeLanguageIdentifier;\n },\n set: function set(languageIdentifier) {\n _activeLanguageIdentifier = languageIdentifier;\n }\n }\n });\n _public.getAvailableLanguages = getAvailableLanguages;\n _public.setStartTime = setStartTime;\n _public.setDuration = setDuration;\n _public.addOrReplaceCaptionText = addOrReplaceCaptionText;\n _public.removeCaptionText = removeCaptionText;\n _public.setHorizontalAlignment = setHorizontalAlignment;\n _public.setVerticalAlignment = setVerticalAlignment;\n _public.setFile = setFile;\n _public.setImage = setImage;\n _public.setImageIndex = setImageIndex;\n _public.setImageOffset = setImageOffset;\n _public.setImageRectangle = setImageRectangle;\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n startTime: _startTime,\n duration: _duration,\n captionTextList: invokeMap(_captionTextList, 'toPOJO'),\n horizontalAlignment: _horizontalAlignment,\n verticalAlignment: _verticalAlignment,\n file: _file,\n image: _image,\n imageIndex: _imageIndex,\n imageOffset: _imageOffset,\n imageRectangle: _imageRectangle ? _imageRectangle.toPOJO() : _imageRectangle\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n forEach(keys$1(_additionalParamProperties), function (key) {\n pojo[key] = _additionalParamProperties[key];\n });\n return pojo;\n };\n if (params) {\n forEach(keys$1(params), function (key) {\n if (key === 'startTime' && typeof params.startTime === 'number') {\n setStartTime(params.startTime);\n } else if (key === 'duration' && typeof params.duration === 'number') {\n setDuration(params.duration);\n } else if (key === 'captionTextList' && params.captionTextList) {\n map(params.captionTextList, addOrReplaceCaptionText);\n } else if (key === 'horizontalAlignment' && params.horizontalAlignment) {\n setHorizontalAlignment(params.horizontalAlignment);\n } else if (key === 'verticalAlignment' && params.verticalAlignment) {\n setVerticalAlignment(params.verticalAlignment);\n } else if (key === 'file' && params.file) {\n setFile(params.file);\n } else if (key === 'image' && params.image) {\n setImage(params.image);\n } else if (key === 'imageIndex' && typeof params.imageIndex === 'number') {\n setImageIndex(params.imageIndex);\n } else if (key === 'imageOffset' && typeof params.imageOffset === 'number') {\n setImageOffset(params.imageOffset);\n } else if (key === 'imageRectangle' && params.imageRectangle) {\n if (!params.imageRectangle.toPOJO) {\n params.imageRectangle = ImageRectangle$1.create(params.imageRectangle);\n }\n setImageRectangle(params.imageRectangle);\n } else if (!isFunction(_additionalParamProperties[key])) {\n _additionalParamProperties[key] = params[key];\n }\n });\n }\n forEach(decoratorFunctions, function (func) {\n func(_public);\n });\n return _public;\n};\nvar createFromXmpElement$1 = function createFromXmpElement$1(captionElement) {\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var captionTextElements = _xmlUtility.getElementsByTagNameNSPrefix(captionElement, 'rdf:li');\n var captionTextList = map(captionTextElements, CaptionText$1.createFromXmpElement);\n var params = {\n startTime: Number(captionElement.getAttribute('xmpDM:startTime')),\n duration: Number(captionElement.getAttribute('xmpDM:duration')),\n captionTextList: captionTextList,\n horizontalAlignment: captionElement.getAttribute('tscDM:halign'),\n verticalAlignment: captionElement.getAttribute('tscDM:valign')\n };\n if (captionElement.getAttribute('tscDM:file')) {\n params.file = captionElement.getAttribute('tscDM:file');\n }\n if (captionElement.getAttribute('tscDM:image')) {\n params.image = captionElement.getAttribute('tscDM:image');\n }\n if (captionElement.getAttribute('tscDM:imageindex')) {\n params.imageIndex = Number(captionElement.getAttribute('tscDM:imageindex'));\n }\n if (captionElement.getAttribute('tscDM:imageoffset')) {\n params.imageOffset = Number(captionElement.getAttribute('tscDM:imageoffset'));\n }\n if (captionElement.getAttribute('tscDM:imagerect')) {\n params.imageRectangle = ImageRectangle$1.create(captionElement.getAttribute('tscDM:imagerect'));\n }\n return Caption(params);\n};\nvar registerDecorator = function registerDecorator(decorator) {\n if (decorator && typeof decorator === 'function') {\n decoratorFunctions.push(decorator);\n } else {\n throw new Error('decorator must be a function');\n }\n};\nvar clearDecorators = function clearDecorators() {\n decoratorFunctions = [];\n};\n\n/** @module Caption */\nvar Caption$1 = {\n /**\n * Factory method that returns a new Caption object.\n * @function create\n * @param {Object} params - Optional params for caption\n * @param {Number} [params.startTime] - Start time of caption.\n * @param {Number} [params.duration] - Duration of caption.\n * @param {module:CaptionText[]} [params.captionTextList] - List of CaptionText objects.\n * @param {String} [params.horizontalAlignment] - Horizontal alignment of caption text.\n * @param {String} [params.verticalAlignment] - Vertical alignment of caption text.\n * @param {String} [params.file] - Reference to a specific file as String.\n * @param {String} [params.image] - Url for caption thumbnail.\n * @param {Number} [params.imageIndex] - Index of image within file consisting of one or more images.\n * @param {Number} [params.imageOffset] - Number of bytes this image begins at, relative to the beginning of the entire file\n * @param {module:ImageRectangle} [params.imageRectangle] - Image Rectangle for image sprite map\n * @static\n * @return {module:Caption} new Caption instance\n */\n create: function create(params) {\n return Caption(params);\n },\n /**\n * Factory method that returns a new Caption object from an XMP caption element.\n * @function createFromXmpElement\n * @param {Object} element - XMP caption element.\n * @static\n * @return {module:Caption} new Caption instance\n */\n createFromXmpElement: createFromXmpElement$1,\n /**\n * Method to allow registration of decorator function that can extend the caption\n * object before it is returned in the create functions.\n * @function registerDecorator\n * @param {Function} decorator - Function that will be used to decorate the caption.\n * The function should take a caption parameter.\n * @static\n */\n registerDecorator: registerDecorator,\n /**\n * Method to allow clearing decorator functions\n * @function clearDecorators\n * @static\n */\n clearDecorators: clearDecorators\n};\nfunction createCommonjsModule(fn, module) {\n return module = {\n exports: {}\n }, fn(module, module.exports), module.exports;\n}\nvar tinycolor$1 = createCommonjsModule(function (module) {\n // TinyColor v1.4.1\n // https://github.com/bgrins/TinyColor\n // Brian Grinstead, MIT License\n\n (function (Math) {\n var trimLeft = /^\\s+/,\n trimRight = /\\s+$/,\n tinyCounter = 0,\n mathRound = Math.round,\n mathMin = Math.min,\n mathMax = Math.max,\n mathRandom = Math.random;\n function tinycolor(color, opts) {\n color = color ? color : '';\n opts = opts || {};\n\n // If input is already a tinycolor, return itself\n if (color instanceof tinycolor) {\n return color;\n }\n // If we are called as a function, call using new instead\n if (!(this instanceof tinycolor)) {\n return new tinycolor(color, opts);\n }\n var rgb = inputToRGB(color);\n this._originalInput = color, this._r = rgb.r, this._g = rgb.g, this._b = rgb.b, this._a = rgb.a, this._roundA = mathRound(100 * this._a) / 100, this._format = opts.format || rgb.format;\n this._gradientType = opts.gradientType;\n\n // Don't let the range of [0,255] come back in [0,1].\n // Potentially lose a little bit of precision here, but will fix issues where\n // .5 gets interpreted as half of the total, instead of half of 1\n // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n if (this._r < 1) {\n this._r = mathRound(this._r);\n }\n if (this._g < 1) {\n this._g = mathRound(this._g);\n }\n if (this._b < 1) {\n this._b = mathRound(this._b);\n }\n this._ok = rgb.ok;\n this._tc_id = tinyCounter++;\n }\n tinycolor.prototype = {\n isDark: function isDark() {\n return this.getBrightness() < 128;\n },\n isLight: function isLight() {\n return !this.isDark();\n },\n isValid: function isValid() {\n return this._ok;\n },\n getOriginalInput: function getOriginalInput() {\n return this._originalInput;\n },\n getFormat: function getFormat() {\n return this._format;\n },\n getAlpha: function getAlpha() {\n return this._a;\n },\n getBrightness: function getBrightness() {\n //http://www.w3.org/TR/AERT#color-contrast\n var rgb = this.toRgb();\n return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n },\n getLuminance: function getLuminance() {\n //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n var rgb = this.toRgb();\n var RsRGB, GsRGB, BsRGB, R, G, B;\n RsRGB = rgb.r / 255;\n GsRGB = rgb.g / 255;\n BsRGB = rgb.b / 255;\n if (RsRGB <= 0.03928) {\n R = RsRGB / 12.92;\n } else {\n R = Math.pow((RsRGB + 0.055) / 1.055, 2.4);\n }\n if (GsRGB <= 0.03928) {\n G = GsRGB / 12.92;\n } else {\n G = Math.pow((GsRGB + 0.055) / 1.055, 2.4);\n }\n if (BsRGB <= 0.03928) {\n B = BsRGB / 12.92;\n } else {\n B = Math.pow((BsRGB + 0.055) / 1.055, 2.4);\n }\n return 0.2126 * R + 0.7152 * G + 0.0722 * B;\n },\n setAlpha: function setAlpha(value) {\n this._a = boundAlpha(value);\n this._roundA = mathRound(100 * this._a) / 100;\n return this;\n },\n toHsv: function toHsv() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n return {\n h: hsv.h * 360,\n s: hsv.s,\n v: hsv.v,\n a: this._a\n };\n },\n toHsvString: function toHsvString() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n var h = mathRound(hsv.h * 360),\n s = mathRound(hsv.s * 100),\n v = mathRound(hsv.v * 100);\n return this._a == 1 ? \"hsv(\" + h + \", \" + s + \"%, \" + v + \"%)\" : \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \" + this._roundA + \")\";\n },\n toHsl: function toHsl() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n return {\n h: hsl.h * 360,\n s: hsl.s,\n l: hsl.l,\n a: this._a\n };\n },\n toHslString: function toHslString() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n var h = mathRound(hsl.h * 360),\n s = mathRound(hsl.s * 100),\n l = mathRound(hsl.l * 100);\n return this._a == 1 ? \"hsl(\" + h + \", \" + s + \"%, \" + l + \"%)\" : \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \" + this._roundA + \")\";\n },\n toHex: function toHex(allow3Char) {\n return rgbToHex(this._r, this._g, this._b, allow3Char);\n },\n toHexString: function toHexString(allow3Char) {\n return '#' + this.toHex(allow3Char);\n },\n toHex8: function toHex8(allow4Char) {\n return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char);\n },\n toHex8String: function toHex8String(allow4Char) {\n return '#' + this.toHex8(allow4Char);\n },\n toRgb: function toRgb() {\n return {\n r: mathRound(this._r),\n g: mathRound(this._g),\n b: mathRound(this._b),\n a: this._a\n };\n },\n toRgbString: function toRgbString() {\n return this._a == 1 ? \"rgb(\" + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \")\" : \"rgba(\" + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \", \" + this._roundA + \")\";\n },\n toPercentageRgb: function toPercentageRgb() {\n return {\n r: mathRound(bound01(this._r, 255) * 100) + \"%\",\n g: mathRound(bound01(this._g, 255) * 100) + \"%\",\n b: mathRound(bound01(this._b, 255) * 100) + \"%\",\n a: this._a\n };\n },\n toPercentageRgbString: function toPercentageRgbString() {\n return this._a == 1 ? \"rgb(\" + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%)\" : \"rgba(\" + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%, \" + this._roundA + \")\";\n },\n toName: function toName() {\n if (this._a === 0) {\n return \"transparent\";\n }\n if (this._a < 1) {\n return false;\n }\n return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;\n },\n toFilter: function toFilter(secondColor) {\n var hex8String = '#' + rgbaToArgbHex(this._r, this._g, this._b, this._a);\n var secondHex8String = hex8String;\n var gradientType = this._gradientType ? \"GradientType = 1, \" : \"\";\n if (secondColor) {\n var s = tinycolor(secondColor);\n secondHex8String = '#' + rgbaToArgbHex(s._r, s._g, s._b, s._a);\n }\n return \"progid:DXImageTransform.Microsoft.gradient(\" + gradientType + \"startColorstr=\" + hex8String + \",endColorstr=\" + secondHex8String + \")\";\n },\n toString: function toString(format) {\n var formatSet = !!format;\n format = format || this._format;\n var formattedString = false;\n var hasAlpha = this._a < 1 && this._a >= 0;\n var needsAlphaFormat = !formatSet && hasAlpha && (format === \"hex\" || format === \"hex6\" || format === \"hex3\" || format === \"hex4\" || format === \"hex8\" || format === \"name\");\n if (needsAlphaFormat) {\n // Special case for \"transparent\", all other non-alpha formats\n // will return rgba when there is transparency.\n if (format === \"name\" && this._a === 0) {\n return this.toName();\n }\n return this.toRgbString();\n }\n if (format === \"rgb\") {\n formattedString = this.toRgbString();\n }\n if (format === \"prgb\") {\n formattedString = this.toPercentageRgbString();\n }\n if (format === \"hex\" || format === \"hex6\") {\n formattedString = this.toHexString();\n }\n if (format === \"hex3\") {\n formattedString = this.toHexString(true);\n }\n if (format === \"hex4\") {\n formattedString = this.toHex8String(true);\n }\n if (format === \"hex8\") {\n formattedString = this.toHex8String();\n }\n if (format === \"name\") {\n formattedString = this.toName();\n }\n if (format === \"hsl\") {\n formattedString = this.toHslString();\n }\n if (format === \"hsv\") {\n formattedString = this.toHsvString();\n }\n return formattedString || this.toHexString();\n },\n clone: function clone() {\n return tinycolor(this.toString());\n },\n _applyModification: function _applyModification(fn, args) {\n var color = fn.apply(null, [this].concat([].slice.call(args)));\n this._r = color._r;\n this._g = color._g;\n this._b = color._b;\n this.setAlpha(color._a);\n return this;\n },\n lighten: function lighten() {\n return this._applyModification(_lighten, arguments);\n },\n brighten: function brighten() {\n return this._applyModification(_brighten, arguments);\n },\n darken: function darken() {\n return this._applyModification(_darken, arguments);\n },\n desaturate: function desaturate() {\n return this._applyModification(_desaturate, arguments);\n },\n saturate: function saturate() {\n return this._applyModification(_saturate, arguments);\n },\n greyscale: function greyscale() {\n return this._applyModification(_greyscale, arguments);\n },\n spin: function spin() {\n return this._applyModification(_spin, arguments);\n },\n _applyCombination: function _applyCombination(fn, args) {\n return fn.apply(null, [this].concat([].slice.call(args)));\n },\n analogous: function analogous() {\n return this._applyCombination(_analogous, arguments);\n },\n complement: function complement() {\n return this._applyCombination(_complement, arguments);\n },\n monochromatic: function monochromatic() {\n return this._applyCombination(_monochromatic, arguments);\n },\n splitcomplement: function splitcomplement() {\n return this._applyCombination(_splitcomplement, arguments);\n },\n triad: function triad() {\n return this._applyCombination(_triad, arguments);\n },\n tetrad: function tetrad() {\n return this._applyCombination(_tetrad, arguments);\n }\n };\n\n // If input is an object, force 1 into \"1.0\" to handle ratios properly\n // String input requires \"1.0\" as input, so 1 will be treated as 1\n tinycolor.fromRatio = function (color, opts) {\n if (_typeof$1(color) == \"object\") {\n var newColor = {};\n for (var i in color) {\n if (color.hasOwnProperty(i)) {\n if (i === \"a\") {\n newColor[i] = color[i];\n } else {\n newColor[i] = convertToPercentage(color[i]);\n }\n }\n }\n color = newColor;\n }\n return tinycolor(color, opts);\n };\n\n // Given a string or object, convert that input to RGB\n // Possible string inputs:\n //\n // \"red\"\n // \"#f00\" or \"f00\"\n // \"#ff0000\" or \"ff0000\"\n // \"#ff000000\" or \"ff000000\"\n // \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n // \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n // \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n // \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n // \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n // \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n // \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n //\n function inputToRGB(color) {\n var rgb = {\n r: 0,\n g: 0,\n b: 0\n };\n var a = 1;\n var s = null;\n var v = null;\n var l = null;\n var ok = false;\n var format = false;\n if (typeof color == \"string\") {\n color = stringInputToObject(color);\n }\n if (_typeof$1(color) == \"object\") {\n if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n rgb = rgbToRgb(color.r, color.g, color.b);\n ok = true;\n format = String(color.r).substr(-1) === \"%\" ? \"prgb\" : \"rgb\";\n } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n s = convertToPercentage(color.s);\n v = convertToPercentage(color.v);\n rgb = hsvToRgb(color.h, s, v);\n ok = true;\n format = \"hsv\";\n } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n s = convertToPercentage(color.s);\n l = convertToPercentage(color.l);\n rgb = hslToRgb(color.h, s, l);\n ok = true;\n format = \"hsl\";\n }\n if (color.hasOwnProperty(\"a\")) {\n a = color.a;\n }\n }\n a = boundAlpha(a);\n return {\n ok: ok,\n format: color.format || format,\n r: mathMin(255, mathMax(rgb.r, 0)),\n g: mathMin(255, mathMax(rgb.g, 0)),\n b: mathMin(255, mathMax(rgb.b, 0)),\n a: a\n };\n }\n\n // Conversion Functions\n // --------------------\n\n // `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n // \n\n // `rgbToRgb`\n // Handle bounds / percentage checking to conform to CSS color spec\n // \n // *Assumes:* r, g, b in [0, 255] or [0, 1]\n // *Returns:* { r, g, b } in [0, 255]\n function rgbToRgb(r, g, b) {\n return {\n r: bound01(r, 255) * 255,\n g: bound01(g, 255) * 255,\n b: bound01(b, 255) * 255\n };\n }\n\n // `rgbToHsl`\n // Converts an RGB color value to HSL.\n // *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n // *Returns:* { h, s, l } in [0,1]\n function rgbToHsl(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = mathMax(r, g, b),\n min = mathMin(r, g, b);\n var h,\n s,\n l = (max + min) / 2;\n if (max == min) {\n h = s = 0; // achromatic\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n return {\n h: h,\n s: s,\n l: l\n };\n }\n\n // `hslToRgb`\n // Converts an HSL color value to RGB.\n // *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n // *Returns:* { r, g, b } in the set [0, 255]\n function hslToRgb(h, s, l) {\n var r, g, b;\n h = bound01(h, 360);\n s = bound01(s, 100);\n l = bound01(l, 100);\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n if (s === 0) {\n r = g = b = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n return {\n r: r * 255,\n g: g * 255,\n b: b * 255\n };\n }\n\n // `rgbToHsv`\n // Converts an RGB color value to HSV\n // *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n // *Returns:* { h, s, v } in [0,1]\n function rgbToHsv(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = mathMax(r, g, b),\n min = mathMin(r, g, b);\n var h,\n s,\n v = max;\n var d = max - min;\n s = max === 0 ? 0 : d / max;\n if (max == min) {\n h = 0; // achromatic\n } else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n return {\n h: h,\n s: s,\n v: v\n };\n }\n\n // `hsvToRgb`\n // Converts an HSV color value to RGB.\n // *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n // *Returns:* { r, g, b } in the set [0, 255]\n function hsvToRgb(h, s, v) {\n h = bound01(h, 360) * 6;\n s = bound01(s, 100);\n v = bound01(v, 100);\n var i = Math.floor(h),\n f = h - i,\n p = v * (1 - s),\n q = v * (1 - f * s),\n t = v * (1 - (1 - f) * s),\n mod = i % 6,\n r = [v, q, p, p, t, v][mod],\n g = [t, v, v, q, p, p][mod],\n b = [p, p, t, v, v, q][mod];\n return {\n r: r * 255,\n g: g * 255,\n b: b * 255\n };\n }\n\n // `rgbToHex`\n // Converts an RGB color to hex\n // Assumes r, g, and b are contained in the set [0, 255]\n // Returns a 3 or 6 character hex\n function rgbToHex(r, g, b, allow3Char) {\n var hex = [pad2(mathRound(r).toString(16)), pad2(mathRound(g).toString(16)), pad2(mathRound(b).toString(16))];\n\n // Return a 3 character hex if possible\n if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n }\n return hex.join(\"\");\n }\n\n // `rgbaToHex`\n // Converts an RGBA color plus alpha transparency to hex\n // Assumes r, g, b are contained in the set [0, 255] and\n // a in [0, 1]. Returns a 4 or 8 character rgba hex\n function rgbaToHex(r, g, b, a, allow4Char) {\n var hex = [pad2(mathRound(r).toString(16)), pad2(mathRound(g).toString(16)), pad2(mathRound(b).toString(16)), pad2(convertDecimalToHex(a))];\n\n // Return a 4 character hex if possible\n if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n }\n return hex.join(\"\");\n }\n\n // `rgbaToArgbHex`\n // Converts an RGBA color to an ARGB Hex8 string\n // Rarely used, but required for \"toFilter()\"\n function rgbaToArgbHex(r, g, b, a) {\n var hex = [pad2(convertDecimalToHex(a)), pad2(mathRound(r).toString(16)), pad2(mathRound(g).toString(16)), pad2(mathRound(b).toString(16))];\n return hex.join(\"\");\n }\n\n // `equals`\n // Can be called with any tinycolor input\n tinycolor.equals = function (color1, color2) {\n if (!color1 || !color2) {\n return false;\n }\n return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();\n };\n tinycolor.random = function () {\n return tinycolor.fromRatio({\n r: mathRandom(),\n g: mathRandom(),\n b: mathRandom()\n });\n };\n\n // Modification Functions\n // ----------------------\n // Thanks to less.js for some of the basics here\n // \n\n function _desaturate(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.s -= amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n }\n function _saturate(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.s += amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n }\n function _greyscale(color) {\n return tinycolor(color).desaturate(100);\n }\n function _lighten(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.l += amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n }\n function _brighten(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var rgb = tinycolor(color).toRgb();\n rgb.r = mathMax(0, mathMin(255, rgb.r - mathRound(255 * -(amount / 100))));\n rgb.g = mathMax(0, mathMin(255, rgb.g - mathRound(255 * -(amount / 100))));\n rgb.b = mathMax(0, mathMin(255, rgb.b - mathRound(255 * -(amount / 100))));\n return tinycolor(rgb);\n }\n function _darken(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.l -= amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n }\n\n // Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n // Values outside of this range will be wrapped into this range.\n function _spin(color, amount) {\n var hsl = tinycolor(color).toHsl();\n var hue = (hsl.h + amount) % 360;\n hsl.h = hue < 0 ? 360 + hue : hue;\n return tinycolor(hsl);\n }\n\n // Combination Functions\n // ---------------------\n // Thanks to jQuery xColor for some of the ideas behind these\n // \n\n function _complement(color) {\n var hsl = tinycolor(color).toHsl();\n hsl.h = (hsl.h + 180) % 360;\n return tinycolor(hsl);\n }\n function _triad(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [tinycolor(color), tinycolor({\n h: (h + 120) % 360,\n s: hsl.s,\n l: hsl.l\n }), tinycolor({\n h: (h + 240) % 360,\n s: hsl.s,\n l: hsl.l\n })];\n }\n function _tetrad(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [tinycolor(color), tinycolor({\n h: (h + 90) % 360,\n s: hsl.s,\n l: hsl.l\n }), tinycolor({\n h: (h + 180) % 360,\n s: hsl.s,\n l: hsl.l\n }), tinycolor({\n h: (h + 270) % 360,\n s: hsl.s,\n l: hsl.l\n })];\n }\n function _splitcomplement(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [tinycolor(color), tinycolor({\n h: (h + 72) % 360,\n s: hsl.s,\n l: hsl.l\n }), tinycolor({\n h: (h + 216) % 360,\n s: hsl.s,\n l: hsl.l\n })];\n }\n function _analogous(color, results, slices) {\n results = results || 6;\n slices = slices || 30;\n var hsl = tinycolor(color).toHsl();\n var part = 360 / slices;\n var ret = [tinycolor(color)];\n for (hsl.h = (hsl.h - (part * results >> 1) + 720) % 360; --results;) {\n hsl.h = (hsl.h + part) % 360;\n ret.push(tinycolor(hsl));\n }\n return ret;\n }\n function _monochromatic(color, results) {\n results = results || 6;\n var hsv = tinycolor(color).toHsv();\n var h = hsv.h,\n s = hsv.s,\n v = hsv.v;\n var ret = [];\n var modification = 1 / results;\n while (results--) {\n ret.push(tinycolor({\n h: h,\n s: s,\n v: v\n }));\n v = (v + modification) % 1;\n }\n return ret;\n }\n\n // Utility Functions\n // ---------------------\n\n tinycolor.mix = function (color1, color2, amount) {\n amount = amount === 0 ? 0 : amount || 50;\n var rgb1 = tinycolor(color1).toRgb();\n var rgb2 = tinycolor(color2).toRgb();\n var p = amount / 100;\n var rgba = {\n r: (rgb2.r - rgb1.r) * p + rgb1.r,\n g: (rgb2.g - rgb1.g) * p + rgb1.g,\n b: (rgb2.b - rgb1.b) * p + rgb1.b,\n a: (rgb2.a - rgb1.a) * p + rgb1.a\n };\n return tinycolor(rgba);\n };\n\n // Readability Functions\n // ---------------------\n // false\n // tinycolor.isReadable(\"#000\", \"#111\",{level:\"AA\",size:\"large\"}) => false\n tinycolor.isReadable = function (color1, color2, wcag2) {\n var readability = tinycolor.readability(color1, color2);\n var wcag2Parms, out;\n out = false;\n wcag2Parms = validateWCAG2Parms(wcag2);\n switch (wcag2Parms.level + wcag2Parms.size) {\n case \"AAsmall\":\n case \"AAAlarge\":\n out = readability >= 4.5;\n break;\n case \"AAlarge\":\n out = readability >= 3;\n break;\n case \"AAAsmall\":\n out = readability >= 7;\n break;\n }\n return out;\n };\n\n // `mostReadable`\n // Given a base color and a list of possible foreground or background\n // colors for that base, returns the most readable color.\n // Optionally returns Black or White if the most readable color is unreadable.\n // *Example*\n // tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:false}).toHexString(); // \"#112255\"\n // tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:true}).toHexString(); // \"#ffffff\"\n // tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"large\"}).toHexString(); // \"#faf3f3\"\n // tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"small\"}).toHexString(); // \"#ffffff\"\n tinycolor.mostReadable = function (baseColor, colorList, args) {\n var bestColor = null;\n var bestScore = 0;\n var readability;\n var includeFallbackColors, level, size;\n args = args || {};\n includeFallbackColors = args.includeFallbackColors;\n level = args.level;\n size = args.size;\n for (var i = 0; i < colorList.length; i++) {\n readability = tinycolor.readability(baseColor, colorList[i]);\n if (readability > bestScore) {\n bestScore = readability;\n bestColor = tinycolor(colorList[i]);\n }\n }\n if (tinycolor.isReadable(baseColor, bestColor, {\n \"level\": level,\n \"size\": size\n }) || !includeFallbackColors) {\n return bestColor;\n } else {\n args.includeFallbackColors = false;\n return tinycolor.mostReadable(baseColor, [\"#fff\", \"#000\"], args);\n }\n };\n\n // Big List of Colors\n // ------------------\n // \n var names = tinycolor.names = {\n aliceblue: \"f0f8ff\",\n antiquewhite: \"faebd7\",\n aqua: \"0ff\",\n aquamarine: \"7fffd4\",\n azure: \"f0ffff\",\n beige: \"f5f5dc\",\n bisque: \"ffe4c4\",\n black: \"000\",\n blanchedalmond: \"ffebcd\",\n blue: \"00f\",\n blueviolet: \"8a2be2\",\n brown: \"a52a2a\",\n burlywood: \"deb887\",\n burntsienna: \"ea7e5d\",\n cadetblue: \"5f9ea0\",\n chartreuse: \"7fff00\",\n chocolate: \"d2691e\",\n coral: \"ff7f50\",\n cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\",\n crimson: \"dc143c\",\n cyan: \"0ff\",\n darkblue: \"00008b\",\n darkcyan: \"008b8b\",\n darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\",\n darkgreen: \"006400\",\n darkgrey: \"a9a9a9\",\n darkkhaki: \"bdb76b\",\n darkmagenta: \"8b008b\",\n darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\",\n darkorchid: \"9932cc\",\n darkred: \"8b0000\",\n darksalmon: \"e9967a\",\n darkseagreen: \"8fbc8f\",\n darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\",\n darkslategrey: \"2f4f4f\",\n darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\",\n deeppink: \"ff1493\",\n deepskyblue: \"00bfff\",\n dimgray: \"696969\",\n dimgrey: \"696969\",\n dodgerblue: \"1e90ff\",\n firebrick: \"b22222\",\n floralwhite: \"fffaf0\",\n forestgreen: \"228b22\",\n fuchsia: \"f0f\",\n gainsboro: \"dcdcdc\",\n ghostwhite: \"f8f8ff\",\n gold: \"ffd700\",\n goldenrod: \"daa520\",\n gray: \"808080\",\n green: \"008000\",\n greenyellow: \"adff2f\",\n grey: \"808080\",\n honeydew: \"f0fff0\",\n hotpink: \"ff69b4\",\n indianred: \"cd5c5c\",\n indigo: \"4b0082\",\n ivory: \"fffff0\",\n khaki: \"f0e68c\",\n lavender: \"e6e6fa\",\n lavenderblush: \"fff0f5\",\n lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\",\n lightblue: \"add8e6\",\n lightcoral: \"f08080\",\n lightcyan: \"e0ffff\",\n lightgoldenrodyellow: \"fafad2\",\n lightgray: \"d3d3d3\",\n lightgreen: \"90ee90\",\n lightgrey: \"d3d3d3\",\n lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\",\n lightseagreen: \"20b2aa\",\n lightskyblue: \"87cefa\",\n lightslategray: \"789\",\n lightslategrey: \"789\",\n lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\",\n lime: \"0f0\",\n limegreen: \"32cd32\",\n linen: \"faf0e6\",\n magenta: \"f0f\",\n maroon: \"800000\",\n mediumaquamarine: \"66cdaa\",\n mediumblue: \"0000cd\",\n mediumorchid: \"ba55d3\",\n mediumpurple: \"9370db\",\n mediumseagreen: \"3cb371\",\n mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\",\n mediumturquoise: \"48d1cc\",\n mediumvioletred: \"c71585\",\n midnightblue: \"191970\",\n mintcream: \"f5fffa\",\n mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\",\n navajowhite: \"ffdead\",\n navy: \"000080\",\n oldlace: \"fdf5e6\",\n olive: \"808000\",\n olivedrab: \"6b8e23\",\n orange: \"ffa500\",\n orangered: \"ff4500\",\n orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\",\n palegreen: \"98fb98\",\n paleturquoise: \"afeeee\",\n palevioletred: \"db7093\",\n papayawhip: \"ffefd5\",\n peachpuff: \"ffdab9\",\n peru: \"cd853f\",\n pink: \"ffc0cb\",\n plum: \"dda0dd\",\n powderblue: \"b0e0e6\",\n purple: \"800080\",\n rebeccapurple: \"663399\",\n red: \"f00\",\n rosybrown: \"bc8f8f\",\n royalblue: \"4169e1\",\n saddlebrown: \"8b4513\",\n salmon: \"fa8072\",\n sandybrown: \"f4a460\",\n seagreen: \"2e8b57\",\n seashell: \"fff5ee\",\n sienna: \"a0522d\",\n silver: \"c0c0c0\",\n skyblue: \"87ceeb\",\n slateblue: \"6a5acd\",\n slategray: \"708090\",\n slategrey: \"708090\",\n snow: \"fffafa\",\n springgreen: \"00ff7f\",\n steelblue: \"4682b4\",\n tan: \"d2b48c\",\n teal: \"008080\",\n thistle: \"d8bfd8\",\n tomato: \"ff6347\",\n turquoise: \"40e0d0\",\n violet: \"ee82ee\",\n wheat: \"f5deb3\",\n white: \"fff\",\n whitesmoke: \"f5f5f5\",\n yellow: \"ff0\",\n yellowgreen: \"9acd32\"\n };\n\n // Make it easy to access colors via `hexNames[hex]`\n var hexNames = tinycolor.hexNames = flip(names);\n\n // Utilities\n // ---------\n\n // `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`\n function flip(o) {\n var flipped = {};\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n flipped[o[i]] = i;\n }\n }\n return flipped;\n }\n\n // Return a valid alpha value [0,1] with all invalid values being set to 1\n function boundAlpha(a) {\n a = parseFloat(a);\n if (isNaN(a) || a < 0 || a > 1) {\n a = 1;\n }\n return a;\n }\n\n // Take input from [0, n] and return it as [0, 1]\n function bound01(n, max) {\n if (isOnePointZero(n)) {\n n = \"100%\";\n }\n var processPercent = isPercentage(n);\n n = mathMin(max, mathMax(0, parseFloat(n)));\n\n // Automatically convert percentage into number\n if (processPercent) {\n n = parseInt(n * max, 10) / 100;\n }\n\n // Handle floating point rounding errors\n if (Math.abs(n - max) < 0.000001) {\n return 1;\n }\n\n // Convert into [0, 1] range if it isn't already\n return n % max / parseFloat(max);\n }\n\n // Force a number between 0 and 1\n function clamp01(val) {\n return mathMin(1, mathMax(0, val));\n }\n\n // Parse a base-16 hex value into a base-10 integer\n function parseIntFromHex(val) {\n return parseInt(val, 16);\n }\n\n // Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n // \n function isOnePointZero(n) {\n return typeof n == \"string\" && n.indexOf('.') != -1 && parseFloat(n) === 1;\n }\n\n // Check to see if string passed in is a percentage\n function isPercentage(n) {\n return typeof n === \"string\" && n.indexOf('%') != -1;\n }\n\n // Force a hex value to have 2 characters\n function pad2(c) {\n return c.length == 1 ? '0' + c : '' + c;\n }\n\n // Replace a decimal with it's percentage value\n function convertToPercentage(n) {\n if (n <= 1) {\n n = n * 100 + \"%\";\n }\n return n;\n }\n\n // Converts a decimal to a hex value\n function convertDecimalToHex(d) {\n return Math.round(parseFloat(d) * 255).toString(16);\n }\n // Converts a hex value to a decimal\n function convertHexToDecimal(h) {\n return parseIntFromHex(h) / 255;\n }\n var matchers = function () {\n // \n var CSS_INTEGER = \"[-\\\\+]?\\\\d+%?\";\n\n // \n var CSS_NUMBER = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n\n // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome.\n var CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\";\n\n // Actual matching.\n // Parentheses and commas are optional, but not required.\n // Whitespace can take the place of commas or opening paren\n var PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n var PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n return {\n CSS_UNIT: new RegExp(CSS_UNIT),\n rgb: new RegExp(\"rgb\" + PERMISSIVE_MATCH3),\n rgba: new RegExp(\"rgba\" + PERMISSIVE_MATCH4),\n hsl: new RegExp(\"hsl\" + PERMISSIVE_MATCH3),\n hsla: new RegExp(\"hsla\" + PERMISSIVE_MATCH4),\n hsv: new RegExp(\"hsv\" + PERMISSIVE_MATCH3),\n hsva: new RegExp(\"hsva\" + PERMISSIVE_MATCH4),\n hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\n };\n }();\n\n // `isValidCSSUnit`\n // Take in a single string / number and check to see if it looks like a CSS unit\n // (see `matchers` above for definition).\n function isValidCSSUnit(color) {\n return !!matchers.CSS_UNIT.exec(color);\n }\n\n // `stringInputToObject`\n // Permissive string parsing. Take in a number of formats, and output an object\n // based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\n function stringInputToObject(color) {\n color = color.replace(trimLeft, '').replace(trimRight, '').toLowerCase();\n var named = false;\n if (names[color]) {\n color = names[color];\n named = true;\n } else if (color == 'transparent') {\n return {\n r: 0,\n g: 0,\n b: 0,\n a: 0,\n format: \"name\"\n };\n }\n\n // Try to match string input using regular expressions.\n // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n // Just return an object and let the conversion functions handle that.\n // This way the result will be the same whether the tinycolor is initialized with string or object.\n var match;\n if (match = matchers.rgb.exec(color)) {\n return {\n r: match[1],\n g: match[2],\n b: match[3]\n };\n }\n if (match = matchers.rgba.exec(color)) {\n return {\n r: match[1],\n g: match[2],\n b: match[3],\n a: match[4]\n };\n }\n if (match = matchers.hsl.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n l: match[3]\n };\n }\n if (match = matchers.hsla.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n l: match[3],\n a: match[4]\n };\n }\n if (match = matchers.hsv.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n v: match[3]\n };\n }\n if (match = matchers.hsva.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n v: match[3],\n a: match[4]\n };\n }\n if (match = matchers.hex8.exec(color)) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n a: convertHexToDecimal(match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if (match = matchers.hex6.exec(color)) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n if (match = matchers.hex4.exec(color)) {\n return {\n r: parseIntFromHex(match[1] + '' + match[1]),\n g: parseIntFromHex(match[2] + '' + match[2]),\n b: parseIntFromHex(match[3] + '' + match[3]),\n a: convertHexToDecimal(match[4] + '' + match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if (match = matchers.hex3.exec(color)) {\n return {\n r: parseIntFromHex(match[1] + '' + match[1]),\n g: parseIntFromHex(match[2] + '' + match[2]),\n b: parseIntFromHex(match[3] + '' + match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n return false;\n }\n function validateWCAG2Parms(parms) {\n // return valid WCAG2 parms for isReadable.\n // If input parms are invalid, return {\"level\":\"AA\", \"size\":\"small\"}\n var level, size;\n parms = parms || {\n \"level\": \"AA\",\n \"size\": \"small\"\n };\n level = (parms.level || \"AA\").toUpperCase();\n size = (parms.size || \"small\").toLowerCase();\n if (level !== \"AA\" && level !== \"AAA\") {\n level = \"AA\";\n }\n if (size !== \"small\" && size !== \"large\") {\n size = \"small\";\n }\n return {\n \"level\": level,\n \"size\": size\n };\n }\n\n // Node: Export function\n if (module.exports) {\n module.exports = tinycolor;\n }\n // AMD/requirejs: Define the module\n else {\n window.tinycolor = tinycolor;\n }\n })(Math);\n});\n\n/** Used as references for the maximum length and index of an array. */\nvar MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeFloor = Math.floor,\n nativeMin = Math.min;\n\n/**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\nfunction baseSortedIndexBy(array, value, iteratee, retHighest) {\n value = iteratee(value);\n var low = 0,\n high = array == null ? 0 : array.length,\n valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? computed <= value : computed < value;\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n}\n\n/**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\nfunction sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, baseIteratee(iteratee));\n}\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\n/** Used for built-in method references. */\nvar objectProto$c = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$9 = objectProto$c.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty$9.call(object, key) && eq(objValue, value)) || value === undefined && !(key in object)) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n var index = -1,\n length = props.length;\n while (++index < length) {\n var key = props[index];\n var newValue = customizer ? customizer(object[key], source[key], key, object, source) : undefined;\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys$1(source), object);\n}\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\n/** Used for built-in method references. */\nvar objectProto$d = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$a = objectProto$d.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty$a.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn$1(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn$1(source), object);\n}\n\n/** Detect free variable `exports`. */\nvar freeExports$2 = (typeof exports === \"undefined\" ? \"undefined\" : _typeof$1(exports)) == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule$2 = freeExports$2 && (typeof module === \"undefined\" ? \"undefined\" : _typeof$1(module)) == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports$2 = freeModule$2 && freeModule$2.exports === freeExports$2;\n\n/** Built-in value references. */\nvar Buffer$1 = moduleExports$2 ? root.Buffer : undefined,\n allocUnsafe = Buffer$1 ? Buffer$1.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n buffer.copy(result);\n return result;\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols$1 = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols$1 ? stubArray : function (object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn$1, getSymbolsIn);\n}\n\n/** Used for built-in method references. */\nvar objectProto$e = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$b = objectProto$e.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty$b.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto$2 = _Symbol ? _Symbol.prototype : undefined,\n symbolValueOf$1 = symbolProto$2 ? symbolProto$2.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf$1 ? Object(symbolValueOf$1.call(symbol)) : {};\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/** `Object#toString` result references. */\nvar boolTag$2 = '[object Boolean]',\n dateTag$2 = '[object Date]',\n mapTag$3 = '[object Map]',\n numberTag$2 = '[object Number]',\n regexpTag$2 = '[object RegExp]',\n setTag$3 = '[object Set]',\n stringTag$3 = '[object String]',\n symbolTag$2 = '[object Symbol]';\nvar arrayBufferTag$2 = '[object ArrayBuffer]',\n dataViewTag$3 = '[object DataView]',\n float32Tag$1 = '[object Float32Array]',\n float64Tag$1 = '[object Float64Array]',\n int8Tag$1 = '[object Int8Array]',\n int16Tag$1 = '[object Int16Array]',\n int32Tag$1 = '[object Int32Array]',\n uint8Tag$1 = '[object Uint8Array]',\n uint8ClampedTag$1 = '[object Uint8ClampedArray]',\n uint16Tag$1 = '[object Uint16Array]',\n uint32Tag$1 = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag$2:\n return cloneArrayBuffer(object);\n case boolTag$2:\n case dateTag$2:\n return new Ctor(+object);\n case dataViewTag$3:\n return cloneDataView(object, isDeep);\n case float32Tag$1:\n case float64Tag$1:\n case int8Tag$1:\n case int16Tag$1:\n case int32Tag$1:\n case uint8Tag$1:\n case uint8ClampedTag$1:\n case uint16Tag$1:\n case uint32Tag$1:\n return cloneTypedArray(object, isDeep);\n case mapTag$3:\n return new Ctor();\n case numberTag$2:\n case stringTag$3:\n return new Ctor(object);\n case regexpTag$2:\n return cloneRegExp(object);\n case setTag$3:\n return new Ctor();\n case symbolTag$2:\n return cloneSymbol(object);\n }\n}\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = function () {\n function object() {}\n return function (proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object();\n object.prototype = undefined;\n return result;\n };\n}();\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return typeof object.constructor == 'function' && !isPrototype(object) ? baseCreate(getPrototype(object)) : {};\n}\n\n/** `Object#toString` result references. */\nvar mapTag$4 = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag$1(value) == mapTag$4;\n}\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n/** `Object#toString` result references. */\nvar setTag$4 = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag$1(value) == setTag$4;\n}\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag$3 = '[object Arguments]',\n arrayTag$2 = '[object Array]',\n boolTag$3 = '[object Boolean]',\n dateTag$3 = '[object Date]',\n errorTag$2 = '[object Error]',\n funcTag$2 = '[object Function]',\n genTag$1 = '[object GeneratorFunction]',\n mapTag$5 = '[object Map]',\n numberTag$3 = '[object Number]',\n objectTag$3 = '[object Object]',\n regexpTag$3 = '[object RegExp]',\n setTag$5 = '[object Set]',\n stringTag$4 = '[object String]',\n symbolTag$3 = '[object Symbol]',\n weakMapTag$2 = '[object WeakMap]';\nvar arrayBufferTag$3 = '[object ArrayBuffer]',\n dataViewTag$4 = '[object DataView]',\n float32Tag$2 = '[object Float32Array]',\n float64Tag$2 = '[object Float64Array]',\n int8Tag$2 = '[object Int8Array]',\n int16Tag$2 = '[object Int16Array]',\n int32Tag$2 = '[object Int32Array]',\n uint8Tag$2 = '[object Uint8Array]',\n uint8ClampedTag$2 = '[object Uint8ClampedArray]',\n uint16Tag$2 = '[object Uint16Array]',\n uint32Tag$2 = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag$3] = cloneableTags[arrayTag$2] = cloneableTags[arrayBufferTag$3] = cloneableTags[dataViewTag$4] = cloneableTags[boolTag$3] = cloneableTags[dateTag$3] = cloneableTags[float32Tag$2] = cloneableTags[float64Tag$2] = cloneableTags[int8Tag$2] = cloneableTags[int16Tag$2] = cloneableTags[int32Tag$2] = cloneableTags[mapTag$5] = cloneableTags[numberTag$3] = cloneableTags[objectTag$3] = cloneableTags[regexpTag$3] = cloneableTags[setTag$5] = cloneableTags[stringTag$4] = cloneableTags[symbolTag$3] = cloneableTags[uint8Tag$2] = cloneableTags[uint8ClampedTag$2] = cloneableTags[uint16Tag$2] = cloneableTags[uint32Tag$2] = true;\ncloneableTags[errorTag$2] = cloneableTags[funcTag$2] = cloneableTags[weakMapTag$2] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray$1(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag$1(value),\n isFunc = tag == funcTag$2 || tag == genTag$1;\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag$3 || tag == argsTag$3 || isFunc && !object) {\n result = isFlat || isFunc ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat ? copySymbolsIn(value, baseAssignIn(result, value)) : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack());\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n if (isSet(value)) {\n value.forEach(function (subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function (subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n var keysFunc = isFull ? isFlat ? getAllKeysIn : getAllKeys : isFlat ? keysIn : keys$1;\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function (subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG$1 = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG$1);\n}\n\n/** Built-in value references. */\nvar spreadableSymbol = _Symbol ? _Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray$1(value) || isArguments(value) || !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n predicate || (predicate = isFlattenable);\n result || (result = []);\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n if (!othIsNull && !othIsSymbol && !valIsSymbol && value > other || valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol || valIsNull && othIsDefined && othIsReflexive || !valIsDefined && othIsReflexive || !valIsReflexive) {\n return 1;\n }\n if (!valIsNull && !valIsSymbol && !othIsSymbol && value < other || othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol || othIsNull && valIsDefined && valIsReflexive || !othIsDefined && valIsReflexive || !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n var index = -1;\n iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(baseIteratee));\n var result = baseMap(collection, function (value, key, collection) {\n var criteria = arrayMap(iteratees, function (iteratee) {\n return iteratee(value);\n });\n return {\n 'criteria': criteria,\n 'index': ++index,\n 'value': value\n };\n });\n return baseSortBy(result, function (object, other) {\n return compareMultiple(object, other, orders);\n });\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = _typeof$1(index);\n if (type == 'number' ? isArrayLike(object) && isIndex(index, object.length) : type == 'string' && index in object) {\n return eq(object[index], value);\n }\n return false;\n}\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]\n */\nvar sortBy = baseRest(function (collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\nvar CaptionCollection = function CaptionCollection(params) {\n var _captions = [];\n var _activeLanguageIdentifier = LanguageIdentifier$1.create(languageIdentifiers.identifiers[\"default\"]);\n var _captionLanguages = {};\n var addCaptionFromLanguageCodeCache = function addCaptionFromLanguageCodeCache(caption) {\n caption.getAvailableLanguages().forEach(function (language) {\n if (!_captionLanguages[language]) {\n _captionLanguages[language] = 1;\n } else {\n _captionLanguages[language]++;\n }\n });\n };\n var removeCaptionFromLanguageCodeCache = function removeCaptionFromLanguageCodeCache(caption) {\n caption.getAvailableLanguages().forEach(function (language) {\n if (_captionLanguages[language]) {\n _captionLanguages[language]--;\n }\n if (_captionLanguages[language] === 0) {\n delete _captionLanguages[language];\n }\n });\n };\n var addCaption = function addCaption(caption) {\n addCaptionFromLanguageCodeCache(caption);\n caption.activeLanguageIdentifier = _activeLanguageIdentifier;\n var index = sortedIndexBy(_captions, caption, 'startTime');\n _captions.splice(index, 0, caption);\n return UndoAction$1.create(removeCaption, caption, addCaption, caption);\n };\n var removeCaption = function removeCaption(caption) {\n removeCaptionFromLanguageCodeCache(caption);\n var index = findIndex(_captions, caption);\n if (index !== -1) {\n _captions.splice(index, 1);\n return UndoAction$1.create(addCaption, caption, removeCaption, caption);\n }\n return UndoAction$1.noOp();\n };\n var setCaptions = function setCaptions(captions) {\n _captions = captions;\n _captionLanguages = [];\n _captions.forEach(function (caption) {\n addCaptionFromLanguageCodeCache(caption);\n });\n };\n var mergeCaptions = function mergeCaptions(captionsToMerge) {\n captionsToMerge.forEach(function (captionToMerge) {\n var matchingCaption = find(_captions, function (existingCaption) {\n return existingCaption.startTime === captionToMerge.startTime;\n });\n if (matchingCaption) {\n addCaptionFromLanguageCodeCache(captionToMerge);\n captionToMerge.captionTextList.forEach(function (captionText) {\n matchingCaption.addOrReplaceCaptionText(captionText);\n });\n }\n });\n };\n var clear = function clear() {\n var captionsClone = clone(_captions);\n _captions = [];\n _captionLanguages = [];\n return UndoAction$1.create(setCaptions, captionsClone, setCaptions, []);\n };\n var getAvailableLanguages = function getAvailableLanguages() {\n return Object.keys(_captionLanguages);\n };\n var setActiveLanguageIdentifier = function setActiveLanguageIdentifier(languageIdentifierString) {\n if (!languageIdentifiers.isSupportedLanguage(languageIdentifierString)) {\n languageIdentifierString = languageIdentifiers.identifiers[\"default\"];\n }\n var languageIdentifier = LanguageIdentifier$1.create(languageIdentifierString);\n var previousActiveLanguageIdentifierString = _activeLanguageIdentifier.identifier;\n _activeLanguageIdentifier = languageIdentifier;\n forEach(_captions, function (caption) {\n caption.activeLanguageIdentifier = languageIdentifier;\n });\n return UndoAction$1.create(setActiveLanguageIdentifier, previousActiveLanguageIdentifierString, setActiveLanguageIdentifier, languageIdentifierString);\n };\n var getActiveLanguageIdentifier = function getActiveLanguageIdentifier() {\n return _activeLanguageIdentifier;\n };\n if (params) {\n if (params.hasOwnProperty('captions') && isArray$1(params.captions)) {\n _captions = sortBy(params.captions, ['startTime']);\n _captions.forEach(function (caption) {\n addCaptionFromLanguageCodeCache(caption);\n });\n } else {\n throw new Error('CaptionCollection params is expecting an object eg. { captions: [caption1Object, ...] }');\n }\n }\n var _public = Object.defineProperties({}, {\n captions: {\n get: function get() {\n return _captions;\n }\n }\n });\n _public.setActiveLanguageIdentifier = setActiveLanguageIdentifier;\n _public.getActiveLanguageIdentifier = getActiveLanguageIdentifier;\n _public.getAvailableLanguages = getAvailableLanguages;\n _public.addCaption = addCaption;\n _public.removeCaption = removeCaption;\n _public.mergeCaptions = mergeCaptions;\n _public.clear = clear;\n _public.toPOJO = function () {\n return {\n captions: _captions\n };\n };\n return _public;\n};\n\n/** @module CaptionCollection */\nvar CaptionCollection$1 = {\n /**\n * Factory method that returns a new CaptionCollection object.\n * @function create\n * @param {Object} params - Optional params for caption\n * @param {Array} [params.captions] - array containing {module:Caption} objects.\n * @static\n * @return {module:CaptionCollection} new CaptionCollection instance\n */\n create: function create(params) {\n return CaptionCollection(params);\n }\n};\nvar _defaults$1 = Object.freeze({\n fontFamily: 'Arial, Helvetica, sans-serif;',\n fontSize: 24,\n fgColor: tinycolor$1({\n r: 255,\n g: 255,\n b: 255\n }),\n bgColor: tinycolor$1({\n r: 0,\n g: 0,\n b: 0,\n a: 0.9\n })\n});\nvar CaptionTrack = function CaptionTrack(params) {\n params = params || {};\n var _languageIdentifier = params.languageIdentifierString ? LanguageIdentifier$1.create(params.languageIdentifierString) : LanguageIdentifier$1.create(languageIdentifiers.identifiers[\"default\"]);\n var _fgColor = params.fgColor ? tinycolor$1(params.fgColor) : _defaults$1.fgColor.clone();\n var _bgColor = params.bgColor ? tinycolor$1(params.bgColor) : _defaults$1.bgColor.clone();\n var _fontFamily = params.fontFamily ? params.fontFamily : _defaults$1.fontFamily;\n var _fontSize = parseFontSize(params, _defaults$1.fontSize);\n var _position = params.position ? params.position : undefined;\n var _barHeight = params.barHeight ? params.barHeight : undefined;\n var _captionCollection = params.captions ? CaptionCollection$1.create({\n captions: params.captions\n }) : CaptionCollection$1.create();\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'xmpDM:trackType': 'Caption',\n 'xmpDM:frameRate': 'f1000',\n 'xmpDM:trackName': 'Captioning',\n 'stFnt:fontFamily': _fontFamily,\n 'tscDM:fontSize': _fontSize,\n 'tscDM:bgOpacity': _bgColor.getAlpha(),\n 'tscDM:position': _position,\n 'tscDM:captionbarheight': _barHeight\n },\n children: [{\n name: 'xmpDM:markers',\n children: [{\n name: 'rdf:Seq',\n children: _captionCollection.captions\n }]\n }, {\n name: 'tsc:fgColor',\n atts: attsFromColor(_fgColor.toRgb())\n }, {\n name: 'tsc:bgColor',\n atts: attsFromColor(_bgColor.toRgb())\n }]\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var attsFromColor = function attsFromColor(color) {\n return {\n 'xmpG:red': color.r,\n 'xmpG:green': color.g,\n 'xmpG:blue': color.b,\n 'xmpG:mode': 'RGB'\n };\n };\n var tinycolorToSimpleRgb = function tinycolorToSimpleRgb(tinycolorObj) {\n var rgbaColorObj = tinycolorObj.toRgb();\n return {\n r: rgbaColorObj.r,\n g: rgbaColorObj.g,\n b: rgbaColorObj.b\n };\n };\n var _public = Object.defineProperties({}, {\n languageIdentifier: {\n get: function get() {\n return _languageIdentifier;\n }\n },\n fgColor: {\n get: function get() {\n return tinycolorToSimpleRgb(_fgColor);\n }\n },\n fgHexColor: {\n get: function get() {\n return _fgColor.toHexString();\n }\n },\n bgColor: {\n get: function get() {\n return tinycolorToSimpleRgb(_bgColor);\n }\n },\n bgOpacity: {\n get: function get() {\n return _bgColor.getAlpha();\n }\n },\n bgHexColor: {\n get: function get() {\n return _bgColor.toHexString();\n }\n },\n bgRGBACssColor: {\n get: function get() {\n return _bgColor.toRgbString();\n }\n },\n fontFamily: {\n get: function get() {\n return _fontFamily;\n }\n },\n fontSize: {\n get: function get() {\n return _fontSize;\n }\n },\n position: {\n get: function get() {\n return _position;\n }\n },\n barHeight: {\n get: function get() {\n return _barHeight;\n }\n },\n captionCollection: {\n get: function get() {\n return _captionCollection;\n }\n }\n });\n _public.setActiveLanguageIdentifier = _captionCollection.setActiveLanguageIdentifier;\n _public.getActiveLanguageIdentifier = _captionCollection.getActiveLanguageIdentifier;\n _public.getAvailableLanguages = _captionCollection.getAvailableLanguages;\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n fgColor: _fgColor.toRgb(),\n bgColor: _bgColor.toRgb(),\n bgOpacity: _bgColor.getAlpha(),\n fontFamily: _fontFamily,\n fontSize: _fontSize,\n position: _position,\n barHeight: _barHeight,\n captions: invokeMap(_captionCollection.captions, 'toPOJO')\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n return pojo;\n };\n return _public;\n};\nvar getRGBColor = function getRGBColor(element) {\n return {\n r: Number(element.getAttribute('xmpG:red')),\n g: Number(element.getAttribute('xmpG:green')),\n b: Number(element.getAttribute('xmpG:blue'))\n };\n};\nvar parseFontSize = function parseFontSize(params, defaultFontSize) {\n if (!params.fontSize) {\n return defaultFontSize;\n }\n var parsedFontSize = +params.fontSize;\n if (isString(params.fontSize)) {\n parsedFontSize = +params.fontSize.replace('px', '').replace('pt', '');\n }\n return parsedFontSize ? parsedFontSize : defaultFontSize;\n};\nvar createFromXmpElement$2 = function createFromXmpElement$2(captionTrackElement) {\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var captionTrack = new CaptionTrack();\n if (captionTrackElement) {\n var fgColorElement = _xmlUtility.getFirstElementByTagNameNSPrefix(captionTrackElement, 'tsc:fgColor');\n var bgColorElement = _xmlUtility.getFirstElementByTagNameNSPrefix(captionTrackElement, 'tsc:bgColor');\n var captionElements = _xmlUtility.getElementsByTagNameNSPrefix(captionTrackElement, 'rdf:Description');\n var captions = map(captionElements, Caption$1.createFromXmpElement);\n var params = {\n fgColor: getRGBColor(fgColorElement),\n bgColor: getRGBColor(bgColorElement),\n fontFamily: captionTrackElement.getAttribute('stFnt:fontFamily'),\n fontSize: Number(captionTrackElement.getAttribute('tscDM:fontSize')),\n position: captionTrackElement.getAttribute('tscDM:position'),\n barHeight: Number(captionTrackElement.getAttribute('tscDM:captionbarheight')),\n captions: captions\n };\n params.bgColor.a = !isNil(captionTrackElement.getAttribute('tscDM:bgOpacity')) ? Number(captionTrackElement.getAttribute('tscDM:bgOpacity')) : _defaults$1.bgColor.getAlpha();\n captionTrack = new CaptionTrack(params);\n }\n return captionTrack;\n};\n\n/** @module CaptionTrack */\nvar CaptionTrack$1 = {\n /**\n * Factory method that returns a new CaptionTrack object.\n * @function create\n * @param {Object} params - Optional params for caption track\n * @param {String} [params.languageIdentifierString] - Local identifier string for caption track\n * @param {Object} [params.fgColor] - RGB values for foreground color.\n * @param {Number} [params.bgOpacity] - Opacity of background.\n * @param {String} [params.fontFamily] - Font family for caption track.\n * @param {String} [params.fontSize] - Font size for caption track.\n * @param {String} [params.position] - Position for caption track.\n * @param {String} [params.barHeight] - Bar height for caption track.\n * @static\n * @return {module:CaptionTrack} new CaptionTrack instance\n */\n create: function create(params) {\n return CaptionTrack(params);\n },\n /**\n * Factory method that returns a new CaptionTrack object from an XMP caption track element.\n * @function createFromXmpElement\n * @param {Object} element - XMP caption track element.\n * @static\n * @return {module:CaptionTrack} new CaptionTrack instance\n */\n createFromXmpElement: createFromXmpElement$2\n};\n\n/**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n */\nfunction filter(collection, predicate) {\n var func = isArray$1(collection) ? arrayFilter : baseFilter;\n return func(collection, baseIteratee(predicate));\n}\nvar CaptionController$2 = function CaptionController() {\n var _activeLanguageIdentifier = LanguageIdentifier$1.create(languageIdentifiers.identifiers[\"default\"]);\n var _activeCaptionTrack = null;\n var _captionTracks = [];\n var _captionLanguages = {};\n var storeCaptionLanguage = function storeCaptionLanguage(languageIdentifier) {\n _captionLanguages[languageIdentifier.identifier] = languageIdentifier.identifier;\n };\n var removeCaptionLanguage = function removeCaptionLanguage(languageIdentifier) {\n if (_captionLanguages[languageIdentifier.identifier]) {\n delete _captionLanguages[languageIdentifier.identifier];\n }\n };\n var getAvailableLanguages = function getAvailableLanguages() {\n return Object.keys(_captionLanguages);\n };\n var cacheActiveCaptionTrack = function cacheActiveCaptionTrack() {\n if (_captionTracks.length === 0) {\n _activeCaptionTrack = null;\n return;\n }\n if (_activeLanguageIdentifier.identifier === languageIdentifiers.identifiers[\"default\"]) {\n _activeCaptionTrack = _captionTracks[0];\n }\n var preferredCaptionTrack = find(_captionTracks, function (captionTrack) {\n return captionTrack.languageIdentifier.identifier === _activeLanguageIdentifier.identifier;\n });\n if (preferredCaptionTrack) {\n _activeCaptionTrack = preferredCaptionTrack;\n } else {\n _activeCaptionTrack = _captionTracks[0];\n }\n };\n var setActiveLanguageIdentifier = function setActiveLanguageIdentifier(languageIdentifierString) {\n if (!languageIdentifiers.isSupportedLanguage(languageIdentifierString)) {\n languageIdentifierString = languageIdentifiers.identifiers[\"default\"];\n }\n var previousLanguageIdentifierString = _activeLanguageIdentifier.identifier;\n _activeLanguageIdentifier = LanguageIdentifier$1.create(languageIdentifierString);\n cacheActiveCaptionTrack();\n return UndoAction$1.create(setActiveLanguageIdentifier, previousLanguageIdentifierString, setActiveLanguageIdentifier, languageIdentifierString);\n };\n var getActiveLanguageIdentifier = function getActiveLanguageIdentifier() {\n return _activeLanguageIdentifier;\n };\n var doesCaptionTrackExistForLanguageIdentifier = function doesCaptionTrackExistForLanguageIdentifier(languageIdentifier) {\n return _captionTracks.some(function (captionTrack) {\n return captionTrack.languageIdentifier.identifier === languageIdentifier.identifier;\n });\n };\n var addCaptionTrack = function addCaptionTrack(captionTrack) {\n if (doesCaptionTrackExistForLanguageIdentifier(captionTrack.languageIdentifier)) {\n throw new Error('CaptionController::addCaptionTrack - Caption track already exist for the ', captionTrack.languageIdentifier.identifier, ' langauge identifier.');\n }\n storeCaptionLanguage(captionTrack.languageIdentifier);\n _captionTracks.push(captionTrack);\n cacheActiveCaptionTrack();\n return UndoAction$1.create(removeCaptionTrack, captionTrack, addCaptionTrack, captionTrack);\n };\n var removeCaptionTrack = function removeCaptionTrack(captionTrackToRemove) {\n var removedCaptionTracks = remove(_captionTracks, function (captionTrack) {\n return captionTrack.languageIdentifier.identifier === captionTrackToRemove.languageIdentifier.identifier;\n });\n var removedCaptionTrack = removedCaptionTracks.length > 0 ? removedCaptionTracks[0] : undefined;\n if (removedCaptionTrack) {\n removeCaptionLanguage(removedCaptionTrack.languageIdentifier);\n cacheActiveCaptionTrack();\n }\n return UndoAction$1.create(addCaptionTrack, removedCaptionTrack, removeCaptionTrack, captionTrackToRemove);\n };\n var addCaptionTrackFromXmpElement = function addCaptionTrackFromXmpElement(captionTrackElement) {\n var parsedCaptionTrack = CaptionTrack$1.createFromXmpElement(captionTrackElement);\n var availableLanguages = parsedCaptionTrack.getAvailableLanguages();\n if (availableLanguages.length > 1) {\n availableLanguages.forEach(function (language) {\n var captionTrackParams = {\n languageIdentifierString: language,\n fgColor: parsedCaptionTrack.fgColor,\n bgColor: parsedCaptionTrack.bgColor,\n bgOpacity: parsedCaptionTrack.bgOpacity,\n fontFamily: parsedCaptionTrack.fontFamily,\n fontSize: parsedCaptionTrack.fontSize,\n position: parsedCaptionTrack.position,\n barHeight: parsedCaptionTrack.barHeight\n };\n var captionTrack = CaptionTrack$1.create(captionTrackParams);\n parsedCaptionTrack.captionCollection.captions.forEach(function (caption) {\n var filteredCaptionTextList = filter(caption.captionTextList, function (captionText) {\n return captionText.languageIdentifier.identifier === language;\n });\n var captionParams = {\n startTime: caption.startTime,\n duration: caption.duration,\n captionTextList: filteredCaptionTextList\n };\n if (caption.horizontalAlignment) {\n captionParams.horizontalAlignment = caption.horizontalAlignment;\n }\n if (caption.verticalAlignment) {\n captionParams.verticalAlignment = caption.verticalAlignment;\n }\n if (caption.file) {\n captionParams.file = caption.file;\n }\n if (caption.image) {\n captionParams.image = caption.image;\n }\n if (caption.imageIndex) {\n captionParams.imageIndex = caption.imageIndex;\n }\n if (caption.imageOffset) {\n captionParams.imageOffset = caption.imageOffset;\n }\n if (caption.imageRectangle) {\n captionParams.imageRectangle = caption.imageRectangle;\n }\n var newCaption = Caption$1.create(captionParams);\n captionTrack.captionCollection.addCaption(newCaption);\n });\n addCaptionTrack(captionTrack);\n });\n } else {\n addCaptionTrack(parsedCaptionTrack);\n }\n };\n var getMergedCaptionTrack = function getMergedCaptionTrack() {\n var captionTrackParams = {\n languageIdentifierString: _activeCaptionTrack ? _activeCaptionTrack.languageIdentifierString : undefined,\n fgColor: _activeCaptionTrack ? _activeCaptionTrack.fgColor : undefined,\n bgOpacity: _activeCaptionTrack ? _activeCaptionTrack.bgOpacity : undefined,\n fontFamily: _activeCaptionTrack ? _activeCaptionTrack.fontFamily : undefined,\n fontSize: _activeCaptionTrack ? _activeCaptionTrack.fontSize : undefined,\n position: _activeCaptionTrack ? _activeCaptionTrack.position : undefined,\n barHeight: _activeCaptionTrack ? _activeCaptionTrack.barHeight : undefined\n };\n var mergedCaptionTrack = CaptionTrack$1.create(captionTrackParams);\n _captionTracks.forEach(function (captionTrack) {\n mergedCaptionTrack.captionCollection.mergeCaptions(captionTrack.captionCollection.captions);\n });\n return mergedCaptionTrack;\n };\n var toXmp = function toXmp() {\n return getMergedCaptionTrack().toXmp();\n };\n var toPOJO = function toPOJO() {\n return getMergedCaptionTrack().toPOJO();\n };\n var getActiveCaptionTrack = function getActiveCaptionTrack() {\n return _activeCaptionTrack;\n };\n var clearCaptions = function clearCaptions() {\n _captionTracks = [];\n _captionLanguages = {};\n _activeLanguageIdentifier = LanguageIdentifier$1.create(languageIdentifiers.identifiers[\"default\"]);\n _activeCaptionTrack = null;\n };\n var activeCaptionTrackIsDefinedWithCaptions = function activeCaptionTrackIsDefinedWithCaptions() {\n return _activeCaptionTrack !== null && _activeCaptionTrack.captionCollection.captions.length > 0;\n };\n var getActiveCaptionsTocThumbnailImage = function getActiveCaptionsTocThumbnailImage() {\n return activeCaptionTrackIsDefinedWithCaptions() ? _activeCaptionTrack.captionCollection.captions[0].image : null;\n };\n var _public = Object.defineProperties({}, {\n activeCaptionTrack: {\n get: getActiveCaptionTrack\n },\n numberCaptionTracks: {\n get: function get() {\n return _captionTracks.length;\n }\n },\n containsCaptions: {\n get: activeCaptionTrackIsDefinedWithCaptions\n },\n captionsContainsTocThumbnails: {\n get: function get() {\n return activeCaptionTrackIsDefinedWithCaptions() && _activeCaptionTrack.captionCollection.captions[0].image !== undefined;\n }\n }\n });\n _public.setActiveLanguageIdentifier = setActiveLanguageIdentifier;\n _public.getActiveLanguageIdentifier = getActiveLanguageIdentifier;\n _public.clearCaptions = clearCaptions;\n _public.addCaptionTrackFromXmpElement = addCaptionTrackFromXmpElement;\n _public.addCaptionTrack = addCaptionTrack;\n _public.removeCaptionTrack = removeCaptionTrack;\n _public.getAvailableLanguages = getAvailableLanguages;\n _public.getActiveCaptionsTocThumbnailImage = getActiveCaptionsTocThumbnailImage;\n _public.toXmp = toXmp;\n _public.toPOJO = toPOJO;\n return _public;\n};\n\n/** @module CaptionController */\nvar CaptionController$1$1 = {\n /**\n * Factory method that returns a new CaptionController object.\n * @function create\n * @static\n * @return {module:CaptionController} new CaptionController instance\n */\n create: function create() {\n return CaptionController$2();\n }\n};\nvar TableOfContentsItem = function TableOfContentsItem(params) {\n var _name;\n var _startTime;\n var _image;\n var _imageIndex;\n var _imageOffset;\n var _imageRectangle;\n var _file;\n var _additionalParamProperties = {};\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n if (params) {\n forEach(keys$1(params), function (key) {\n if (key === 'name') {\n _name = params.name;\n } else if (key === 'startTime') {\n _startTime = params.startTime;\n } else if (key === 'image') {\n _image = params.image;\n } else if (key === 'imageIndex') {\n _imageIndex = params.imageIndex;\n } else if (key === 'imageOffset') {\n _imageOffset = params.imageOffset;\n } else if (key === 'imageRectangle') {\n _imageRectangle = params.imageRectangle;\n } else if (key === 'file') {\n _file = params.file;\n } else if (!isFunction(_additionalParamProperties[key])) {\n _additionalParamProperties[key] = params[key];\n }\n });\n }\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'xmpDM:name': _name,\n 'xmpDM:startTime': _startTime,\n 'tscDM:image': _image,\n 'tscDM:imageindex': _imageIndex,\n 'tscDM:imageoffset': _imageOffset,\n 'tscDM:imagerect': _imageRectangle ? _imageRectangle.toXmpAtt() : null,\n 'tscDM:file': _file\n }\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n name: {\n get: function get() {\n return _name;\n }\n },\n startTime: {\n get: function get() {\n return _startTime;\n }\n },\n image: {\n get: function get() {\n return _image;\n }\n },\n imageIndex: {\n get: function get() {\n return _imageIndex;\n }\n },\n imageOffset: {\n get: function get() {\n return _imageOffset;\n }\n },\n imageRectangle: {\n get: function get() {\n return _imageRectangle;\n }\n },\n file: {\n get: function get() {\n return _file;\n }\n }\n });\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n name: _name,\n startTime: _startTime,\n image: _image,\n imageIndex: _imageIndex,\n imageOffset: _imageOffset,\n imageRectangle: _imageRectangle ? _imageRectangle.toPOJO() : undefined,\n file: _file\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n forEach(keys$1(_additionalParamProperties), function (key) {\n pojo[key] = _additionalParamProperties[key];\n });\n return pojo;\n };\n return _public;\n};\nvar createFromXmpElement$3 = function createFromXmpElement$3(tableOfContentsItemElement) {\n var params = {\n name: tableOfContentsItemElement.getAttribute('xmpDM:name'),\n startTime: Number(tableOfContentsItemElement.getAttribute('xmpDM:startTime'))\n };\n\n // optional attributes below\n\n params.image = tableOfContentsItemElement.getAttribute('tscDM:image') || undefined;\n if (tableOfContentsItemElement.getAttribute('tscDM:imageindex')) {\n params.imageIndex = Number(tableOfContentsItemElement.getAttribute('tscDM:imageindex'));\n }\n if (tableOfContentsItemElement.getAttribute('tscDM:imageoffset')) {\n params.imageOffset = Number(tableOfContentsItemElement.getAttribute('tscDM:imageoffset'));\n }\n params.file = tableOfContentsItemElement.getAttribute('tscDM:file') || undefined;\n if (tableOfContentsItemElement.getAttribute('tscDM:imagerect')) {\n params.imageRectangle = ImageRectangle$1.create(tableOfContentsItemElement.getAttribute('tscDM:imagerect'));\n }\n return new TableOfContentsItem(params);\n};\n\n/** @module TableOfContentsItem */\nvar TableOfContentsItem$1 = {\n /**\n * Factory method that returns a new TableOfContentsItem object.\n * @function create\n * @param {Object} params - Required params for table of contents item\n * @param {String} [params.name] - Table of contents item name.\n * @param {Number} [params.startTime] - Start time of table of contents item (milliseconds).\n * @param {String} [params.image] - Table of contents item image.\n * @param {Number} [params.imageIndex] - Table of contents item image index.\n * @param {Number} [params.imageOffset] - Table of contents item image offset.\n * @param {module:ImageRectangle} [params.imageRectangle] - Table of contents item image rectangle.\n * @param {String} [params.file] - File string associated with toc item.\n * @static\n * @return {module:TableOfContentsItem} new TableOfContentsItem instance\n */\n create: function create(params) {\n return TableOfContentsItem(params);\n },\n /**\n * Factory method that returns a new TableOfContentsItem object from an XMP tableOfContentsItem element.\n * @function createFromXmpElement\n * @param {Object} element - XMP tableOfContentsItem element.\n * @static\n * @return {module:TableOfContentsItem} new TableOfContentsItem instance\n */\n createFromXmpElement: createFromXmpElement$3\n};\nvar TableOfContentsTrack = function TableOfContentsTrack(params) {\n var _items = [];\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n if (params) {\n if (params.hasOwnProperty('items') && isArray$1(params.items)) {\n _items = params.items;\n } else {\n throw new Error('TableOfContentsTrack params is expecting an object eg. { items: [item1Object, ...] }');\n }\n }\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'xmpDM:trackType': 'TableOfContents',\n 'xmpDM:trackName': 'Table of Contents',\n 'xmpDM:frameRate': 'f1000',\n 'tscDM:image': params ? params.image : undefined,\n 'tscDM:tocCellLayout': params ? params.cellLayout : undefined\n },\n children: [{\n name: 'xmpDM:markers',\n children: [{\n name: 'rdf:Seq',\n children: _items\n }]\n }]\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n image: {\n get: function get() {\n return params.image;\n }\n },\n cellLayout: {\n get: function get() {\n return params.cellLayout;\n }\n },\n items: {\n get: function get() {\n return _items;\n }\n }\n });\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n image: params.image,\n cellLayout: params.cellLayout,\n items: invokeMap(_items, 'toPOJO')\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n return pojo;\n };\n return _public;\n};\nvar createFromXmpElement$4 = function createFromXmpElement$4(tableOfContentsTrackElement) {\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var tableOfContentsTrack = new TableOfContentsTrack();\n if (tableOfContentsTrackElement) {\n var tableOfContentsItemElements = _xmlUtility.getElementsByTagNameNSPrefix(tableOfContentsTrackElement, 'rdf:Description');\n var image = tableOfContentsTrackElement.getAttribute('tscDM:image');\n var cellLayout = tableOfContentsTrackElement.getAttribute('tscDM:tocCellLayout');\n var items = map(tableOfContentsItemElements, TableOfContentsItem$1.createFromXmpElement);\n var params = {\n image: image,\n cellLayout: cellLayout,\n items: items\n };\n tableOfContentsTrack = new TableOfContentsTrack(params);\n }\n return tableOfContentsTrack;\n};\n\n/** @module TableOfContentsTrack */\nvar TableOfContentsTrack$1 = {\n /**\n * Factory method that returns a new TableOfContentsTrack object.\n * @function create\n * @param {Object} params - Optional params for table of contents track\n * @param {module:TableOfContentsItem[]} [params.items] - Array of table of content items.\n * @static\n * @return {module:TableOfContentsTrack} new TableOfContentsTrack instance\n */\n create: function create(params) {\n return TableOfContentsTrack(params);\n },\n /**\n * Factory method that returns a new TableOfContentsTrack object from an XMP table of contents track element.\n * @function createFromXmpElement\n * @param {Object} element - XMP table of contents track element.\n * @static\n * @return {module:TableOfContentsTrack} new TableOfContentsTrack instance\n */\n createFromXmpElement: createFromXmpElement$4\n};\n\n/**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\nfunction compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\nvar BoundingPoly = function BoundingPoly(coordinatesString) {\n var _coordinates = [];\n var createCoordinate = function createCoordinate(coordinateString) {\n var tokens = coordinateString.split(',');\n return {\n x: Number(tokens[0]),\n y: Number(tokens[1])\n };\n };\n if (coordinatesString && isString(coordinatesString)) {\n var coordinateTokens = compact(coordinatesString.split(';'));\n _coordinates = map(coordinateTokens, createCoordinate);\n } else {\n throw new Error('BoundingPoly is expecting a coordinate string eg. \"0,94;111,90;112,191;0,194;\"');\n }\n var _public = Object.defineProperties({}, {\n coordinates: {\n get: function get() {\n return _coordinates;\n }\n }\n });\n _public.toPOJO = function () {\n return {\n coordinates: _coordinates\n };\n };\n _public.toXmpAtt = function () {\n return map(_coordinates, function (coord) {\n return coord.x + ',' + coord.y;\n }).join(';') + ';';\n };\n return _public;\n};\n\n/** @module BoundingPoly */\nvar BoundingPoly$1 = {\n /**\n * Factory method that returns a new BoundingPoly object.\n * @function create\n * @param {String} coordinatesString - Required coordinate string of the bounding poly eg. \"0,94;111,90;112,191;0,194;\"\n * @static\n * @return {module:BoundingPoly} new BoundingPoly instance\n */\n create: function create(coordinatesString) {\n return BoundingPoly(coordinatesString);\n }\n};\nvar Hotspot = function Hotspot(params) {\n var _label;\n var _startTime;\n var _duration;\n var _boundingPoly;\n var _rotate;\n var _pause;\n var _jumpTime;\n var _location;\n var _newWindow;\n var _jumpFile;\n var _file;\n var _additionalParamProperties = {};\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n if (params) {\n forEach(keys$1(params), function (key) {\n if (key === 'label') {\n _label = params.label;\n } else if (key === 'startTime') {\n _startTime = params.startTime;\n } else if (key === 'duration') {\n _duration = params.duration;\n } else if (key === 'boundingPoly') {\n _boundingPoly = params.boundingPoly;\n } else if (key === 'rotate') {\n _rotate = params.rotate;\n } else if (key === 'pause') {\n _pause = params.pause;\n } else if (key === 'jumpTime') {\n _jumpTime = params.jumpTime;\n } else if (key === 'location') {\n _location = params.location;\n } else if (key === 'newWindow') {\n _newWindow = params.newWindow;\n } else if (key === 'jumpFile') {\n _jumpFile = params.jumpFile;\n } else if (key === 'file') {\n _file = params.file;\n } else if (!isFunction(_additionalParamProperties[key])) {\n _additionalParamProperties[key] = params[key];\n }\n });\n }\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'xmpDM:label': _label,\n 'xmpDM:duration': _duration,\n 'xmpDM:startTime': _startTime,\n 'tscDM:boundingPoly': _boundingPoly ? _boundingPoly.toXmpAtt() : undefined,\n 'tscDM:rotate': _rotate,\n 'tscHS:pause': _pause ? '1' : '0',\n 'tscHS:jumpTime': _jumpTime,\n 'tscHS:jumpFile': _jumpFile,\n 'xmpDM:location': _location,\n 'tscDM:file': _file,\n 'tscHS:newWindow': _newWindow ? '1' : '0'\n }\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n label: {\n get: function get() {\n return _label;\n }\n },\n startTime: {\n get: function get() {\n return _startTime;\n }\n },\n endTime: {\n get: function get() {\n return _startTime + _duration;\n }\n },\n duration: {\n get: function get() {\n return _duration;\n }\n },\n boundingPoly: {\n get: function get() {\n return _boundingPoly;\n }\n },\n rotate: {\n get: function get() {\n return _rotate;\n }\n },\n pause: {\n get: function get() {\n return _pause;\n }\n },\n jumpTime: {\n get: function get() {\n return _jumpTime;\n }\n },\n location: {\n get: function get() {\n return _location;\n }\n },\n newWindow: {\n get: function get() {\n return _newWindow;\n }\n },\n jumpFile: {\n get: function get() {\n return _jumpFile;\n }\n },\n file: {\n get: function get() {\n return _file;\n }\n }\n });\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n label: _label,\n startTime: _startTime,\n duration: _duration,\n boundingPoly: _boundingPoly,\n rotate: _rotate,\n pause: _pause,\n jumpTime: _jumpTime,\n location: _location,\n newWindow: _newWindow,\n jumpFile: _jumpFile,\n file: _file\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n forEach(keys$1(_additionalParamProperties), function (key) {\n pojo[key] = _additionalParamProperties[key];\n });\n return pojo;\n };\n return _public;\n};\nvar createFromXmpElement$5 = function createFromXmpElement$5(hotspotElement) {\n var params = {\n label: hotspotElement.getAttribute('xmp:label'),\n startTime: Number(hotspotElement.getAttribute('xmpDM:startTime')),\n duration: Number(hotspotElement.getAttribute('xmpDM:duration')),\n boundingPoly: BoundingPoly$1.create(hotspotElement.getAttribute('tscDM:boundingPoly')),\n rotate: Number(hotspotElement.getAttribute('tscDM:rotate')),\n pause: hotspotElement.getAttribute('tscHS:pause') === '1',\n newWindow: hotspotElement.getAttribute('tscHS:newWindow') === '1'\n };\n if (hotspotElement.getAttribute('tscHS:jumpTime')) {\n params.jumpTime = Number(hotspotElement.getAttribute('tscHS:jumpTime'));\n }\n params.jumpFile = hotspotElement.getAttribute('tscHS:jumpFile') || undefined;\n params.location = hotspotElement.getAttribute('xmpDM:location') || undefined;\n params.file = hotspotElement.getAttribute('tscDM:file') || undefined;\n return new Hotspot(params);\n};\n\n/** @module Hotspot */\nvar Hotspot$1 = {\n /**\n * Factory method that returns a new Hotspot object.\n * @function create\n * @param {Object} params - Required params for hotspot\n * @param {String} [params.label] - Hotspot label.\n * @param {Number} [params.startTime] - Start time of hotspot (milliseconds).\n * @param {Number} [params.duration] - Duration of hotspot (milliseconds).\n * @param {module:BoundingPoly} [params.boundingPoly] - Bounding polygon of hotspot.\n * @param {Number} [params.rotate] - Rotation value of polygon.\n * @param {Boolean} [params.pause] - Boolean if hotspot should pause at end.\n * @param {Number} [params.jumpTime] - Specific time within video that hotspot will jump to (milliseconds)\n * @param {Number} [params.jumpTime] - Specific time within video that hotspot will jump to (milliseconds)\n * @param {String} [params.location] - URL to launch for hotspot.\n * @param {Boolean} [params.newWindow] - True if the hotspot location should open in a new window.\n * @param {String} [params.jumpFile] - Url to file.\n * @param {String} [params.file] - Url to file.\n * @static\n * @return {module:Hotspot} new Hotspot instance\n */\n create: function create(params) {\n return Hotspot(params);\n },\n /**\n * Factory method that returns a new Hotspot object from an XMP hotspot element.\n * @function createFromXmpElement\n * @param {Object} element - XMP hotspot element.\n * @static\n * @return {module:Hotspot} new Hotspot instance\n */\n createFromXmpElement: createFromXmpElement$5\n};\nvar HotspotTrack = function HotspotTrack(params) {\n var _hotspots = [];\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n if (params) {\n if (params.hasOwnProperty('hotspots') && isArray$1(params.hotspots)) {\n _hotspots = params.hotspots;\n } else {\n throw new Error('HotspotTrack params is expecting an object eg. { hotspots: [hotspot1Object, ...] }');\n }\n }\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'xmpDM:trackType': 'Hotspot',\n 'xmpDM:trackName': 'Hotspots',\n 'xmpDM:frameRate': 'f1000'\n },\n children: [{\n name: 'xmpDM:markers',\n children: [{\n name: 'rdf:Seq',\n children: _hotspots\n }]\n }]\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n hotspots: {\n get: function get() {\n return _hotspots;\n }\n }\n });\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n hotspots: invokeMap(_hotspots, 'toPOJO')\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n return pojo;\n };\n return _public;\n};\nvar createFromXmpElement$6 = function createFromXmpElement$6(hotspotTrackElement) {\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var hotspotTrack = new HotspotTrack();\n if (hotspotTrackElement) {\n var hotspotElements = _xmlUtility.getElementsByTagNameNSPrefix(hotspotTrackElement, 'rdf:Description');\n var hotspots = map(hotspotElements, Hotspot$1.createFromXmpElement);\n var params = {\n hotspots: hotspots\n };\n hotspotTrack = new HotspotTrack(params);\n }\n return hotspotTrack;\n};\n\n/** @module HotspotTrack */\nvar HotspotTrack$1 = {\n /**\n * Factory method that returns a new HotspotTrack object.\n * @function create\n * @param {Object} params - Optional params for caption track\n * @param {module:Hotspot[]} [params.hotspots] - Array of hotspots.\n * @static\n * @return {module:HotspotTrack} new HotspotTrack instance\n */\n create: function create(params) {\n return HotspotTrack(params);\n },\n /**\n * Factory method that returns a new HotspotTrack object from an XMP hotspot track element.\n * @function create\n * @param {Object} element - XMP hotspot track element.\n * @static\n * @return {module:HotspotTrack} new HotspotTrack instance\n */\n createFromXmpElement: createFromXmpElement$6\n};\nvar Answer = function Answer(params) {\n var _orderId;\n var _text;\n var _additionalParamProperties = {};\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n if (params) {\n forEach(keys$1(params), function (key) {\n if (key === 'orderId') {\n _orderId = params.orderId;\n } else if (key === 'text') {\n _text = params.text;\n } else if (!isFunction(_additionalParamProperties[key])) {\n _additionalParamProperties[key] = params[key];\n }\n });\n }\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'tscIQ:orderId': _orderId\n },\n children: [{\n name: 'tscIQ:answer',\n text: _text\n }]\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n orderId: {\n get: function get() {\n return _orderId;\n }\n },\n text: {\n get: function get() {\n return _text;\n }\n }\n });\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n orderId: _orderId,\n text: _text\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n forEach(keys$1(_additionalParamProperties), function (key) {\n pojo[key] = _additionalParamProperties[key];\n });\n return pojo;\n };\n return _public;\n};\nvar createFromXmpElement$7 = function createFromXmpElement$7(answerElement) {\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var answerText = _xmlUtility.getFirstChildElementTextByTagNameNSPrefix(answerElement, 'tscIQ:answer');\n var params = {\n orderId: Number(answerElement.getAttribute('tscIQ:orderId')),\n text: answerText\n };\n return new Answer(params);\n};\n\n/** @module Answer */\nvar Answer$1 = {\n /**\n * Factory method that returns a new Answer object.\n * @function create\n * @param {Object} params - Required params for answer\n * @param {Number} [params.orderId] - Answer order id.\n * @param {String} [params.text] - Answer text.\n * @static\n * @return {module:Answer} new Answer instance\n */\n create: function create(params) {\n return Answer(params);\n },\n /**\n * Factory method that returns a new Answer object from an XMP answer element.\n * @function createFromXmpElement\n * @param {Object} element - XMP answer element.\n * @static\n * @return {module:Answer} new Answer instance\n */\n createFromXmpElement: createFromXmpElement$7\n};\nvar Feedback = function Feedback(params) {\n var _reason;\n var _jumpToTime;\n var _location;\n var _text;\n var _plainText;\n var _markupText;\n var _additionalParamProperties = {};\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n if (params) {\n forEach(keys$1(params), function (key) {\n if (key === 'reason') {\n _reason = params.reason;\n } else if (key === 'text') {\n _text = params.text;\n _plainText = Rtf.toText(_text);\n _markupText = Rtf.toHtml(_text);\n } else if (key === 'jumpToTime') {\n _jumpToTime = params.jumpToTime;\n } else if (key === 'location') {\n _location = params.location;\n } else if (!isFunction(_additionalParamProperties[key])) {\n _additionalParamProperties[key] = params[key];\n }\n });\n }\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'tscIQ:reason': _reason,\n 'tscIQ:jumpToTime': _jumpToTime,\n 'tscIQ:location': _location\n },\n children: [{\n name: 'xmpDM:name',\n children: [{\n name: 'rdf:Alt',\n // todo: according to the latest branch this is now a language collection of strings\n // for now i hardcoded a single english version to match the expected output\n children: [{\n name: 'rdf:li',\n atts: {\n 'xml:lang': 'en-US'\n },\n text: _text\n }]\n }]\n }]\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n reason: {\n get: function get() {\n return _reason;\n }\n },\n jumpToTime: {\n get: function get() {\n return _jumpToTime;\n }\n },\n location: {\n get: function get() {\n return _location;\n }\n },\n text: {\n get: function get() {\n return _text;\n }\n },\n plainText: {\n get: function get() {\n return _plainText;\n }\n },\n markupText: {\n get: function get() {\n return _markupText;\n }\n }\n });\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n reason: _reason,\n jumpToTime: _jumpToTime,\n location: _location,\n text: _text,\n plainText: _plainText,\n markupText: _markupText\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n forEach(keys$1(_additionalParamProperties), function (key) {\n pojo[key] = _additionalParamProperties[key];\n });\n return pojo;\n };\n return _public;\n};\nvar createFromXmpElement$8 = function createFromXmpElement$8(feedbackElement) {\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var feedbackText = _xmlUtility.getFirstChildElementTextByTagNameNSPrefix(feedbackElement, 'rdf:li');\n var params = {\n reason: feedbackElement.getAttribute('tscIQ:reason'),\n text: feedbackText\n };\n if (feedbackElement.getAttribute('tscIQ:jumpToTime')) {\n params.jumpToTime = Number(feedbackElement.getAttribute('tscIQ:jumpToTime'));\n }\n params.location = feedbackElement.getAttribute('tscIQ:location') || undefined;\n return Feedback(params);\n};\n\n/** @module Feedback */\nvar Feedback$1 = {\n /**\n * Factory method that returns a new Feedback object.\n * @function create\n * @param {Object} params - Required params for feedback\n * @param {String} [params.reason] - Feedback reason type.\n * @param {String} [params.text] - Feedback text.\n * @param {Number} [params.jumpToTime] - Feedback jumpToTime.\n * @param {String} [params.location] - Feedback location.\n * @static\n * @return {module:Feedback} new Feedback instance\n */\n create: function create(params) {\n return Feedback(params);\n },\n /**\n * Factory method that returns a new Feedback object from an XMP feedback element.\n * @function createFromXmpElement\n * @param {Object} element - XMP feedback element.\n * @static\n * @return {module:Feedback} new Feedback instance\n */\n createFromXmpElement: createFromXmpElement$8\n};\nvar Question$2 = function Question(params) {\n var _id;\n var _type;\n var _text;\n var _correctAnswer;\n var _answers = [];\n var _feedback = [];\n var _additionalParamProperties = {};\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n if (params) {\n forEach(keys$1(params), function (key) {\n if (key === 'id') {\n _id = params.id;\n } else if (key === 'type') {\n _type = params.type;\n } else if (key === 'text') {\n _text = params.text;\n } else if (key === 'correctAnswer') {\n _correctAnswer = params.correctAnswer;\n } else if (key === 'answers') {\n _answers = params.answers;\n } else if (key === 'feedback') {\n _feedback = params.feedback;\n } else if (!isFunction(_additionalParamProperties[key])) {\n _additionalParamProperties[key] = params[key];\n }\n });\n }\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'tscIQ:id': _id,\n 'tscIQ:type': _type\n },\n children: [{\n name: 'tscIQ:question',\n text: _text\n }, {\n name: 'tscIQ:correctAnswer',\n text: _type === 'MC' ? _correctAnswer : null\n }, {\n name: 'tscIQ:answerArray',\n children: [{\n name: 'rdf:Seq',\n children: _answers\n }]\n }, {\n name: 'tscIQ:feedback',\n children: [{\n name: 'rdf:Bag',\n children: _feedback\n }]\n }]\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n id: {\n get: function get() {\n return _id;\n }\n },\n type: {\n get: function get() {\n return _type;\n }\n },\n text: {\n get: function get() {\n return _text;\n }\n },\n correctAnswer: {\n get: function get() {\n return _correctAnswer;\n }\n },\n answers: {\n get: function get() {\n return _answers;\n }\n },\n feedback: {\n get: function get() {\n return _feedback;\n }\n }\n });\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n id: _id,\n type: _type,\n text: _text,\n correctAnswer: _correctAnswer,\n answers: invokeMap(_answers, 'toPOJO'),\n feedback: _feedback !== undefined ? invokeMap(_feedback, 'toPOJO') : undefined\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n forEach(keys$1(_additionalParamProperties), function (key) {\n pojo[key] = _additionalParamProperties[key];\n });\n return pojo;\n };\n return _public;\n};\nvar createFromXmpElement$9 = function createFromXmpElement$9(questionElement) {\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var text = _xmlUtility.getFirstChildElementTextByTagNameNSPrefix(questionElement, 'tscIQ:question');\n var correctAnswerText = _xmlUtility.getFirstChildElementTextByTagNameNSPrefix(questionElement, 'tscIQ:correctAnswer');\n var descriptionElements = _xmlUtility.getElementsByTagNameNSPrefix(questionElement, 'rdf:Description');\n var answerElements = filter(descriptionElements, function (element) {\n return _xmlUtility.hasAttribute(element, 'tscIQ:orderId');\n });\n var answers = map(answerElements, Answer$1.createFromXmpElement);\n var feedbackElements = filter(descriptionElements, function (element) {\n return _xmlUtility.hasAttribute(element, 'tscIQ:reason');\n });\n var feedback = map(feedbackElements, Feedback$1.createFromXmpElement);\n var params = {\n id: Number(questionElement.getAttribute('tscIQ:id')),\n type: questionElement.getAttribute('tscIQ:type'),\n text: text,\n correctAnswer: correctAnswerText ? Number(correctAnswerText) : undefined,\n answers: answers,\n feedback: feedback\n };\n return Question$2(params);\n};\n\n/** @module Question */\nvar Question$1$1 = {\n /**\n * Factory method that returns a new Question object.\n * @function create\n * @param {Object} params - Required params for question\n * @param {Number} [params.id] - Question id.\n * @param {String} [params.text] - Question text.\n * @param {Number} [params.correctAnswer] - Index of the correct answer within answer array (1 based).\n * @param {module:Answer[]} [params.answers] - Question answer array.\n * @param {module:Feedback[]} [params.feedback] - Question feedback array.\n * @static\n * @return {module:Question} new Question instance\n */\n create: function create(params) {\n return Question$2(params);\n },\n /**\n * Factory method that returns a new Question object from an XMP question element.\n * @function createFromXmpElement\n * @param {Object} element - XMP question element.\n * @static\n * @return {module:Question} new Question instance\n */\n createFromXmpElement: createFromXmpElement$9\n};\nvar QuestionSet$2 = function QuestionSet(params) {\n var _name;\n var _feedback;\n var _startTime;\n var _questions;\n var _file;\n var _additionalParamProperties = {};\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n if (params) {\n forEach(keys$1(params), function (key) {\n if (key === 'name') {\n _name = params.name;\n } else if (key === 'feedback') {\n _feedback = params.feedback;\n } else if (key === 'startTime') {\n _startTime = params.startTime;\n } else if (key === 'file') {\n _file = params.file;\n } else if (key === 'questions') {\n _questions = params.questions;\n } else if (!isFunction(_additionalParamProperties[key])) {\n _additionalParamProperties[key] = params[key];\n }\n });\n }\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'tscIQ:questionSetName': _name,\n 'tscIQ:feedback': _feedback ? '1' : '0',\n 'tscDM:file': _file,\n 'xmpDM:startTime': _startTime\n },\n children: [{\n name: 'tscIQ:questions',\n children: [{\n name: 'rdf:Seq',\n children: _questions\n }]\n }]\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n name: {\n get: function get() {\n return _name;\n }\n },\n feedback: {\n get: function get() {\n return _feedback;\n }\n },\n startTime: {\n get: function get() {\n return _startTime;\n }\n },\n file: {\n get: function get() {\n return _file;\n }\n },\n questions: {\n get: function get() {\n return _questions;\n }\n }\n });\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n name: _name,\n feedback: _feedback,\n startTime: _startTime,\n file: _file,\n questions: invokeMap(_questions, 'toPOJO')\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n forEach(keys$1(_additionalParamProperties), function (key) {\n pojo[key] = _additionalParamProperties[key];\n });\n return pojo;\n };\n return _public;\n};\nvar createFromXmpElement$a = function createFromXmpElement$a(questionSetElement) {\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var descriptionElements = _xmlUtility.getElementsByTagNameNSPrefix(questionSetElement, 'rdf:Description');\n var questionElements = filter(descriptionElements, function (element) {\n return _xmlUtility.hasAttribute(element, 'tscIQ:type');\n });\n var questions = map(questionElements, Question$1$1.createFromXmpElement);\n var params = {\n name: questionSetElement.getAttribute('tscIQ:questionSetName'),\n feedback: questionSetElement.getAttribute('tscIQ:feedback') === '1',\n startTime: Number(questionSetElement.getAttribute('xmpDM:startTime')),\n questions: questions\n };\n params.file = questionSetElement.getAttribute('tscDM:file') || undefined;\n return new QuestionSet$2(params);\n};\n\n/** @module QuestionSet */\nvar QuestionSet$1$1 = {\n /**\n * Factory method that returns a new QuestionSet object.\n * @function create\n * @param {Object} params - Required params for question set\n * @param {String} [params.questionsSetName] - Question set name.\n * @param {Boolean} [params.feedback] - Question set feedback.\n * @param {Number} [params.startTime] - Question set start time (milliseconds)\n * @param {String} [params.file] - Associated file\n * @param {module:Question[]} [params.questions] - Question set questions.\n * @static\n * @return {module:QuestionSet} new QuestionSet instance\n */\n create: function create(params) {\n return QuestionSet$2(params);\n },\n /**\n * Factory method that returns a new QuestionSet object from an XMP questionSet element.\n * @function createFromXmpElement\n * @param {Object} element - XMP questionSet element.\n * @static\n * @return {module:QuestionSet} new QuestionSet instance\n */\n createFromXmpElement: createFromXmpElement$a\n};\nvar QuizTrack = function QuizTrack(params) {\n var _quizGuid;\n var _authoredEmail;\n var _requireUserId;\n var _locale;\n var _reportMethod;\n var _clientId;\n var _quizHash;\n var _hideReplay;\n var _allowSkipQuiz;\n var _questionSets = [];\n var _parameters;\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n if (params) {\n forEach(keys$1(params), function (key) {\n if (key === 'quizGuid') {\n _quizGuid = params.quizGuid;\n } else if (key === 'authoredEmail') {\n _authoredEmail = params.authoredEmail;\n } else if (key === 'requireUserId') {\n _requireUserId = params.requireUserId;\n } else if (key === 'locale') {\n _locale = params.locale;\n } else if (key === 'reportMethod') {\n _reportMethod = params.reportMethod;\n } else if (key === 'clientId') {\n _clientId = params.clientId;\n } else if (key === 'quizHash') {\n _quizHash = params.quizHash;\n } else if (key === 'hideReplay') {\n _hideReplay = params.hideReplay;\n } else if (key === 'allowSkipQuiz') {\n _allowSkipQuiz = params.allowSkipQuiz;\n } else if (key === 'parameters' && isArray$1(params.parameters)) {\n _parameters = params.parameters;\n } else if (key === 'questionSets' && isArray$1(params.questionSets)) {\n _questionSets = params.questionSets;\n }\n });\n }\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'xmpDM:trackType': 'Quiz',\n 'xmpDM:trackName': 'Quiz',\n 'xmpDM:frameRate': 'f1000',\n 'tscIQ:clientId': _clientId,\n 'tscIQ:quizHash': _quizHash,\n 'tscIQ:quizGuid': _quizGuid,\n 'tscIQ:authoredEmail': _authoredEmail,\n 'tscIQ:requireUserId': _requireUserId ? '1' : '0',\n 'tscIQ:locale': _locale,\n 'tscIQ:reportMethod': _reportMethod,\n 'tscIQ:hideReplay': _hideReplay ? '1' : '0',\n 'tscIQ:allowSkipQuiz': _allowSkipQuiz ? '1' : '0'\n },\n children: [{\n name: 'xmpDM:markers',\n children: [{\n name: 'rdf:Seq',\n children: _questionSets\n }]\n }, {\n name: 'tscIQ:QuizParams',\n children: [{\n name: 'rdf:Bag',\n children: map(_parameters, function (param) {\n return {\n name: 'rdf:li',\n atts: {\n 'xmpDM:name': param.name,\n 'xmpDM:value': param.value\n }\n };\n })\n }]\n }]\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n quizGuid: {\n get: function get() {\n return _quizGuid;\n }\n },\n authoredEmail: {\n get: function get() {\n return _authoredEmail;\n }\n },\n requireUserId: {\n get: function get() {\n return _requireUserId;\n }\n },\n locale: {\n get: function get() {\n return _locale;\n }\n },\n reportMethod: {\n get: function get() {\n return _reportMethod;\n }\n },\n clientId: {\n get: function get() {\n return _clientId;\n }\n },\n quizHash: {\n get: function get() {\n return _quizHash;\n }\n },\n hideReplay: {\n get: function get() {\n return _hideReplay;\n }\n },\n allowSkipQuiz: {\n get: function get() {\n return _allowSkipQuiz;\n }\n },\n parameters: {\n get: function get() {\n return _parameters;\n }\n },\n questionSets: {\n get: function get() {\n return _questionSets;\n }\n }\n });\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n quizGuid: _quizGuid,\n authoredEmail: _authoredEmail,\n requireUserId: _requireUserId,\n locale: _locale,\n reportMethod: _reportMethod,\n clientId: _clientId,\n quizHash: _quizHash,\n hideReplay: _hideReplay,\n allowSkipQuiz: _allowSkipQuiz,\n questionSets: invokeMap(_questionSets, 'toPOJO'),\n parameters: _parameters || undefined\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n return pojo;\n };\n return _public;\n};\nvar parseParameter = function parseParameter(parameterElement) {\n return {\n name: parameterElement.getAttribute('xmpDM:name'),\n value: parameterElement.getAttribute('xmpDM:value')\n };\n};\nvar parseParameters = function parseParameters(quizParametersElement, xmlUtility) {\n if (quizParametersElement) {\n var parameterElements = xmlUtility.getElementsByTagNameNSPrefix(quizParametersElement, 'rdf:li');\n var parameters = map(parameterElements, parseParameter);\n return parameters;\n }\n return undefined;\n};\nvar createFromXmpElement$b = function createFromXmpElement$b(quizTrackElement) {\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var quizTrack = new QuizTrack();\n if (quizTrackElement) {\n var descriptionElements = _xmlUtility.getElementsByTagNameNSPrefix(quizTrackElement, 'rdf:Description');\n var questionSetElements = filter(descriptionElements, function (element) {\n return _xmlUtility.hasAttribute(element, 'tscIQ:questionSetName');\n });\n var questionSets = map(questionSetElements, QuestionSet$1$1.createFromXmpElement);\n var quizParametersElement = _xmlUtility.getFirstElementByTagNameNSPrefix(quizTrackElement, 'tscIQ:QuizParams');\n var params = {\n quizGuid: quizTrackElement.getAttribute('tscIQ:quizGuid'),\n authoredEmail: quizTrackElement.getAttribute('tscIQ:authoredEmail'),\n requireUserId: quizTrackElement.getAttribute('tscIQ:requireUserId') === '1',\n locale: quizTrackElement.getAttribute('tscIQ:locale'),\n reportMethod: quizTrackElement.getAttribute('tscIQ:reportMethod'),\n clientId: quizTrackElement.getAttribute('tscIQ:clientId'),\n quizHash: quizTrackElement.getAttribute('tscIQ:quizHash'),\n hideReplay: quizTrackElement.getAttribute('tscIQ:hideReplay') === '1',\n allowSkipQuiz: quizTrackElement.getAttribute('tscIQ:allowSkipQuiz') !== '0',\n parameters: parseParameters(quizParametersElement, _xmlUtility),\n questionSets: questionSets\n };\n quizTrack = new QuizTrack(params);\n }\n return quizTrack;\n};\n\n/** @module QuizTrack */\nvar QuizTrack$1 = {\n /**\n * Factory method that returns a new QuizTrack object.\n * @function create\n * @param {Object} params - Optional params for caption track\n * @param {module:QuestionSet[]} [params.questionSets] - Array of question sets.\n * @static\n * @return {module:QuizTrack} new QuizTrack instance\n */\n create: function create(params) {\n return QuizTrack(params);\n },\n /**\n * Factory method that returns a new QuizTrack object from an XMP quiz track element.\n * @function createFromXmpElement\n * @param {Object} element - XMP quiz track element.\n * @static\n * @return {module:QuizTrack} new QuizTrack instance\n */\n createFromXmpElement: createFromXmpElement$b\n};\nvar SpeechMarker = function SpeechMarker(params) {\n var _startTime;\n var _duration;\n var _name;\n var _probability;\n var _image;\n var _imageIndex;\n var _imageOffset;\n var _file;\n var _imageRectangle;\n var _additionalParamProperties = {};\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n if (params) {\n forEach(keys$1(params), function (key) {\n if (key === 'startTime') {\n _startTime = params.startTime;\n } else if (key === 'duration') {\n _duration = params.duration;\n } else if (key === 'name') {\n _name = params.name;\n } else if (key === 'probability') {\n _probability = params.probability;\n } else if (key === 'image') {\n _image = params.image;\n } else if (key === 'imageIndex') {\n _imageIndex = params.imageIndex;\n } else if (key === 'imageOffset') {\n _imageOffset = params.imageOffset;\n } else if (key === 'file') {\n _file = params.file;\n } else if (key === 'imageRectangle') {\n _imageRectangle = params.imageRectangle;\n } else if (!isFunction(_additionalParamProperties[key])) {\n _additionalParamProperties[key] = params[key];\n }\n });\n }\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'xmpDM:name': _name,\n 'xmpDM:startTime': _startTime,\n 'xmpDM:duration': _duration,\n 'xmpDM:probability': _probability,\n 'tscDM:image': _image,\n 'tscDM:imageindex': _imageIndex,\n 'tscDM:imageoffset': _imageOffset,\n 'tscDM:imagerect': _imageRectangle ? _imageRectangle.toXmpAtt() : null,\n 'tscDM:file': _file\n }\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n startTime: {\n get: function get() {\n return _startTime;\n }\n },\n duration: {\n get: function get() {\n return _duration;\n }\n },\n name: {\n get: function get() {\n return _name;\n }\n },\n probability: {\n get: function get() {\n return _probability;\n }\n },\n image: {\n get: function get() {\n return _image;\n }\n },\n imageIndex: {\n get: function get() {\n return _imageIndex;\n }\n },\n imageOffset: {\n get: function get() {\n return _imageOffset;\n }\n },\n file: {\n get: function get() {\n return _file;\n }\n },\n imageRectangle: {\n get: function get() {\n return _imageRectangle;\n }\n }\n });\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n startTime: _startTime,\n duration: _duration,\n name: _name,\n probability: _probability,\n image: _image,\n imageIndex: _imageIndex,\n imageOffset: _imageOffset,\n file: _file,\n imageRectangle: _imageRectangle ? _imageRectangle.toPOJO() : undefined\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n forEach(keys$1(_additionalParamProperties), function (key) {\n pojo[key] = _additionalParamProperties[key];\n });\n return pojo;\n };\n return _public;\n};\nvar createFromXmpElement$c = function createFromXmpElement$c(speechMarkerElement) {\n var params = {\n startTime: Number(speechMarkerElement.getAttribute('xmpDM:startTime')),\n duration: Number(speechMarkerElement.getAttribute('xmpDM:duration')),\n name: speechMarkerElement.getAttribute('xmpDM:name'),\n probability: Number(speechMarkerElement.getAttribute('xmpDM:probability'))\n };\n\n // optional attributes below\n\n params.image = speechMarkerElement.getAttribute('tscDM:image') || undefined;\n if (speechMarkerElement.getAttribute('tscDM:imageindex')) {\n params.imageIndex = Number(speechMarkerElement.getAttribute('tscDM:imageindex'));\n }\n if (speechMarkerElement.getAttribute('tscDM:imageoffset')) {\n params.imageOffset = Number(speechMarkerElement.getAttribute('tscDM:imageoffset'));\n }\n params.file = speechMarkerElement.getAttribute('tscDM:file') || undefined;\n if (speechMarkerElement.getAttribute('tscDM:imagerect')) {\n params.imageRectangle = ImageRectangle$1.create(speechMarkerElement.getAttribute('tscDM:imagerect'));\n }\n return new SpeechMarker(params);\n};\n\n/** @module SpeechMarker */\nvar SpeechMarker$1 = {\n /**\n * Factory method that returns a new SpeechMarker object.\n * @function create\n * @param {Object} params - Required params for table of contents item\n * @param {Number} [params.startTime] - Start time of the speech marker (milliseconds).\n * @param {Number} [params.duration] - Duration of the speech marker (milliseconds).\n * @param {String} [params.name] - Speech marker name.\n * @param {String} [params.image] - Speech marker image.\n * @param {Number} [params.imageIndex] - Speech marker image index.\n * @param {Number} [params.imageOffset] - Speech marker image offset.\n * @param {module:ImageRectangle} [params.imageRectangle] - Speech marker image rectangle.\n * @static\n * @return {module:SpeechMarker} new SpeechMarker instance\n */\n create: function create(params) {\n return SpeechMarker(params);\n },\n /**\n * Factory method that returns a new SpeechMarker object from an XMP speech marker element.\n * @function createFromXmpElement\n * @param {Object} element - XMP speechMarker element.\n * @static\n * @return {module:SpeechMarker} new SpeechMarker instance\n */\n createFromXmpElement: createFromXmpElement$c\n};\nvar SpeechTrack = function SpeechTrack(params) {\n var _markers = [];\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n if (params) {\n if (params.hasOwnProperty('markers') && isArray$1(params.markers)) {\n _markers = params.markers;\n } else {\n throw new Error('SpeechTrack params is expecting an object eg. { markers: [marker1Object, ...] }');\n }\n }\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'xmpDM:trackType': 'Speech',\n 'xmpDM:trackName': 'Speech to Text',\n 'xmpDM:frameRate': 'f1000'\n },\n children: [{\n name: 'xmpDM:markers',\n children: [{\n name: 'rdf:Seq',\n children: _markers\n }]\n }]\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n markers: {\n get: function get() {\n return _markers;\n }\n }\n });\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n markers: invokeMap(_markers, 'toPOJO')\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n return pojo;\n };\n return _public;\n};\nvar createFromXmpElement$d = function createFromXmpElement$d(speechTrackElement) {\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var speechTrack = new SpeechTrack();\n if (speechTrackElement) {\n var markerElements = _xmlUtility.getElementsByTagNameNSPrefix(speechTrackElement, 'rdf:li');\n var markers = map(markerElements, SpeechMarker$1.createFromXmpElement);\n var params = {\n markers: markers\n };\n speechTrack = new SpeechTrack(params);\n }\n return speechTrack;\n};\n\n/** @module SpeechTrack */\nvar SpeechTrack$1 = {\n /**\n * Factory method that returns a new SpeechTrack object.\n * @function create\n * @param {Object} params - Optional params for speech track\n * @param {module:SpeechMarker[]} [params.markers] - Array of speech marker items.\n * @static\n * @return {module:SpeechTrack} new SpeechTrack instance\n */\n create: function create(params) {\n return SpeechTrack(params);\n },\n /**\n * Factory method that returns a new SpeechTrack object from an XMP speech track element.\n * @function createFromXmpElement\n * @param {Object} element - XMP speech track element.\n * @static\n * @return {module:SpeechTrack} new SpeechTrack instance\n */\n createFromXmpElement: createFromXmpElement$d\n};\nvar ScreenTextMarker = function ScreenTextMarker(params) {\n var _name;\n var _startTime;\n var _duration;\n var _tableOfContentsEntry;\n var _image;\n var _imageIndex;\n var _imageOffset;\n var _imageRectangle;\n var _file;\n var _additionalParamProperties = {};\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n if (params) {\n forEach(keys$1(params), function (key) {\n if (key === 'name') {\n _name = params.name;\n } else if (key === 'startTime') {\n _startTime = params.startTime;\n } else if (key === 'duration') {\n _duration = params.duration;\n } else if (key === 'tableOfContentsEntry') {\n _tableOfContentsEntry = params.tableOfContentsEntry;\n } else if (key === 'image') {\n _image = params.image;\n } else if (key === 'imageIndex') {\n _imageIndex = params.imageIndex;\n } else if (key === 'imageOffset') {\n _imageOffset = params.imageOffset;\n } else if (key === 'imageRectangle') {\n _imageRectangle = params.imageRectangle;\n } else if (key === 'file') {\n _file = params.file;\n } else if (!isFunction(_additionalParamProperties[key])) {\n _additionalParamProperties[key] = params[key];\n }\n });\n }\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'xmpDM:name': _name,\n 'xmpDM:startTime': _startTime,\n 'xmpDM:duration': _duration,\n 'tscDM:tocEntry': _tableOfContentsEntry,\n 'tscDM:image': _image,\n 'tscDM:imageindex': _imageIndex,\n 'tscDM:imageoffset': _imageOffset,\n 'tscDM:imagerect': _imageRectangle ? _imageRectangle.toXmpAtt() : null,\n 'tscDM:file': _file\n }\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n name: {\n get: function get() {\n return _name;\n }\n },\n startTime: {\n get: function get() {\n return _startTime;\n }\n },\n duration: {\n get: function get() {\n return _duration;\n }\n },\n tableOfContentsEntry: {\n get: function get() {\n return _tableOfContentsEntry;\n }\n },\n image: {\n get: function get() {\n return _image;\n }\n },\n imageIndex: {\n get: function get() {\n return _imageIndex;\n }\n },\n imageOffset: {\n get: function get() {\n return _imageOffset;\n }\n },\n imageRectangle: {\n get: function get() {\n return _imageRectangle;\n }\n },\n file: {\n get: function get() {\n return _file;\n }\n }\n });\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n name: _name,\n startTime: _startTime,\n duration: _duration,\n tableOfContentsEntry: _tableOfContentsEntry,\n image: _image,\n imageIndex: _imageIndex,\n imageOffset: _imageOffset,\n imageRectangle: _imageRectangle ? _imageRectangle.toPOJO() : _imageRectangle,\n file: _file\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n forEach(keys$1(_additionalParamProperties), function (key) {\n pojo[key] = _additionalParamProperties[key];\n });\n return pojo;\n };\n return _public;\n};\nvar createFromXmpElement$e = function createFromXmpElement$e(screenTextMarkerElement) {\n var params = {\n name: screenTextMarkerElement.getAttribute('xmpDM:name'),\n startTime: Number(screenTextMarkerElement.getAttribute('xmpDM:startTime')),\n duration: Number(screenTextMarkerElement.getAttribute('xmpDM:duration'))\n };\n\n // optional attributes below\n\n if (screenTextMarkerElement.getAttribute('tscDM:tocEntry')) {\n params.tableOfContentsEntry = Number(screenTextMarkerElement.getAttribute('tscDM:tocEntry'));\n }\n params.image = screenTextMarkerElement.getAttribute('tscDM:image') || undefined;\n if (screenTextMarkerElement.getAttribute('tscDM:imageindex')) {\n params.imageIndex = Number(screenTextMarkerElement.getAttribute('tscDM:imageindex'));\n }\n if (screenTextMarkerElement.getAttribute('tscDM:imageoffset')) {\n params.imageOffset = Number(screenTextMarkerElement.getAttribute('tscDM:imageoffset'));\n }\n if (screenTextMarkerElement.getAttribute('tscDM:imagerect')) {\n params.imageRectangle = ImageRectangle$1.create(screenTextMarkerElement.getAttribute('tscDM:imagerect'));\n }\n params.file = screenTextMarkerElement.getAttribute('tscDM:file') || undefined;\n return new ScreenTextMarker(params);\n};\n\n/** @module ScreenTextMarker */\nvar ScreenTextMarker$1 = {\n /**\n * Factory method that returns a new ScreenTextMarker object.\n * @function create\n * @param {Object} params - Required params for table of contents item\n * @param {String} [params.name] - ScreenText marker name.\n * @param {Number} [params.startTime] - Start time of the screenText marker (milliseconds).\n * @param {Number} [params.duration] - Duration of the screenText marker (milliseconds).\n * @param {String} [params.tableOfContentsEntry] - Index of the table of contents entry corresponding to this screen text marker.\n * @param {String} [params.image] - ScreenText marker image.\n * @param {Number} [params.imageIndex] - ScreenText marker image index.\n * @param {Number} [params.imageOffset] - ScreenText marker image offset.\n * @param {module:ImageRectangle} [params.imageRectangle] - ScreenText marker image rectangle.\n * @param {String} [params.file] - file associated with ScreenText marker.\n * @static\n * @return {module:ScreenTextMarker} new ScreenTextMarker instance\n */\n create: function create(params) {\n return ScreenTextMarker(params);\n },\n /**\n * Factory method that returns a new ScreenTextMarker object from an XMP screenText marker element.\n * @function createFromXmpElement\n * @param {Object} element - XMP screenTextMarker element.\n * @static\n * @return {module:ScreenTextMarker} new ScreenTextMarker instance\n */\n createFromXmpElement: createFromXmpElement$e\n};\nvar ScreenTextTrack = function ScreenTextTrack(params) {\n var _markers = [];\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n if (params) {\n if (params.hasOwnProperty('markers') && isArray$1(params.markers)) {\n _markers = params.markers;\n } else {\n throw new Error('ScreenTextTrack params is expecting an object eg. { markers: [marker1Object, ...] }');\n }\n }\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'xmpDM:trackType': 'ScreenText',\n 'xmpDM:trackName': 'Screen Text',\n 'xmpDM:frameRate': 'f1000'\n },\n children: [{\n name: 'xmpDM:markers',\n children: [{\n name: 'rdf:Seq',\n children: _markers\n }]\n }]\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n markers: {\n get: function get() {\n return _markers;\n }\n }\n });\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n markers: invokeMap(_markers, 'toPOJO')\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n return pojo;\n };\n return _public;\n};\nvar createFromXmpElement$f = function createFromXmpElement$f(screenTextTrackElement) {\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var screenTextTrack = new ScreenTextTrack();\n if (screenTextTrackElement) {\n var markerElements = _xmlUtility.getElementsByTagNameNSPrefix(screenTextTrackElement, 'rdf:Description');\n var markers = map(markerElements, ScreenTextMarker$1.createFromXmpElement);\n var params = {\n markers: markers\n };\n screenTextTrack = new ScreenTextTrack(params);\n }\n return screenTextTrack;\n};\n\n/** @module ScreenTextTrack */\nvar ScreenTextTrack$1 = {\n /**\n * Factory method that returns a new ScreenTextTrack object.\n * @function create\n * @param {Object} params - Optional params for screenText track\n * @param {module:ScreenTextMarker[]} [params.markers] - Array of screenText marker items.\n * @static\n * @return {module:ScreenTextTrack} new ScreenTextTrack instance\n */\n create: function create(params) {\n return ScreenTextTrack(params);\n },\n /**\n * Factory method that returns a new ScreenTextTrack object from an XMP screenText track element.\n * @function createFromXmpElement\n * @param {Object} element - XMP screenText track element.\n * @static\n * @return {module:ScreenTextTrack} new ScreenTextTrack instance\n */\n createFromXmpElement: createFromXmpElement$f\n};\nvar _xmlUtility;\nvar getXmlUtility = function getXmlUtility() {\n return _xmlUtility || (_xmlUtility = new NamespaceXmlUtility(namespaceResolver));\n};\nvar Controller = function Controller(params) {\n var _name;\n var _parameters;\n var _controllerTextItems;\n var _additionalParamProperties = {};\n if (params) {\n forEach(keys$1(params), function (key) {\n if (key === 'name') {\n _name = params.name;\n } else if (key === 'parameters') {\n _parameters = params.parameters;\n } else if (key === 'controllerTextItems') {\n _controllerTextItems = params.controllerTextItems;\n } else if (!isFunction(_additionalParamProperties[key])) {\n _additionalParamProperties[key] = params[key];\n }\n });\n }\n var toXmp = function toXmp() {\n var localizedTextTree = map(_controllerTextItems, function (item) {\n return {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'xmp:label': item.label\n },\n children: [{\n name: 'tscDM:localizedText',\n children: [{\n name: 'rdf:Alt',\n children: map(item.localizedTexts, function (localizedText) {\n return {\n name: 'rdf:li',\n atts: {\n 'xml:lang': localizedText.lang\n },\n text: localizedText.text\n };\n })\n }]\n }]\n }]\n };\n });\n var treeDesc = {\n name: 'tscDM:controller',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'xmpDM:name': _name\n },\n children: [{\n name: 'tscDM:parameters',\n children: [{\n name: 'rdf:Bag',\n children: map(_parameters, function (param) {\n return {\n name: 'rdf:li',\n atts: {\n 'xmpDM:name': param.name,\n 'xmpDM:value': param.value\n }\n };\n })\n }]\n }, {\n name: 'tscDM:controllerText',\n children: [{\n name: 'rdf:Bag',\n children: localizedTextTree\n }]\n }]\n }]\n };\n return getXmlUtility().createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n name: {\n get: function get() {\n return _name;\n }\n },\n parameters: {\n get: function get() {\n return _parameters;\n }\n },\n controllerTextItems: {\n get: function get() {\n return _controllerTextItems;\n }\n }\n });\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n name: _name,\n parameters: _parameters,\n controllerTextItems: _controllerTextItems\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n forEach(keys$1(_additionalParamProperties), function (key) {\n pojo[key] = _additionalParamProperties[key];\n });\n return pojo;\n };\n return _public;\n};\nvar parseParameter$1 = function parseParameter$1(parameterElement) {\n return {\n name: parameterElement.getAttribute('xmpDM:name'),\n value: parameterElement.getAttribute('xmpDM:value')\n };\n};\nvar parseParameters$1 = function parseParameters$1(parametersElement) {\n if (parametersElement) {\n var parameterElements = getXmlUtility().getElementsByTagNameNSPrefix(parametersElement, 'rdf:li');\n var parameters = map(parameterElements, parseParameter$1);\n return parameters;\n }\n return undefined;\n};\nvar parseLocalizedTextItem = function parseLocalizedTextItem(textElement) {\n if (textElement) {\n return {\n lang: textElement.getAttribute('xml:lang'),\n text: getXmlUtility().getElementText(textElement)\n };\n }\n return undefined;\n};\nvar parseControllerText = function parseControllerText(controllerTextItemElement) {\n var textElements = getXmlUtility().getElementsByTagNameNSPrefix(controllerTextItemElement, 'rdf:li');\n return {\n label: controllerTextItemElement.getAttribute('xmp:label'),\n localizedTexts: map(textElements, parseLocalizedTextItem)\n };\n};\nvar parseControllerTextItems = function parseControllerTextItems(controllerTextElement) {\n if (controllerTextElement) {\n var controllerTextElements = getXmlUtility().getElementsByTagNameNSPrefix(controllerTextElement, 'rdf:Description');\n var controllerTextItems = map(controllerTextElements, parseControllerText);\n return controllerTextItems;\n }\n return undefined;\n};\nvar createFromXmpElement$g = function createFromXmpElement$g(controllerElement) {\n if (controllerElement) {\n var descriptionElement = getXmlUtility().getFirstElementByTagNameNSPrefix(controllerElement, 'rdf:Description');\n var parametersElement = getXmlUtility().getFirstElementByTagNameNSPrefix(descriptionElement, 'tscDM:parameters');\n var controllerTextElement = getXmlUtility().getFirstElementByTagNameNSPrefix(descriptionElement, 'tscDM:controllerText');\n var params = {\n name: descriptionElement.getAttribute('xmpDM:name'),\n parameters: parseParameters$1(parametersElement),\n controllerTextItems: parseControllerTextItems(controllerTextElement)\n };\n return new Controller(params);\n }\n return undefined;\n};\n\n/** @module Controller */\nvar Controller$1 = {\n /**\n * Factory method that returns a new Controller object.\n * @function create\n * @param {Object} params - Required params for controller\n * @param {String} [params.name] - Controller label.\n * @param {Object[]} [params.parameters] - Array of Objects with name and value properties.\n * @param {Object[]} [params.controllerTextItems] - Array of localized controller text items.\n * @static\n * @return {module:Controller} new Controller instance\n */\n create: function create(params) {\n return Controller(params);\n },\n /**\n * Factory method that returns a new Controller object from an XMP controller element.\n * @function createFromXmpElement\n * @param {Object} element - XMP controller element.\n * @static\n * @return {module:Controller} new Controller instance\n */\n createFromXmpElement: createFromXmpElement$g\n};\nvar ContentList = function ContentList(params) {\n var _items;\n var _additionalParamProperties = {};\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n if (params) {\n forEach(keys$1(params), function (key) {\n if (key === 'items') {\n _items = params.items;\n } else if (!isFunction(_additionalParamProperties[key])) {\n _additionalParamProperties[key] = params[key];\n }\n });\n }\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'tscDM:contentList',\n children: [{\n name: 'rdf:Description',\n children: [{\n name: 'tscDM:files',\n children: [{\n name: 'rdf:Seq',\n children: map(_items, function (item) {\n return {\n name: 'rdf:li',\n atts: {\n 'xmpDM:name': item.name,\n 'xmpDM:value': item.value\n }\n };\n })\n }]\n }]\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n items: {\n get: function get() {\n return _items;\n }\n }\n });\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n items: _items\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n forEach(keys$1(_additionalParamProperties), function (key) {\n pojo[key] = _additionalParamProperties[key];\n });\n return pojo;\n };\n return _public;\n};\nvar parseContentListItems = function parseContentListItems(contentListItemElements) {\n if (contentListItemElements) {\n var items = map(contentListItemElements, function (itemElement) {\n return {\n name: itemElement.getAttribute('xmpDM:name'),\n value: itemElement.getAttribute('xmpDM:value')\n };\n });\n return items;\n }\n return undefined;\n};\nvar createFromXmpElement$h = function createFromXmpElement$h(contentListElement) {\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n if (contentListElement) {\n var contentListItemElements = _xmlUtility.getElementsByTagNameNSPrefix(contentListElement, 'rdf:li');\n var params = {\n items: parseContentListItems(contentListItemElements)\n };\n return new ContentList(params);\n }\n return undefined;\n};\n\n/** @module ContentList */\nvar ContentList$1 = {\n /**\n * Factory method that returns a new ContentList object.\n * @function create\n * @param {Object} params - Required params for contentList\n * @param {Object[]} [params.items] - Array of content list items.\n * @static\n * @return {module:ContentList} new ContentList instance\n */\n create: function create(params) {\n return ContentList(params);\n },\n /**\n * Factory method that returns a new ContentList object from an XMP contentList element.\n * @function createFromXmpElement\n * @param {Object} element - XMP contentList element.\n * @static\n * @return {module:ContentList} new ContentList instance\n */\n createFromXmpElement: createFromXmpElement$h\n};\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return !start && end >= length ? array : baseSlice(array, start, end);\n}\n\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\n/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value ? strictIndexOf(array, value, fromIndex) : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\n/**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\nfunction charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n}\n\n/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\n/** Used to compose unicode character classes. */\nvar rsAstralRange = \"\\\\ud800-\\\\udfff\",\n rsComboMarksRange = \"\\\\u0300-\\\\u036f\",\n reComboHalfMarksRange = \"\\\\ufe20-\\\\ufe2f\",\n rsComboSymbolsRange = \"\\\\u20d0-\\\\u20ff\",\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = \"\\\\ufe0e\\\\ufe0f\";\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = \"\\\\u200d\";\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\n/** Used to compose unicode character classes. */\nvar rsAstralRange$1 = \"\\\\ud800-\\\\udfff\",\n rsComboMarksRange$1 = \"\\\\u0300-\\\\u036f\",\n reComboHalfMarksRange$1 = \"\\\\ufe20-\\\\ufe2f\",\n rsComboSymbolsRange$1 = \"\\\\u20d0-\\\\u20ff\",\n rsComboRange$1 = rsComboMarksRange$1 + reComboHalfMarksRange$1 + rsComboSymbolsRange$1,\n rsVarRange$1 = \"\\\\ufe0e\\\\ufe0f\";\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange$1 + ']',\n rsCombo = '[' + rsComboRange$1 + ']',\n rsFitz = \"\\\\ud83c[\\\\udffb-\\\\udfff]\",\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange$1 + ']',\n rsRegional = \"(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}\",\n rsSurrPair = \"[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]\",\n rsZWJ$1 = \"\\\\u200d\";\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange$1 + ']?',\n rsOptJoin = '(?:' + rsZWJ$1 + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string) ? unicodeToArray(string) : asciiToArray(string);\n}\n\n/** Used to match leading and trailing whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * Removes leading whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimStart(' abc ');\n * // => 'abc '\n *\n * _.trimStart('-_-abc-_-', '_-');\n * // => 'abc-_-'\n */\nfunction trimStart(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrimStart, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n start = charsStartIndex(strSymbols, stringToArray(chars));\n return castSlice(strSymbols, start).join('');\n}\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function (key) {\n return object[key];\n });\n}\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object == null ? [] : baseValues(object, keys$1(object));\n}\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax$2 = Math.max;\n\n/**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\nfunction includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = fromIndex && !guard ? toInteger(fromIndex) : 0;\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax$2(length + fromIndex, 0);\n }\n return isString(collection) ? fromIndex <= length && collection.indexOf(value, fromIndex) > -1 : !!length && baseIndexOf(collection, value, fromIndex) > -1;\n}\nvar _parsers = [];\nfunction trimLeadingDot(extension) {\n return trimStart(extension, '.');\n}\nvar registerParser = function registerParser(name, supportedExtensions, parserCreator) {\n _parsers.push({\n name: name,\n extensions: map(supportedExtensions, trimLeadingDot),\n create: parserCreator\n });\n};\nvar resolveParser = function resolveParser(extension) {\n var parser = find(_parsers, function (theParser) {\n return includes(theParser.extensions, trimLeadingDot(extension));\n });\n return parser ? parser.create() : null;\n};\nvar captionParsers = {\n register: registerParser,\n resolveByExtension: resolveParser\n};\n\n/**\n * Factory method that returns a new CaptionText object.\n * @function importFromFile\n * @param {module:CaptionController} captionController - CaptionController object\n * @param {String} fileName - Name of caption file\n * @param {String} fileContents - Contents of the caption file\n * @param {String} [languageIdentifierString='en-US'] - RFC 3066 notation language string\n * @static\n * @return {boolean} Did import succeed\n */\nvar importFromFile = function importFromFile(captionController, fileName, fileContents, languageIdentifierString) {\n try {\n var extension = fileName.toLowerCase().split('.').pop();\n var parser = captionParsers.resolveByExtension(extension);\n if (parser) {\n var parsedCaptionTrack = parser.deserialize(fileContents, languageIdentifierString);\n captionController.addCaptionTrack(parsedCaptionTrack);\n return true;\n }\n return false;\n } catch (e) {\n console.error(e); // eslint-disable-line no-console\n return false;\n }\n};\nvar captionImporter = {\n importFromFile: importFromFile\n};\nvar Xmp$1 = function Xmp(xmpXml) {\n var _version;\n var _title;\n var _date;\n var _creator;\n var _presenterEmail;\n var _description;\n var _source;\n var _about;\n var _keywords;\n var _thumbnail;\n var _firstFrame;\n var _project;\n var _originId;\n var _iPodExplicit;\n var _documentId;\n var _duration;\n var _videoFrameSize;\n var _captionController = CaptionController$1$1.create();\n var _hotspotTrack = null;\n var _tableOfContentsTrack = null;\n var _quizTrack = null;\n var _speechTrack = null;\n var _screenTextTrack = null;\n var _controller;\n var _contentList;\n var _languages = [];\n var _containsTocThumbnails = false;\n var _containsToc = false;\n var _containsCaptions = false;\n var _containsHotspots = false;\n var _containsQuiz = false;\n var _containsQuizQuestions = false;\n var _containsScreenText = false;\n var _containsSpeechText = false;\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var toXmp = function toXmp() {\n var _captionXmpProvider = _captionController.containsCaptions ? _captionController : null;\n var tracksContainer = filter([_captionXmpProvider, _hotspotTrack, _quizTrack, _screenTextTrack, _speechTrack, _tableOfContentsTrack], function (track) {\n return track !== null;\n });\n var treeDesc = {\n name: 'rdf:Description',\n atts: {\n 'tsc:version': _version,\n 'dc:title': _title,\n 'tscDM:presenteremail': _presenterEmail,\n 'dc:source': _source,\n 'dc:date': _date,\n 'rdf:about': _about,\n 'dc:creator': _creator,\n 'dc:description': _description,\n 'tscDM:keywords': _keywords,\n 'tscDM:thumbnail': _thumbnail,\n 'tscDM:firstFrame': _firstFrame,\n 'tscDM:project': _project,\n 'tscDM:originId': _originId,\n 'tscDM:iPodExplicit': _iPodExplicit,\n 'xmpMM:DocumentID': _documentId\n },\n children: [{\n name: 'xmpDM:Tracks',\n children: [{\n name: 'rdf:Bag',\n children: tracksContainer\n }]\n }, {\n name: 'tscDM:controller',\n children: [_controller]\n }, {\n name: 'tscDM:contentList',\n children: [_contentList]\n }, {\n name: 'tsc:langName',\n children: [{\n name: 'rdf:Bag',\n children: map(_languages, function (language) {\n return {\n name: 'rdf:li',\n atts: {\n 'xml:lang': language.langName\n },\n text: language.langValue\n };\n })\n }]\n }, {\n name: 'xmpDM:videoFrameSize',\n atts: {\n 'stDim:unit': _videoFrameSize.unit,\n 'stDim:w': _videoFrameSize.width,\n 'stDim:h': _videoFrameSize.height\n }\n }]\n };\n if (_duration) {\n treeDesc.children.push({\n name: 'xmpDM:duration',\n atts: {\n 'xmpDM:scale': _duration.scale,\n 'xmpDM:value': _duration.value\n }\n });\n }\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var toString = function toString() {\n var doc = _xmlUtility.createDocument();\n var nsElement = _xmlUtility.createElementNS(doc, namespaceResolver('x'), 'x', 'xmpmeta');\n forEach(wellKnownNamespaces, function (nsUrl, nsPrefix) {\n if (nsPrefix !== 'xml') {\n nsElement.setAttributeNS('http://www.w3.org/2000/xmlns/', ['xmlns', nsPrefix].join(':'), nsUrl);\n }\n });\n var rdfElement = _xmlUtility.createElementNS(doc, namespaceResolver('rdf'), 'rdf', 'RDF');\n rdfElement.appendChild(toXmp());\n nsElement.appendChild(rdfElement);\n doc.appendChild(nsElement);\n return _xmlUtility.xmlDocToString(doc);\n };\n var _public = Object.defineProperties({}, {\n version: {\n get: function get() {\n return _version;\n }\n },\n title: {\n get: function get() {\n return _title;\n }\n },\n date: {\n get: function get() {\n return _date;\n }\n },\n creator: {\n get: function get() {\n return _creator;\n }\n },\n presenterEmail: {\n get: function get() {\n return _presenterEmail;\n }\n },\n description: {\n get: function get() {\n return _description;\n }\n },\n source: {\n get: function get() {\n return _source;\n }\n },\n about: {\n get: function get() {\n return _about;\n }\n },\n keywords: {\n get: function get() {\n return _keywords;\n }\n },\n thumbnail: {\n get: function get() {\n return _thumbnail;\n }\n },\n firstFrame: {\n get: function get() {\n return _firstFrame;\n }\n },\n project: {\n get: function get() {\n return _project;\n }\n },\n originId: {\n get: function get() {\n return _originId;\n }\n },\n iPodExplicit: {\n get: function get() {\n return _iPodExplicit;\n }\n },\n documentId: {\n get: function get() {\n return _documentId;\n }\n },\n duration: {\n get: function get() {\n return _duration;\n }\n },\n videoFrameSize: {\n get: function get() {\n return _videoFrameSize;\n }\n },\n tocThumbnailImageSrc: {\n get: function get() {\n if (_containsToc && _tableOfContentsTrack.items[0].image !== undefined) {\n return _tableOfContentsTrack.items[0].image;\n } else if (_containsSpeechText && _speechTrack.markers[0].image !== undefined) {\n return _speechTrack.markers[0].image;\n } else if (_containsScreenText && _screenTextTrack.markers[0].image !== undefined) {\n return _screenTextTrack.markers[0].image;\n } else if (_captionController.captionsContainsTocThumbnails) {\n return _captionController.getActiveCaptionsTocThumbnailImage();\n }\n return '';\n }\n },\n containsTocThumbnails: {\n get: function get() {\n return _containsTocThumbnails;\n }\n },\n containsToc: {\n get: function get() {\n return _containsToc;\n }\n },\n containsCaptions: {\n get: function get() {\n return _containsCaptions;\n }\n },\n containsHotspots: {\n get: function get() {\n return _containsHotspots;\n }\n },\n containsQuiz: {\n get: function get() {\n return _containsQuiz;\n }\n },\n containsQuizQuestions: {\n get: function get() {\n return _containsQuizQuestions;\n }\n },\n containsScreenText: {\n get: function get() {\n return _containsScreenText;\n }\n },\n containsSpeechText: {\n get: function get() {\n return _containsSpeechText;\n }\n },\n captionController: {\n get: function get() {\n return _captionController;\n }\n },\n captionTrack: {\n get: function get() {\n return _captionController.activeCaptionTrack;\n }\n },\n hotspotTrack: {\n get: function get() {\n return _hotspotTrack;\n },\n set: function set(value) {\n _hotspotTrack = value;\n }\n },\n tableOfContentsTrack: {\n get: function get() {\n return _tableOfContentsTrack;\n },\n set: function set(value) {\n _tableOfContentsTrack = value;\n }\n },\n quizTrack: {\n get: function get() {\n return _quizTrack;\n },\n set: function set(value) {\n _quizTrack = value;\n }\n },\n speechTrack: {\n get: function get() {\n return _speechTrack;\n }\n },\n screenTextTrack: {\n get: function get() {\n return _screenTextTrack;\n }\n },\n controller: {\n get: function get() {\n return _controller;\n }\n },\n contentList: {\n get: function get() {\n return _contentList;\n }\n }\n });\n var parseLanguageName = function parseLanguageName(languageNameElement) {\n return {\n langName: languageNameElement.getAttribute('xml:lang'),\n langValue: _xmlUtility.getElementText(languageNameElement)\n };\n };\n var parseLanguages = function parseLanguages(langNameElement) {\n if (langNameElement) {\n var languageNameElements = _xmlUtility.getElementsByTagNameNSPrefix(langNameElement, 'rdf:li');\n var languageNames = map(languageNameElements, parseLanguageName);\n return languageNames;\n }\n return null;\n };\n var parseProductionDetails = function parseProductionDetails(doc) {\n var rootDescriptionElement = _xmlUtility.getFirstElementByTagNameNSPrefix(doc, 'rdf:Description');\n _version = rootDescriptionElement.getAttribute('tsc:version');\n _title = rootDescriptionElement.getAttribute('dc:title');\n _documentId = rootDescriptionElement.getAttribute('xmpMM:DocumentID');\n var videoFrameSizeElement = _xmlUtility.getFirstElementByTagNameNSPrefix(doc, 'xmpDM:videoFrameSize');\n _videoFrameSize = {\n unit: videoFrameSizeElement ? videoFrameSizeElement.getAttribute('stDim:unit') : 'pixel',\n width: videoFrameSizeElement ? Number(videoFrameSizeElement.getAttribute('stDim:w')) : 0,\n height: videoFrameSizeElement ? Number(videoFrameSizeElement.getAttribute('stDim:h')) : 0\n };\n var langNameElement = _xmlUtility.getFirstElementByTagNameNSPrefix(doc, 'tsc:langName');\n _languages = parseLanguages(langNameElement);\n\n // optional attributes below\n\n _presenterEmail = rootDescriptionElement.getAttribute('tscDM:presenteremail') || undefined;\n _source = rootDescriptionElement.getAttribute('dc:source') || undefined;\n _date = rootDescriptionElement.getAttribute('dc:date') || undefined;\n _about = rootDescriptionElement.getAttribute('rdf:about') || undefined;\n _creator = rootDescriptionElement.getAttribute('dc:creator') || undefined;\n _description = rootDescriptionElement.getAttribute('dc:description') || undefined;\n _keywords = rootDescriptionElement.getAttribute('tscDM:keywords') || undefined;\n _thumbnail = rootDescriptionElement.getAttribute('tscDM:thumbnail') || undefined;\n _firstFrame = rootDescriptionElement.getAttribute('tscDM:firstFrame') || undefined;\n _project = rootDescriptionElement.getAttribute('tscDM:project') || undefined;\n _originId = rootDescriptionElement.getAttribute('tscDM:originId') || undefined;\n _iPodExplicit = rootDescriptionElement.getAttribute('tscDM:iPodExplicit') || undefined;\n var durationElement = _xmlUtility.getFirstElementByTagNameNSPrefix(doc, 'xmpDM:duration') || undefined;\n if (durationElement) {\n _duration = {\n scale: durationElement.getAttribute('xmpDM:scale'),\n value: Number(durationElement.getAttribute('xmpDM:value'))\n };\n }\n };\n var getElementForTrackType = function getElementForTrackType(elements, trackType) {\n return find(elements, function (element) {\n return _xmlUtility.hasAttributeWithValue(element, 'xmpDM:trackType', trackType);\n });\n };\n var parseCaptionTrack = function parseCaptionTrack(tracksDescriptionElements) {\n var captionTrackElement = getElementForTrackType(tracksDescriptionElements, 'Caption');\n if (captionTrackElement) {\n _captionController.addCaptionTrackFromXmpElement(captionTrackElement);\n }\n };\n var parseHotspotTrack = function parseHotspotTrack(tracksDescriptionElements) {\n var hotspotTrackElement = getElementForTrackType(tracksDescriptionElements, 'Hotspot');\n if (hotspotTrackElement) {\n return HotspotTrack$1.createFromXmpElement(hotspotTrackElement);\n }\n return null;\n };\n var parseTableOfContentsTrack = function parseTableOfContentsTrack(tracksDescriptionElements) {\n var tableOfContentsTrackElement = getElementForTrackType(tracksDescriptionElements, 'TableOfContents');\n if (tableOfContentsTrackElement) {\n return TableOfContentsTrack$1.createFromXmpElement(tableOfContentsTrackElement);\n }\n return null;\n };\n var parseQuizTrack = function parseQuizTrack(tracksDescriptionElements) {\n var quizTrackElement = getElementForTrackType(tracksDescriptionElements, 'Quiz');\n if (quizTrackElement) {\n return QuizTrack$1.createFromXmpElement(quizTrackElement);\n }\n return null;\n };\n var parseSpeechTrack = function parseSpeechTrack(tracksDescriptionElements) {\n var speechTrackElement = getElementForTrackType(tracksDescriptionElements, 'Speech');\n if (speechTrackElement) {\n return SpeechTrack$1.createFromXmpElement(speechTrackElement);\n }\n return null;\n };\n var parseScreenTextTrack = function parseScreenTextTrack(tracksDescriptionElements) {\n var screenTextTrackElement = getElementForTrackType(tracksDescriptionElements, 'ScreenText');\n if (screenTextTrackElement) {\n return ScreenTextTrack$1.createFromXmpElement(screenTextTrackElement);\n }\n return null;\n };\n var parseTracks = function parseTracks(doc) {\n var tracksElement = _xmlUtility.getFirstElementByTagNameNSPrefix(doc, 'xmpDM:Tracks');\n var tracksDescriptionElements = _xmlUtility.getElementsByTagNameNSPrefix(tracksElement, 'rdf:Description');\n parseCaptionTrack(tracksDescriptionElements);\n _hotspotTrack = parseHotspotTrack(tracksDescriptionElements);\n _tableOfContentsTrack = parseTableOfContentsTrack(tracksDescriptionElements);\n _quizTrack = parseQuizTrack(tracksDescriptionElements);\n _speechTrack = parseSpeechTrack(tracksDescriptionElements);\n _screenTextTrack = parseScreenTextTrack(tracksDescriptionElements);\n var controllerElement = _xmlUtility.getFirstElementByTagNameNSPrefix(doc, 'tscDM:controller');\n _controller = Controller$1.createFromXmpElement(controllerElement);\n var contentListElement = _xmlUtility.getFirstElementByTagNameNSPrefix(doc, 'tscDM:contentList');\n _contentList = ContentList$1.createFromXmpElement(contentListElement);\n recordXmpContentFlags();\n };\n var recordXmpContentFlags = function recordXmpContentFlags() {\n _containsToc = _tableOfContentsTrack !== null && _tableOfContentsTrack.items.length > 0;\n _containsCaptions = _captionController.containsCaptions;\n _containsHotspots = _hotspotTrack !== null && _hotspotTrack.hotspots.length > 0;\n _containsQuiz = _quizTrack !== null;\n _containsQuizQuestions = _quizTrack !== null && _quizTrack.questionSets.length > 0;\n _containsScreenText = _screenTextTrack !== null && _screenTextTrack.markers.length > 0;\n _containsSpeechText = _speechTrack !== null && _speechTrack.markers.length > 0;\n _containsTocThumbnails = _containsToc && _tableOfContentsTrack.items[0].image !== undefined || _containsSpeechText && _speechTrack.markers[0].image !== undefined || _containsScreenText && _screenTextTrack.markers[0].image !== undefined || _captionController.captionsContainsTocThumbnails;\n };\n var importCaptionsFromFile = function importCaptionsFromFile(fileName, fileContents, languageIdentifierString) {\n var importedCaptionTrack = captionImporter.importFromFile(_captionController, fileName, fileContents, languageIdentifierString);\n if (importedCaptionTrack) {\n recordXmpContentFlags();\n }\n };\n var parse = function parse() {\n // current 'parse' does NOT deal with different versions of the TSC-XMP schema, as far as we have tested\n // all existing versions of the schema from 2.0.0 - 2.1.0 will parse using this mechanism, but neither parser\n // nor output formatter attempt to take a 2.0.0 and formally migrate it forward to 2.1.0. Nor is the 'version'\n // property of the xml doc ever modified during reading a writing of a particular source. this note is here\n // because will have to deal with versioning someday. (JMD: 2016-05)\n var doc = _xmlUtility.parseXml(xmpXml);\n parseProductionDetails(doc);\n parseTracks(doc);\n };\n if (xmpXml) {\n parse();\n }\n _public.toXmp = toXmp;\n _public.toString = toString;\n _public.importCaptionsFromFile = importCaptionsFromFile;\n _public.toPOJO = function () {\n var pojo = {\n version: _version,\n title: _title,\n documentId: _documentId,\n languages: _languages,\n videoFrameSize: _videoFrameSize,\n source: _source,\n presenterEmail: _presenterEmail,\n date: _date,\n about: _about,\n creator: _creator,\n description: _description,\n keywords: _keywords,\n thumbnail: _thumbnail,\n firstFrame: _firstFrame,\n project: _project,\n originId: _originId,\n iPodExplicit: _iPodExplicit,\n duration: _duration,\n captionTrack: _captionController.toPOJO(),\n hotspotTrack: _hotspotTrack ? _hotspotTrack.toPOJO() : undefined,\n quizTrack: _quizTrack ? _quizTrack.toPOJO() : undefined,\n speechTrack: _speechTrack ? _speechTrack.toPOJO() : undefined,\n screenTextTrack: _screenTextTrack ? _screenTextTrack.toPOJO() : undefined,\n controller: _controller ? _controller.toPOJO() : undefined,\n contentList: _contentList ? _contentList.toPOJO() : undefined\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n return pojo;\n };\n return _public;\n};\n\n/** @module Xmp */\nvar xmp = {\n /**\n * Factory method that returns a new Xmp object.\n * @function create\n * @param {String=} xmpXml - XMP XML string to parse.\n * @static\n * @return {module:Xmp} new Xmp instance\n */\n create: function create(xmpXml) {\n return Xmp$1(xmpXml);\n }\n};\n\n/** Used for built-in method references. */\nvar objectProto$f = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$c = objectProto$f.hasOwnProperty;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n return object != null && hasOwnProperty$c.call(object, key);\n}\n\n/**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\nfunction has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n}\n\n/** Used for built-in method references. */\nvar arrayProto$2 = Array.prototype;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeJoin = arrayProto$2.join;\n\n/**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\nfunction join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n}\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\nfunction charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n}\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim$1 = /^\\s+|\\s+$/g;\n\n/**\n * Removes leading and trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trim(' abc ');\n * // => 'abc'\n *\n * _.trim('-_-abc-_-', '_-');\n * // => 'abc'\n *\n * _.map([' foo ', ' bar '], _.trim);\n * // => ['foo', 'bar']\n */\nfunction trim(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrim$1, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n chrSymbols = stringToArray(chars),\n start = charsStartIndex(strSymbols, chrSymbols),\n end = charsEndIndex(strSymbols, chrSymbols) + 1;\n return castSlice(strSymbols, start, end).join('');\n}\n\n/**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\nfunction head(array) {\n return array && array.length ? array[0] : undefined;\n}\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function (string) {\n string = toString(string);\n var strSymbols = hasUnicode(string) ? stringToArray(string) : undefined;\n var chr = strSymbols ? strSymbols[0] : string.charAt(0);\n var trailing = strSymbols ? castSlice(strSymbols, 1).join('') : string.slice(1);\n return chr[methodName]() + trailing;\n };\n}\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\nfunction baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function (value, index, collection) {\n accumulator = initAccum ? (initAccum = false, value) : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n}\n\n/**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\nfunction reduce(collection, iteratee, accumulator) {\n var func = isArray$1(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n return func(collection, baseIteratee(iteratee), accumulator, initAccum, baseEach);\n}\n\n/** Used to store function metadata. */\nvar metaMap = WeakMap && new WeakMap();\n\n/**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\nvar baseSetData = !metaMap ? identity : function (func, data) {\n metaMap.set(func, data);\n return func;\n};\n\n/**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createCtor(Ctor) {\n return function () {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0:\n return new Ctor();\n case 1:\n return new Ctor(args[0]);\n case 2:\n return new Ctor(args[0], args[1]);\n case 3:\n return new Ctor(args[0], args[1], args[2]);\n case 4:\n return new Ctor(args[0], args[1], args[2], args[3]);\n case 5:\n return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6:\n return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7:\n return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n}\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1;\n\n/**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n function wrapper() {\n var fn = this && this !== root && this instanceof wrapper ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n}\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax$3 = Math.max;\n\n/**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\nfunction composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax$3(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n}\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax$4 = Math.max;\n\n/**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\nfunction composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax$4(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n}\n\n/**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\nfunction countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n}\n\n/**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\nfunction baseLodash() {\n // No operation performed.\n}\n\n/** Used as references for the maximum length and index of an array. */\nvar MAX_ARRAY_LENGTH$1 = 4294967295;\n\n/**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\nfunction LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH$1;\n this.__views__ = [];\n}\n\n// Ensure `LazyWrapper` is an instance of `baseLodash`.\nLazyWrapper.prototype = baseCreate(baseLodash.prototype);\nLazyWrapper.prototype.constructor = LazyWrapper;\n\n/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop$1$1() {\n // No operation performed.\n}\n\n/**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\nvar getData = !metaMap ? noop$1$1 : function (func) {\n return metaMap.get(func);\n};\n\n/** Used to lookup unminified function names. */\nvar realNames = {};\n\n/** Used for built-in method references. */\nvar objectProto$g = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$d = objectProto$g.hasOwnProperty;\n\n/**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\nfunction getFuncName(func) {\n var result = func.name + '',\n array = realNames[result],\n length = hasOwnProperty$d.call(realNames, result) ? array.length : 0;\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n}\n\n/**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\nfunction LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n}\nLodashWrapper.prototype = baseCreate(baseLodash.prototype);\nLodashWrapper.prototype.constructor = LodashWrapper;\n\n/**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\nfunction wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n}\n\n/** Used for built-in method references. */\nvar objectProto$h = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$e = objectProto$h.hasOwnProperty;\n\n/**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\nfunction lodash(value) {\n if (isObjectLike(value) && !isArray$1(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty$e.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n}\n\n// Ensure wrappers are instances of `baseLodash`.\nlodash.prototype = baseLodash.prototype;\nlodash.prototype.constructor = lodash;\n\n/**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\nfunction isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n}\n\n/**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\nvar setData = shortOut(baseSetData);\n\n/** Used to match wrap detail comments. */\nvar reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n/**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\nfunction getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n}\n\n/** Used to match wrap detail comments. */\nvar reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/;\n\n/**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\nfunction insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n}\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG$1 = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n/** Used to associate wrap methods with their bit flags. */\nvar wrapFlags = [['ary', WRAP_ARY_FLAG], ['bind', WRAP_BIND_FLAG$1], ['bindKey', WRAP_BIND_KEY_FLAG], ['curry', WRAP_CURRY_FLAG], ['curryRight', WRAP_CURRY_RIGHT_FLAG], ['flip', WRAP_FLIP_FLAG], ['partial', WRAP_PARTIAL_FLAG], ['partialRight', WRAP_PARTIAL_RIGHT_FLAG], ['rearg', WRAP_REARG_FLAG]];\n\n/**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\nfunction updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function (pair) {\n var value = '_.' + pair[0];\n if (bitmask & pair[1] && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n}\n\n/**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\nfunction setWrapToString(wrapper, reference, bitmask) {\n var source = reference + '';\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n}\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG$2 = 1,\n WRAP_BIND_KEY_FLAG$1 = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG$1 = 8,\n WRAP_PARTIAL_FLAG$1 = 32,\n WRAP_PARTIAL_RIGHT_FLAG$1 = 64;\n\n/**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG$1,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n bitmask |= isCurry ? WRAP_PARTIAL_FLAG$1 : WRAP_PARTIAL_RIGHT_FLAG$1;\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG$1 : WRAP_PARTIAL_FLAG$1);\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG$2 | WRAP_BIND_KEY_FLAG$1);\n }\n var newData = [func, bitmask, thisArg, newPartials, newHolders, newPartialsRight, newHoldersRight, argPos, ary, arity];\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n}\n\n/**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\nfunction getHolder(func) {\n var object = func;\n return object.placeholder;\n}\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin$1 = Math.min;\n\n/**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\nfunction reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin$1(indexes.length, arrLength),\n oldArray = copyArray(array);\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n}\n\n/** Used as the internal argument placeholder. */\nvar PLACEHOLDER = '__lodash_placeholder__';\n\n/**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\nfunction replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n}\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG$3 = 1,\n WRAP_BIND_KEY_FLAG$2 = 2,\n WRAP_CURRY_FLAG$2 = 8,\n WRAP_CURRY_RIGHT_FLAG$1 = 16,\n WRAP_ARY_FLAG$1 = 128,\n WRAP_FLIP_FLAG$1 = 512;\n\n/**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG$1,\n isBind = bitmask & WRAP_BIND_FLAG$3,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG$2,\n isCurried = bitmask & (WRAP_CURRY_FLAG$2 | WRAP_CURRY_RIGHT_FLAG$1),\n isFlip = bitmask & WRAP_FLIP_FLAG$1,\n Ctor = isBindKey ? undefined : createCtor(func);\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(func, bitmask, createHybrid, wrapper.placeholder, thisArg, args, newHolders, argPos, ary, arity - length);\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n}\n\n/**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder ? [] : replaceHolders(args, placeholder);\n length -= holders.length;\n if (length < arity) {\n return createRecurry(func, bitmask, createHybrid, wrapper.placeholder, undefined, args, holders, undefined, undefined, arity - length);\n }\n var fn = this && this !== root && this instanceof wrapper ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n}\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG$4 = 1;\n\n/**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG$4,\n Ctor = createCtor(func);\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = this && this !== root && this instanceof wrapper ? Ctor : func;\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n}\n\n/** Used as the internal argument placeholder. */\nvar PLACEHOLDER$1 = '__lodash_placeholder__';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG$5 = 1,\n WRAP_BIND_KEY_FLAG$3 = 2,\n WRAP_CURRY_BOUND_FLAG$1 = 4,\n WRAP_CURRY_FLAG$3 = 8,\n WRAP_ARY_FLAG$2 = 128,\n WRAP_REARG_FLAG$1 = 256;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin$2 = Math.min;\n\n/**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\nfunction mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG$5 | WRAP_BIND_KEY_FLAG$3 | WRAP_ARY_FLAG$2);\n var isCombo = srcBitmask == WRAP_ARY_FLAG$2 && bitmask == WRAP_CURRY_FLAG$3 || srcBitmask == WRAP_ARY_FLAG$2 && bitmask == WRAP_REARG_FLAG$1 && data[7].length <= source[8] || srcBitmask == (WRAP_ARY_FLAG$2 | WRAP_REARG_FLAG$1) && source[7].length <= source[8] && bitmask == WRAP_CURRY_FLAG$3;\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG$5) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG$5 ? 0 : WRAP_CURRY_BOUND_FLAG$1;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER$1) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER$1) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG$2) {\n data[8] = data[8] == null ? source[8] : nativeMin$2(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n return data;\n}\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT$2 = 'Expected a function';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG$6 = 1,\n WRAP_BIND_KEY_FLAG$4 = 2,\n WRAP_CURRY_FLAG$4 = 8,\n WRAP_CURRY_RIGHT_FLAG$2 = 16,\n WRAP_PARTIAL_FLAG$2 = 32,\n WRAP_PARTIAL_RIGHT_FLAG$2 = 64;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax$5 = Math.max;\n\n/**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG$4;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT$2);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG$2 | WRAP_PARTIAL_RIGHT_FLAG$2);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax$5(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG$2) {\n var partialsRight = partials,\n holdersRight = holders;\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n var newData = [func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity];\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined ? isBindKey ? 0 : func.length : nativeMax$5(newData[9] - length, 0);\n if (!arity && bitmask & (WRAP_CURRY_FLAG$4 | WRAP_CURRY_RIGHT_FLAG$2)) {\n bitmask &= ~(WRAP_CURRY_FLAG$4 | WRAP_CURRY_RIGHT_FLAG$2);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG$6) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG$4 || bitmask == WRAP_CURRY_RIGHT_FLAG$2) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG$2 || bitmask == (WRAP_BIND_FLAG$6 | WRAP_PARTIAL_FLAG$2)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n}\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_CURRY_FLAG$5 = 8;\n\n/**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\nfunction curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG$5, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n}\n\n// Assign default placeholders.\ncurry.placeholder = {};\n\n/**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\nfunction isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n}\nvar DEFAULT_CAPTION_LANGUAGE_IDENTIFIER_STRING = 'en-US';\n\n// Simple function to convert HH:MM:SS,MMM or HH:MM:SS.MMM to SS.MMM\n// Assume valid, returns 0 on error\n/* eslint-disable no-magic-numbers, no-mixed-operators */\nfunction toSeconds(timeIn) {\n var t = timeIn.split(':');\n try {\n var s = t[2].split(',');\n\n // Just in case a . is decimal separator\n if (s.length === 1) {\n s = t[2].split('.');\n }\n return parseFloat(t[0], 10) * 3600 + parseFloat(t[1], 10) * 60 + parseFloat(s[0], 10) + parseFloat(s[1], 10) / 1000;\n } catch (e) {\n return 0;\n }\n}\n/* eslint-enable no-magic-numbers, no-mixed-operators */\n\nfunction nextNonEmptyLine(linesArray, position) {\n var idx = position;\n while (!linesArray[idx] && idx < linesArray.length) {\n idx++;\n }\n return idx;\n}\nfunction lastNonEmptyLine(linesArray) {\n var idx = linesArray.length - 1;\n while (idx >= 0 && !linesArray[idx]) {\n idx--;\n }\n return idx;\n}\nfunction _readCaptionsFromString(input, timeDelimiter, hasIdRow, languageIdentifierString) {\n languageIdentifierString = languageIdentifierString || DEFAULT_CAPTION_LANGUAGE_IDENTIFIER_STRING;\n var captionCollection = CaptionCollection$1.create();\n var i = 0;\n var index = 0;\n var lines;\n var time;\n var text;\n var endIndex;\n var caption;\n var timeSplitRegex = new RegExp('[\\\\t ]*' + timeDelimiter + '[\\\\t ]*');\n var SSATagRegex = /\\{(\\\\[\\w]+\\(?([\\w\\d]+,?)+\\)?)+\\}/gi;\n var lessThanRegex = //g;\n var newlinePlaceholderRegex = /\\\\N/gi;\n\n // Here is where the magic happens\n // Split on line breaks\n lines = input.split(/(?:\\r\\n|\\r|\\n)/gm);\n endIndex = lastNonEmptyLine(lines) + 1;\n for (i = 0; i < endIndex; i++) {\n caption = {};\n text = [];\n i = nextNonEmptyLine(lines, i);\n if (hasIdRow) {\n caption.id = parseInt(lines[i++], 10);\n } else {\n caption.id = i;\n }\n\n // Split on delimiter (often '-->' or ','), trimming spaces as well\n time = lines[i++].split(timeSplitRegex);\n caption.start = toSeconds(time[0]);\n\n // So as to trim positioning information from end\n index = time[1].indexOf(' ');\n if (index !== -1) {\n time[1] = time[1].substring(0, index);\n }\n caption.end = toSeconds(time[1]);\n\n // Build single line of text from multi-line subtitle in file\n while (i < endIndex && lines[i]) {\n text.push(lines[i++]);\n }\n\n // Join into 1 line, SSA-style linebreaks\n // Strip out other SSA-style tags\n caption.text = text.join('\\\\N').replace(SSATagRegex, '');\n\n // Escape HTML entities\n caption.text = caption.text.replace(lessThanRegex, '<').replace(greaterThanRegex, '>');\n\n // Unescape great than and less than when it makes a valid html tag of a supported style (font, b, u, s, i)\n // Modified version of regex from Phil Haack's blog: http://haacked.com/archive/2004/10/25/usingregularexpressionstomatchhtml.aspx\n // Later modified by kev: http://kevin.deldycke.com/2007/03/ultimate-regular-expression-for-html-tag-parsing-with-php/\n //caption.text = caption.text.replace( /<(\\/?(font|b|u|i|s))((\\s+(\\w|\\w[\\w\\-]*\\w)(\\s*=\\s*(?:\\\".*?\\\"|'.*?'|[^'\\\">\\s]+))?)+\\s*|\\s*)(\\/?)>/gi, \"<$1$3$7>\" );\n caption.text = caption.text.replace(newlinePlaceholderRegex, '\\n');\n captionCollection.addCaption(Caption$1.create({\n startTime: caption.start * 1000,\n duration: caption.end * 1000 - caption.start * 1000,\n captionTextList: [CaptionText$1.create({\n text: caption.text,\n languageIdentifierString: languageIdentifierString\n })],\n horizontalAlignment: 'Center',\n verticalAlignment: 'Bottom'\n }));\n }\n var captionTrack = CaptionTrack$1.create({\n captions: captionCollection.captions,\n languageIdentifierString: languageIdentifierString\n });\n return captionTrack;\n}\nfunction padWithZero(inputNumber, width) {\n inputNumber = inputNumber + '';\n return inputNumber.length >= width ? inputNumber : new Array(width - inputNumber.length + 1).join('0') + inputNumber;\n}\nfunction formatMillisecondsToTimeCode(inputMilliseconds, options) {\n var date = new Date(inputMilliseconds);\n var hoursPaddingIsSet = options.hoursPadding || options.hoursPadding === 0;\n var hoursPadding = hoursPaddingIsSet ? options.hoursPadding : 2;\n var hours = padWithZero(date.getUTCHours(), hoursPadding);\n var minutes = padWithZero(date.getUTCMinutes(), 2);\n var seconds = padWithZero(date.getUTCSeconds(), 2);\n var rawMilliseconds = date.getUTCMilliseconds().toFixed(3).split('.')[0]; // eslint-disable-line no-magic-numbers\n var milliseconds = padWithZero(rawMilliseconds, 3); // eslint-disable-line no-magic-numbers\n\n var millisecondDelimiter = options.millisecondDelimiter ? options.millisecondDelimiter : ',';\n return hours + ':' + minutes + ':' + seconds + millisecondDelimiter + milliseconds;\n}\nfunction captionsToString(captionTrack, options) {\n function captionToString(output, caption, index) {\n var isBeginningOfString = index === 0;\n if (!isBeginningOfString) {\n output += '\\n\\n';\n }\n if (options.hasIdRow) {\n var oneBasedIndex = index + 1;\n output += oneBasedIndex;\n output += '\\n';\n }\n output += formatMillisecondsToTimeCode(caption.startTime, options) + options.timeDelimiter + formatMillisecondsToTimeCode(caption.endTime, options);\n output += '\\n';\n output += caption.text;\n return output;\n }\n return reduce(captionTrack.captionCollection.captions, captionToString, options.accumulator);\n}\nvar baseNewlineParser = {\n readCaptionsFromStringWithIdRow: function readCaptionsFromStringWithIdRow(input, timeDelimiter, languageIdentifierString) {\n return _readCaptionsFromString(input, timeDelimiter, true, languageIdentifierString);\n },\n readCaptionsFromString: function readCaptionsFromString(input, timeDelimiter, languageIdentifierString) {\n return _readCaptionsFromString(input, timeDelimiter, false, languageIdentifierString);\n },\n captionsToString: captionsToString,\n DEFAULT_CAPTION_LANGUAGE_IDENTIFIER_STRING: DEFAULT_CAPTION_LANGUAGE_IDENTIFIER_STRING\n};\nvar registerParser$1 = function registerParser$1() {\n captionParsers.register('SAMI', ['.sami', '.smi'], function () {\n var _xmlUtility = new XmlUtility();\n function getElementText(textElement) {\n var nonBreakingSpace = String.fromCharCode(0xA0); //eslint-disable-line no-magic-numbers\n var text = _xmlUtility.getElementText(textElement).replace(nonBreakingSpace, ' ');\n return text;\n }\n function getSyncTagText(tag) {\n var textElements = _xmlUtility.getElementsByTagName(tag, 'p');\n if (textElements.length < 1) {\n return getElementText(tag);\n }\n var elementsText = map(textElements, getElementText);\n return join(elementsText, '\\n');\n }\n function parseSyncTagToCaption(horizontalAlignment, languageIdentifierString, captionCollection, tag) {\n var startTime = +tag.getAttribute('start');\n var captionText = CaptionText$1.create({\n languageIdentifierString: languageIdentifierString,\n text: getSyncTagText(tag)\n });\n var createParams = {\n startTime: startTime,\n duration: 0,\n captionTextList: [captionText],\n horizontalAlignment: capitalize(horizontalAlignment.toLowerCase()),\n verticalAlignment: 'Bottom'\n };\n captionCollection.addCaption(Caption$1.create(createParams));\n return captionCollection;\n }\n function assignCaptionDurationsByFillingCaptionStartTimeGaps(captionCollection) {\n for (var i = 0; i < captionCollection.captions.length; i++) {\n var currentCaption = captionCollection.captions[i];\n var nextCaption = null;\n if (i + 1 < captionCollection.captions.length) {\n nextCaption = captionCollection.captions[i + 1];\n }\n var defaultDuration = 3000;\n var duration = nextCaption ? nextCaption.startTime - currentCaption.endTime : defaultDuration;\n currentCaption.setDuration(duration);\n }\n return captionCollection;\n }\n function removeHtmlComments(input) {\n return input.replace(//g, '');\n }\n function cssColorToRGB(cssColorValue) {\n if (!cssColorValue) {\n return null;\n }\n var result = tinycolor$1(cssColorValue);\n if (!result.isValid()) {\n return null;\n }\n return result.toRgb();\n }\n function parseStyle(text) {\n var fontSizeNoDescriptorRegex = /font-size: *(\\d+);/g;\n text = text.replace(fontSizeNoDescriptorRegex, 'font-size: $1px;');\n var doc = document.implementation.createHTMLDocument('');\n var styleElement = doc.createElement('style');\n styleElement.textContent = text;\n doc.body.appendChild(styleElement);\n return styleElement.sheet.cssRules;\n }\n function getCaptionTrackCreateParams(xmlDoc) {\n var styleElements = xmlDoc.getElementsByTagName('style');\n if (styleElements.length < 1) {\n return {};\n }\n var styles = parseStyle(removeHtmlComments(styleElements[0].textContent));\n var captionStyle = find(styles, function (s) {\n return s.selectorText.toLowerCase() === 'p';\n });\n captionStyle = captionStyle || head(styles);\n return {\n fgColor: cssColorToRGB(captionStyle.style.color),\n bgColor: cssColorToRGB(captionStyle.style.backgroundColor),\n fontFamily: trim(captionStyle.style.fontFamily, '\"\\''),\n fontSize: captionStyle.style.fontSize,\n horizontalAlignment: captionStyle.style.textAlign || 'Center'\n };\n }\n function readCaptionsFromString(input, languageIdentifierString) {\n languageIdentifierString = languageIdentifierString || baseNewlineParser.DEFAULT_CAPTION_LANGUAGE_IDENTIFIER_STRING;\n var captionCollection = CaptionCollection$1.create();\n var xmlDoc = _xmlUtility.parseXml(input, 'text/html');\n if (!xmlDoc) {\n throw new Error('xmlDoc is null');\n }\n var syncElements = xmlDoc.getElementsByTagName('sync');\n var createCaptionTrackParams = getCaptionTrackCreateParams(xmlDoc);\n var parseSyncTagToCaptionWithHorizontalAlignment = curry(parseSyncTagToCaption)(createCaptionTrackParams.horizontalAlignment, languageIdentifierString);\n captionCollection = reduce(syncElements, parseSyncTagToCaptionWithHorizontalAlignment, captionCollection);\n captionCollection = assignCaptionDurationsByFillingCaptionStartTimeGaps(captionCollection);\n createCaptionTrackParams.captions = captionCollection.captions;\n createCaptionTrackParams.languageIdentifierString = languageIdentifierString;\n var captionTrack = CaptionTrack$1.create(createCaptionTrackParams);\n return captionTrack;\n }\n function captionToString(output, caption, nextCaption) {\n var text = caption.text;\n if (text) {\n text += '\\n';\n }\n output += '

' + text + '

';\n if (nextCaption && nextCaption.startTime > caption.endTime) {\n output += '

';\n }\n return output;\n }\n function getTextAlignment(captionTrack) {\n var textAlignments = reduce(captionTrack.captionCollection.captions, function (alignments, caption) {\n var alignment = caption.horizontalAlignment;\n if (!alignment || has(alignments, alignment)) {\n return alignments;\n }\n alignments[alignment] = true;\n return alignments;\n }, {});\n var allAlignments = keys$1(textAlignments);\n return allAlignments.length === 1 ? allAlignments[0].toLowerCase() : 'center';\n }\n function captionsToString(captionTrack) {\n var fontSize = isInteger(captionTrack.fontSize) ? captionTrack.fontSize + 'pt' : captionTrack.fontSize;\n var fontFamily = captionTrack.fontFamily;\n var fgHexColor = captionTrack.fgHexColor;\n var bgHexColor = captionTrack.bgHexColor;\n var textAlign = getTextAlignment(captionTrack);\n\n /* eslint-disable no-tabs */\n var samiCaptionHeader = '' + 'Captions' + '';\n var samiCaptionFooter = '' + '';\n /* eslint-enable no-tabs */\n\n var output = samiCaptionHeader;\n var captionCollection = captionTrack.captionCollection;\n for (var i = 0; i < captionCollection.captions.length; i++) {\n var currentCaption = captionCollection.captions[i];\n var isLastCaption = i === captionCollection.captions.length - 1;\n var nextCaption = isLastCaption ? null : captionCollection.captions[i + 1];\n output = captionToString(output, currentCaption, nextCaption);\n }\n output += samiCaptionFooter;\n return output;\n }\n return {\n deserialize: readCaptionsFromString,\n serialize: captionsToString\n };\n });\n};\nvar samiParser = {\n registerParser: registerParser$1\n};\nvar registerParser$2 = function registerParser$2() {\n captionParsers.register('SBV', ['.sbv'], function () {\n var sbvTimeDelimiter = ',';\n function readCaptionsFromString(input, languageIdentifierString) {\n return baseNewlineParser.readCaptionsFromString(input, sbvTimeDelimiter, languageIdentifierString);\n }\n function captionsToString(captionCollection) {\n return baseNewlineParser.captionsToString(captionCollection, {\n timeDelimiter: sbvTimeDelimiter,\n accumulator: '',\n hoursPadding: 1\n });\n }\n return {\n deserialize: readCaptionsFromString,\n serialize: captionsToString\n };\n });\n};\nvar sbvParser = {\n registerParser: registerParser$2\n};\nvar registerParser$3 = function registerParser$3() {\n captionParsers.register('SRT', ['.srt'], function () {\n var srtEndOfFileMarker = '\\n\\n\\n';\n var srtTimeDelimiter = ' --> ';\n function readCaptionsFromString(input, languageIdentifierString) {\n return baseNewlineParser.readCaptionsFromStringWithIdRow(input, srtTimeDelimiter.trim(), languageIdentifierString);\n }\n function captionsToString(captionCollection) {\n var captionString = baseNewlineParser.captionsToString(captionCollection, {\n timeDelimiter: srtTimeDelimiter,\n accumulator: '\\n\\n',\n hasIdRow: true\n });\n return captionString + srtEndOfFileMarker;\n }\n return {\n deserialize: readCaptionsFromString,\n serialize: captionsToString\n };\n });\n};\nvar srtParser = {\n registerParser: registerParser$3\n};\nvar registerParser$4 = function registerParser$4() {\n captionParsers.register('TTML', ['.ttml', '.dfxp'], function () {\n // Code below is taken from https://github.com/mozilla/popcorn-js/blob/master/parsers/parserTTML/popcorn.parserTTML.js\n\n var rWhitespace = /^[\\s]+|[\\s]+$/gm;\n var rLineBreak = /(?:\\r\\n|\\r|\\n)/gm;\n var rBreakTag = /(
)/gm;\n\n // Parse the children of the given node\n function parseChildren(node, timeOffset, region) {\n var currNode = node.firstChild;\n var currRegion = getNodeRegion(node, region);\n var retVal = [];\n var newOffset;\n while (currNode) {\n if (currNode.nodeType === 1) {\n if (currNode.nodeName === 'p') {\n // p is a textual node, process contents as subtitle\n retVal.push(parseNode(currNode, timeOffset, currRegion));\n } else if (currNode.nodeName === 'div') {\n // div is container for subtitles, recurse\n newOffset = toSeconds(currNode.getAttribute('begin'));\n if (newOffset < 0) {\n newOffset = timeOffset;\n }\n retVal.push.apply(retVal, parseChildren(currNode, newOffset, currRegion));\n }\n }\n currNode = currNode.nextSibling;\n }\n return retVal;\n }\n\n // Get the \"region\" attribute of a node, to know where to put the subtitles\n function getNodeRegion(node, defaultTo) {\n var region = node.getAttribute('region');\n if (region !== null) {\n return region;\n }\n return defaultTo || '';\n }\n\n // Parse a node for text content\n function parseNode(node, timeOffset, region) {\n var sub = {};\n\n // Trim left and right whitespace from text and convert non-explicit line breaks\n sub.text = (node.textContent || node.text).replace(rWhitespace, '').replace(rLineBreak, '
');\n sub.id = node.getAttribute('xml:id') || node.getAttribute('id');\n sub.start = toSeconds(node.getAttribute('begin'), timeOffset);\n sub.end = toSeconds(node.getAttribute('end'), timeOffset);\n sub.target = getNodeRegion(node, region);\n if (sub.end < 0) {\n // No end given, infer duration if possible\n // Otherwise, give end as MAX_VALUE\n sub.end = toSeconds(node.getAttribute('duration'), 0);\n if (sub.end >= 0) {\n sub.end += sub.start;\n } else {\n sub.end = Number.MAX_VALUE;\n }\n }\n return {\n subtitle: sub\n };\n }\n function toTimelineSeconds(timeStr, framerate) {\n // Hours and minutes are optional\n // Seconds must be specified\n // Seconds can be followed by milliseconds OR by the frame information\n var validTimeFormat = /^([0-9]+:){0,2}[0-9]+([.;][0-9]+)?$/;\n var errorMessage = 'Invalid time format';\n var digitPairs;\n var lastIndex;\n var lastPair;\n var firstPair;\n var frameInfo;\n var frameTime;\n if (typeof timeStr === 'number') {\n return timeStr;\n }\n if (typeof timeStr === 'string' && !validTimeFormat.test(timeStr)) {\n throw errorMessage;\n }\n digitPairs = timeStr.split(':');\n lastIndex = digitPairs.length - 1;\n lastPair = digitPairs[lastIndex];\n\n // Fix last element:\n if (lastPair.indexOf(';') > -1) {\n frameInfo = lastPair.split(';');\n frameTime = 0;\n if (framerate && typeof framerate === 'number') {\n frameTime = parseFloat(frameInfo[1], 10) / framerate;\n }\n digitPairs[lastIndex] = parseInt(frameInfo[0], 10) + frameTime;\n }\n firstPair = digitPairs[0];\n\n /* eslint-disable no-magic-numbers, no-mixed-operators */\n return {\n 1: parseFloat(firstPair, 10),\n 2: parseInt(firstPair, 10) * 60 + parseFloat(digitPairs[1], 10),\n 3: parseInt(firstPair, 10) * 3600 + parseInt(digitPairs[1], 10) * 60 + parseFloat(digitPairs[2], 10)\n }[digitPairs.length || 1];\n /* eslint-enable no-magic-numbers, no-mixed-operators */\n }\n\n // Convert time expression to SS.mmm\n // Expression may be absolute to timeline (hh:mm:ss.ms)\n // or relative ( decimal followed by metric ) ex: 3.4s, 5.7m\n // Returns -1 if invalid\n function toSeconds(timeIn, offset) {\n var i;\n if (!timeIn) {\n return -1;\n }\n try {\n return toTimelineSeconds(timeIn);\n } catch (e) {\n i = getMetricIndex(timeIn);\n return parseFloat(timeIn.substring(0, i)) * getMultipler(timeIn.substring(i)) + (offset || 0);\n }\n }\n\n // In a time string such as 3.4ms, get the index of the first character (m) of the time metric (ms)\n function getMetricIndex(timeIn) {\n var i = timeIn.length - 1;\n while (i >= 0 && timeIn[i] <= '9' && timeIn[i] >= '0') {\n i--;\n }\n return i;\n }\n\n // Determine multiplier for metric relative to seconds\n function getMultipler(metric) {\n return {\n h: 3600,\n m: 60,\n s: 1,\n ms: 0.001\n }[metric] || -1;\n }\n function readCaptionsFromString(input, languageIdentifierString) {\n languageIdentifierString = languageIdentifierString || baseNewlineParser.DEFAULT_CAPTION_LANGUAGE_IDENTIFIER_STRING;\n var captionCollection = CaptionCollection$1.create();\n var node;\n var xmlDocument;\n\n // Null checks\n if (!input) {\n return null;\n }\n input = input.replace(/.*<\\/head>/, '');\n input = input.replace(rBreakTag, '\\\\N');\n var _xmlUtility = new XmlUtility();\n xmlDocument = _xmlUtility.parseXml(input);\n if (!xmlDocument) {\n return captionCollection;\n }\n node = xmlDocument.documentElement.firstChild;\n\n // Find body tag\n while (node.nodeName !== 'body') {\n node = node.nextSibling;\n }\n if (node) {\n var captions = parseChildren(node, 0);\n map(captions, function (caption) {\n caption = caption.subtitle;\n var createParams = {\n startTime: caption.start * 1000,\n duration: caption.end * 1000 - caption.start * 1000,\n captionTextList: [CaptionText$1.create({\n text: caption.text.replace('\\\\N', '\\n'),\n languageIdentifierString: languageIdentifierString\n })],\n horizontalAlignment: 'Center',\n verticalAlignment: 'Bottom'\n };\n captionCollection.addCaption(Caption$1.create(createParams));\n });\n }\n var captionTrack = CaptionTrack$1.create({\n captions: captionCollection.captions,\n languageIdentifierString: languageIdentifierString\n });\n return captionTrack;\n }\n function captionToString(output, caption, index) {\n var oneBasedIndex = index + 1;\n output += '

' + caption.text + '

';\n return output;\n }\n function captionsToString(captionTrack) {\n var ttmlHeader = '' + '' + 'Captions' + '';\nvar INCORRECT_SVG = '';\nvar CORRECT_GLYPH_DATA_URL = 'data:image/svg+xml,' + window.encodeURIComponent(CHECK_SVG);\nvar INCORRECT_GLYPH_DATA_URL = 'data:image/svg+xml,' + window.encodeURIComponent(INCORRECT_SVG);\nvar ACTIVE_QUESTION_CLASS = 'active-question-item';\nvar ACTIVE_FEEDBACK_CLASS = 'active-feedback-item';\nvar CORRECT_ANSWER_TEXT = localizationStrings.getPlayerString(playerStringNames.txtCorrectAnswer);\nvar YOUR_ANSWER_TEXT = localizationStrings.getPlayerString(playerStringNames.txtYourAnswer);\n\n/**\n * @memberof TSC\n * @class AnswersView\n * @classdesc Answers View\n */\nvar AnswersView = function AnswersView($container, question, showResults) {\n var _$window = $(window);\n var _$textInput = null;\n var getUserResponse = function getUserResponse() {\n switch (question.type) {\n case questionType.CHOICE:\n return $container.find('input[name=multiple-choice]:checked').val();\n case questionType.FILL_IN:\n return $container.find('input').val();\n case questionType.SHORT:\n return $container.find('textarea').val().replace(/^[ \\t]+|[ \\t]+$/, '');\n }\n };\n var displayResponseFillInResults = function displayResponseFillInResults() {\n if (!question.isGraded) {\n return;\n }\n var $correctImage = $('\\''');\n var $incorrectImage = $('\\''');\n if (question.isResponseCorrect) {\n $container.find('img.feedback-placeholder').replaceWith($correctImage);\n } else {\n $container.find('img.feedback-placeholder').replaceWith($incorrectImage);\n }\n };\n var getCorrectAnswerIndex = function getCorrectAnswerIndex() {\n var numberAnswers = question.answers.length;\n var correctAnswerBitshifted = question.correctAnswer;\n for (var i = 0; i < numberAnswers; i++) {\n /*eslint no-bitwise: \"off\"*/\n if (1 << i === Number(correctAnswerBitshifted)) {\n return i;\n }\n }\n return -1;\n };\n var displayChoiceResults = function displayChoiceResults() {\n var correctAnswerIndex;\n var $placeHolderImgEls;\n var $userResponseInputImageEl;\n var $correctResponseInputImageEl;\n var $correctImage;\n var $incorrectImage;\n var answerIndex = question.userResponse;\n var $labelEls = $container.find('label');\n $labelEls.removeClass(ACTIVE_QUESTION_CLASS);\n $labelEls.addClass(ACTIVE_FEEDBACK_CLASS);\n if (showResults && question.isGraded) {\n correctAnswerIndex = getCorrectAnswerIndex();\n $placeHolderImgEls = $container.find('label img');\n $userResponseInputImageEl = $container.find('label:eq(' + answerIndex + ') img');\n $correctResponseInputImageEl = $container.find('label:eq(' + correctAnswerIndex + ') img');\n $correctImage = $('\\''');\n $incorrectImage = $('\\''');\n $placeHolderImgEls.removeClass('feedback-placeholder');\n if (answerIndex === correctAnswerIndex) {\n $userResponseInputImageEl.replaceWith($correctImage);\n $correctImage.css('opacity', 0);\n $correctImage.animate({\n opacity: 1\n }, 200);\n } else {\n $correctResponseInputImageEl.replaceWith($correctImage);\n $correctImage.css('opacity', 0);\n $correctImage.animate({\n opacity: 1\n }, 200);\n $userResponseInputImageEl.replaceWith($incorrectImage);\n $incorrectImage.css('opacity', 0);\n $incorrectImage.animate({\n opacity: 1\n }, 200);\n }\n }\n $container.find('input').hide();\n if (answerIndex !== undefined) {\n $container.find('label:eq(' + answerIndex + ')').addClass('picked-quiz-item');\n }\n };\n var disableInput = function disableInput() {\n var $inputEls = null;\n switch (question.type) {\n case questionType.CHOICE:\n case questionType.FILL_IN:\n $inputEls = $container.find('input');\n break;\n case questionType.SHORT:\n $inputEls = $container.find('textarea');\n break;\n }\n if ($inputEls) {\n $inputEls.attr('disabled', true);\n }\n };\n var focusFirstInput = function focusFirstInput() {\n $container.find(\".\".concat(cssClasses.focusableAnswerInput)).focus();\n };\n var displayResults = function displayResults() {\n switch (question.type) {\n case questionType.CHOICE:\n displayChoiceResults();\n break;\n case questionType.FILL_IN:\n displayResponseFillInResults();\n break;\n }\n disableInput();\n };\n var getAnswersMarkup = function getAnswersMarkup(autoFocus) {\n if (deviceInfo.isIOS() || deviceInfo.isAndroid()) {\n autoFocus = false;\n }\n switch (question.type) {\n case questionType.CHOICE:\n return templateGenerator.generateChoiceAnswersMarkup(question.text, question.answers, question.userResponse);\n case questionType.FILL_IN:\n return templateGenerator.generateFillInTheBlankAnswerMarkup(question.text, question.userResponse, autoFocus);\n case questionType.SHORT:\n return templateGenerator.generateShortAnswerMarkup(question.text, question.userResponse, autoFocus);\n default:\n log.logException('Answers-view: unsupported question type (' + question.type + ')');\n }\n };\n var destroy = function destroy() {\n if (!showResults && deviceInfo.isIPhoneOrIPod() || deviceInfo.isAndroid()) {\n _$window.off('resize', viewHelper.scrollActiveElementIntoView);\n }\n if (_$textInput && (question.type === questionType.FILL_IN || question.type === questionType.SHORT) && (deviceInfo.isIPhoneOrIPod() || deviceInfo.isAndroid())) {\n _$textInput.off('focus keydown', viewHelper.scrollIntoView);\n }\n };\n var getTextResponseSuffix = function getTextResponseSuffix(userAnsweredQuestion) {\n if (question.isGraded) {\n if (!userAnsweredQuestion) {\n return localizationStrings.getPlayerString(playerStringNames.accessResultsLabelNoResponseGradedSuffix);\n } else if (question.isResponseCorrect) {\n return localizationStrings.getPlayerString(playerStringNames.accessResultsLabelCorrectSuffix);\n }\n return localizationStrings.getPlayerString(playerStringNames.accessResultsLabelIncorrectSuffix);\n } else if (!userAnsweredQuestion) {\n return localizationStrings.getPlayerString(playerStringNames.accessResultsLabelNoResponseSuffix);\n }\n return '';\n };\n var getUsersAnswer = function getUsersAnswer(userAnsweredQuestion) {\n if (question.type === questionType.CHOICE) {\n return userAnsweredQuestion && question.answers[question.userResponse].text;\n }\n return question.userResponse;\n };\n var getCorrectAnswerOrEmptyString = function getCorrectAnswerOrEmptyString() {\n if (question.isGraded && question.type === questionType.CHOICE) {\n return question.answers[getCorrectAnswerIndex()].text;\n }\n return '';\n };\n var getCorrectAnswerText = function getCorrectAnswerText() {\n var userAnsweredQuestion = !(question.userResponse === null || typeof question.userResponse === 'undefined');\n var responseSuffix = getTextResponseSuffix(userAnsweredQuestion);\n var usersAnswer = getUsersAnswer(userAnsweredQuestion);\n var correctAnswer = getCorrectAnswerOrEmptyString();\n var fullAnswerText = '';\n if (correctAnswer) {\n fullAnswerText = CORRECT_ANSWER_TEXT + correctAnswer;\n }\n if (userAnsweredQuestion) {\n fullAnswerText += correctAnswer ? ' - ' : '';\n fullAnswerText += YOUR_ANSWER_TEXT + usersAnswer;\n }\n fullAnswerText += fullAnswerText && responseSuffix ? ' - ' : '';\n fullAnswerText += responseSuffix;\n return fullAnswerText;\n };\n var setupAnswers = function setupAnswers() {\n if (showResults) {\n displayResults();\n } else {\n if (deviceInfo.isIPhoneOrIPod() || deviceInfo.isAndroid()) {\n _$window.on('resize', viewHelper.scrollActiveElementIntoView);\n }\n\n // remove hover css when device is touch screen\n if (question.type === questionType.CHOICE && deviceInfo.isTouchInterface()) {\n $container.find('.multiple-choice').removeClass(ACTIVE_QUESTION_CLASS);\n }\n _$textInput = $container.find('input[type=text], textarea');\n if (_$textInput && (question.type === questionType.FILL_IN || question.type === questionType.SHORT)) {\n if (deviceInfo.isIPhoneOrIPod() || deviceInfo.isAndroid()) {\n _$textInput.on('focus keydown', viewHelper.scrollIntoView);\n }\n }\n }\n };\n var isTextInputOrAreaFocused = function isTextInputOrAreaFocused() {\n return _$textInput && _$textInput.length > 0 && _$textInput.is(':focus');\n };\n var createView = function createView() {\n var answersMarkup = getAnswersMarkup();\n if (answersMarkup) {\n $container.html(answersMarkup);\n }\n $container.find('.multiple-choice > input').focus(function () {\n $(this).parent().addClass('highlight-background');\n }).blur(function () {\n $(this).parent().removeClass('highlight-background');\n });\n };\n createView();\n setupAnswers();\n focusFirstInput();\n return {\n getUserResponse: getUserResponse,\n destroy: destroy,\n getCorrectAnswerText: getCorrectAnswerText,\n isTextInputOrAreaFocused: isTextInputOrAreaFocused\n };\n};\nvar AnswersView$1 = {\n /**\n * Factory method that returns a new QuestionView object.\n * @function create\n * @memberof TSC.AnswersView\n * @static\n * @return new AnswersView instance\n */\n create: AnswersView\n};\n\nvar QUESTION_CORRECT_TEXT_CLASS = '.question-correct-text';\nvar QUESTION_INCORRECT_TEXT_CLASS = '.question-incorrect-text';\n\n/**\n * @memberof TSC\n * @class QuestionView\n * @classdesc Question View\n * @params {Object} $questionTextContainer - jquery wrapper for question text container element\n * @params {Object} $questionGradedStatusContainer - jquery wrapper for question graded status container element\n * @params {Object} $feedbackContainer - jquery wrapper for feedback text container element\n * @params {Object} $answersContainer - jquery wrapper for answers container element\n * @params {TSC.Question} question - Question model for this view.\n * @params {Boolean} showResults - show results for question.\n */\nvar QuestionView = function QuestionView($questionTextContainer, $questionGradedStatusContainer, $feedbackContainer, $answersContainer, question, showResults) {\n var _answersView;\n var _feedbackContextMarkup = templateGenerator.generateQuestionFeedbackContextMarkup(localizationStrings.getPlayerString(playerStringNames.accessQuestionFeedbackContext));\n var createView = function createView() {\n _answersView = AnswersView$1.create($answersContainer, question, showResults);\n $feedbackContainer.addClass('hide-element');\n var correctAnswerText = showResults ? _answersView.getCorrectAnswerText() : '';\n var questionTextMarkup = templateGenerator.generateQuestionTextMarkup(question.text, correctAnswerText);\n $questionTextContainer.html(questionTextMarkup);\n var questionGradedStatusMarkup = templateGenerator.generateQuestionGradedStatusMarkup();\n $questionGradedStatusContainer.html(questionGradedStatusMarkup);\n };\n var showFeedbackTextIfAvailable = function showFeedbackTextIfAvailable() {\n var feedbackMarkup = null;\n question.feedback.forEach(function (feedback) {\n if (question.isResponseCorrect && feedback.reason === 'correct') {\n feedbackMarkup = feedback.markupText;\n } else if (!question.isResponseCorrect && feedback.reason === 'incorrect') {\n feedbackMarkup = feedback.markupText;\n }\n });\n if (feedbackMarkup) {\n $feedbackContainer.html(_feedbackContextMarkup + feedbackMarkup);\n $feedbackContainer.removeClass('hide-element');\n }\n };\n var setupView = function setupView() {\n if (showResults && question.isGraded) {\n showFeedbackTextIfAvailable();\n if (question.isResponseCorrect) {\n $questionGradedStatusContainer.find(QUESTION_CORRECT_TEXT_CLASS).removeClass('hide-element');\n } else {\n $questionGradedStatusContainer.find(QUESTION_INCORRECT_TEXT_CLASS).removeClass('hide-element');\n }\n }\n };\n createView();\n setupView();\n return {\n isTextInputOrAreaFocused: _answersView.isTextInputOrAreaFocused,\n destroy: _answersView.destroy,\n getUserResponse: _answersView.getUserResponse\n };\n};\nvar QuestionView$1 = {\n /**\n * Factory method that returns a new QuestionView object.\n * @function create\n * @memberof TSC.QuestionView\n * @static\n * @return new QuestionView instance\n */\n create: QuestionView\n};\n\nvar SCREEN_READER_ALERT_REMOVAL_TIMEOUT = 1000;\nvar INIT_QUESTION_SET_TIMEOUT = 10;\nvar PEEK_AT_VIDEO_SHORT_CUT_KEYCODE = 72; // h key\nvar CONTAINER_CLASS = '.question-set-container';\nvar QUESTION_SET_CONTENT_CLASS = '.question-set-content';\nvar HIDE_CONTROL_CLASS = '.hide-quiz-button';\nvar SHOW_CONTROL_CLASS = '.show-quiz-button';\nvar PREV_CONTROL_CLASS = '.previous-button';\nvar NEXT_CONTROL_CLASS = '.next-button';\nvar SUBMIT_CONTROL_CLASS = '.submit-button';\nvar CONTINUE_CONTROL_CLASS = '.continue-button';\nvar QUESTION_COUNT_CLASS = '.question-count';\nvar QUESTION_GRADED_STATUS_CLASS = '.question-graded-status';\nvar QUESTION_CLASS = '.question-text';\nvar ANSWERS_CLASS = '.question-answers';\nvar FEEDBACK_CLASS = '.question-feedback';\nvar MINIMIZED_VIEW_CLASS = '.minimized-question-set-container';\n\n/**\n * @memberof TSC\n * @class QuestionSetView\n * @param {Object} $container -- Container to add question set view.\n * @param {TSC.QuestionSet} questionSet -- Question Set model for view.\n * @param {Boolean} displayOverlay -- Display overlay.\n * @param {Boolean} mediaIsImage -- Media is an image.\n * @param {Boolean} showQuestionSetResults -- Show user results for question set.\n * @classdesc View for Question sets.\n */\nvar QuestionSetView = function QuestionSetView($container, questionSet, displayOverlay, mediaIsImage, showQuestionSetResults, quizTime) {\n var _$document = windowWrapper.getDocument(true);\n var _currentQuestionIndex = 0;\n var _$container = $container;\n var _startTimeForQuestion = 0;\n var _endTimeForQuestion = 0;\n var _currentQuestionView = null;\n var _initTimeoutId = null;\n var _alertScreenReaderTimeoutId = null;\n var _$questionSetContainer = null;\n var _$questionSetContent = null;\n var _$questionTextContainer = null;\n var _$answersContainer = null;\n var _$feedbackContainer = null;\n var _$questionCountContainer = null;\n var _$questionGradedStatusContainer = null;\n var _$hideControl = null;\n var _$showControl = null;\n var _$prevControl = null;\n var _$nextControl = null;\n var _$continueControl = null;\n var _$submitControl = null;\n var _$minimizedContainer = null;\n var _minimizedByKeyboardShortcut = false;\n var _superView = BubbleView$1.create(CONTAINER_CLASS);\n var _resolveInitPromise;\n var initPromise = new Promise$1(function (resolve) {\n _resolveInitPromise = resolve;\n });\n var alertScreenReader = function alertScreenReader(message) {\n var screenReaderAlertMarkup = templateGenerator.generateScreenReaderAlertMarkup(message);\n var $screenReaderAlert = $(screenReaderAlertMarkup);\n _$container.append($screenReaderAlert);\n _alertScreenReaderTimeoutId = setTimeout(function () {\n $screenReaderAlert.remove();\n }, SCREEN_READER_ALERT_REMOVAL_TIMEOUT);\n };\n var onHideQuizClick = function onHideQuizClick() {\n minimizeView();\n };\n var onShowQuizHandler = function onShowQuizHandler() {\n maximizeView();\n };\n var onKeyDownHandler = function onKeyDownHandler(e) {\n if (e && e.keyCode === PEEK_AT_VIDEO_SHORT_CUT_KEYCODE && !_currentQuestionView.isTextInputOrAreaFocused() && !_superView.viewIsMinimized) {\n _minimizedByKeyboardShortcut = true;\n _$document.on('keyup', onKeyUpHandler);\n minimizeView();\n }\n };\n var onKeyUpHandler = function onKeyUpHandler() {\n _minimizedByKeyboardShortcut = false;\n _$document.off('keyup', onKeyUpHandler);\n maximizeView();\n };\n var minimizeView = function minimizeView() {\n if (!_superView.viewIsMinimized) {\n $container.trigger(events.Quizzing.MinimizeUI);\n _$questionSetContent.addClass(cssClasses.hideElement);\n if (!_minimizedByKeyboardShortcut) {\n _$minimizedContainer.removeClass(cssClasses.hideElement);\n }\n viewHelper.removeFocusTrap();\n alertScreenReader(localizationStrings.getPlayerString(playerStringNames.accessQuizHidden));\n _superView.minimizeView();\n }\n };\n var maximizeView = function maximizeView() {\n if (_superView.viewIsMinimized) {\n $container.trigger(events.Quizzing.MaximizeUI);\n _$questionSetContent.removeClass(cssClasses.hideElement);\n _$minimizedContainer.addClass(cssClasses.hideElement);\n _superView.maximizeView();\n alertScreenReader(localizationStrings.getPlayerString(playerStringNames.accessQuizShown));\n $container.focus();\n viewHelper.trapFocus(_$questionSetContent);\n }\n };\n var isOnFirstQuestion = function isOnFirstQuestion() {\n return _currentQuestionIndex === 0;\n };\n var isOnLastQuestion = function isOnLastQuestion() {\n return _currentQuestionIndex === questionSet.questions.length - 1;\n };\n var showView = function showView() {\n _$questionSetContainer.removeClass('minimized');\n _superView.showView();\n };\n var hideView = function hideView() {\n _$questionSetContainer.addClass('minimized');\n _superView.hideView();\n };\n var startTrackingQuestionTime = function startTrackingQuestionTime() {\n _startTimeForQuestion = new Date().getTime();\n };\n var recordDurationOnQuestion = function recordDurationOnQuestion() {\n _endTimeForQuestion = new Date().getTime();\n var timeBetween = _endTimeForQuestion - _startTimeForQuestion;\n questionSet.questions[_currentQuestionIndex].attemptDuration += timeBetween;\n };\n var storeUserResponse = function storeUserResponse() {\n var userResponse = _currentQuestionView.getUserResponse();\n if (userResponse !== undefined && userResponse !== '') {\n questionSet.questions[_currentQuestionIndex].userResponse = userResponse;\n }\n };\n var saveQuestionUserInput = function saveQuestionUserInput() {\n if (showQuestionSetResults) {\n return;\n }\n storeUserResponse();\n recordDurationOnQuestion();\n };\n var lockResponses = function lockResponses() {\n if (questionSet.usesRationale) {\n questionSet.questions[_currentQuestionIndex].responseLocked = true;\n } else {\n questionSet.questions.forEach(function (question) {\n question.responseLocked = true;\n });\n }\n };\n var getFeedbackInfoForCurrentQuestion = function getFeedbackInfoForCurrentQuestion() {\n var actionType = rationaleActionType.CONTINUE;\n var feedback;\n if (questionSet.questions[_currentQuestionIndex].isGraded) {\n var feedbackReason = questionSet.questions[_currentQuestionIndex].isResponseCorrect ? 'correct' : 'incorrect';\n feedback = questionSet.questions[_currentQuestionIndex].getFeedbackForReason(feedbackReason);\n if (feedback !== null) {\n if (feedback.location !== undefined) {\n actionType = rationaleActionType.LOCATION;\n } else if (feedback.jumpToTime !== undefined) {\n actionType = rationaleActionType.JUMP_TO_TIME;\n }\n }\n }\n return {\n feedback: feedback,\n actionType: actionType\n };\n };\n var executeContinueAction = function executeContinueAction() {\n if (isOnLastQuestion()) {\n $container.trigger(events.Quizzing.CloseQuestionSetView);\n } else {\n displayNextQuestion();\n }\n };\n var executeRationaleAction = function executeRationaleAction() {\n var feedbackInfo;\n if (questionSet.questions[_currentQuestionIndex].feedbackActionExecuted) {\n feedbackInfo = {\n actionType: rationaleActionType.CONTINUE\n };\n } else {\n feedbackInfo = getFeedbackInfoForCurrentQuestion();\n questionSet.questions[_currentQuestionIndex].feedbackActionExecuted = true;\n }\n switch (feedbackInfo.actionType) {\n case rationaleActionType.CONTINUE:\n executeContinueAction();\n break;\n case rationaleActionType.LOCATION:\n $container.trigger(events.Quizzing.RationaleActionLocation, {\n location: feedbackInfo.feedback.location\n });\n executeContinueAction();\n break;\n case rationaleActionType.JUMP_TO_TIME:\n if (questionSet.startTime !== feedbackInfo.feedback.jumpToTime) {\n $container.trigger(events.Quizzing.RationaleActionJumpToTime, {\n jumpToTime: feedbackInfo.feedback.jumpToTime\n });\n } else {\n executeContinueAction();\n }\n break;\n }\n };\n var displayNextQuestion = function displayNextQuestion() {\n saveQuestionUserInput();\n _currentQuestionIndex++;\n displayQuestion();\n };\n var onPreviousQuestion = function onPreviousQuestion(e) {\n e.preventDefault();\n saveQuestionUserInput();\n _currentQuestionIndex--;\n displayQuestion();\n };\n var onNextQuestion = function onNextQuestion(e) {\n e.preventDefault();\n displayNextQuestion();\n };\n var onContinue = function onContinue(e) {\n e.preventDefault();\n if (questionSet.usesRationale && !showQuestionSetResults) {\n executeRationaleAction();\n } else {\n $container.trigger(events.Quizzing.CloseQuestionSetView);\n }\n };\n var onSubmit = function onSubmit(e) {\n e.preventDefault();\n _$submitControl.attr('disabled', 'disabled');\n saveQuestionUserInput();\n lockResponses();\n $container.trigger(events.Quizzing.SubmitQuestionSet);\n };\n\n //This is a fix for iPhones whipping users back to the top of the page if there is a focused input.\n var onIphoneTouchstart = function onIphoneTouchstart() {\n _$questionSetContainer.find('.fill-in-the-blank-input').blur();\n };\n var getControlsConfig = function getControlsConfig() {\n var currentQuestion = questionSet.questions[_currentQuestionIndex];\n var onFirstQuestion = isOnFirstQuestion();\n var onLastQuestion = isOnLastQuestion();\n var hasOneQuestion = onFirstQuestion && onLastQuestion;\n var controlsConfig = {\n showSubmitNav: false,\n showContinueNav: false,\n showPrevNav: false,\n showNextNav: false,\n prevDisabled: false,\n nextDisabled: false\n };\n if (questionSet.usesRationale && !showQuestionSetResults) {\n if (currentQuestion.responseLocked) {\n if (currentQuestion.feedbackActionExecuted && !onLastQuestion) {\n controlsConfig.showNextNav = true;\n } else {\n controlsConfig.showContinueNav = true;\n }\n } else {\n controlsConfig.showSubmitNav = true;\n }\n controlsConfig.showPrevNav = !hasOneQuestion && !onFirstQuestion;\n } else {\n controlsConfig.showSubmitNav = !showQuestionSetResults && onLastQuestion;\n controlsConfig.showContinueNav = showQuestionSetResults && onLastQuestion && !mediaIsImage;\n controlsConfig.showPrevNav = !hasOneQuestion;\n controlsConfig.showNextNav = !hasOneQuestion && !controlsConfig.showSubmitNav && !controlsConfig.showContinueNav;\n controlsConfig.prevDisabled = _currentQuestionIndex === 0;\n controlsConfig.nextDisabled = onLastQuestion;\n }\n return controlsConfig;\n };\n var updateControls = function updateControls() {\n var controlsConfig = getControlsConfig();\n _$prevControl.css('display', 'none');\n _$nextControl.css('display', 'none');\n _$submitControl.css('display', 'none');\n _$continueControl.css('display', 'none');\n if (controlsConfig.showPrevNav) {\n _$prevControl.css('display', 'inline');\n if (controlsConfig.prevDisabled) {\n _$prevControl.attr('disabled', 'disabled');\n } else {\n _$prevControl.removeAttr('disabled');\n }\n }\n if (controlsConfig.showNextNav) {\n _$nextControl.css('display', 'inline');\n if (controlsConfig.nextDisabled) {\n _$nextControl.attr('disabled', 'disabled');\n } else {\n _$nextControl.removeAttr('disabled');\n }\n }\n if (controlsConfig.showSubmitNav) {\n _$submitControl.removeAttr('disabled');\n _$submitControl.css('display', 'inline');\n }\n if (controlsConfig.showContinueNav) {\n _$continueControl.removeAttr('disabled');\n _$continueControl.css('display', 'inline');\n }\n };\n var displayQuestion = function displayQuestion() {\n var showResults = showQuestionSetResults;\n if (questionSet.usesRationale && questionSet.questions[_currentQuestionIndex].responseLocked) {\n showResults = true;\n }\n if (_currentQuestionView !== null) {\n _currentQuestionView.destroy();\n }\n _currentQuestionView = QuestionView$1.create(_$questionTextContainer, _$questionGradedStatusContainer, _$feedbackContainer, _$answersContainer, questionSet.questions[_currentQuestionIndex], showResults);\n updateQuestionCount();\n updateControls();\n startTrackingQuestionTime();\n viewHelper.trapFocus(_$questionSetContent);\n };\n var updateQuestionCount = function updateQuestionCount() {\n var questionCountMarkup = templateGenerator.generateQuestionSetQuestionCountMarkup(_currentQuestionIndex + 1, questionSet.questions.length);\n _$questionCountContainer.html(questionCountMarkup);\n };\n var showFeedbackForCurrentQuestion = function showFeedbackForCurrentQuestion() {\n displayQuestion();\n updateControls();\n };\n var createView = function createView() {\n var questionSetViewMarkup = templateGenerator.generateQuestionSetMarkup(quizTime);\n if (displayOverlay) {\n questionSetViewMarkup += _superView.getOverlayMarkup();\n }\n _$container.append(questionSetViewMarkup);\n _$questionSetContainer = _$container.find(CONTAINER_CLASS);\n _$questionSetContent = _$container.find(QUESTION_SET_CONTENT_CLASS);\n _$questionTextContainer = _$container.find(QUESTION_CLASS);\n _$answersContainer = _$container.find(ANSWERS_CLASS);\n _$feedbackContainer = _$container.find(FEEDBACK_CLASS);\n _$questionCountContainer = _$container.find(QUESTION_COUNT_CLASS);\n _$questionGradedStatusContainer = _$container.find(QUESTION_GRADED_STATUS_CLASS);\n _$hideControl = _$container.find(HIDE_CONTROL_CLASS);\n _$showControl = _$container.find(SHOW_CONTROL_CLASS);\n _$prevControl = _$container.find(PREV_CONTROL_CLASS);\n _$nextControl = _$container.find(NEXT_CONTROL_CLASS);\n _$continueControl = _$container.find(CONTINUE_CONTROL_CLASS);\n _$submitControl = _$container.find(SUBMIT_CONTROL_CLASS);\n _$minimizedContainer = _$container.find(MINIMIZED_VIEW_CLASS);\n };\n var removeEvents = function removeEvents() {\n _$hideControl.off('click', onHideQuizClick);\n _$showControl.off('click', onShowQuizHandler);\n _$prevControl.off('click', onPreviousQuestion);\n _$nextControl.off('click', onNextQuestion);\n _$submitControl.off('click', onSubmit);\n _$continueControl.off('click', onContinue);\n $container.off('keydown', onKeyDownHandler);\n viewHelper.removeFocusTrap();\n if (deviceInfo.isIPhoneOrIPod()) {\n _$questionSetContainer.off('touchstart', onIphoneTouchstart);\n }\n };\n var setupEvents = function setupEvents() {\n _$hideControl.on('click', onHideQuizClick);\n _$showControl.on('click', onShowQuizHandler);\n _$prevControl.on('click', onPreviousQuestion);\n _$nextControl.on('click', onNextQuestion);\n _$submitControl.on('click', onSubmit);\n _$continueControl.on('click', onContinue);\n $container.on('keydown', onKeyDownHandler);\n if (deviceInfo.isIPhoneOrIPod()) {\n _$questionSetContainer.on('touchstart', onIphoneTouchstart);\n }\n };\n var checkQuestionSetProgress = function checkQuestionSetProgress() {\n if (showQuestionSetResults) {\n return;\n }\n for (var i = 0; i < questionSet.questions.length; i++) {\n if (!questionSet.questions[i].responseLocked) {\n _currentQuestionIndex = i;\n break;\n }\n }\n };\n var removeView = function removeView(completeCallback, destroyOverlay) {\n _initTimeoutId && clearTimeout(_initTimeoutId);\n _alertScreenReaderTimeoutId && clearTimeout(_alertScreenReaderTimeoutId);\n removeEvents();\n _currentQuestionView.destroy();\n _superView.removeView(completeCallback, destroyOverlay);\n };\n createView();\n checkQuestionSetProgress();\n setupEvents();\n\n // need to delay displaying first question for NVDA screen reader to pick up text.\n _initTimeoutId = setTimeout(function () {\n displayQuestion();\n _resolveInitPromise();\n }, INIT_QUESTION_SET_TIMEOUT);\n return Object.defineProperties({\n showView: showView,\n hideView: hideView,\n removeView: removeView,\n showFeedbackForCurrentQuestion: showFeedbackForCurrentQuestion\n }, {\n viewInitializedPromise: {\n get: function get() {\n return initPromise;\n }\n }\n });\n};\nvar QuestionSetView$1 = {\n create: QuestionSetView\n};\n\nvar _containerId$2 = '.start-question-set-confirmation-container';\nvar _superView$2 = BubbleView$1.create(_containerId$2);\nvar _reviewControlId = '.review-button';\nvar _confirmControlId = '.confirm-button';\nvar questionSetConfirmationView = {\n getViewMarkup: function getViewMarkup(reviewText, confirmationText) {\n return templateGenerator.generateQuestionSetConfirmationMarkup(reviewText, confirmationText) + _superView$2.getOverlayMarkup();\n },\n getReviewControlRef: function getReviewControlRef() {\n return _reviewControlId;\n },\n getConfirmControlRef: function getConfirmControlRef() {\n return _confirmControlId;\n },\n hideView: function hideView() {\n _superView$2.hideView();\n },\n showView: function showView() {\n _superView$2.showView(true);\n var $confirmControl = $(_containerId$2).find(_confirmControlId);\n $confirmControl.focus();\n highlightDisabler.disableHighlights($confirmControl);\n },\n removeView: _superView$2.removeView,\n updateViewPosition: _superView$2.updateViewPosition,\n setBottomOffset: _superView$2.setBottomOffset,\n pointAt: _superView$2.pointAt\n};\n\nvar setItem = function setItem(key, value) {\n try {\n window.sessionStorage.setItem(key, value);\n } catch (e) {\n // We want this to fail silently\n }\n};\nvar getItem = function getItem(key) {\n try {\n return window.sessionStorage.getItem(key);\n } catch (e) {\n return null;\n }\n};\nvar sessionStorageWrapper = {\n /**\n * Wraps native session storage setItem with a try/catch.\n * @function setItem\n * @memberof TSC.sessionStorageWrapper\n * @static\n * @param {String} key - the key of the value to set in session storage\n * @param {String} value - the value to set in session storage\n */\n setItem: setItem,\n /**\n * Wraps native session storage getItem.\n * @function getItem\n * @memberof TSC.sessionStorageWrapper\n * @static\n * @param {String} key - the key of the value to retrieve in session storage\n * @returns {String} value from session storage (could be null or undefined)\n */\n getItem: getItem\n};\n\nvar _$window = $(window);\nvar FIRST_NAME_CLASS = 'first_name';\nvar LAST_NAME_CLASS = 'last_name';\nvar rightParenRegex = /\\)/gi;\nvar leftParenRegex = /\\(/gi;\n\n/**\n * @memberof TSC\n * @class QuizSetupView\n * @classdesc Quiz Setup View\n * @param {JQuery} $rootContainer - Smart player container element.\n */\nvar QuizSetupView = function QuizSetupView($rootContainer) {\n var _$rootContainer = $rootContainer;\n var _$quizSetupView = null;\n var _$firstNameInput = null;\n var _$lastNameInput = null;\n var _$emailInput = null;\n var _$beginButton = null;\n var _$skipButton = null;\n var createView = function createView() {\n var quizSetupMarkup = templateGenerator.generateQuizSetupMarkup();\n _$quizSetupView = $($.parseHTML(quizSetupMarkup));\n _$firstNameInput = _$quizSetupView.find('.' + FIRST_NAME_CLASS);\n _$lastNameInput = _$quizSetupView.find('.' + LAST_NAME_CLASS);\n _$emailInput = _$quizSetupView.find('.email_address');\n _$beginButton = _$quizSetupView.find('.tsc_begin_button');\n _$skipButton = _$quizSetupView.find('.skip_control');\n _$rootContainer.trigger(events.Modals.Open);\n };\n var getKeys = function getKeys() {\n var hostname = windowWrapper.getLocation().hostname;\n return {\n first: hostname + '-first',\n last: hostname + '-last',\n email: hostname + '-email'\n };\n };\n var getUserInfo = function getUserInfo() {\n var keys = getKeys();\n var firstName = playerConfiguration.userInfo && playerConfiguration.userInfo.firstName;\n var lastName = playerConfiguration.userInfo && playerConfiguration.userInfo.lastName;\n var email = playerConfiguration.userInfo && playerConfiguration.userInfo.email;\n if (playerConfiguration.rememberUserInfo) {\n firstName = firstName || sessionStorageWrapper.getItem(keys.first);\n lastName = lastName || sessionStorageWrapper.getItem(keys.last);\n email = email || sessionStorageWrapper.getItem(keys.email);\n }\n return {\n firstName: firstName,\n lastName: lastName,\n email: email\n };\n };\n var cacheSelfIdentity = function cacheSelfIdentity(eventData) {\n var keys = getKeys();\n sessionStorageWrapper.setItem(keys.first, eventData.firstName);\n sessionStorageWrapper.setItem(keys.last, eventData.lastName);\n sessionStorageWrapper.setItem(keys.email, eventData.email);\n };\n var setupInitialValues = function setupInitialValues() {\n var userInfo = getUserInfo();\n _$firstNameInput.val(userInfo.firstName);\n _$lastNameInput.val(userInfo.lastName);\n _$emailInput.val(userInfo.email);\n if (userInfo.firstName && userInfo.lastName && userInfo.email) {\n validateInput();\n }\n };\n var addPosterImageToBackground = function addPosterImageToBackground(posterSrc) {\n posterSrc = posterSrc.replace(rightParenRegex, '\\\\\\)');\n posterSrc = posterSrc.replace(leftParenRegex, '\\\\\\(');\n var url = 'url(' + posterSrc + ')';\n _$quizSetupView.css('background-image', url);\n };\n var validateInput = function validateInput() {\n var firstName = _$firstNameInput.val().replace(/ /g, '');\n var lastName = _$lastNameInput.val().replace(/ /g, '');\n var email = _$emailInput.val().replace(/ /g, '');\n if (firstName !== '' && lastName !== '' && email !== '' && textSanitizer.isValidEmail(email)) {\n _$beginButton.removeAttr('disabled');\n viewHelper.trapFocus(_$quizSetupView);\n } else {\n _$beginButton.attr('disabled', 'disabled');\n }\n };\n var destroy = function destroy() {\n if (deviceInfo.isIPhoneOrIPod() || deviceInfo.isAndroid()) {\n _$window.off('resize', viewHelper.scrollActiveElementIntoView);\n _$firstNameInput.off('focus keydown', viewHelper.scrollIntoView);\n _$lastNameInput.off('focus keydown', viewHelper.scrollIntoView);\n _$emailInput.off('focus keydown', viewHelper.scrollIntoView);\n }\n _$quizSetupView.css('background-image', '');\n _$firstNameInput.off('keyup', validateInput);\n _$firstNameInput.off('change', validateInput);\n _$lastNameInput.off('keyup', validateInput);\n _$lastNameInput.off('change', validateInput);\n _$emailInput.off('keyup', validateInput);\n _$emailInput.off('change', validateInput);\n _$beginButton.off('click', beginQuiz);\n _$skipButton.off('click', skipQuiz);\n _$rootContainer.trigger(events.Modals.Closed);\n viewHelper.removeFocusTrap();\n };\n var hideSkipButton = function hideSkipButton() {\n _$skipButton.attr('disabled', 'disabled');\n _$skipButton.hide();\n viewHelper.trapFocus(_$quizSetupView);\n };\n var beginQuiz = function beginQuiz(event) {\n event.preventDefault();\n var eventData = {\n firstName: _$firstNameInput.val().replace(/ /g, ''),\n lastName: _$lastNameInput.val().replace(/ /g, ''),\n email: _$emailInput.val().replace(/ /g, '')\n };\n if (playerConfiguration.rememberUserInfo) {\n cacheSelfIdentity(eventData);\n }\n _$rootContainer.trigger(events.Quizzing.BeginClicked, eventData);\n };\n var skipQuiz = function skipQuiz(event) {\n event.preventDefault();\n _$rootContainer.trigger(events.Quizzing.SkipClicked, {});\n };\n var bindEvents = function bindEvents() {\n if (deviceInfo.isIPhoneOrIPod() || deviceInfo.isAndroid()) {\n _$window.on('resize', viewHelper.scrollActiveElementIntoView);\n _$firstNameInput.on('focus keydown', viewHelper.scrollIntoView);\n _$lastNameInput.on('focus keydown', viewHelper.scrollIntoView);\n _$emailInput.on('focus keydown', viewHelper.scrollIntoView);\n }\n _$firstNameInput.on('keyup', validateInput);\n _$firstNameInput.on('change', validateInput);\n _$lastNameInput.on('keyup', validateInput);\n _$lastNameInput.on('change', validateInput);\n _$emailInput.on('keyup', validateInput);\n _$emailInput.on('change', validateInput);\n _$beginButton.on('click', beginQuiz);\n _$skipButton.on('click', skipQuiz);\n _$rootContainer.append(_$quizSetupView);\n viewHelper.trapFocus(_$quizSetupView);\n if (viewHelper.elementOrChildHasFocus($rootContainer)) {\n _$firstNameInput.focus();\n }\n };\n createView();\n setupInitialValues();\n bindEvents();\n if (playerConfiguration.getPosterImageSrc()) {\n addPosterImageToBackground(playerConfiguration.getPosterImageSrc());\n }\n return Object.defineProperties({\n hideSkipButton: hideSkipButton,\n destroy: destroy\n }, {\n $view: {\n get: function get() {\n return _$quizSetupView;\n }\n }\n });\n};\nvar QuizSetupView$1 = {\n /**\n * Factory method that returns a new QuizSetupView object.\n * @function create\n * @memberof TSC.QuizSetupView\n * @param {JQuery} $rootContainer - Smart player container element.\n * @static\n * @return QuizSetupView instance\n */\n create: QuizSetupView\n};\n\nvar _superView$1 = BubbleView$1.create('.review-confirmation-container');\nvar _containerId$1 = '.controls-container';\nvar _continueControlId = '.continue-video-button';\nvar _reviewAnswersControlId = '.review-answers-button';\nvar reviewAnswersConfirmationView = {\n getViewMarkup: function getViewMarkup(numberCorrectText, percentCorrectText, numberInCorrectText, percentInCorrectText, continueText, reviewText) {\n return templateGenerator.generateQuestionSetReviewConfirmationMarkup(numberCorrectText, percentCorrectText, numberInCorrectText, percentInCorrectText, continueText, reviewText);\n },\n getContinueControlRef: function getContinueControlRef() {\n return _continueControlId;\n },\n getReviewControlRef: function getReviewControlRef() {\n return _reviewAnswersControlId;\n },\n hideView: function hideView() {\n _superView$1.hideView();\n },\n showView: function showView() {\n _superView$1.showView(true);\n var $reviewControl = $(_containerId$1).find(_reviewAnswersControlId);\n $reviewControl.focus();\n highlightDisabler.disableHighlights($reviewControl);\n },\n removeView: _superView$1.removeView,\n updateViewPosition: _superView$1.updateViewPosition,\n setBottomOffset: _superView$1.setBottomOffset,\n pointAt: _superView$1.pointAt\n};\n\nvar DEFAULT_RETRY_LIMIT = 2;\nvar DEFAULT_BACKOFF = 2000;\nvar DEFAULT_MAX_DELAY_BETWEEN_RETRIES = 20000;\nvar BackoffStrategy = function BackoffStrategy(retryLimit, backoffTime, maxDelay) {\n if (typeof retryLimit === 'undefined') {\n retryLimit = DEFAULT_RETRY_LIMIT;\n }\n if (typeof backoffTime === 'undefined') {\n backoffTime = DEFAULT_BACKOFF;\n }\n if (typeof maxDelay === 'undefined') {\n maxDelay = DEFAULT_MAX_DELAY_BETWEEN_RETRIES;\n }\n var create = function create() {\n var tries = 0;\n var backoff = function backoff() {\n tries++;\n if (tries > retryLimit) {\n return Promise$1.reject();\n }\n var delay = Math.min(backoffTime * tries, maxDelay);\n return new Promise$1(function (resolve) {\n window.setTimeout(resolve, delay);\n });\n };\n return {\n backoff: backoff\n };\n };\n return {\n create: create\n };\n};\nvar BackoffStrategyWithUnlimitedRetries = function BackoffStrategyWithUnlimitedRetries(backoffTime, maxDelay) {\n if (typeof backoffTime === 'undefined') {\n backoffTime = DEFAULT_BACKOFF;\n }\n if (typeof maxDelay === 'undefined') {\n maxDelay = DEFAULT_MAX_DELAY_BETWEEN_RETRIES;\n }\n var create = function create() {\n var tries = 0;\n var backoff = function backoff() {\n tries++;\n var delay = Math.min(backoffTime * tries, maxDelay);\n return new Promise$1(function (resolve) {\n window.setTimeout(resolve, delay);\n });\n };\n return {\n backoff: backoff\n };\n };\n return {\n create: create\n };\n};\nvar BackoffStrategyFactory = {\n create: BackoffStrategy,\n createWithUnlimitedRetries: BackoffStrategyWithUnlimitedRetries\n};\n\nvar statusCodes = Object.freeze({\n Unauthorized: 401,\n UnprocessableEntity: 422\n});\n\n$.support.cors = true;\nvar REQUEST_TIMEOUT = 10000;\nvar NO_RETRY_STATUS_CODES = [statusCodes.UnprocessableEntity];\nvar HttpService = function HttpService(retryStrategyFactory, logFailures) {\n retryStrategyFactory = retryStrategyFactory || BackoffStrategyFactory.create();\n if (typeof logFailures === 'undefined') {\n logFailures = true;\n }\n var _eventHandlers = {};\n var _pendingRequestPromises = {};\n var removePendingRequestPromise = function removePendingRequestPromise(requestPromise) {\n if (requestPromise.UUID) {\n delete _pendingRequestPromises[requestPromise.UUID];\n }\n };\n var addRequestToPendingList = function addRequestToPendingList(requestPromise) {\n var requestUUID = uuidGenerator$1.getUUID();\n requestPromise.UUID = requestUUID;\n _pendingRequestPromises[requestUUID] = requestPromise;\n };\n var get = function get(url) {\n var request = {\n url: url,\n type: 'GET',\n contentType: 'application/json',\n crossDomain: true,\n timeout: REQUEST_TIMEOUT\n };\n var requestPromise = $.ajax(request);\n addRequestToPendingList(requestPromise);\n return Promise$1.resolve(requestPromise).then(function (data) {\n removePendingRequestPromise(requestPromise);\n return data;\n })[\"catch\"](function (response) {\n removePendingRequestPromise(requestPromise);\n if (logFailures && response && response.statusText !== 'timeout') {\n var errorString = '';\n try {\n errorString = 'Error: ' + window.JSON.stringify(response, null, 2) + ' Url: ' + url;\n } catch (error) {\n errorString = '(response failed conversion into a JSON string.)';\n }\n log.logException(errorString);\n return Promise$1.reject(errorString);\n }\n });\n };\n var sendFormDataPost = function sendFormDataPost(url, data) {\n return sendRequest(url, $.param(data), 'application/x-www-form-urlencoded; charset=UTF-8', 'POST');\n };\n var canRetryFromStatusCode = function canRetryFromStatusCode(response) {\n if (!response) {\n return true;\n }\n for (var i = 0; i < NO_RETRY_STATUS_CODES.length; i++) {\n if (response.status === NO_RETRY_STATUS_CODES[i]) {\n return false;\n }\n }\n return true;\n };\n var sendRequest = function sendRequest(url, data, contentType, httpVerb) {\n var retryStrategy = retryStrategyFactory.create();\n var request = {\n url: url,\n type: httpVerb,\n data: data,\n contentType: contentType,\n crossDomain: true,\n timeout: REQUEST_TIMEOUT\n };\n var send = function send(retries) {\n return new Promise$1(function (resolve, reject) {\n var requestPromise = $.ajax(request);\n addRequestToPendingList(requestPromise);\n Promise$1.resolve(requestPromise).then(function (responseData) {\n removePendingRequestPromise(requestPromise);\n resolve(responseData);\n })[\"catch\"](function (response) {\n removePendingRequestPromise(requestPromise);\n if (logFailures && response && response.statusText !== 'timeout') {\n var errorString = '';\n try {\n errorString = 'Error: ' + window.JSON.stringify(response, null, 2) + ' Url: ' + url + ' Data: ' + window.JSON.stringify(data, null, 2);\n } catch (error) {\n errorString = '(response failed conversion into a JSON string.)';\n }\n log.logException(errorString);\n }\n if (canRetryFromStatusCode(response)) {\n retryStrategy.backoff().then(function () {\n retries++;\n if (_eventHandlers[events.Network.Retrying]) {\n _eventHandlers[events.Network.Retrying].forEach(function (eventCallback) {\n eventCallback(retries);\n });\n }\n send(retries).then(resolve)[\"catch\"](reject);\n })[\"catch\"](function (retryResponse) {\n log.logException('Call to ' + url + ' failed after ' + retries + ' retries.');\n reject(retryResponse);\n });\n } else {\n log.logException('Call ' + url + ' failed with no retry status of ' + response.status + '.');\n reject(response);\n }\n });\n });\n };\n return send(0);\n };\n var abortPendingRequests = function abortPendingRequests() {\n Object.keys(_pendingRequestPromises).forEach(function (requestPromise) {\n requestPromise && requestPromise.abort && requestPromise.abort();\n });\n _pendingRequestPromises = {};\n };\n var addEventListener = function addEventListener(eventName, eventCallback) {\n if (!_eventHandlers[eventName]) {\n _eventHandlers[eventName] = [];\n }\n _eventHandlers[eventName].push(eventCallback);\n };\n var removeEventListener = function removeEventListener(eventName, eventCallback) {\n if (!_eventHandlers[eventName]) {\n return;\n }\n for (var i = _eventHandlers[eventName].length - 1; i >= 0; i--) {\n if (_eventHandlers[eventName][i] === eventCallback) {\n _eventHandlers[eventName].splice(i, 1);\n break;\n }\n }\n if (_eventHandlers[eventName].length === 0) {\n delete _eventHandlers[eventName];\n }\n };\n return {\n get: get,\n sendFormDataPost: sendFormDataPost,\n abortPendingRequests: abortPendingRequests,\n addEventListener: addEventListener,\n removeEventListener: removeEventListener\n };\n};\nvar HttpService$1 = {\n create: HttpService\n};\n\nvar VERSION = 1;\nvar questionSetToXml = function questionSetToXml(questionSet, quizInstanceId) {\n var xmlStr = '';\n xmlStr += '';\n questionSet.questions.forEach(function (question) {\n xmlStr += '';\n xmlStr += '' + question.duration + '';\n xmlStr += '' + textSanitizer.htmlEncode(question.response) + '';\n if (question.type !== questionType.SHORT && question.correct !== undefined) {\n xmlStr += '' + (question.correct ? 'True' : 'False') + '';\n }\n xmlStr += '' + question.segmentWatched + '';\n xmlStr += '';\n });\n xmlStr += '';\n return xmlStr;\n};\nvar quizDefinitionToXml = function quizDefinitionToXml(quizDefinition) {\n var xmlStr = '';\n xmlStr += '';\n xmlStr += '' + textSanitizer.htmlEncode(quizDefinition.projectName) + '';\n xmlStr += '' + quizDefinition.productionName + '';\n xmlStr += '' + quizDefinition.originId + '';\n xmlStr += '' + quizDefinition.mediaDuration + '';\n xmlStr += '';\n quizDefinition.reportRecipients.forEach(function (recipient) {\n xmlStr += '' + recipient + '';\n });\n xmlStr += '';\n xmlStr += '';\n quizDefinition.questionSets.forEach(function (questionSet) {\n xmlStr += '';\n questionSet.questions.forEach(function (question) {\n xmlStr += '';\n xmlStr += '' + textSanitizer.htmlEncode(question.questionText, true) + '';\n if (question.type === questionType.CHOICE) {\n xmlStr += '';\n question.choices.forEach(function (choice) {\n xmlStr += '' + textSanitizer.htmlEncode(choice, true) + '';\n });\n xmlStr += '';\n xmlStr += '' + question.correctAnswer + '';\n } else if (question.type === questionType.FILL_IN) {\n xmlStr += '';\n question.choices.forEach(function (choice) {\n xmlStr += '' + textSanitizer.htmlEncode(choice, true) + '';\n });\n xmlStr += '';\n }\n xmlStr += '';\n });\n xmlStr += '';\n });\n xmlStr += '';\n xmlStr += '';\n return xmlStr;\n};\nvar quizDataXmlConverter = {\n questionSetToXml: questionSetToXml,\n quizDefinitionToXml: quizDefinitionToXml\n};\n\nvar httpService$1 = HttpService$1.create();\nvar getTechSmithAccessToken = function getTechSmithAccessToken(playerConfiguration) {\n var accessTokenEndpoint = playerConfiguration.getTechSmithAccessTokenEndpoint();\n if (accessTokenEndpoint) {\n return httpService$1.get(accessTokenEndpoint).then(function (data) {\n return data.AccessToken;\n });\n }\n return Promise$1.resolve();\n};\nvar abortPendingRequests$1 = function abortPendingRequests() {\n httpService$1.abortPendingRequests();\n};\nvar tokenService = {\n getTechSmithAccessToken: getTechSmithAccessToken,\n abortPendingRequests: abortPendingRequests$1\n};\n\nvar DEFAULT_PROGRESS_INTERVAL_TIME_MILLISECONDS = 10000;\nvar _definitionEndPoint = 'v/1/quiz/definition';\nvar _instanceEndPoint = 'v/1/quiz/instance?noop=1';\nvar _responseEndPoint = 'v/1/quiz/response?noop=1';\nvar _progressEndPoint = 'v/1/quiz/progress?noop=1';\nvar _baseURL = 'https://quiz.cloud.techsmith.com/';\nvar _quizCreateInstanceUrl = null;\nvar _quizInstanceDataPromiseResolve;\nvar _quizInstanceDataPromiseReject;\nvar _quizInstanceDataPromise = new Promise$1(function (resolve, reject) {\n _quizInstanceDataPromiseResolve = resolve;\n _quizInstanceDataPromiseReject = reject;\n});\nvar httpService = HttpService$1.create();\nvar httpServiceWithUnlimitedRetries = HttpService$1.create(BackoffStrategyFactory.createWithUnlimitedRetries());\nvar httpServiceWithNoLogging = HttpService$1.create(BackoffStrategyFactory.create(), false);\nvar getBaseURL = function getBaseURL() {\n if (playerConfiguration.getQuizServiceBaseUrl()) {\n return playerConfiguration.getQuizServiceBaseUrl();\n }\n return _baseURL;\n};\n\n//should only be used for the purposes of unit tests!\nvar reset = function reset() {\n abortPendingRequests();\n httpServiceWithUnlimitedRetries = HttpService$1.create(BackoffStrategyFactory.createWithUnlimitedRetries());\n httpService = HttpService$1.create();\n httpServiceWithNoLogging = HttpService$1.create(BackoffStrategyFactory.create(), false);\n _quizInstanceDataPromise = new Promise$1(function (resolve, reject) {\n _quizInstanceDataPromiseResolve = resolve;\n _quizInstanceDataPromiseReject = reject;\n });\n};\nvar submitQuizDefinition = function submitQuizDefinition(quizJsonData, hash, clientId) {\n if (!quizJsonData) {\n return Promise$1.resolve();\n }\n if (typeof quizJsonData === 'string') {\n quizJsonData = JSON.parse(quizJsonData);\n }\n var quizDefinitionXml = quizDataXmlConverter.quizDefinitionToXml(quizJsonData);\n var url = getBaseURL() + _definitionEndPoint + '?Quiz-Checksum=' + hash + '&Quiz-ClientId=' + clientId + '&noop=1';\n var data = {\n DefinitionText: quizDefinitionXml\n };\n return httpService.sendFormDataPost(url, data).then(function () {\n return quizDefinitionXml;\n });\n};\nvar getInstanceFormData = function getInstanceFormData(quizModel, firstName, lastName, email, playerConfig) {\n var data = {\n QuizId: quizModel.quizID,\n CheckForQuizDefinition: playerConfig.getFathomId() === undefined\n };\n if (playerConfig.getTechSmithAccessTokenEndpoint()) {\n return tokenService.getTechSmithAccessToken(playerConfig).then(function (token) {\n data.AccessToken = token;\n return data;\n });\n }\n data.FirstName = !firstName ? '' : firstName;\n data.LastName = !lastName ? '' : lastName;\n data.Email = !email ? '' : email;\n return Promise$1.resolve(data);\n};\nvar startQuizInstance = function startQuizInstance(quizModel, firstName, lastName, email, playerConfig) {\n var url = _quizCreateInstanceUrl || getBaseURL() + _instanceEndPoint;\n getInstanceFormData(quizModel, firstName, lastName, email, playerConfig).then(function (data) {\n httpService.sendFormDataPost(url, data).then(function (response) {\n if (response.DefinitionRequired) {\n return submitQuizDefinition(quizModel.quizDefinition, quizModel.quizHash, quizModel.clientId).then(function () {\n return response;\n });\n }\n return response;\n }).then(function (response) {\n _quizInstanceDataPromiseResolve({\n analyticsSampleRate: response.SampleRate,\n reportingRate: response.ReportingRate || DEFAULT_PROGRESS_INTERVAL_TIME_MILLISECONDS,\n quizInstanceId: response.Id\n });\n })[\"catch\"](_quizInstanceDataPromiseReject);\n });\n return _quizInstanceDataPromise;\n};\nvar sendProgress = function sendProgress(sampleRateInMilliseconds, completedSamples) {\n if (completedSamples && completedSamples.length > 0) {\n return _quizInstanceDataPromise.then(function (quizInstanceData) {\n var url = getBaseURL() + _progressEndPoint;\n var data = {\n InstanceId: quizInstanceData.quizInstanceId,\n Interval: sampleRateInMilliseconds,\n ViewedSegments: completedSamples\n };\n return httpServiceWithNoLogging.sendFormDataPost(url, data, 0);\n });\n }\n};\nvar setQuizCreateInstanceUrl$1 = function setQuizCreateInstanceUrl(quizCreateInstanceUrl) {\n _quizCreateInstanceUrl = quizCreateInstanceUrl;\n};\nvar getQuizCreateInstanceUrl$1 = function getQuizCreateInstanceUrl() {\n return _quizCreateInstanceUrl;\n};\nvar submitQuestionSet = function submitQuestionSet(questionSetData) {\n return _quizInstanceDataPromise.then(function (quizInstanceData) {\n if (!quizInstanceData.quizInstanceId) {\n return Promise$1.reject('No quiz instance ID found');\n }\n if (typeof questionSetData === 'string') {\n questionSetData = JSON.parse(questionSetData);\n }\n var questionSetXml = quizDataXmlConverter.questionSetToXml(questionSetData, quizInstanceData.quizInstanceId);\n var url = getBaseURL() + _responseEndPoint;\n var data = {\n ResponseText: questionSetXml\n };\n return httpServiceWithUnlimitedRetries.sendFormDataPost(url, data).then(function (response) {\n return response.results;\n });\n });\n};\nvar getAnalyticsRate = function getAnalyticsRate() {\n return _quizInstanceDataPromise.then(function (response) {\n return {\n analyticsSampleRate: response.analyticsSampleRate,\n reportingRate: response.reportingRate\n };\n });\n};\nvar abortPendingRequests = function abortPendingRequests() {\n httpService.abortPendingRequests();\n httpServiceWithUnlimitedRetries.abortPendingRequests();\n httpServiceWithNoLogging.abortPendingRequests();\n tokenService.abortPendingRequests();\n};\nvar addEventListener$2 = function addEventListener(eventName, eventCallback) {\n httpService.addEventListener(eventName, eventCallback);\n httpServiceWithUnlimitedRetries.addEventListener(eventName, eventCallback);\n httpServiceWithNoLogging.addEventListener(eventName, eventCallback);\n};\nvar removeEventListener$2 = function removeEventListener(eventName, eventCallback) {\n httpService.removeEventListener(eventName, eventCallback);\n httpServiceWithUnlimitedRetries.removeEventListener(eventName, eventCallback);\n httpServiceWithNoLogging.removeEventListener(eventName, eventCallback);\n};\nvar quizService = {\n setQuizCreateInstanceUrl: setQuizCreateInstanceUrl$1,\n getQuizCreateInstanceUrl: getQuizCreateInstanceUrl$1,\n startQuizInstance: startQuizInstance,\n submitQuestionSet: submitQuestionSet,\n sendProgress: sendProgress,\n getAnalyticsRate: getAnalyticsRate,\n reset: reset,\n abortPendingRequests: abortPendingRequests,\n addEventListener: addEventListener$2,\n removeEventListener: removeEventListener$2\n};\n\n/**\n * @memberof TSC\n * @class QuizProgressTracker\n * @classdesc Quiz progress tracker manages quiz progress and processing played segments\n * @param {HTMLVideoElement} videoToTrack - The video element to monitor for progress.\n * @param {int} sampleRateInMilliseconds\n * @param {int} reportingRateInMilliseconds\n *\n */\nvar QuizProgressTracker = function QuizProgressTracker(videoToTrack, sampleRateInMilliseconds, reportingRateInMilliseconds) {\n var _didAttachToEndedEvent = false;\n var _didAttachToPlayEvent = false;\n var _intervalId;\n var _playCallbackFunction;\n var _mergeToleranceInMilliseconds = 500;\n var _videoEndToleranceInMilliseconds = 1000;\n var processPlayedSegments = function processPlayedSegments(played) {\n var numberPlayedSegments = played.length;\n if (numberPlayedSegments < 1) {\n return [];\n }\n var mergedPlayedInMilliseconds = [{\n start: played.start(0) * 1000,\n end: played.end(0) * 1000\n }];\n var mergedPlayedIndex = 0;\n var i;\n for (i = 1; i < numberPlayedSegments; i++) {\n if (mergedPlayedInMilliseconds[mergedPlayedIndex].end >= played.start(i) * 1000 - _mergeToleranceInMilliseconds) {\n mergedPlayedInMilliseconds[mergedPlayedIndex].end = played.end(i) * 1000;\n } else {\n mergedPlayedInMilliseconds.push({\n start: played.start(i) * 1000,\n end: played.end(i) * 1000\n });\n mergedPlayedIndex++;\n }\n }\n return mergedPlayedInMilliseconds;\n };\n var computePercentageViewed = function computePercentageViewed(video) {\n var completedSamples = [];\n var i;\n var j;\n var videoStartMilliseconds;\n var videoEndMilliseconds;\n var isEndOfVideo;\n var firstSample;\n var lastSample;\n var entireVideoWasWatched;\n var mergedPlayedInMilliseconds;\n var videoDurationInMilliseconds = video.duration * 1000;\n mergedPlayedInMilliseconds = processPlayedSegments(video.played);\n for (i = 0; i < mergedPlayedInMilliseconds.length; i++) {\n videoStartMilliseconds = mergedPlayedInMilliseconds[i].start;\n videoEndMilliseconds = mergedPlayedInMilliseconds[i].end;\n isEndOfVideo = videoDurationInMilliseconds - video.currentTime * 1000 < _videoEndToleranceInMilliseconds;\n if (!isEndOfVideo && videoEndMilliseconds - videoStartMilliseconds < sampleRateInMilliseconds) {\n continue;\n }\n firstSample = Math.floor(videoStartMilliseconds / sampleRateInMilliseconds);\n if (videoStartMilliseconds % sampleRateInMilliseconds !== 0) {\n firstSample += 1;\n }\n lastSample = Math.floor(videoEndMilliseconds / sampleRateInMilliseconds);\n if (!isEndOfVideo) {\n lastSample -= 1;\n }\n if (lastSample < firstSample) {\n continue;\n }\n for (j = firstSample; j <= lastSample; j++) {\n completedSamples.push(j);\n }\n }\n quizService.sendProgress(sampleRateInMilliseconds, completedSamples);\n entireVideoWasWatched = completedSamples.length === Math.ceil(videoDurationInMilliseconds / sampleRateInMilliseconds);\n if (entireVideoWasWatched) {\n stopInterval();\n video.removeEventListener('play', _playCallbackFunction, false);\n }\n };\n var attachToEndedEvent = function attachToEndedEvent(video) {\n var endedCallbackFunction = function endedCallbackFunction() {\n sendProgress(video);\n stopInterval();\n };\n video.addEventListener('ended', endedCallbackFunction, false);\n _didAttachToEndedEvent = true;\n };\n var attachToPlayEvent = function attachToPlayEvent(video) {\n _playCallbackFunction = function _playCallbackFunction() {\n if (_intervalId !== -1) {\n return;\n }\n setupProgressInterval(video);\n };\n video.addEventListener('play', _playCallbackFunction, false);\n _didAttachToPlayEvent = true;\n };\n var sendProgress = function sendProgress(video) {\n if (!video || video.duration === 0) {\n return;\n }\n if (!_didAttachToEndedEvent) {\n attachToEndedEvent(video);\n }\n if (!_didAttachToPlayEvent) {\n attachToPlayEvent(video);\n }\n computePercentageViewed(video);\n };\n var stopInterval = function stopInterval() {\n if (_intervalId !== -1) {\n window.clearInterval(_intervalId);\n _intervalId = -1;\n }\n };\n var destroy = function destroy() {\n stopInterval();\n };\n var setupProgressInterval = function setupProgressInterval(video) {\n var intervalFunction = function intervalFunction() {\n sendProgress(video);\n if (video.paused) {\n window.clearInterval(_intervalId);\n _intervalId = -1;\n }\n };\n _intervalId = window.setInterval(intervalFunction, reportingRateInMilliseconds);\n };\n stopInterval();\n setupProgressInterval(videoToTrack);\n return Object.defineProperties({\n destroy: destroy\n }, {});\n};\nvar QuizProgressTracker$1 = {\n /**\n * Factory method that returns a new QuizProgressTracker.\n * @function create\n * @memberof TSC.QuizProgressTracker\n * @static\n * @param {HTMLVideoElement} videoToTrack - The video element to monitor for progress.\n * @param {int} sampleRateInMilliseconds\n * @param {int} reportingRateInMilliseconds\n * @return new QuizProgressTracker instance\n */\n create: QuizProgressTracker\n};\n\nvar questionGrader = Object.freeze({\n FATHOM: 'FATHOM',\n XMP: 'XMP'\n});\n\n/**\n * @memberof TSC\n * @class fathomGrader\n * @classdesc Grader for fathom quiz service\n */\n\nvar processQuestionResults = function processQuestionResults(question, results) {\n var questionApiId = question.id;\n var questionResult = results[questionApiId];\n if (questionResult !== undefined) {\n question.isResponseCorrect = questionResult.isCorrect;\n question.correctAnswer = questionResult.correctAnswer;\n question.isGraded = questionResult.isGraded;\n }\n};\nvar processQuestionSetResults = function processQuestionSetResults(questionSet, results) {\n questionSet.questions.forEach(function (question) {\n processQuestionResults(question, results);\n });\n questionSet.cacheQuestionDetails();\n};\nvar fathomGrader = Object.defineProperties({\n processQuestionSetResults: processQuestionSetResults\n}, {\n doesLocalGrading: {\n value: false\n }\n});\n\n/**\n * @memberof TSC\n * @class xmpGrader\n * @classdesc Xmp Grader question sets\n */\nvar gradeChoiceQuestion = function gradeChoiceQuestion(question, response) {\n var correctAnswer = question.correctAnswer;\n var isCorrect;\n var responseNumber = parseInt(response, 10);\n if (isNaN(responseNumber)) {\n isCorrect = false;\n } else {\n /*eslint no-bitwise: \"off\"*/\n isCorrect = 1 << responseNumber === correctAnswer;\n }\n question.isResponseCorrect = isCorrect;\n question.isGraded = correctAnswer !== undefined && correctAnswer > 0;\n};\nvar gradeFillInTheBlankQuestion = function gradeFillInTheBlankQuestion(question, response) {\n var responseLowerCase = response !== undefined ? response.toLowerCase() : '';\n var possibleAnswers = question.answers;\n var numberPossibleAnswers = possibleAnswers ? possibleAnswers.length : 0;\n question.isGraded = numberPossibleAnswers > 0;\n if (question.isGraded) {\n question.isResponseCorrect = false;\n for (var i = 0; i < numberPossibleAnswers; i++) {\n if (responseLowerCase === possibleAnswers[i].text.toLowerCase()) {\n question.isResponseCorrect = true;\n break;\n }\n }\n }\n};\nvar gradeQuestion = function gradeQuestion(question) {\n if (question.type === questionType.CHOICE) {\n gradeChoiceQuestion(question, question.userResponse);\n } else if (question.type === questionType.FILL_IN) {\n gradeFillInTheBlankQuestion(question, question.userResponse);\n }\n};\nvar gradeQuestionSet = function gradeQuestionSet(questionSet) {\n questionSet.questions.forEach(function (question) {\n if (question.responseLocked) {\n gradeQuestion(question);\n }\n });\n};\nvar xmpGrader = Object.defineProperties({\n gradeQuestionSet: gradeQuestionSet\n}, {\n doesLocalGrading: {\n value: true\n }\n});\n\nvar _containerId = '.question-set-container';\nvar _superView = BubbleView$1.create(_containerId);\nvar _showAnswersId = '.view-answers-button';\nvar _hideAnswersId = '.hide-answers-button';\nvar _gradeableDetails;\nvar _unGradeableDetails;\nvar _readingSelector = '.question-set-results';\nvar questionSetReviewStatusView = {\n setGradeableDetails: function setGradeableDetails(text) {\n _gradeableDetails = text;\n },\n setUngradeableDetails: function setUngradeableDetails(text) {\n _unGradeableDetails = text;\n },\n getViewMarkup: function getViewMarkup() {\n return templateGenerator.generateQuestionSetReviewStatusMarkup(_gradeableDetails, _unGradeableDetails) + _superView.getOverlayMarkup();\n },\n getHideAnswersControlRef: function getHideAnswersControlRef() {\n return _hideAnswersId;\n },\n getShowAnswersControlRef: function getShowAnswersControlRef() {\n return _showAnswersId;\n },\n showView: function showView() {\n var $container = $(_containerId);\n $container.removeClass('minimized');\n _superView.showView();\n var $readableElement = $container.find(_readingSelector);\n $readableElement.focus();\n highlightDisabler.disableHighlights($readableElement);\n },\n hideView: function hideView() {\n $(_containerId).addClass('minimized');\n _superView.hideView();\n },\n removeView: _superView.removeView,\n updateViewPosition: _superView.updateViewPosition,\n setBottomOffset: _superView.setBottomOffset,\n pointAt: _superView.pointAt\n};\n\nvar scormConstants = Object.freeze({\n fn: {\n initialize: 'initialize',\n terminate: 'terminate',\n getValue: 'getValue',\n setValue: 'setValue',\n commit: 'commit'\n },\n dataModelID: {\n cmiExit: 'cmiExit',\n cmiLocation: 'cmiLocation',\n cmiSuspendData: 'cmiSuspendData',\n cmiProgressMeasure: 'cmiProgressMeasure',\n cmiScaledPassingScore: 'cmiScaledPassingScore',\n cmiScoreMin: 'cmiScoreMin',\n cmiScoreMax: 'cmiScoreMax',\n cmiScoreRaw: 'cmiScoreRaw',\n cmiScoreScaled: 'cmiScoreScaled',\n cmiSuccessStatus: 'cmiSuccessStatus',\n cmiCompletionStatus: 'cmiCompletionStatus',\n cmiSessionTime: 'cmiSessionTime',\n adlNavRequest: 'adlNavRequest'\n },\n scorm1Dot2DataModel: {\n cmiExit: 'cmi.core.exit',\n cmiLocation: 'cmi.core.lesson_location',\n cmiSuspendData: 'cmi.suspend_data',\n cmiProgressMeasure: null,\n cmiScaledPassingScore: 'cmi.student_data.mastery_score',\n cmiScoreMin: 'cmi.core.score.min',\n cmiScoreMax: 'cmi.core.score.max',\n cmiScoreRaw: 'cmi.core.score.raw',\n cmiScoreScaled: null,\n cmiSuccessStatus: null,\n cmiCompletionStatus: 'cmi.core.lesson_status',\n cmiSessionTime: 'cmi.core.session_time',\n adlNavRequest: null\n },\n scorm2004DataModel: {\n cmiExit: 'cmi.exit',\n cmiLocation: 'cmi.location',\n cmiSuspendData: 'cmi.suspend_data',\n cmiProgressMeasure: 'cmi.progress_measure',\n cmiScaledPassingScore: 'cmi.scaled_passing_score',\n cmiScoreMin: 'cmi.score.min',\n cmiScoreMax: 'cmi.score.max',\n cmiScoreRaw: 'cmi.score.raw',\n cmiScoreScaled: 'cmi.score.scaled',\n cmiSuccessStatus: 'cmi.success_status',\n cmiCompletionStatus: 'cmi.completion_status',\n cmiSessionTime: 'cmi.session_time',\n adlNavRequest: 'adl.nav.request'\n },\n status: {\n completed: 'completed',\n incomplete: 'incomplete',\n notAttempted: 'not attempted',\n unknown: 'unknown',\n passed: 'passed',\n failed: 'failed',\n browsed: 'browsed'\n },\n exitStates: {\n suspend: 'suspend',\n logout: 'logout',\n complete: ''\n },\n navRequestStates: {\n exitAll: 'exitAll',\n suspendAll: 'suspendAll'\n },\n versions: {\n NOT_DETECTED: -1,\n SCORM_1_2: 0,\n SCORM_2004: 1\n },\n assessment: {\n minScore: 0,\n maxScore: 100,\n scoreNormalizationDivider: 100\n }\n});\n\nvar V1_SUSPENDED_DATA_KEY = 'tscsp1';\nvar V2_SUSPENDED_DATA_KEY = 'tscsp2';\n\n/**\n * @memberof TSC\n * @class ScormDataModel\n * @classdesc Data modal for smart player suspended scorm data\n */\nvar ScormDataModel = function ScormDataModel() {\n var _percentageComplete = 0;\n var _quizPercentageCorrect = 0;\n var _quizCompletionStatus = scormConstants.status.unknown;\n var _quizModelSnapshot = '';\n var _videoAnalyticsSnapshot = '';\n var _videoTimeInSecondsSnapshot = 0;\n var _videoTimeInSeconds = 0;\n var _completionStatus = scormConstants.status.notAttempted;\n var _passingStatus = scormConstants.status.unknown;\n\n /**\n * @methodOf TSC.ScormDataModel\n * @method parseSuspendedDataString\n * @param {String} suspendedDataString - string containing suspended scorm data\n */\n var parseSuspendedDataString = function parseSuspendedDataString(suspendedDataString) {\n if (!suspendedDataString) {\n return;\n }\n try {\n var suspendedData = window.JSON.parse(suspendedDataString);\n if (suspendedData[V1_SUSPENDED_DATA_KEY]) {\n _percentageComplete = parseFloat(suspendedData[V1_SUSPENDED_DATA_KEY].pc);\n _videoAnalyticsSnapshot = suspendedData[V1_SUSPENDED_DATA_KEY].vas;\n _videoTimeInSecondsSnapshot = parseFloat(suspendedData[V1_SUSPENDED_DATA_KEY].cvt);\n } else if (suspendedData[V2_SUSPENDED_DATA_KEY]) {\n _percentageComplete = parseFloat(suspendedData[V2_SUSPENDED_DATA_KEY].pc);\n _videoAnalyticsSnapshot = suspendedData[V2_SUSPENDED_DATA_KEY].vas;\n _videoTimeInSecondsSnapshot = parseFloat(suspendedData[V2_SUSPENDED_DATA_KEY].cvt);\n _quizModelSnapshot = suspendedData[V2_SUSPENDED_DATA_KEY].qs;\n }\n } catch (e) {} // eslint-disable-line\n };\n\n /**\n * @methodOf TSC.ScormDataModel\n * @method getSuspendedDataString\n * Return string of suspended data\n * @returns {String} string containing suspended scorm data\n */\n var getSuspendedDataString = function getSuspendedDataString() {\n var suspendedData = {};\n suspendedData[V2_SUSPENDED_DATA_KEY] = {\n pc: _percentageComplete,\n vas: _videoAnalyticsSnapshot,\n cvt: _videoTimeInSeconds,\n qs: _quizModelSnapshot\n };\n return window.JSON.stringify(suspendedData);\n };\n return Object.defineProperties({\n parseSuspendedDataString: parseSuspendedDataString,\n getSuspendedDataString: getSuspendedDataString\n }, {\n percentageComplete: {\n get: function get() {\n return _percentageComplete;\n },\n set: function set(percentageComplete) {\n _percentageComplete = percentageComplete;\n }\n },\n quizPercentageCorrect: {\n get: function get() {\n return _quizPercentageCorrect;\n },\n set: function set(quizPercentageCorrect) {\n _quizPercentageCorrect = quizPercentageCorrect;\n }\n },\n quizPercentageCorrectAsString: {\n get: function get() {\n return _quizPercentageCorrect.toString();\n }\n },\n quizCompletionStatus: {\n get: function get() {\n return _quizCompletionStatus;\n },\n set: function set(quizCompletionStatus) {\n _quizCompletionStatus = quizCompletionStatus;\n }\n },\n quizModelSnapshot: {\n get: function get() {\n return _quizModelSnapshot;\n },\n set: function set(quizModelSnapshot) {\n _quizModelSnapshot = quizModelSnapshot;\n }\n },\n videoAnalyticsSnapshot: {\n get: function get() {\n return _videoAnalyticsSnapshot;\n },\n set: function set(snapshot) {\n _videoAnalyticsSnapshot = snapshot;\n }\n },\n videoTimeInSecondsSnapshot: {\n get: function get() {\n return _videoTimeInSecondsSnapshot;\n }\n },\n videoTimeInSeconds: {\n get: function get() {\n return _videoTimeInSeconds;\n },\n set: function set(timeInSeconds) {\n _videoTimeInSeconds = timeInSeconds;\n }\n },\n completionStatus: {\n get: function get() {\n return _completionStatus;\n },\n set: function set(completionStatus) {\n _completionStatus = completionStatus;\n }\n },\n passingStatus: {\n get: function get() {\n return _passingStatus;\n },\n set: function set(passingStatus) {\n _passingStatus = passingStatus;\n }\n }\n });\n};\nvar ScormDataModel$1 = {\n create: ScormDataModel\n};\n\nvar DEFAULT_TITLE_TEXT = '';\nvar MAX_PARENTS_TO_SEARCH = 500;\nvar SCORM_MANIFEST_FILE_NAME = 'imsmanifest.xml';\nvar CAMTASIA_SCORM_1_2_MANIFEST_STRING = 'ADL SCORM 1.2';\n\n/**\n * @memberof TSC\n * @class ScormApiWrapper\n * @classdesc Wrapper around Scorm API that handles Scorm 1.2 and 2004\n */\nvar ScormApiWrapper = function ScormApiWrapper() {\n var scormApi = null;\n var noAPIFound = false;\n var apiVersion = scormConstants.versions.NOT_DETECTED;\n var scormManifestDocString = null;\n\n /**\n * Get last error message\n * @function getLastError\n * @return {String} - An error string that contains error number, string and diagnostic information.\n */\n var getLastError = function getLastError() {\n var errorNumber;\n var errorString;\n var diagnostic;\n if (!scormApi) {\n return 'SCORM API not found';\n }\n if (apiVersion >= scormConstants.versions.SCORM_2004) {\n errorNumber = scormApi.GetLastError();\n errorString = scormApi.GetErrorString(errorNumber);\n diagnostic = scormApi.GetDiagnostic(errorNumber);\n } else {\n errorNumber = scormApi.LMSGetLastError();\n errorString = scormApi.LMSGetErrorString(errorNumber);\n diagnostic = scormApi.LMSGetDiagnostic(errorNumber);\n }\n return 'Number: ' + errorNumber + '\\nDescription: ' + errorString + '\\nDiagnostic: ' + diagnostic;\n };\n\n /**\n * This function is used to communicate with the API, if it is found.\n * @memberof TSC.ScormApiWrapper\n * @function apiCall\n * @param {string} scormFunctionName - Name of the api function to call\n * @param {string} [dataModalID] - Name of the data model id defined in scorm constants object.\n * @param [dmeValue] - Value to write to data model\n * @return {string} - Value returned from the api call.\n */\n var apiCall = function apiCall(scormFunctionName, dataModalID, dmeValue) {\n var dataModel;\n var result;\n if (scormApi) {\n switch (scormFunctionName) {\n case scormConstants.fn.initialize:\n var initializedResult;\n if (apiVersion >= scormConstants.versions.SCORM_2004) {\n initializedResult = scormApi.Initialize('');\n } else {\n initializedResult = scormApi.LMSInitialize('');\n }\n if (initializedResult === 'true') {\n if (apiVersion >= scormConstants.versions.SCORM_2004) {\n result = scormApi.GetValue(scormConstants.scorm2004DataModel.cmiCompletionStatus);\n } else {\n result = scormApi.LMSGetValue(scormConstants.scorm1Dot2DataModel.cmiCompletionStatus);\n }\n }\n break;\n case scormConstants.fn.terminate:\n if (apiVersion >= scormConstants.versions.SCORM_2004) {\n result = scormApi.Terminate('');\n } else {\n result = scormApi.LMSFinish('');\n }\n break;\n case scormConstants.fn.getValue:\n if (apiVersion >= scormConstants.versions.SCORM_2004) {\n dataModel = scormConstants.scorm2004DataModel[dataModalID];\n if (dataModel) {\n result = scormApi.GetValue(dataModel);\n }\n } else {\n dataModel = scormConstants.scorm1Dot2DataModel[dataModalID];\n if (dataModel) {\n result = scormApi.LMSGetValue(dataModel);\n }\n }\n break;\n case scormConstants.fn.setValue:\n if (apiVersion >= scormConstants.versions.SCORM_2004) {\n dataModel = scormConstants.scorm2004DataModel[dataModalID];\n if (dataModel) {\n result = scormApi.SetValue(dataModel, dmeValue);\n }\n } else {\n // In 1.2, lesson_status hold both complete/incomplete and pass/fail.\n // So if we've already used it for pass/fail, we don't want to\n // overwrite with 'completed'\n dataModel = scormConstants.scorm1Dot2DataModel[dataModalID];\n var canSetValue = !!dataModel;\n if (dataModalID === scormConstants.dataModelID.cmiCompletionStatus) {\n var lessonStatus = scormApi.LMSGetValue(scormConstants.scorm1Dot2DataModel.cmiCompletionStatus);\n if (dmeValue !== scormConstants.status.passed && dmeValue !== scormConstants.status.failed) {\n canSetValue = lessonStatus !== scormConstants.status.failed && lessonStatus !== scormConstants.status.passed;\n }\n }\n if (canSetValue) {\n result = scormApi.LMSSetValue(dataModel, dmeValue);\n }\n }\n break;\n case scormConstants.fn.commit:\n if (apiVersion >= scormConstants.versions.SCORM_2004) {\n result = scormApi.Commit('');\n } else {\n result = scormApi.LMSCommit('');\n }\n break;\n }\n if (playerConfiguration.logScormApiCalls) {\n console.info('SCORM apiCall - ', scormFunctionName, dataModalID, dmeValue, ' returned ', result); // eslint-disable-line\n }\n return result;\n }\n };\n var loadScormManifest = function loadScormManifest() {\n return $.ajax({\n type: 'GET',\n url: SCORM_MANIFEST_FILE_NAME,\n dataType: 'text'\n });\n };\n var getScormManifestDoc = function getScormManifestDoc() {\n if (scormManifestDocString === null) {\n return new Promise$1(function (resolve, reject) {\n loadScormManifest().done(function (data) {\n scormManifestDocString = data;\n resolve(scormManifestDocString);\n }).fail(function () {\n reject();\n });\n });\n }\n return Promise$1.resolve(scormManifestDocString);\n };\n var getScormVersionFromManifestDoc = function getScormVersionFromManifestDoc() {\n return getScormManifestDoc().then(function (manifestDocAsString) {\n // manifest doc will contain a specific string only with SCORM version 1.2 produced with Camtasia\n if (manifestDocAsString.indexOf(CAMTASIA_SCORM_1_2_MANIFEST_STRING) !== -1) {\n return scormConstants.versions.SCORM_1_2;\n }\n return scormConstants.versions.SCORM_2004;\n });\n };\n var getScormApiOnWindow = function getScormApiOnWindow(windowRef) {\n // scorm 1.2 and 2004 api are defined on window\n if (windowRef.API && windowRef.API_1484_11) {\n return getScormVersionFromManifestDoc().then(function (scormApiVersion) {\n apiVersion = scormApiVersion;\n if (scormApiVersion === scormConstants.versions.SCORM_1_2) {\n return windowRef.API;\n }\n return windowRef.API_1484_11;\n });\n // look for scorm 1.2 api\n } else if (windowRef.API) {\n apiVersion = scormConstants.versions.SCORM_1_2;\n return Promise$1.resolve(windowRef.API);\n // look for scorm 2004 api\n } else if (windowRef.API_1484_11) {\n apiVersion = scormConstants.versions.SCORM_2004;\n return Promise$1.resolve(windowRef.API_1484_11);\n }\n return Promise$1.reject();\n };\n\n /**\n * Searches all the parents of a given window until it finds an object named \"API_1484_11\" or \"API\".\n * If an object of that name is found, a reference to it is returned. Otherwise, this function returns null.\n * @function findAPI\n * @param {window} win - Window object\n * @return {object} - If the API object is found, it's returned, otherwise null is returned\n */\n var findAPI = function findAPI(win) {\n var findAPITries = 0;\n\n // Search each parent window until we find the API, encounter a window with no parent / the\n // same as the current window, or have reached our MAX_PARENTS_TO_SEARCH to search threshold\n while (!win.API && !win.API_1484_11 && win.parent !== win && findAPITries <= MAX_PARENTS_TO_SEARCH) {\n findAPITries++;\n win = win.parent;\n }\n return getScormApiOnWindow(win);\n };\n var lookForApiOnParentWindow = function lookForApiOnParentWindow() {\n try {\n if (window.parent !== window) {\n return findAPI(window.parent);\n }\n return Promise$1.reject();\n } catch (e) {\n return Promise$1.reject(e);\n }\n };\n var lookForApiOnWindowTopOpener = function lookForApiOnWindowTopOpener() {\n if (window.top.opener !== null) {\n return findAPI(window.top.opener);\n }\n return Promise$1.reject();\n };\n\n /**\n * This function looks for an object named API, first in the current window's\n * frame hierarchy and then, if necessary, in the current window's opener window\n * hierarchy (if there is an opener window).\n * @function getAPI\n * @return {Promise} - A Promise that will resolve with API object if found or promise is rejected.\n */\n var getAPI = function getAPI() {\n return lookForApiOnParentWindow()[\"catch\"](lookForApiOnWindowTopOpener);\n };\n\n /**\n * Returns the handle to API object if it was previously set, otherwise it returns null\n * @function getAPIHandle\n * @return {Promise} - A Promise that will resolve with the available SCORM api.\n */\n var getAPIHandle = function getAPIHandle() {\n if (noAPIFound) {\n return Promise$1.reject();\n }\n if (!scormApi) {\n return getAPI();\n }\n return Promise$1.resolve(scormApi);\n };\n var getTitleFromManifestDoc = function getTitleFromManifestDoc() {\n try {\n var manifestXml = $.parseXML(scormManifestDocString);\n var $manifestXml = $(manifestXml);\n var $item = $manifestXml.find('item');\n var $title = $item.find('title');\n return $title.text();\n } catch (e) {\n return DEFAULT_TITLE_TEXT;\n }\n };\n\n /**\n * Get title for SCORM module\n * @function getTitle\n * @return {Promise} - A Promise that will resolve with the title found in the SCORM manifest file or empty string.\n */\n var getTitle = function getTitle() {\n if (!scormManifestDocString) {\n return getScormManifestDoc().then(getTitleFromManifestDoc)[\"catch\"](function () {\n return DEFAULT_TITLE_TEXT;\n });\n }\n return Promise$1.resolve(getTitleFromManifestDoc());\n };\n\n /**\n * Initialize SCORM module\n * @function init\n * @return {Promise} - A Promise that will resolve with the state of initialize.\n */\n var init = function init() {\n return getAPIHandle().then(function (api) {\n scormApi = api;\n if (playerConfiguration.logScormApiCalls) {\n console.info('SCORM initialized with version: ', apiVersion); // eslint-disable-line\n }\n return apiCall(scormConstants.fn.initialize);\n })[\"catch\"](function () {\n noAPIFound = true;\n return 'false';\n });\n };\n return Object.defineProperties({\n init: init,\n apiCall: apiCall,\n getTitle: getTitle,\n getLastError: getLastError\n }, {\n apiVersion: {\n get: function get() {\n return apiVersion;\n }\n }\n });\n};\n\n/**\n * Factory method that returns a new Scorm Api Wrapper object.\n * @function create\n * @memberof TSC.ScormApiWrapper\n * @static\n * @return new ScormApiWrapper instance\n */\nvar ScormApiWrapper$1 = {\n create: ScormApiWrapper\n};\n\nvar ScormNavigationBarView = function ScormNavigationBarView($container) {\n var _$scormNavigationBarContainer = $container.find('.scorm-module-navigation-container');\n var _$scormHeaderElement = null;\n var _$scormCompleteSessionButton = null;\n var _scoObjectiveHasBeenCompleted = false;\n var onCompleteSessionHandler = function onCompleteSessionHandler(e) {\n e.preventDefault();\n $container.trigger(events.SCORM.ExitSession);\n };\n var getButtonLabel = function getButtonLabel() {\n if (_scoObjectiveHasBeenCompleted) {\n return playerConfiguration.completeScormOnRequirementsComplete ? localizationStrings.getPlayerString(playerStringNames.scormExitVideo) : localizationStrings.getPlayerString(playerStringNames.scormCompleteVideo);\n }\n return localizationStrings.getPlayerString(playerStringNames.scormCompleteVideoLater);\n };\n var createView = function createView() {\n var buttonLabel = getButtonLabel();\n var isPrimaryButton = _scoObjectiveHasBeenCompleted;\n var scormNavigationBarMarkup = templateGenerator.generateScormNavigationBarMarkup(buttonLabel, isPrimaryButton);\n _$scormNavigationBarContainer.html(scormNavigationBarMarkup);\n _$scormHeaderElement = _$scormNavigationBarContainer.find('.scorm-module-title');\n _$scormCompleteSessionButton = _$scormNavigationBarContainer.find('.complete-scorm-session-button');\n };\n var disableControls = function disableControls() {\n _$scormCompleteSessionButton && _$scormCompleteSessionButton.attr('tabindex', tabIndex.Disabled);\n };\n var enableControls = function enableControls() {\n _$scormCompleteSessionButton && _$scormCompleteSessionButton.attr('tabindex', tabIndex.DomOrder);\n };\n var setupEvents = function setupEvents() {\n $container.on(events.Modals.Open, disableControls);\n $container.on(events.Modals.Closed, enableControls);\n _$scormCompleteSessionButton.on('click', onCompleteSessionHandler);\n };\n var setTitle = function setTitle(scormTitle) {\n if (_$scormHeaderElement) {\n _$scormHeaderElement.html(scormTitle);\n }\n };\n var destroy = function destroy() {\n if (_$scormCompleteSessionButton) {\n _$scormCompleteSessionButton.off();\n }\n $container.off(events.Modals.Open, disableControls);\n $container.off(events.Modals.Closed, enableControls);\n };\n var init = function init() {\n createView();\n setupEvents();\n };\n var updateView = function updateView(scoObjectiveHasBeenCompleted) {\n _scoObjectiveHasBeenCompleted = scoObjectiveHasBeenCompleted;\n destroy();\n init();\n };\n return Object.defineProperties({\n setTitle: setTitle,\n updateView: updateView\n }, {});\n};\nvar ScormNavigationBarView$1 = {\n create: ScormNavigationBarView\n};\n\n/**\n * Options for the ScormConfirmCompleteModal\n * @typedef {Object} ScormModalOptions\n * @property {boolean} canResumeVideo - Can the SCORM module be resumed\n * @property {boolean} failedToSaveSuspendedData - Indicates whether the player could not save the current state to the suspended data api.\n */\n\n/**\n * @memberof TSC\n * @class ScormConfirmCompleteModalView\n * @classdesc Confirmation modal used with SCORM operations\n * @param {jQuery} $container - jQuery wrapped element to add modal to.\n * @param {ScormModalOptions} options - Options to use when displaying modal.\n */\nvar ScormConfirmCompleteModalView = function ScormConfirmCompleteModalView($container, options) {\n var _$scormConfirmCompleteModalWrapper = $container.find('.scorm-confirm-complete-modal-wrapper');\n var _$confirmButton;\n var _$dismissButton;\n var createView = function createView() {\n var finalConfirmText;\n if (options.failedToSaveSuspendedData) {\n finalConfirmText = localizationStrings.getPlayerString(playerStringNames.scormConfirmCompleteModalFailedToSaveProgressText);\n } else {\n var confirmText = localizationStrings.getPlayerString(playerStringNames.scormConfirmCompleteModalText);\n var confirmWarningText = options.canResumeVideo ? localizationStrings.getPlayerString(playerStringNames.scormConfirmCompleteModalResumeVideoText) : localizationStrings.getPlayerString(playerStringNames.scormConfirmCompleteModalRestartVideoText);\n finalConfirmText = confirmText + ' ' + confirmWarningText;\n }\n var screenReaderAlertText = finalConfirmText;\n var dismissButtonText = localizationStrings.getPlayerString(playerStringNames.scormConfirmCompleteModalDismissButtonText);\n var dismissButtonScreenReaderText = localizationStrings.getPlayerString(playerStringNames.scormConfirmCompleteModalDismissButtonScreenReaderText);\n var confirmButtonText = localizationStrings.getPlayerString(playerStringNames.scormConfirmCompleteModalConfirmButtonText);\n var confirmButtonScreenReaderText = localizationStrings.getPlayerString(playerStringNames.scormConfirmCompleteModalConfirmButtonScreenReaderText);\n var scormConfirmCompleteModalMarkup = templateGenerator.generateScormConfirmCompleteModalMarkup(screenReaderAlertText, finalConfirmText, dismissButtonText, dismissButtonScreenReaderText, confirmButtonText, confirmButtonScreenReaderText, options.failedToSaveSuspendedData);\n _$scormConfirmCompleteModalWrapper.html(scormConfirmCompleteModalMarkup);\n _$dismissButton = _$scormConfirmCompleteModalWrapper.find('.dismiss-complete-button');\n _$confirmButton = _$scormConfirmCompleteModalWrapper.find('.confirm-complete-button');\n };\n var onDismissClickHandler = function onDismissClickHandler(e) {\n e.preventDefault();\n destroy();\n };\n var onCompleteClickHandler = function onCompleteClickHandler(e) {\n e.preventDefault();\n if (options.failedToSaveSuspendedData) {\n $container.trigger(events.SCORM.ExitSessionWithOutProgressConfirmed);\n } else {\n $container.trigger(events.SCORM.ExitSessionConfirmed);\n }\n };\n var setupEvents = function setupEvents() {\n _$confirmButton.on('click', onCompleteClickHandler);\n _$dismissButton.on('click', onDismissClickHandler);\n };\n var destroy = function destroy() {\n $container.trigger(events.Modals.Closed);\n _$confirmButton && _$confirmButton.off();\n _$dismissButton && _$dismissButton.off();\n _$scormConfirmCompleteModalWrapper.html('');\n };\n createView();\n setupEvents();\n $container.trigger(events.Modals.Open);\n return Object.defineProperties({\n destroy: destroy\n }, {});\n};\nvar ScormConfirmCompleteModalView$1 = {\n create: ScormConfirmCompleteModalView\n};\n\nvar ScormSessionEndedView = function ScormSessionEndedView($container) {\n var _$scormSessionEndedWrapper = $container.find('.scorm-session-ended-wrapper');\n var scormSessionEndedMarkup = templateGenerator.generateScormSessionEndedMarkup(localizationStrings.getPlayerString(playerStringNames.scormSessionEndedText));\n _$scormSessionEndedWrapper.html(scormSessionEndedMarkup);\n $container.trigger(events.Modals.Open);\n};\nvar ScormSessionEndedView$1 = {\n create: ScormSessionEndedView\n};\n\nvar DEFAULT_PASSING_SCORE = 80;\nvar DEFAULT_VIDEO_WATCH_PERCENT_FOR_COMPLETE = 1;\nvar SCORM_NAV_CONTAINER_HEIGHT = '44px'; // note this should match the LESS var @scorm-ui-bar-height\n\n/**\n * @memberof TSC\n * @class scormController\n * @static\n * @classdesc Scorm Controller\n */\nvar scormController = function scormController() {\n var _$container = null;\n var _scormNavigationBarView = null;\n var _scormConfirmCompleteModalView = null;\n var _minimumScoreToPass = DEFAULT_PASSING_SCORE;\n var _minimumViewPercentageToCompleteLesson = DEFAULT_VIDEO_WATCH_PERCENT_FOR_COMPLETE;\n var _scormApiWrapper;\n var _isDisposed;\n var _initialized;\n var _scormModel;\n var _quizModel = null;\n var _sessionStartTimeInMilliseconds = 0;\n var _preventWindowClose = true;\n var _ignoreFailedToSuspendError = false;\n var _pendingScoExitValue = null;\n var _scoSessionHasEnded = false;\n var initializeInternalState = function initializeInternalState() {\n _$container = null;\n _scormNavigationBarView = null;\n _scormConfirmCompleteModalView = null;\n _scormApiWrapper = ScormApiWrapper$1.create();\n _isDisposed = false;\n _initialized = false;\n _scormModel = ScormDataModel$1.create();\n _sessionStartTimeInMilliseconds = 0;\n _preventWindowClose = true;\n _ignoreFailedToSuspendError = false;\n _pendingScoExitValue = null;\n _scoSessionHasEnded = false;\n };\n var scoHasQuiz = function scoHasQuiz() {\n return _quizModel !== null;\n };\n var scormSessionHasUnfinishedQuiz = function scormSessionHasUnfinishedQuiz() {\n return scoHasQuiz() && _scormModel.passingStatus === scormConstants.status.unknown;\n };\n var canSuspendScormSession = function canSuspendScormSession() {\n return !scoHasQuiz() || _quizModel.reportMethod === reportType.NONE || _quizModel.reportMethod === reportType.SCORM;\n };\n var submitMinMaxScoreValuesToScormApi = function submitMinMaxScoreValuesToScormApi() {\n if (_scormApiWrapper.apiVersion === scormConstants.versions.SCORM_1_2) {\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiScoreMin, scormConstants.assessment.minScore.toString());\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiScoreMax, scormConstants.assessment.maxScore.toString());\n } else {\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiScoreMin, scormConstants.assessment.minScore);\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiScoreMax, scormConstants.assessment.maxScore);\n }\n _scormApiWrapper.apiCall(scormConstants.fn.commit);\n };\n var submitScoreToScormApi = function submitScoreToScormApi() {\n if (_scormApiWrapper.apiVersion === scormConstants.versions.SCORM_1_2) {\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiScoreRaw, _scormModel.quizPercentageCorrectAsString);\n } else {\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiScoreRaw, _scormModel.quizPercentageCorrect);\n }\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiScoreScaled, _scormModel.quizPercentageCorrect / scormConstants.assessment.scoreNormalizationDivider);\n _scormApiWrapper.apiCall(scormConstants.fn.commit);\n };\n var getSuspendedDataFromAPI = function getSuspendedDataFromAPI() {\n var suspendedData = _scormApiWrapper.apiCall(scormConstants.fn.getValue, scormConstants.dataModelID.cmiSuspendData);\n _scormModel.parseSuspendedDataString(suspendedData);\n };\n var getSuspendData = function getSuspendData() {\n if (_quizModel) {\n _scormModel.quizModelSnapshot = _quizModel.getSnapShot();\n }\n _scormModel.videoAnalyticsSnapshot = videoAnalytics.getVideoSegmentSnapShot();\n return _scormModel.getSuspendedDataString();\n };\n var getSessionTimeValueByApiVersion = function getSessionTimeValueByApiVersion() {\n var sessionTimeInMilliseconds = window.performance.now() - _sessionStartTimeInMilliseconds;\n var sessionTimeInSeconds = Math.round(sessionTimeInMilliseconds / 1000);\n if (_scormApiWrapper.apiVersion === scormConstants.versions.SCORM_1_2) {\n return timeFormatter.formatTimeForCmiTimespan(sessionTimeInSeconds);\n }\n return timeFormatter.formatTimeAsTimeInterval(sessionTimeInSeconds);\n };\n var scoObjectiveHasBeenCompleted = function scoObjectiveHasBeenCompleted() {\n return _scormModel.percentageComplete >= _minimumViewPercentageToCompleteLesson && !scormSessionHasUnfinishedQuiz();\n };\n var shouldSubmitQuizScoreToApi = function shouldSubmitQuizScoreToApi() {\n return _quizModel && _scormModel.completionStatus === scormConstants.status.completed && _scormModel.quizCompletionStatus === scormConstants.status.completed && _quizModel.totalNumberOfGradedQuestionSets > 0;\n };\n var endScormSession = function endScormSession() {\n if (!_scoSessionHasEnded) {\n // need to mark this ended upfront\n _scoSessionHasEnded = true;\n if (_scormModel.percentageComplete >= _minimumViewPercentageToCompleteLesson) {\n _scormModel.completionStatus = scormConstants.status.completed;\n }\n var timeInSecondsAsString = videoAnalytics.getCurrentPlayTime().toString();\n _pendingScoExitValue = scormConstants.exitStates.complete;\n var scoCompletionStatusValue = _scormModel.completionStatus;\n var scoSuccessStatusValue;\n\n // SCORM 1.2 when video has quiz and not answered all questions complete status will be 'incomplete'\n // This is because SCORM 1.2 does not have a separate api value for pass / fail success\n if (_scormApiWrapper.apiVersion === scormConstants.versions.SCORM_1_2 && scormSessionHasUnfinishedQuiz()) {\n scoCompletionStatusValue = scormConstants.status.incomplete;\n }\n\n // Suspend SCO (Enables bookmarking feature) when viewer has not watched all the required video or they have not answered all the quiz questions if they exist\n if (canSuspendScormSession() && (_scormModel.completionStatus !== scormConstants.status.completed || scormSessionHasUnfinishedQuiz())) {\n _pendingScoExitValue = scormConstants.exitStates.suspend;\n }\n\n // If SCO attempt is complete and there is a quiz make sure we write the score out regardless if viewer has finished quiz\n if (_pendingScoExitValue === scormConstants.exitStates.complete) {\n if (scoHasQuiz()) {\n submitScore(_scormModel.quizPercentageCorrect, true);\n } else {\n _scormModel.passingStatus = scormConstants.status.passed;\n }\n }\n\n // SCORM 1.2 completionStatus value can be 'incomplete', 'passed' or 'failed'\n // SCORM 1.2 does not have a key to store an independent success status.\n if (_scormApiWrapper.apiVersion === scormConstants.versions.SCORM_1_2 && scoHasQuiz() && _scormModel.passingStatus !== scormConstants.status.unknown && scoCompletionStatusValue === scormConstants.status.completed) {\n scoCompletionStatusValue = _scormModel.passingStatus;\n scoSuccessStatusValue = '';\n } else {\n scoSuccessStatusValue = _scormModel.passingStatus;\n }\n var suspendedData = _pendingScoExitValue === scormConstants.exitStates.suspend ? getSuspendData() : '';\n var suspendSuccess = _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiSuspendData, suspendedData);\n\n // SCORM spec says boolean is returned, but in testing it is a boolean as a string. So testing for both in case a LMS returns a boolean.\n if (typeof suspendSuccess === 'string' && suspendSuccess.toLowerCase() === 'false' || suspendSuccess === false) {\n _pendingScoExitValue = scormConstants.exitStates.complete;\n if (!_ignoreFailedToSuspendError) {\n _scormConfirmCompleteModalView = ScormConfirmCompleteModalView$1.create(_$container, {\n canResumeVideo: true,\n failedToSaveSuspendedData: true\n });\n _scoSessionHasEnded = false;\n return false;\n }\n }\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiSessionTime, getSessionTimeValueByApiVersion());\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiProgressMeasure, _scormModel.percentageComplete);\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiLocation, timeInSecondsAsString);\n if (shouldSubmitQuizScoreToApi()) {\n submitScoreToScormApi();\n }\n if (_scormModel.passingStatus !== scormConstants.status.completed) {\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiSuccessStatus, scoSuccessStatusValue);\n }\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiCompletionStatus, scoCompletionStatusValue);\n _scormApiWrapper.apiCall(scormConstants.fn.commit);\n }\n return true;\n };\n var terminateScormSession = function terminateScormSession() {\n _initialized = false;\n _isDisposed = true;\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiExit, _pendingScoExitValue);\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.adlNavRequest, scormConstants.navRequestStates.exitAll);\n _scormApiWrapper.apiCall(scormConstants.fn.terminate);\n ScormSessionEndedView$1.create(_$container);\n };\n var createNavigationBarView = function createNavigationBarView() {\n _scormNavigationBarView = ScormNavigationBarView$1.create(_$container);\n _scormNavigationBarView.updateView(scoObjectiveHasBeenCompleted());\n _scormApiWrapper.getTitle().then(function (scormTitle) {\n _scormNavigationBarView.setTitle(scormTitle);\n });\n _$container[0].style.setProperty(cssVariables.reservedSizeScorm, SCORM_NAV_CONTAINER_HEIGHT);\n };\n var onExitSessionHandler = function onExitSessionHandler() {\n if (!scoObjectiveHasBeenCompleted()) {\n _scormConfirmCompleteModalView = ScormConfirmCompleteModalView$1.create(_$container, {\n canResumeVideo: canSuspendScormSession(),\n failedToSaveSuspendedData: false\n });\n } else {\n exitScormSession();\n }\n };\n var onExitSessionConfirmedHandler = function onExitSessionConfirmedHandler() {\n _scormConfirmCompleteModalView && _scormConfirmCompleteModalView.destroy();\n _scormConfirmCompleteModalView = null;\n exitScormSession();\n };\n var onExitSessionWithOutProgressConfirmed = function onExitSessionWithOutProgressConfirmed() {\n _ignoreFailedToSuspendError = true;\n onExitSessionConfirmedHandler();\n };\n var initView = function initView($container) {\n _$container = $container;\n if (_scormApiWrapper.apiVersion === scormConstants.versions.NOT_DETECTED) {\n _$container.trigger(events.SCORM.FailedToFindApi);\n return;\n }\n _$container.addClass(cssClasses.scormModule);\n _$container.on(events.SCORM.ExitSession, onExitSessionHandler);\n _$container.on(events.SCORM.ExitSessionConfirmed, onExitSessionConfirmedHandler);\n _$container.on(events.SCORM.ExitSessionWithOutProgressConfirmed, onExitSessionWithOutProgressConfirmed);\n createNavigationBarView();\n };\n var exitScormSession = function exitScormSession() {\n var endedSuccessStatus = endScormSession();\n if (endedSuccessStatus || _ignoreFailedToSuspendError) {\n terminateScormSession();\n _preventWindowClose = false;\n }\n };\n var preventPopUpWindowClose = function preventPopUpWindowClose() {\n try {\n if (window.top && window.top.opener) {\n window.top.onbeforeunload = function () {\n if (_preventWindowClose) {\n return '';\n }\n };\n }\n } catch (e) {\n // eslint-disable-line\n }\n };\n var initializeCompletionStatus = function initializeCompletionStatus() {\n var completionStatus = _scormApiWrapper.apiCall(scormConstants.fn.getValue, scormConstants.dataModelID.cmiCompletionStatus, true);\n if (completionStatus === scormConstants.status.unknown || completionStatus === scormConstants.status.notAttempted) {\n _scormModel.completionStatus = scormConstants.status.incomplete;\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiCompletionStatus, scormConstants.status.incomplete);\n } else {\n _scormModel.completionStatus = completionStatus;\n }\n };\n\n // as a backup, try and terminate the SCORM session if the user did not do it.\n // most likely this will not work with some browsers with some LMSs\n var tryAndTerminateSessionOnPageUnloadIfNeeded = function tryAndTerminateSessionOnPageUnloadIfNeeded() {\n if (!_isDisposed) {\n exitScormSession();\n }\n };\n var init = function init() {\n initializeInternalState();\n _sessionStartTimeInMilliseconds = window.performance.now();\n return _scormApiWrapper.init().then(function (apiResult) {\n if (apiResult === 'false') {\n console.error(_scormApiWrapper.getLastError());\n return;\n }\n preventPopUpWindowClose();\n getSuspendedDataFromAPI();\n initializeCompletionStatus();\n if (_quizModel !== null) {\n submitMinMaxScoreValuesToScormApi();\n }\n window.addEventListener('unload', tryAndTerminateSessionOnPageUnloadIfNeeded);\n _initialized = true;\n });\n };\n\n /**\n * Submit percentage of video watched to SCORM api\n * @function submitVideoWatchedPercentage\n * @memberof TSC.scormController\n * @param {Number} percentageWatched - Percentage of video watched from 0 - 1\n * @param {Number} timeInSeconds - Current time of video in seconds\n */\n var submitVideoWatchedPercentage = function submitVideoWatchedPercentage(percentageWatched, timeInSeconds) {\n if (!_initialized) {\n return;\n }\n // Note: the percentage reported via value reports how much was actually watched\n // and not the percentage of the timeline that the playhead is at.\n // So, for example, if you started up a video and then immediately seeked to\n // the 75% pt, the values reported here would still start from zero.\n _scormModel.percentageComplete = Math.max(0, Math.min(1, percentageWatched));\n _scormModel.videoTimeInSeconds = timeInSeconds;\n if (_scormModel.percentageComplete >= _minimumViewPercentageToCompleteLesson) {\n _scormModel.completionStatus = scormConstants.status.completed;\n }\n if (scoObjectiveHasBeenCompleted()) {\n if (_scormNavigationBarView) {\n _scormNavigationBarView.updateView(true);\n }\n if (playerConfiguration.completeScormOnRequirementsComplete) {\n endScormSession();\n }\n }\n };\n\n /**\n * Submit a score to the SCORM api\n * @memberof TSC.scormController\n * @function submitScore\n * @param {Number} currentScore - Score to report to Scorm\n * @param {Boolean} allQuestionsAnswered - Are all questions answered\n */\n var submitScore = function submitScore(currentScore, allQuestionsAnswered) {\n if (!_initialized) {\n return;\n }\n var scoreNeededToPass = _minimumScoreToPass;\n if (!isNaN(currentScore)) {\n var scoreNeededMultiplier = null;\n var maxPassingScoreValue = null;\n if (_scormApiWrapper.apiVersion === scormConstants.versions.SCORM_2004) {\n scoreNeededMultiplier = 100;\n maxPassingScoreValue = 1;\n } else if (_scormApiWrapper.apiVersion === scormConstants.versions.SCORM_1_2) {\n scoreNeededMultiplier = 1;\n maxPassingScoreValue = 100;\n }\n\n // lms defined mastery level will take precedence over sco defined mastery level\n var lmsPassingScore = _scormApiWrapper.apiCall(scormConstants.fn.getValue, scormConstants.dataModelID.cmiScaledPassingScore);\n if (lmsPassingScore !== null && lmsPassingScore !== '' && lmsPassingScore >= 0 && lmsPassingScore <= maxPassingScoreValue) {\n scoreNeededToPass = lmsPassingScore * scoreNeededMultiplier;\n }\n _scormModel.quizPercentageCorrect = currentScore;\n _scormModel.quizCompletionStatus = allQuestionsAnswered ? scormConstants.status.completed : scormConstants.status.incomplete;\n if (allQuestionsAnswered) {\n if (_quizModel.totalNumberOfGradedQuestionSets === 0) {\n _scormModel.passingStatus = scormConstants.status.completed;\n } else if (currentScore >= scoreNeededToPass) {\n _scormModel.passingStatus = scormConstants.status.passed;\n } else {\n _scormModel.passingStatus = scormConstants.status.failed;\n }\n } else {\n _scormModel.passingStatus = scormConstants.status.unknown;\n }\n if (scoObjectiveHasBeenCompleted()) {\n if (_scormNavigationBarView) {\n _scormNavigationBarView.updateView(true);\n }\n if (playerConfiguration.completeScormOnRequirementsComplete) {\n endScormSession();\n }\n }\n }\n };\n return Object.defineProperties({\n init: init,\n initView: initView,\n submitVideoWatchedPercentage: submitVideoWatchedPercentage,\n submitScore: submitScore\n }, {\n initialized: {\n get: function get() {\n return _initialized;\n }\n },\n initialPercentageComplete: {\n get: function get() {\n return _scormModel.percentageComplete;\n }\n },\n initialVideoAnalyticsSnapshot: {\n get: function get() {\n return _scormModel.videoAnalyticsSnapshot;\n }\n },\n initialQuizModelSnapshot: {\n get: function get() {\n return _scormModel.quizModelSnapshot;\n }\n },\n initialVideoTimeInSeconds: {\n get: function get() {\n return _scormModel.videoTimeInSecondsSnapshot;\n }\n },\n minScoreToPassLesson: {\n get: function get() {\n return _minimumScoreToPass;\n },\n set: function set(minimumScoreToPass) {\n _minimumScoreToPass = minimumScoreToPass;\n }\n },\n minViewPercentageToCompleteLesson: {\n get: function get() {\n return _minimumViewPercentageToCompleteLesson;\n },\n set: function set(minimumViewPercentageToCompleteLesson) {\n _minimumViewPercentageToCompleteLesson = minimumViewPercentageToCompleteLesson;\n }\n },\n quizModel: {\n get: function get() {\n return _quizModel;\n },\n set: function set(quizModel) {\n _quizModel = quizModel;\n }\n },\n scoObjectiveHasBeenCompleted: {\n get: scoObjectiveHasBeenCompleted\n },\n supportsResumeSession: {\n get: canSuspendScormSession\n }\n });\n};\nvar scormController$1 = scormController();\n\nvar quizServiceErrorIds = Object.freeze({\n badDefinition: 'bad_quiz_definition'\n});\n\nvar CONTROL_BAR_HEIGHT = 48;\nvar BOTTOM_PADDING = 14;\n\n/**\n * @memberof TSC\n * @class QuizController\n * @classdesc Quiz Controller manages questions state and views.\n * @param {jQuery} $container - Smart Player main container jquery element\n * @param {MediaView} mediaView - Media view for current media. Created by MediaViewFactory.\n * @param {TSC.Quiz} quizModel\n * @param {TSC.BeforeAfterPlayControlsView} beforeAfterPlayControlsView\n * @param {boolean} enforceLinearAssessment\n *\n */\nvar QuizController = function QuizController($container, mediaView, quizModel, beforeAfterPlayControlsView, enforceLinearAssessment) {\n var hasQuiz = !!quizModel;\n if (!hasQuiz) {\n throw new Error('Attempted to create quiz controller with no quiz model');\n }\n var _quizSetupView = null;\n var _currentView = null;\n var _quizModel = null;\n var _retrySubmissionMessageDisplayBar = null;\n var _quizOutOfDateMessageView = null;\n var _quizBadDefinitionMessageView = null;\n var _progressTracker = null;\n var _numberQuestionSets = 0;\n var _currentQuestionSetIndex = 0;\n var _bottomOffset = 0;\n var _pointAt = null;\n var _quizEnabled = true;\n var _quizReady = false;\n var _mediaIsImage = mediaView.type === mediaViewType.image;\n var _lastStatusMessage = '';\n var _questionGrader;\n var _quizUserDetails;\n var _shouldReportViewedOnPageLoad = mediaView.type === mediaViewType.image;\n var _quizSetupPromise;\n var _resolveQuizSetup;\n var getMediaElement = function getMediaElement() {\n return mediaView.mediaElement;\n };\n var submitScoreToScormController = function submitScoreToScormController() {\n if (_quizModel.useScorm) {\n // Built in Scorm support\n if (scormController$1.initialized) {\n scormController$1.submitScore(_quizModel.getScormScore(), _quizModel.isLastQuestionComplete());\n // Legacy Scorm support\n } else if (typeof window.userSubmitToLMS !== 'undefined') {\n window.userSubmitToLMS(_quizModel.getScormScore());\n }\n }\n };\n var onNetworkRetryEvent = function onNetworkRetryEvent() {\n $container.trigger(events.Quizzing.ShowSubmissionRetryMessage);\n };\n var completeQuestionSetEventDispatch = function completeQuestionSetEventDispatch() {\n $container.trigger(events.Quizzing.Complete);\n hotkeyService.enableHotkeys();\n };\n var questionSetCompleteHandler = function questionSetCompleteHandler() {\n _currentQuestionSetIndex = -1;\n _currentView.removeView(true);\n _currentView = null;\n completeQuestionSetEventDispatch();\n };\n var dispatchStatusEvent = function dispatchStatusEvent(ioMessage) {\n _lastStatusMessage = ioMessage;\n $container.trigger(events.Quizzing.Status, {\n message: ioMessage\n });\n };\n var onContinueHandler = function onContinueHandler() {\n $container.off(events.Quizzing.CloseQuestionSetView, onContinueHandler);\n questionSetCompleteHandler();\n };\n var createQuestionSetFeedbackView = function createQuestionSetFeedbackView(needOverlay) {\n var questionSetView = QuestionSetView$1.create($container, _quizModel.questionSets[_currentQuestionSetIndex], needOverlay, _mediaIsImage, true, mediaView.currentTime);\n $container.on(events.Quizzing.CloseQuestionSetView, onContinueHandler);\n _currentView = questionSetView;\n _currentView.showView();\n };\n var continueVideoHandler = function continueVideoHandler() {\n $(reviewAnswersConfirmationView.getContinueControlRef()).off('click', continueVideoHandler);\n $(reviewAnswersConfirmationView.getReviewControlRef()).off('click', initQuestionSetFeedback);\n reviewAnswersConfirmationView.removeView(true);\n _currentView = null;\n completeQuestionSetEventDispatch();\n };\n var initQuestionSetFeedback = function initQuestionSetFeedback() {\n $(reviewAnswersConfirmationView.getContinueControlRef()).off('click', continueVideoHandler);\n $(reviewAnswersConfirmationView.getReviewControlRef()).off('click', initQuestionSetFeedback);\n reviewAnswersConfirmationView.removeView(false);\n _currentView = null;\n createQuestionSetFeedbackView();\n };\n var createReviewAnswersConfirmationView = function createReviewAnswersConfirmationView() {\n var numberCorrectText = null;\n var percentCorrectText = null;\n var numberIncorrectText = null;\n var percentIncorrectText = null;\n var numberCorrect = 0;\n var numberIncorrect = 0;\n var numberUngradable = 0;\n var possibleCorrect = _quizModel.questionSets[_currentQuestionSetIndex].numberGradedQuestions;\n if (possibleCorrect > 0) {\n numberCorrect = _quizModel.questionSets[_currentQuestionSetIndex].numberCorrectQuestions;\n numberIncorrect = possibleCorrect - numberCorrect;\n numberUngradable = _quizModel.questionSets[_currentQuestionSetIndex].numberUngradedQuestions;\n numberCorrectText = localizationStrings.getPlayerString(playerStringNames.txtCorrect).replace('{{numberCorrect}}', numberCorrect);\n percentCorrectText = Math.round(100 * (numberCorrect / possibleCorrect)) + '%';\n numberIncorrectText = localizationStrings.getPlayerString(playerStringNames.txtIncorrect).replace('{{numberIncorrect}}', numberIncorrect);\n percentIncorrectText = Math.round(100 * (numberIncorrect / possibleCorrect)) + '%';\n }\n if (numberUngradable === 1) {\n questionSetReviewStatusView.setUngradeableDetails(numberUngradable + localizationStrings.getPlayerString(playerStringNames.accessBtnWasNotGraded));\n } else {\n questionSetReviewStatusView.setUngradeableDetails(numberUngradable + localizationStrings.getPlayerString(playerStringNames.accessBtnWereNotGraded));\n }\n var markup = reviewAnswersConfirmationView.getViewMarkup(numberCorrectText, percentCorrectText, numberIncorrectText, percentIncorrectText, localizationStrings.getPlayerString(playerStringNames.txtContinue), localizationStrings.getPlayerString(playerStringNames.txtReviewAnswer));\n\n // add view template\n $container.append(markup);\n _currentView = reviewAnswersConfirmationView;\n $(_currentView.getContinueControlRef()).on('click', continueVideoHandler);\n $(_currentView.getReviewControlRef()).on('click', initQuestionSetFeedback);\n\n // fade in view\n _currentView.showView();\n updateViewBottom();\n if (_pointAt !== null) {\n _currentView.pointAt(_pointAt);\n }\n };\n var createQuestionSetReviewStatusView = function createQuestionSetReviewStatusView() {\n var numberCorrect = _quizModel.questionSets[_currentQuestionSetIndex].numberCorrectQuestions;\n var possibleCorrect = _quizModel.questionSets[_currentQuestionSetIndex].numberGradedQuestions;\n var numberUngradable = _quizModel.questionSets[_currentQuestionSetIndex].numberUngradedQuestions;\n questionSetReviewStatusView.setGradeableDetails(numberCorrect + localizationStrings.getPlayerString(playerStringNames.accessBtnCorrectOutOf) + possibleCorrect + localizationStrings.getPlayerString(playerStringNames.accessBtnGradedQuestions));\n if (numberUngradable === 1) {\n questionSetReviewStatusView.setUngradeableDetails(numberUngradable + localizationStrings.getPlayerString(playerStringNames.accessBtnWasNotGraded));\n } else {\n questionSetReviewStatusView.setUngradeableDetails(numberUngradable + localizationStrings.getPlayerString(playerStringNames.accessBtnWereNotGraded));\n }\n var markup = questionSetReviewStatusView.getViewMarkup();\n $container.append(markup);\n _currentView = questionSetReviewStatusView;\n $(questionSetReviewStatusView.getHideAnswersControlRef()).on('click', hideQuizStatus);\n $(questionSetReviewStatusView.getShowAnswersControlRef()).on('click', initFeedbackFromReviewStatusView);\n questionSetReviewStatusView.showView();\n _currentView.updateViewPosition();\n };\n var initFeedbackFromReviewStatusView = function initFeedbackFromReviewStatusView() {\n $(questionSetReviewStatusView.getHideAnswersControlRef()).off('click', hideQuizStatus);\n $(questionSetReviewStatusView.getShowAnswersControlRef()).off('click', initFeedbackFromReviewStatusView);\n questionSetReviewStatusView.removeView(false);\n _currentView = null;\n createQuestionSetFeedbackView();\n };\n var hideQuizStatus = function hideQuizStatus() {\n $container.trigger(events.Quizzing.HideQuiz);\n _currentView.hideView();\n };\n var onRationaleActionHandler = function onRationaleActionHandler(e, data) {\n if (e.type === events.Quizzing.RationaleActionLocation) {\n urlService.openUrl(data.location, '_blank');\n } else if (e.type === events.Quizzing.RationaleActionJumpToTime) {\n $container.off(events.Quizzing.CloseQuestionSetView, onCloseQuestionSetView);\n $container.off(events.Quizzing.SubmitQuestionSet, onSubmit);\n $container.off(events.Quizzing.RationaleActionLocation, onRationaleActionHandler);\n $container.off(events.Quizzing.RationaleActionJumpToTime, onRationaleActionHandler);\n questionSetCompleteHandler();\n }\n };\n var onCloseQuestionSetView = function onCloseQuestionSetView() {\n $container.off(events.Quizzing.CloseQuestionSetView, onCloseQuestionSetView);\n $container.off(events.Quizzing.SubmitQuestionSet, onSubmit);\n $container.off(events.Quizzing.RationaleActionLocation, onRationaleActionHandler);\n $container.off(events.Quizzing.RationaleActionJumpToTime, onRationaleActionHandler);\n $container.trigger(events.Quizzing.Submitted);\n if (_quizModel.questionSets[_currentQuestionSetIndex].displayFeedback) {\n if (_mediaIsImage) {\n $container.trigger(events.Quizzing.TransitionImageQuizToAnswers);\n _currentView.removeView(true);\n createQuestionSetReviewStatusView();\n } else {\n _currentView.removeView(false);\n createReviewAnswersConfirmationView();\n }\n } else {\n questionSetCompleteHandler();\n }\n };\n var submitResults = function submitResults() {\n dispatchStatusEvent(localizationStrings.getPlayerString(playerStringNames.txtSubmittingAnswers));\n quizService.addEventListener(events.Network.Retrying, onNetworkRetryEvent);\n if (_quizModel.useQuizApi) {\n var data = _quizModel.getApiDataForQuestionSet(_currentQuestionSetIndex);\n return quizService.submitQuestionSet(data).then(function (results) {\n quizService.removeEventListener(events.Network.Retrying, onNetworkRetryEvent);\n $container.trigger(events.Quizzing.HideSubmissionRetryMessage);\n if (!_questionGrader.doesLocalGrading && results === undefined) {\n return Promise$1.reject('Failed to get results for question set submission');\n }\n return results;\n });\n }\n return Promise$1.resolve();\n };\n var gradeResults = function gradeResults(results) {\n if (!_questionGrader.doesLocalGrading && results) {\n _questionGrader.processQuestionSetResults(_quizModel.questionSets[_currentQuestionSetIndex], results);\n } else {\n _questionGrader.gradeQuestionSet(_quizModel.questionSets[_currentQuestionSetIndex]);\n }\n return Promise$1.resolve();\n };\n var onGradingComplete = function onGradingComplete() {\n if (_quizModel.useScorm) {\n submitScoreToScormController();\n }\n if (_quizModel.questionSets[_currentQuestionSetIndex].usesRationale) {\n $container.trigger(events.Quizzing.HideLoadingMessage);\n _currentView.showFeedbackForCurrentQuestion();\n } else {\n onCloseQuestionSetView();\n }\n };\n var onSubmit = function onSubmit() {\n submitResults().then(gradeResults).then(onGradingComplete)[\"catch\"](apiErrorEventHandler);\n };\n var createQuestionSetView = function createQuestionSetView(needOverlay) {\n var questionSetView = QuestionSetView$1.create($container, _quizModel.questionSets[_currentQuestionSetIndex], needOverlay, _mediaIsImage, false, mediaView.currentTime);\n if (_quizModel.questionSets[_currentQuestionSetIndex].usesRationale) {\n $container.on(events.Quizzing.SubmitQuestionSet, onSubmit);\n $container.on(events.Quizzing.CloseQuestionSetView, onCloseQuestionSetView);\n $container.on(events.Quizzing.RationaleActionLocation, onRationaleActionHandler);\n $container.on(events.Quizzing.RationaleActionJumpToTime, onRationaleActionHandler);\n } else {\n $container.on(events.Quizzing.SubmitQuestionSet, onSubmit);\n }\n _currentView = questionSetView;\n _currentView.showView();\n $container.trigger(events.Quizzing.ShowQuestionSetView);\n return questionSetView;\n };\n var reviewHandler = function reviewHandler() {\n _currentView.removeView(true);\n _currentView = null;\n $container.trigger(events.Quizzing.Review);\n hotkeyService.enableHotkeys();\n };\n var onViewRemove = function onViewRemove() {\n if (_currentQuestionSetIndex < _numberQuestionSets) {\n createQuestionSetView(false);\n }\n };\n var confirmHandler = function confirmHandler() {\n _currentView.removeView();\n _currentView = null;\n onViewRemove();\n };\n var createConfirmView = function createConfirmView() {\n var reviewText;\n if (enforceLinearAssessment) {\n reviewText = localizationStrings.getPlayerString(playerStringNames.txtReview);\n } else {\n reviewText = localizationStrings.getPlayerString(playerStringNames.txtContinue);\n }\n var markup = questionSetConfirmationView.getViewMarkup(reviewText, localizationStrings.getPlayerString(playerStringNames.txtAnswerQuestion));\n $container.append(markup);\n _currentView = questionSetConfirmationView;\n updateViewBottom();\n if (_quizModel.hideReplay === true) {\n $(questionSetConfirmationView.getReviewControlRef()).hide();\n }\n $(questionSetConfirmationView.getReviewControlRef()).on('click', reviewHandler);\n $(questionSetConfirmationView.getConfirmControlRef()).on('click', confirmHandler);\n questionSetConfirmationView.showView();\n questionSetConfirmationView.updateViewPosition();\n $container.trigger(events.Quizzing.ShowStartQuizPrompt);\n };\n var destroyQuizSetupView = function destroyQuizSetupView() {\n if (_quizSetupView) {\n $container.off(events.Quizzing.BeginClicked, beginQuizHandler);\n $container.off(events.Quizzing.SkipClicked, skipQuizHandler);\n _quizSetupView.destroy();\n if (_quizSetupView.$view) {\n _quizSetupView.$view.remove();\n }\n _quizSetupView = null;\n }\n };\n var beginQuizHandler = function beginQuizHandler(e, eventData) {\n e.preventDefault();\n destroyQuizSetupView();\n hotkeyService.enableHotkeys();\n if (eventData && eventData.firstName) {\n _quizUserDetails = {\n firstName: eventData.firstName,\n lastName: eventData.lastName,\n email: eventData.email\n };\n }\n _resolveQuizSetup();\n if (_shouldReportViewedOnPageLoad) {\n init();\n } else {\n $container.trigger(events.Quizzing.Begin);\n }\n };\n var skipQuizHandler = function skipQuizHandler(e) {\n e.preventDefault();\n _quizEnabled = false;\n destroyQuizSetupView();\n _resolveQuizSetup();\n if (!_shouldReportViewedOnPageLoad) {\n $container.trigger(events.Quizzing.Skip);\n }\n };\n var createSetupView = function createSetupView() {\n beforeAfterPlayControlsView && beforeAfterPlayControlsView.hideVideoClickToPlayLink();\n\n // disable the TOC hotkey, it interferes\n hotkeyService.disableHotkeys();\n _quizSetupView = QuizSetupView$1.create($container);\n $container.on(events.Quizzing.BeginClicked, beginQuizHandler);\n if (_quizModel.allowSkipQuiz && !playerConfiguration.getDisableContinueWithoutQuestions()) {\n $container.on(events.Quizzing.SkipClicked, skipQuizHandler);\n } else {\n _quizSetupView.hideSkipButton();\n }\n $container.trigger(events.Quizzing.ShowQuizSetup);\n };\n var updateViewBottom = function updateViewBottom() {\n if (_currentView && _currentView.setBottomOffset) {\n _currentView.setBottomOffset(_bottomOffset);\n _currentView.updateViewPosition();\n }\n };\n var startQuizApiInstance = function startQuizApiInstance(firstName, lastName, email) {\n if (_quizModel) {\n $container.trigger(events.Quizzing.ShowQuizBar);\n return quizService.startQuizInstance(_quizModel, firstName, lastName, email, playerConfiguration).then(function (responseData) {\n _quizModel.quizInstanceID = responseData.quizInstanceId;\n $container.trigger(events.Quizzing.CreatedInstance);\n })[\"catch\"](function (data) {\n apiErrorEventHandler();\n return Promise$1.reject(data);\n });\n }\n return Promise$1.resolve();\n };\n var apiErrorEventHandler = function apiErrorEventHandler(response) {\n _quizEnabled = false;\n $container.trigger(events.Quizzing.HideLoadingMessage);\n if (response && response.status === statusCodes.UnprocessableEntity) {\n var errorID = response.responseJSON && response.responseJSON.errorId ? response.responseJSON.errorId : null;\n if (errorID && errorID === quizServiceErrorIds.badDefinition) {\n $container.trigger(events.Quizzing.QuizBadDefinition);\n } else {\n $container.trigger(events.Quizzing.QuizIsOutOfDate);\n }\n } else {\n $container.trigger(events.Quizzing.Error);\n }\n };\n var displaySetupView = function displaySetupView() {\n return _quizModel && _quizModel.quizID && !_mediaIsImage && _quizEnabled && _quizModel.requireUserId && !playerConfiguration.getIsUserIdentified();\n };\n var gatherSetupIfNeeded = function gatherSetupIfNeeded() {\n if (displaySetupView()) {\n createSetupView();\n }\n };\n var getLastStatusMessage = function getLastStatusMessage() {\n return _lastStatusMessage;\n };\n var removeSubmissionRetryMessage = function removeSubmissionRetryMessage() {\n if (_retrySubmissionMessageDisplayBar === null) {\n return;\n }\n _retrySubmissionMessageDisplayBar.remove();\n _retrySubmissionMessageDisplayBar = null;\n };\n var showSubmissionRetryMessage = function showSubmissionRetryMessage() {\n if (_retrySubmissionMessageDisplayBar !== null) {\n return;\n }\n _retrySubmissionMessageDisplayBar = MessageBarView$1.create($container, messageBarType.info, localizationStrings.getPlayerString(playerStringNames.txtQuizErrorMessage));\n };\n var showQuizIsOutOfDateMessage = function showQuizIsOutOfDateMessage() {\n _quizOutOfDateMessageView = MessageBarView$1.create($container, messageBarType.warning, localizationStrings.getPlayerString(playerStringNames.txtQuizOutOfDateMessage), localizationStrings.getPlayerString(playerStringNames.txtQuizOutOfDateRefreshButtonText), function () {\n window.location.reload();\n });\n };\n var showQuizBadDefinitionMessage = function showQuizBadDefinitionMessage() {\n _quizBadDefinitionMessageView = MessageBarView$1.create($container, messageBarType.warning, localizationStrings.getPlayerString(playerStringNames.txtQuizBadDefinitionMessage));\n };\n var displayNextQuestionSet = function displayNextQuestionSet() {\n if (_currentQuestionSetIndex < _numberQuestionSets) {\n return createQuestionSetView(true);\n }\n };\n var hasMultipleQuestionSets = function hasMultipleQuestionSets() {\n return _numberQuestionSets > 1;\n };\n var hasQuizQuestions = function hasQuizQuestions() {\n return _numberQuestionSets > 0;\n };\n var findQuestionSet = function findQuestionSet(time) {\n var activeQuestionSetId = -1;\n var markerTime = -1;\n if (!playerConfiguration.ignoreQuizQuestions) {\n var markers = _quizModel.questionSetMarkerTimes;\n var numberMarkers = markers.length;\n for (var i = 0; i < numberMarkers; i++) {\n if (!markers[i].completed && (enforceLinearAssessment && markers[i].startTime <= time && !markers[i].canSeekPast || markers[i].rangeStart <= time && time <= markers[i].rangeEnd)) {\n activeQuestionSetId = markers[i].questionSetIndex;\n markerTime = markers[i].startTime;\n break;\n }\n }\n }\n return {\n id: activeQuestionSetId,\n markerTime: markerTime\n };\n };\n var findPrevMarkerTimeForMarker = function findPrevMarkerTimeForMarker(questionSetIndex) {\n return _quizModel.getPreviousMarkerTimeForMarker(questionSetIndex);\n };\n var updatePercentWatchedForQuestionSet = function updatePercentWatchedForQuestionSet(questionSetId, percentWatched) {\n _quizModel.questionSets[questionSetId].percentOfVideoSegmentWatched = percentWatched;\n };\n var displayConfirm = function displayConfirm(questionSetIndex) {\n if (!_currentView) {\n _currentQuestionSetIndex = questionSetIndex;\n hotkeyService.disableHotkeys();\n\n // no need to display confirm view if we are in the beginning of the video and force linear is on or if we are in the middle of a rationale quiz\n if (enforceLinearAssessment && _quizModel.questionSets[questionSetIndex].startTime <= _quizModel.minMarkerTimeDiff || _quizModel.questionSets[questionSetIndex].inProgress) {\n createQuestionSetView(true);\n } else {\n createConfirmView();\n }\n }\n };\n var showQuiz = function showQuiz() {\n if (_currentView === null) {\n createQuestionSetView(true);\n } else {\n _currentView.showView();\n }\n };\n var hideQuiz = function hideQuiz() {\n _currentView.hideView();\n };\n var pointViewAt = function pointViewAt(xPos) {\n _pointAt = xPos;\n if (_currentView) {\n if (_currentView.pointAt) {\n _currentView.pointAt(_pointAt);\n }\n updateViewBottom();\n }\n };\n var setViewControlBarOffset = function setViewControlBarOffset(bottom) {\n _bottomOffset = bottom + BOTTOM_PADDING;\n updateViewBottom();\n };\n var setQuestionGrader = function setQuestionGrader(grader) {\n switch (grader) {\n case questionGrader.FATHOM:\n {\n _questionGrader = fathomGrader;\n break;\n }\n case questionGrader.XMP:\n {\n _questionGrader = xmpGrader;\n break;\n }\n default:\n throw new Error('Grader type not recognized');\n }\n };\n var startTrackingProgress = function startTrackingProgress() {\n if (_shouldReportViewedOnPageLoad) {\n return Promise$1.resolve();\n }\n return quizService.getAnalyticsRate().then(function (results) {\n _progressTracker = QuizProgressTracker$1.create(getMediaElement(), results.analyticsSampleRate, results.reportingRate);\n return Promise$1.resolve();\n });\n };\n var forceProgressUpdate = function forceProgressUpdate(sampleRateInMilliseconds, segmentsCompleted) {\n return quizService.sendProgress(sampleRateInMilliseconds, segmentsCompleted);\n };\n var onMediaFirstPlayerHandler = function onMediaFirstPlayerHandler() {\n init();\n };\n var onMediaControlsReady = function onMediaControlsReady() {\n // do not listen to another media controls ready event\n $container.off(events.Player.MediaControlsReady, onMediaControlsReady);\n setViewControlBarOffset(CONTROL_BAR_HEIGHT);\n if (!_shouldReportViewedOnPageLoad && !_mediaIsImage && _quizModel.useQuizApi && _quizModel.requireUserId && !playerConfiguration.getIsUserIdentified() && !playerConfiguration.ignoreQuizQuestions) {\n createSetupView();\n } else {\n _resolveQuizSetup();\n }\n };\n var bindToEvents = function bindToEvents() {\n $container.on(events.Media.FirstPlay, onMediaFirstPlayerHandler);\n $container.on(events.Player.MediaControlsReady, onMediaControlsReady);\n $container.on(events.Quizzing.ShowSubmissionRetryMessage, showSubmissionRetryMessage);\n $container.on(events.Quizzing.HideSubmissionRetryMessage, removeSubmissionRetryMessage);\n $container.on(events.Quizzing.QuizIsOutOfDate, showQuizIsOutOfDateMessage);\n $container.on(events.Quizzing.QuizBadDefinition, showQuizBadDefinitionMessage);\n };\n var destroy = function destroy() {\n destroyQuizSetupView();\n if (_currentView) {\n _currentView.removeView(true);\n _currentView = null;\n }\n quizService.abortPendingRequests();\n if ($container) {\n $container.off(events.Media.FirstPlay, onMediaFirstPlayerHandler);\n $container.off(events.Player.MediaControlsReady, onMediaControlsReady);\n $container.off(events.Quizzing.ShowSubmissionRetryMessage, showSubmissionRetryMessage);\n $container.off(events.Quizzing.HideSubmissionRetryMessage, removeSubmissionRetryMessage);\n $container.off(events.Quizzing.QuizIsOutOfDate, showQuizIsOutOfDateMessage);\n $container.off(events.Quizzing.QuizBadDefinition, showQuizBadDefinitionMessage);\n $container.off(events.Quizzing.SubmitQuestionSet, onSubmit);\n $container.off(events.Quizzing.CloseQuestionSetView, onCloseQuestionSetView);\n $container.off(events.Quizzing.RationaleActionLocation, onRationaleActionHandler);\n $container.off(events.Quizzing.RationaleActionJumpToTime, onRationaleActionHandler);\n }\n _progressTracker && _progressTracker.destroy();\n removeSubmissionRetryMessage();\n _quizOutOfDateMessageView && _quizOutOfDateMessageView.remove();\n _quizBadDefinitionMessageView && _quizBadDefinitionMessageView.remove();\n _quizModel = null;\n _numberQuestionSets = 0;\n _currentQuestionSetIndex = 0;\n _bottomOffset = 0;\n _pointAt = null;\n _quizEnabled = true;\n _quizReady = false;\n _mediaIsImage = false;\n _lastStatusMessage = '';\n _questionGrader = null;\n _quizSetupPromise = null;\n };\n var init = function init() {\n if (_quizModel.useQuizApi) {\n var startInstancePromise;\n if (_quizUserDetails) {\n startInstancePromise = startQuizApiInstance(_quizUserDetails.firstName, _quizUserDetails.lastName, _quizUserDetails.email);\n } else {\n startInstancePromise = startQuizApiInstance();\n }\n startInstancePromise[\"catch\"](function (e) {\n log.logException('Failed to initialize quiz - ' + e);\n });\n } else {\n $container.trigger(events.Quizzing.CreatedInstance);\n }\n _quizReady = true;\n };\n var simpleInit = function simpleInit() {\n if (!displaySetupView()) {\n startQuizApiInstance()[\"catch\"](function (e) {\n log.logException('Failed to initialize quiz - ' + e);\n });\n }\n };\n var populateQuizModel = function populateQuizModel(suspendedQuizData) {\n _quizModel.populateQuiz(suspendedQuizData);\n submitScoreToScormController();\n };\n var setQuizModel = function setQuizModel(newQuizModel) {\n _quizModel = newQuizModel;\n _numberQuestionSets = _quizModel.numberQuestionSets;\n scormController$1.quizModel = _quizModel;\n };\n\n // begin initialization of quiz controller\n _quizSetupPromise = new Promise$1(function (resolveQuizSetup) {\n _resolveQuizSetup = resolveQuizSetup;\n });\n setQuizModel(quizModel);\n bindToEvents();\n if (playerConfiguration.getFathomId()) {\n setQuestionGrader(questionGrader.FATHOM);\n } else {\n setQuestionGrader(questionGrader.XMP);\n }\n if (_shouldReportViewedOnPageLoad) {\n gatherSetupIfNeeded();\n simpleInit();\n forceProgressUpdate(100, [0]);\n }\n var fullControlsAreShownOnPageLoad = playerConfiguration.getPreload() === preloadOptions.metadata && mediaView.type !== mediaViewType.youtube;\n if (fullControlsAreShownOnPageLoad) {\n onMediaControlsReady();\n }\n return Object.defineProperties({\n destroy: destroy,\n hasMultipleQuestionSets: hasMultipleQuestionSets,\n getLastStatusMessage: getLastStatusMessage,\n displayNextQuestionSet: displayNextQuestionSet,\n findQuestionSet: findQuestionSet,\n findPrevMarkerTimeForMarker: findPrevMarkerTimeForMarker,\n updatePercentWatchedForQuestionSet: updatePercentWatchedForQuestionSet,\n displayConfirm: displayConfirm,\n showQuiz: showQuiz,\n hideQuiz: hideQuiz,\n pointViewAt: pointViewAt,\n startTrackingProgress: startTrackingProgress,\n forceProgressUpdate: forceProgressUpdate,\n populateQuizModel: populateQuizModel\n }, {\n quizIsSetupPromise: {\n get: function get() {\n return _quizSetupPromise;\n }\n },\n quizEnabled: {\n get: function get() {\n return _quizEnabled;\n },\n set: function set(value) {\n _quizEnabled = value;\n }\n },\n quizReady: {\n get: function get() {\n return _quizReady;\n }\n },\n hasQuiz: {\n get: function get() {\n return _quizModel && _quizModel.quizID;\n }\n },\n viewIsOpen: {\n get: function get() {\n return _currentView !== null;\n }\n },\n mediaIsImage: {\n set: function set(mediaIsImage) {\n _mediaIsImage = mediaIsImage;\n },\n get: function get() {\n return _mediaIsImage;\n }\n },\n quizModel: {\n get: function get() {\n return _quizModel;\n },\n set: setQuizModel\n },\n hasQuizQuestions: {\n get: hasQuizQuestions\n }\n });\n};\nvar QuizController$1 = {\n /**\n * Factory method that returns a new QuizController.\n * @function create\n * @memberof TSC.QuizController\n * @static\n * @param {jQuery} $container - Smart Player main container jquery element\n * @param {MediaView} mediaView - Media view for current media. Created by MediaViewFactory.\n * @param {TSC.Quiz} quizModel\n * @param {TSC.BeforeAfterPlayControlsView} beforeAfterPlayControlsView\n * @param {boolean} enforceLinearAssessment\n * @return new QuizController instance\n */\n create: QuizController\n};\n\nvar SEEK_DELAY_IN_MILLISECONDS = 100;\n\n/**\n * @memberof TSC\n * @class QuizEventController\n * @classdesc Controller for managing quiz events\n * @param {jQuery} $container - Smart Player main container jquery element\n * @param {MediaView} mediaView - Media view for current media. Created by MediaViewFactory.\n * @param {TSC.QuizController} quizController\n * @param {TSC.ProgressBarControlView} progressBarControlView\n * @param {boolean} enforceLinearAssessment\n * @param {TSC.IoOverlayView} ioOverlayView - IO Overlay View used to show the user messages\n *\n */\nvar QuizEventController = function QuizEventController($container, mediaView, quizController, progressBarControlView, enforceLinearAssessment, ioOverlayView) {\n if (!quizController) {\n throw new Error('Attempted to create quiz event controller with no quiz controller');\n }\n var _lastQuestionSetId;\n var _lastQuestionSetMarkerTime;\n var _quizzingErrorMessageBarView;\n var _isScrubbing = false;\n var updateQuizPointAtPosition = function updateQuizPointAtPosition() {\n if (!progressBarControlView) {\n return;\n }\n var playerXOffset = $container.offset().left;\n var markerXPosition = progressBarControlView.getXPositionForQuestionSetMarker(_lastQuestionSetId);\n var pointAtXPosition = markerXPosition - playerXOffset;\n quizController.pointViewAt(pointAtXPosition);\n };\n var seekToTime = function seekToTime(seekTime, playAfterSeek) {\n var safeSeekTime = videoApiUtils.getSafeSeekTime(mediaView.mediaElement, seekTime);\n $container.trigger(events.Media.SeekToTime, {\n time: safeSeekTime,\n playAfterSeek: playAfterSeek\n });\n };\n var updateQuizzing = function updateQuizzing(currentTimeInMilliseconds) {\n if (!quizController.quizEnabled || _isScrubbing) {\n return;\n }\n var numberMillisecondsInSecond = 1000;\n var qs = quizController.findQuestionSet(currentTimeInMilliseconds);\n if (qs.id < 0) {\n _lastQuestionSetId = -1;\n return;\n }\n if (_lastQuestionSetId !== qs.id) {\n viewHelper.saveActiveElement();\n // make sure control bar is shown up and auto hide is disabled.\n $container.trigger(events.Controls.Disable);\n $container.trigger(events.Controls.HideToc);\n _lastQuestionSetId = qs.id;\n _lastQuestionSetMarkerTime = qs.markerTime / numberMillisecondsInSecond;\n $container.playerState.pausedForQuiz = true;\n mediaView.mediaElement.pause();\n $container.trigger(events.Quizzing.Paused);\n\n // Try pausing and seeking YouTube until player confirms the video is in the correct position\n // Fixes issues with YouTube video playing in the background\n if (mediaView.type === mediaViewType.youtube) {\n var intervalId = setInterval(function () {\n mediaView.mediaElement.pause();\n seekToTime(_lastQuestionSetMarkerTime, false);\n if (mediaView.mediaElement.currentTime.toFixed(4) === _lastQuestionSetMarkerTime.toFixed(4) && mediaView.mediaElement.paused) {\n clearInterval(intervalId);\n }\n }, SEEK_DELAY_IN_MILLISECONDS);\n } else {\n setTimeout(function () {\n seekToTime(_lastQuestionSetMarkerTime, false);\n }, SEEK_DELAY_IN_MILLISECONDS);\n }\n quizController.displayConfirm(qs.id);\n updateQuizPointAtPosition();\n if (videoAnalytics.isEnabled()) {\n if (!isNaN(qs.markerTime) && videoAnalytics.isPercentWatchedInitialized()) {\n videoAnalytics.markTimeWatched(qs.markerTime);\n } else {\n log.logMessage('Player-view: videoAnalytics percent watched not initialized, or Quiz Marker time is NaN (' + qs.markerTime + ')');\n }\n var percentWatched = videoAnalytics.getPercentageWatchedForVideoSegment(quizController.findPrevMarkerTimeForMarker(qs.id), qs.markerTime);\n quizController.updatePercentWatchedForQuestionSet(_lastQuestionSetId, percentWatched);\n }\n }\n };\n var quizEventHandler = function quizEventHandler(event, data) {\n switch (event.type) {\n case events.Quizzing.ShowStartQuizPrompt:\n case events.Quizzing.ShowQuestionSetView:\n $container.trigger(events.Quizzing.MaximizeUI);\n $container.trigger(events.Quizzing.UIVisible);\n break;\n case events.Quizzing.Complete:\n case events.Quizzing.Review:\n $container.trigger(events.Quizzing.UIHidden);\n $container.trigger(events.Controls.Enable);\n viewHelper.focusPreviousElement();\n progressBarControlView.updateQuizMarkers();\n $container.playerState.pausedForQuiz = false;\n if (event.type === events.Quizzing.Review && enforceLinearAssessment) {\n var prevMarkerTimeInSeconds = quizController.findPrevMarkerTimeForMarker(_lastQuestionSetId) / 1000;\n _lastQuestionSetId = -1;\n seekToTime(prevMarkerTimeInSeconds, true);\n } else {\n mediaView.mediaElement.play();\n }\n break;\n case events.Quizzing.Begin:\n progressBarControlView.updateQuizMarkers();\n $container.trigger(events.Quizzing.QuizSetupComplete);\n break;\n case events.Quizzing.Skip:\n progressBarControlView.setShouldRespectQuizMarkers(false);\n $container.trigger(events.Quizzing.QuizSetupComplete);\n break;\n case events.Quizzing.Error:\n _quizzingErrorMessageBarView = MessageBarView$1.create($container, messageBarType.info, localizationStrings.getPlayerString(playerStringNames.txtVideoQuizNetworkErrorMessage), localizationStrings.getPlayerString(playerStringNames.close));\n break;\n case events.Quizzing.Status:\n ioOverlayView.displayMessage(data.message);\n break;\n case events.Quizzing.HideLoadingMessage:\n case events.Quizzing.Submitted:\n ioOverlayView.hideView();\n break;\n case events.Quizzing.CreatedInstance:\n progressBarControlView && progressBarControlView.updateQuizMarkers();\n if (quizController.hasQuiz && quizController.quizModel.quizInstanceID) {\n quizController.startTrackingProgress();\n var eventLabel = 'QIID_' + quizController.quizModel.quizInstanceID;\n mediaView.playbackQualityMetrics && mediaView.playbackQualityMetrics.setEventLabel(eventLabel);\n }\n $container.trigger(events.Quizzing.UIHidden);\n break;\n case events.Quizzing.RationaleActionJumpToTime:\n var jumpToTimeInSeconds = data.jumpToTime / 1000;\n progressBarControlView.allowSkipQuestionSetMarkersBeforeTime(jumpToTimeInSeconds);\n seekToTime(jumpToTimeInSeconds);\n break;\n }\n };\n var onLoadedMetadata = function onLoadedMetadata() {\n // check to see if quiz exists and it is ready to rumble\n if (!quizController.hasQuiz || quizController.hasQuiz && (!quizController.quizEnabled || quizController.quizReady)) {\n ioOverlayView.hideView();\n } else {\n // update overlay with status of quiz code\n var lastStatusMessage = quizController.getLastStatusMessage();\n if (lastStatusMessage) {\n mediaView.mediaElement.pause();\n ioOverlayView.displayMessage(lastStatusMessage);\n }\n }\n };\n var onVideoTimeUpdate = function onVideoTimeUpdate() {\n updateQuizzing(mediaView.currentTimeInMilliseconds);\n };\n var onSeeked = function onSeeked() {\n updateQuizzing(mediaView.currentTimeInMilliseconds);\n };\n var onVideoControlsVisible = function onVideoControlsVisible() {\n progressBarControlView.updateQuizMarkers();\n };\n var onScrubbingStarted = function onScrubbingStarted() {\n _isScrubbing = true;\n };\n var onScrubbingEnded = function onScrubbingEnded() {\n _isScrubbing = false;\n onVideoTimeUpdate();\n };\n var bindToEvents = function bindToEvents() {\n mediaView.mediaWrapper.on('ratechange', onVideoTimeUpdate, false);\n mediaView.mediaWrapper.on('play', onVideoTimeUpdate, false);\n var eventsToBind = {\n loadedmetadata: onLoadedMetadata,\n timeupdate: onVideoTimeUpdate,\n seeked: onSeeked\n };\n mediaView.mediaWrapper.on(eventsToBind);\n $container.on(events.Controls.VideoControlsVisible, onVideoControlsVisible);\n $container.on(events.Controls.PlayerResize, updateQuizPointAtPosition);\n $container.on(events.Quizzing.Complete, quizEventHandler);\n $container.on(events.Quizzing.Review, quizEventHandler);\n $container.on(events.Quizzing.Begin, quizEventHandler);\n $container.on(events.Quizzing.Skip, quizEventHandler);\n $container.on(events.Quizzing.Error, quizEventHandler);\n $container.on(events.Quizzing.Status, quizEventHandler);\n $container.on(events.Quizzing.SubmittingInstance, quizEventHandler);\n $container.on(events.Quizzing.Submitted, quizEventHandler);\n $container.on(events.Quizzing.CreatedInstance, quizEventHandler);\n $container.on(events.Quizzing.RationaleActionJumpToTime, quizEventHandler);\n $container.on(events.Quizzing.HideLoadingMessage, quizEventHandler);\n $container.on(events.Quizzing.ShowStartQuizPrompt, quizEventHandler);\n $container.on(events.Quizzing.ShowQuestionSetView, quizEventHandler);\n $container.on(events.Scrubbing.Started, onScrubbingStarted);\n $container.on(events.Scrubbing.Ended, onScrubbingEnded);\n };\n var unbindToEvents = function unbindToEvents() {\n mediaView.mediaWrapper.off('ratechange', onVideoTimeUpdate, false);\n mediaView.mediaWrapper.off('play', onVideoTimeUpdate, false);\n var eventsToBind = {\n loadedmetadata: onLoadedMetadata,\n timeupdate: onVideoTimeUpdate,\n seeked: onSeeked\n };\n mediaView.mediaWrapper.off(eventsToBind);\n $container.off(events.Controls.VideoControlsVisible, onVideoControlsVisible);\n $container.off(events.Controls.PlayerResize, updateQuizPointAtPosition);\n $container.off(events.Quizzing.Complete, quizEventHandler);\n $container.off(events.Quizzing.Review, quizEventHandler);\n $container.off(events.Quizzing.Begin, quizEventHandler);\n $container.off(events.Quizzing.Skip, quizEventHandler);\n $container.off(events.Quizzing.Error, quizEventHandler);\n $container.off(events.Quizzing.Status, quizEventHandler);\n $container.off(events.Quizzing.SubmittingInstance, quizEventHandler);\n $container.off(events.Quizzing.Submitted, quizEventHandler);\n $container.off(events.Quizzing.CreatedInstance, quizEventHandler);\n $container.off(events.Quizzing.RationaleActionJumpToTime, quizEventHandler);\n $container.off(events.Quizzing.HideLoadingMessage, quizEventHandler);\n $container.off(events.Quizzing.ShowStartQuizPrompt, quizEventHandler);\n $container.off(events.Quizzing.ShowQuestionSetView, quizEventHandler);\n $container.off(events.Scrubbing.Started, onScrubbingStarted);\n $container.off(events.Scrubbing.Ended, onScrubbingEnded);\n };\n var destroy = function destroy() {\n unbindToEvents();\n _quizzingErrorMessageBarView && _quizzingErrorMessageBarView.remove();\n };\n videoApiUtils.setQuizController(quizController);\n progressBarControlView && progressBarControlView.setShouldRespectQuizMarkers(quizController.quizModel && quizController.quizEnabled && !playerConfiguration.ignoreQuizQuestions);\n quizController.mediaIsImage = mediaView.type === mediaViewType.image;\n bindToEvents();\n return Object.defineProperties({\n destroy: destroy\n }, {});\n};\nvar QuizEventController$1 = {\n /**\n * Factory method that returns a new QuizEventController.\n * @function create\n * @memberof TSC.QuizEventController\n * @static\n * @param {jQuery} $container - Smart Player main container jquery element\n * @param {MediaView} mediaView - Media view for current media. Created by MediaViewFactory.\n * @param {TSC.QuizController} quizController\n * @param {TSC.ProgressBarControlView} progressBarControlView\n * @param {boolean} enforceLinearAssessment\n * @param {TSC.IoOverlayView} ioOverlayView - IO Overlay View used to show the user messages\n * @return new QuizEventController instance\n */\n create: QuizEventController\n};\n\nvar EVENT_PERCENT_WATCH_INC = 10;\nvar MAX_PERCENT = 100;\n\n/**\n * @memberof TSC\n * @class MediaAnalyticsController\n * @classdesc Controller for managing media analytics\n * @param {jQuery} $container - Smart Player main container jquery element\n * @param {MediaView} mediaView - Media view for current media. Created by MediaViewFactory.\n * @param {TSC.MediaList} mediaList\n * @param {TSC.QuizController} quizController\n * @param {TSC.playerConfiguration} playerConfiguration\n */\nvar MediaAnalyticsController = function MediaAnalyticsController($container, mediaView, mediaList, quizController, playerConfiguration) {\n var _eventPlayTracking = true;\n var _eventLastPercentReported = 0;\n var doesSCORMModuleNeedToResumeLastTime = function doesSCORMModuleNeedToResumeLastTime() {\n return mediaView.supportsSCORM && playerConfiguration.isScormLesson && scormController$1.supportsResumeSession && scormController$1.initialVideoTimeInSeconds > 0;\n };\n var initVideoAnalytics = function initVideoAnalytics() {\n videoAnalytics.initPercentWatched(mediaView.mediaElement.duration * 1000);\n if (doesSCORMModuleNeedToResumeLastTime()) {\n resumeSCORMSession(scormController$1.initialVideoTimeInSeconds, scormController$1.initialVideoAnalyticsSnapshot);\n $container.trigger(events.Media.SeekToTime, {\n time: scormController$1.initialVideoTimeInSeconds,\n playAfterSeek: true\n });\n }\n };\n var updateAnalytics = function updateAnalytics(currentTimeInMilliseconds) {\n if (!mediaView.mediaElement.duration) {\n return;\n }\n if (!videoAnalytics.isEnabled()) {\n return;\n }\n if (!videoAnalytics.isPercentWatchedInitialized()) {\n initVideoAnalytics();\n }\n if (!isNaN(currentTimeInMilliseconds)) {\n videoAnalytics.markTimeWatched(currentTimeInMilliseconds);\n } else {\n log.logMessage('Player-view: currentTime is NaN (' + currentTimeInMilliseconds + ')');\n }\n var percentWatched = Math.round(videoAnalytics.getPercentageWatched() * 100);\n if (scormController$1.initialized) {\n scormController$1.submitVideoWatchedPercentage(0.01 * percentWatched, videoAnalytics.getCurrentPlayTime());\n }\n if (playerConfiguration.getTrackEvents()) {\n if (percentWatched >= _eventLastPercentReported + EVENT_PERCENT_WATCH_INC) {\n while (_eventLastPercentReported + EVENT_PERCENT_WATCH_INC <= percentWatched) {\n _eventLastPercentReported += EVENT_PERCENT_WATCH_INC;\n if (_eventLastPercentReported > MAX_PERCENT) {\n _eventLastPercentReported = MAX_PERCENT;\n }\n analyticsService.sendEvent(events.Analytics.VideoPercentViewed, 'Viewed: ' + _eventLastPercentReported + ' Percent');\n }\n }\n }\n };\n var handleTimeUpdate = function handleTimeUpdate(currentTimeInMilliseconds) {\n if (videoAnalytics.isEnabled()) {\n updateAnalytics(currentTimeInMilliseconds);\n }\n };\n var onVideoTimeUpdate = function onVideoTimeUpdate() {\n handleTimeUpdate(mediaView.currentTimeInMilliseconds);\n };\n var onSeeked = function onSeeked() {\n handleTimeUpdate(mediaView.currentTimeInMilliseconds);\n };\n var onCanPlayVideo = function onCanPlayVideo() {\n if (videoAnalytics.isEnabled()) {\n videoAnalytics.setVideoLoadEndTime(new Date().getTime());\n if (playerConfiguration.getTrackEvents()) {\n var eventAction = playerConfiguration.getAltEventCategoryAsFilename() ? analyticsService.getCategory() : mediaList.currentMedia.uri;\n if (playerConfiguration.getAltLoadTimeAsSeconds()) {\n analyticsService.sendEvent(events.Analytics.VideoLoadingTimeInSeconds, eventAction, videoAnalytics.getVideoLoadTime() / 1000);\n } else {\n analyticsService.sendEvent(events.Analytics.VideoLoadingTime, eventAction, videoAnalytics.getVideoLoadTime());\n }\n }\n }\n mediaView.mediaWrapper.off('canplay', onCanPlayVideo);\n };\n var resetPlayStartAnalytics = function resetPlayStartAnalytics() {\n if (videoAnalytics.isEnabled()) {\n videoAnalytics.setVideoLoadStartTime(new Date().getTime());\n }\n if (playerConfiguration.getTrackEvents() && _eventPlayTracking) {\n _eventPlayTracking = false;\n var videoStartedEventAction = playerConfiguration.getAltEventCategoryAsFilename() ? analyticsService.getCategory() : mediaList.currentMedia.uri;\n analyticsService.sendEvent(events.Analytics.VideoStarted, videoStartedEventAction);\n analyticsService.sendEvent(events.Analytics.VideoPercentViewed, 'Viewed: 0 Percent');\n }\n };\n var onMediaEnd = function onMediaEnd(e, eventData) {\n if (eventData.isPlaybackEnded && playerConfiguration.getTrackEvents()) {\n analyticsService.sendEvent(events.Analytics.VideoFinishedAction, playerConfiguration.getEndActionParam());\n }\n };\n var onVideoReplayHandler = function onVideoReplayHandler() {\n if (playerConfiguration.getTrackEvents()) {\n var eventAction = playerConfiguration.getAltEventCategoryAsFilename() ? analyticsService.getCategory() : mediaList.currentMedia.uri;\n analyticsService.sendEvent(events.Analytics.VideoReplay, eventAction);\n }\n };\n var onMediaWrapperMediaEnd = function onMediaWrapperMediaEnd() {\n if (playerConfiguration.getTrackEvents()) {\n var eventAction = playerConfiguration.getAltEventCategoryAsFilename() ? analyticsService.getCategory() : mediaList.currentMedia.uri;\n analyticsService.sendEvent(events.Analytics.VideoFinished, eventAction);\n }\n };\n var onOpenExternalLink = function onOpenExternalLink() {\n var eventAction = playerConfiguration.getAltEventCategoryAsFilename() ? analyticsService.getCategory() : mediaList.currentMedia.uri;\n analyticsService.sendEvent(events.Analytics.OpenExternalLinkView, eventAction);\n };\n var onClickExternalLink = function onClickExternalLink() {\n var eventAction = playerConfiguration.getAltEventCategoryAsFilename() ? analyticsService.getCategory() : mediaList.currentMedia.uri;\n analyticsService.sendEvent(events.Analytics.OpenExternalLinkClick, eventAction);\n };\n var resumeSCORMSession = function resumeSCORMSession(initialVideoTimeInSeconds, initialVideoAnalyticsSnapshot) {\n videoAnalytics.populateVideoSegmentsWatch(initialVideoAnalyticsSnapshot);\n videoAnalytics.markTimeWatched(initialVideoTimeInSeconds * 1000);\n };\n var onStartedPlayback = function onStartedPlayback() {\n var quizRequiresAnalytics = quizController && quizController.hasQuiz && quizController.quizEnabled;\n var playerConfigurationRequiresAnalytics = playerConfiguration.getTrackEvents() || playerConfiguration.isScormLesson || playerConfiguration.getReportScormComplete() || quizRequiresAnalytics;\n var shouldTrackVideoAnalytics = !mediaList.isPlaylist && playerConfigurationRequiresAnalytics;\n if (shouldTrackVideoAnalytics) {\n videoAnalytics.setEnabled(true);\n }\n };\n var onPlayerInitialized = function onPlayerInitialized() {\n performanceWrapper.createMeasure(events.Timing.PlayerLoaded, events.Timing.PlayerLoaded);\n performanceWrapper.createMeasure(events.Timing.PlayerInitialized, events.Timing.PlayerInitialized);\n analyticsService.sendEvent(events.Analytics.ContentLoaded, mediaList.currentMedia.uri);\n };\n var bindToEvents = function bindToEvents() {\n $container.on(events.Controls.StartedPlayback, onStartedPlayback);\n $container.on(events.Controls.PlayerInitialized, onPlayerInitialized);\n $container.on(events.Media.End, onMediaEnd);\n $container.on(events.Media.Replay, onVideoReplayHandler);\n $container.on(events.ExternalLinkView.Open, onOpenExternalLink);\n $container.on(events.ExternalLinkView.Clicked, onClickExternalLink);\n mediaView.mediaWrapper.on('ratechange', onVideoTimeUpdate, false);\n mediaView.mediaWrapper.on('play', onVideoTimeUpdate, false);\n var eventsToBind = {\n timeupdate: onVideoTimeUpdate,\n canplay: onCanPlayVideo,\n seeked: onSeeked,\n ended: onMediaWrapperMediaEnd\n };\n mediaView.mediaWrapper.on(eventsToBind);\n mediaView.mediaElement.addEventListener(events.Media.Play, resetPlayStartAnalytics);\n };\n var unbindToEvents = function unbindToEvents() {\n $container.off(events.Controls.StartedPlayback, onStartedPlayback);\n $container.off(events.Controls.PlayerInitialized, onPlayerInitialized);\n $container.off(events.Media.End, onMediaEnd);\n $container.on(events.Media.Replay, onVideoReplayHandler);\n $container.on(events.ExternalLinkView.Open, onOpenExternalLink);\n $container.on(events.ExternalLinkView.Clicked, onClickExternalLink);\n mediaView.mediaWrapper.off('ratechange', onVideoTimeUpdate, false);\n mediaView.mediaWrapper.off('play', onVideoTimeUpdate, false);\n var eventsToBind = {\n timeupdate: onVideoTimeUpdate,\n canplay: onCanPlayVideo,\n seeked: onSeeked,\n ended: onMediaWrapperMediaEnd\n };\n mediaView.mediaWrapper.off(eventsToBind);\n mediaView.mediaElement.removeEventListener(events.Media.Play, resetPlayStartAnalytics);\n };\n var destroy = function destroy() {\n unbindToEvents();\n };\n bindToEvents();\n if (mediaView.mediaWrapper.metadataReady) {\n mediaView.mediaWrapper.metadataReady.then(function () {\n return mediaView.mediaWrapper.canPlayReady.then(function () {\n onCanPlayVideo();\n });\n });\n }\n return Object.defineProperties({\n destroy: destroy\n }, {});\n};\nvar MediaAnalyticsController$1 = {\n /**\n * Factory method that returns a new MediaAnalyticsController.\n * @function create\n * @memberof TSC.MediaAnalyticsController\n * @static\n * @param {jQuery} $container - Smart Player main container jquery element\n * @param {MediaView} mediaView - Media view for current media. Created by MediaViewFactory.\n * @param {TSC.MediaList} mediaList\n * @param {TSC.QuizController} quizController\n * @param {TSC.playerConfiguration} playerConfiguration\n * @return new MediaAnalyticsController instance\n */\n create: MediaAnalyticsController\n};\n\nvar enterKeyCode = 13;\nvar spacebarKeyCode = 32;\n\n/**\n * @memberof TSC\n * @class PluginEventsController\n * @classdesc Controller for managing XMP features\n * @param {jQuery} $container - Smart Player main container jquery element\n *\n */\nvar PluginEventsController = function PluginEventsController($container) {\n var _$mediaPluginContainer = $container.find('.media-plugin-container');\n _$mediaPluginContainer.hide();\n var onMediaPluginContainerKeyHandler = function onMediaPluginContainerKeyHandler(e) {\n if (e.type === 'keydown' && (e.keyCode === enterKeyCode || e.keyCode === spacebarKeyCode)) {\n $container.trigger(events.Plugin.MediaAreaPluginKeyDown);\n } else if (e.type === 'keyup' && (e.keyCode === enterKeyCode || e.keyCode === spacebarKeyCode)) {\n $container.trigger(events.Plugin.MediaAreaPluginKeyUp);\n }\n };\n var onMediaPluginContainerMouseHandler = function onMediaPluginContainerMouseHandler(e) {\n if (e.type === 'mousedown') {\n $container.trigger(events.Plugin.MediaAreaPluginMouseDown);\n } else if (e.type === 'mouseup') {\n $container.trigger(events.Plugin.MediaAreaPluginMouseUp);\n }\n };\n var initMediaPlugins = function initMediaPlugins() {\n var pluginController = playerConfiguration.getPluginController();\n if (!pluginController) {\n return;\n }\n _$mediaPluginContainer.show();\n pluginController.initializePluginsForViewElement(supportedPluginViewElements.MEDIA, _$mediaPluginContainer);\n };\n var onPluginAdded = function onPluginAdded(eventName, data) {\n if (data.viewElementType === supportedPluginViewElements.MEDIA) {\n initMediaPlugins();\n }\n };\n var bindToEvents = function bindToEvents() {\n $container.on(events.Plugin.Added, onPluginAdded);\n _$mediaPluginContainer.on('mousedown', onMediaPluginContainerMouseHandler);\n _$mediaPluginContainer.on('mouseup', onMediaPluginContainerMouseHandler);\n _$mediaPluginContainer.on('keydown', onMediaPluginContainerKeyHandler);\n _$mediaPluginContainer.on('keyup', onMediaPluginContainerKeyHandler);\n };\n var unbindToEvents = function unbindToEvents() {\n $container.off(events.Plugin.Added, onPluginAdded);\n _$mediaPluginContainer.off('mousedown', onMediaPluginContainerMouseHandler);\n _$mediaPluginContainer.off('mouseup', onMediaPluginContainerMouseHandler);\n _$mediaPluginContainer.off('keydown', onMediaPluginContainerKeyHandler);\n _$mediaPluginContainer.off('keyup', onMediaPluginContainerKeyHandler);\n };\n var destroy = function destroy() {\n unbindToEvents();\n };\n bindToEvents();\n initMediaPlugins();\n return Object.defineProperties({\n destroy: destroy\n }, {});\n};\nvar PluginEventsController$1 = {\n /**\n * Factory method that returns a new PluginEventsController.\n * @function create\n * @memberof TSC.PluginEventsController\n * @static\n * @param {jQuery} $container - Smart Player main container jquery element\n * @return new PluginEventsController instance\n */\n create: PluginEventsController\n};\n\n/**\n * @memberof TSC\n * @class MediaSessionController\n * @classdesc Media Session controller will interface media with system controls\n * @param {jQuery} $rootSmartPlayerElement\n * @param {HTMLVideoElement} mediaElement\n * @param {string} mediaTitle\n * @param {string} mediaPosterImageSrc\n */\nvar MediaSessionController = function MediaSessionController($rootSmartPlayerElement, mediaElement, mediaTitle, mediaPosterImageSrc) {\n var _windowRef = windowWrapper.getWindow();\n var _navigatorRef = windowWrapper.getNavigator();\n // This prevents unnecessary errors when Media Session API is not available.\n var _mediaSessionRef = _navigatorRef.mediaSession || {};\n _mediaSessionRef.setActionHandler = _navigatorRef.mediaSession.setActionHandler || function () {}; // eslint-disable-line\n _windowRef.MediaMetadata = _windowRef.MediaMetadata || function () {}; // eslint-disable-line\n\n var _metaDataSet = false;\n var setMetaData = function setMetaData() {\n _mediaSessionRef.metadata = new _windowRef.MediaMetadata({\n title: mediaTitle,\n artwork: [{\n src: mediaPosterImageSrc\n }]\n });\n _metaDataSet = true;\n updateMediaSessionState();\n };\n var updateMediaSessionState = function updateMediaSessionState() {\n if (!_metaDataSet) {\n return;\n }\n _mediaSessionRef.playbackState = mediaElement.paused ? 'paused' : 'playing';\n _mediaSessionRef.setPositionState({\n duration: mediaElement.duration,\n playbackRate: mediaElement.playbackRate,\n position: mediaElement.currentTime\n });\n };\n var onPlayAction = function onPlayAction() {\n if ($rootSmartPlayerElement.playerState.pausedForQuiz) {\n return;\n }\n mediaElement.play();\n };\n var onPauseAction = function onPauseAction() {\n if ($rootSmartPlayerElement.playerState.pausedForQuiz) {\n return;\n }\n mediaElement.pause();\n };\n var onSeekToAction = function onSeekToAction(details) {\n if ($rootSmartPlayerElement.playerState.pausedForQuiz) {\n return;\n }\n $rootSmartPlayerElement.trigger(events.Media.SeekToTime, {\n time: details.seekTime\n });\n };\n var bindEvents = function bindEvents() {\n mediaElement.addEventListener('loadedmetadata', setMetaData);\n mediaElement.addEventListener('playing', updateMediaSessionState);\n mediaElement.addEventListener('pause', updateMediaSessionState);\n mediaElement.addEventListener('durationchange', updateMediaSessionState);\n mediaElement.addEventListener('ratechange', updateMediaSessionState);\n mediaElement.addEventListener('timeupdate', updateMediaSessionState);\n _mediaSessionRef.setActionHandler('play', onPlayAction);\n _mediaSessionRef.setActionHandler('pause', onPauseAction);\n _mediaSessionRef.setActionHandler('seekto', onSeekToAction);\n };\n var destroy = function destroy() {\n mediaElement.removeEventListener('loadedmetadata', setMetaData);\n mediaElement.removeEventListener('playing', updateMediaSessionState);\n mediaElement.removeEventListener('pause', updateMediaSessionState);\n mediaElement.removeEventListener('durationchange', updateMediaSessionState);\n mediaElement.removeEventListener('ratechange', updateMediaSessionState);\n mediaElement.removeEventListener('timeupdate', updateMediaSessionState);\n };\n bindEvents();\n return Object.defineProperties({\n destroy: destroy\n }, {});\n};\nvar isSupported = function isSupported() {\n return !!windowWrapper.getNavigator().mediaSession;\n};\nvar MediaSessionController$1 = {\n /**\n * Factory method that returns a new MediaSessionController object\n * @function create\n * @memberof TSC.MediaSessionController\n * @param {jQuery} $rootSmartPlayerElement\n * @param {HTMLVideoElement} mediaElement\n * @param {string} mediaTitle\n * @param {string} mediaPosterImageSrc\n * @static\n * @return MediaSessionController instance\n */\n create: MediaSessionController,\n /**\n * Is the Media Session api supported\n * @function isSupported\n * @memberof TSC.MediaSessionController\n * @static\n * @return {boolean} Is the api supported\n */\n isSupported: isSupported\n};\n\n/**\n * @memberof TSC\n * @class MediaExtensionsController\n * @classdesc Controller for managing XMP features\n * @param {jQuery} $container - Smart Player main container jquery element\n * @param {MediaView} mediaView - Media view for current media. Created by MediaViewFactory.\n * @param {TSC.XmpModel} xmpModel\n * @param {TSC.Quiz} quizModel\n * @param {TSC.MediaList} mediaList\n * @param {TSC.CaptionService} captionService\n * @param {TSC.playerConfiguration} playerConfiguration\n * @param {TSC.ResponsiveController} responsiveController\n * @param {TSC.TabController} tabController\n * @param {TSC.ProgressBarControlView} progressBarControlView\n * @param {TSC.BeforeAfterPlayControlsView} beforeAfterPlayControlsView\n * @param {TSC.IoOverlayView} ioOverlayView\n *\n */\nvar MediaExtensionsController = function MediaExtensionsController($container, mediaView, xmpModel, quizModel, mediaList, captionService, playerConfiguration, responsiveController, tabController, progressBarControlView, beforeAfterPlayControlsView, ioOverlayView) {\n var _hotspotController;\n var _captionController;\n var _tableOfContentsController;\n var _audioDescriptionController;\n var _endActionsController;\n var _quizController;\n var _quizEventController;\n var _mediaAnalyticsController;\n var _pluginEventsController;\n var _mediaSessionController;\n var modifyPlayerConfigurationBasedOnDevice = function modifyPlayerConfigurationBasedOnDevice() {\n // ignore auto play if this is an iOS device that plays video inline or there is a quiz present\n // may want to move this out of the view at some point.\n var hasAnEnabledQuiz = _quizController && _quizController.hasQuiz && _quizController.quizEnabled;\n if ((deviceInfo.isIOS() || deviceInfo.isAndroid() || hasAnEnabledQuiz) && !playerConfiguration.getMobileWebViewCanAutoPlay()) {\n playerConfiguration.setAutoPlayMedia(false);\n }\n };\n var setupImageControllers = function setupImageControllers() {\n if (quizModel) {\n _quizController = QuizController$1.create($container, mediaView, quizModel, beforeAfterPlayControlsView, playerConfiguration.enforceLinearAssessment);\n _quizEventController = QuizEventController$1.create($container, mediaView, _quizController, progressBarControlView, playerConfiguration.enforceLinearAssessment, ioOverlayView);\n }\n _mediaAnalyticsController = MediaAnalyticsController$1.create($container, mediaView, mediaList, _quizController, playerConfiguration);\n };\n var getMediaTitle = function getMediaTitle() {\n if (playerConfiguration.mediaTitle) {\n return playerConfiguration.mediaTitle;\n } else if (playerConfiguration.tocTitle) {\n return playerConfiguration.tocTitle;\n } else if (xmpModel && xmpModel.title) {\n return xmpModel.title;\n }\n return localizationStrings.getPlayerString(playerStringNames.defaultMediaTitle);\n };\n var getMediaPosterSrc = function getMediaPosterSrc() {\n return playerConfiguration.getPosterImageSrc() || '';\n };\n var setupVideoControllers = function setupVideoControllers() {\n _endActionsController = EndActionsController$1.create($container, mediaView, progressBarControlView, beforeAfterPlayControlsView);\n if (playerConfiguration.audioDescriptionMediaSrc) {\n _audioDescriptionController = AudioDescriptionController$1.create($container, mediaView, playerConfiguration.audioDescriptionMediaSrc);\n }\n if (quizModel) {\n _quizController = QuizController$1.create($container, mediaView, quizModel, beforeAfterPlayControlsView, playerConfiguration.enforceLinearAssessment);\n _quizEventController = QuizEventController$1.create($container, mediaView, _quizController, progressBarControlView, playerConfiguration.enforceLinearAssessment, ioOverlayView);\n }\n _mediaAnalyticsController = MediaAnalyticsController$1.create($container, mediaView, mediaList, _quizController, playerConfiguration);\n if (MediaSessionController$1.isSupported()) {\n _mediaSessionController = MediaSessionController$1.create($container, mediaView.mediaElement, getMediaTitle(), getMediaPosterSrc());\n }\n if (mediaView.supportsSCORM && playerConfiguration.isScormLesson) {\n if (_quizController && _quizController.quizModel !== null && (_quizController.quizModel.reportMethod === reportType.SCORM || _quizController.quizModel.reportMethod === reportType.APIANDSCORM)) {\n scormController$1.submitScore(0, false);\n }\n\n // restore quizzing model state and seek video if not using TechSmith Quiz Service (it can not resume a quiz)\n if (_quizController && _quizController.quizModel && _quizController.quizModel.reportMethod === reportType.SCORM && scormController$1.initialQuizModelSnapshot) {\n _quizController.populateQuizModel(scormController$1.initialQuizModelSnapshot);\n progressBarControlView.updateQuizMarkers();\n }\n scormController$1.initView($container);\n }\n var hasCaptionItems = xmpModel && xmpModel.hasCaptionItems || captionService.captionTrack;\n if (hasCaptionItems) {\n _captionController = CaptionController$1.create($container, mediaView, xmpModel, mediaList, captionService);\n }\n var hasHotspotItems = xmpModel && xmpModel.hasHotspotItems;\n if (hasHotspotItems) {\n _hotspotController = HotspotController$1.create($container, mediaView, xmpModel, mediaList, tabController);\n }\n var hasTableOfContents = xmpModel && xmpModel.hasSearchableItems;\n if (hasTableOfContents) {\n _tableOfContentsController = TableOfContentsController$1.create($container, mediaView, xmpModel, mediaList, progressBarControlView, playerConfiguration);\n }\n };\n var setupControllers = function setupControllers() {\n _pluginEventsController = PluginEventsController$1.create($container);\n if (mediaView.type === mediaViewType.image) {\n setupImageControllers();\n } else {\n setupVideoControllers();\n }\n };\n var preventEvent = function preventEvent(e) {\n e.stopImmediatePropagation();\n e.preventDefault();\n return false;\n };\n var disableHighlightOnMouseDown = function disableHighlightOnMouseDown() {\n highlightDisabler.disableHighlights($(this));\n };\n var activateHighlightDisabler = function activateHighlightDisabler() {\n $container.on('mousedown', '*', disableHighlightOnMouseDown);\n };\n var applyCustomBackgroundColor = function applyCustomBackgroundColor() {\n $container.css('background-color', playerConfiguration.getBackgroundColor());\n };\n var disableContextMenuIfNeeded = function disableContextMenuIfNeeded() {\n if (playerConfiguration.getDisableContextMenuForVideo()) {\n $container.on('contextmenu', preventEvent);\n }\n };\n var configurePlayer = function configurePlayer() {\n modifyPlayerConfigurationBasedOnDevice();\n activateHighlightDisabler();\n applyCustomBackgroundColor();\n disableContextMenuIfNeeded();\n responsiveController.monitorContainerSize();\n if (!_quizController) {\n $container.trigger(events.Player.MediaExtensionsReady);\n } else {\n _quizController.quizIsSetupPromise.then(function () {\n $container.trigger(events.Player.MediaExtensionsReady);\n });\n }\n };\n var destroy = function destroy() {\n _hotspotController && _hotspotController.destroy();\n _captionController && _captionController.destroy();\n _tableOfContentsController && _tableOfContentsController.destroy();\n _audioDescriptionController && _audioDescriptionController.destroy();\n _endActionsController && _endActionsController.destroy();\n _quizController && _quizController.destroy();\n _quizEventController && _quizEventController.destroy();\n _mediaAnalyticsController && _mediaAnalyticsController.destroy();\n _pluginEventsController && _pluginEventsController.destroy();\n _mediaSessionController && _mediaSessionController.destroy();\n $container.off('mousedown', '*', disableHighlightOnMouseDown);\n $container.off('contextmenu', preventEvent);\n responsiveController.clearContainerMonitors();\n };\n setupControllers();\n configurePlayer();\n return Object.defineProperties({\n destroy: destroy\n }, {\n /**\n * @public\n * @readonly\n * @memberof TSC.MediaExtensionsController\n * @property {TSC.CaptionController} captionController - the caption controller\n */\n captionController: {\n get: function get() {\n return _captionController;\n }\n }\n });\n};\nvar MediaExtensionsController$1 = {\n /**\n * Factory method that returns a new MediaExtensionsController.\n * @function create\n * @memberof TSC.MediaExtensionsController\n * @static\n * @param {jQuery} $container - Smart Player main container jquery element\n * @param {MediaView} mediaView - Media view for current media. Created by MediaViewFactory.\n * @param {TSC.XmpModel} xmpModel\n * @param {TSC.Quiz} quizModel\n * @param {TSC.MediaList} mediaList\n * @param {TSC.CaptionService} captionService\n * @param {TSC.playerConfiguration} playerConfiguration\n * @param {TSC.TabController} tabController\n * @param {TSC.ResponsiveController} responsiveController\n * @param {TSC.ProgressBarControlView} progressBarControlView\n * @param {TSC.BeforeAfterPlayControlsView} beforeAfterPlayControlsView\n * @param {TSC.IoOverlayView} ioOverlayView\n * @return new MediaExtensionsController instance\n */\n create: MediaExtensionsController\n};\n\n/**\n * @memberof TSC\n * @class TabController\n * @classdesc Controller for tabs\n * @param {jQuery} $container - Smart Player main container jquery element\n * @param {jQuery} $defaultFirstTabEnabledElement - The default first tab that should be enabled\n * @param {jQuery} $defaultLastTabEnabledElement - The default last tab that should be enabled\n *\n */\nvar TabController = function TabController($container, $defaultFirstTabEnabledElement, $defaultLastTabEnabledElement) {\n var _defaultFirstTabEnabledElement = $defaultFirstTabEnabledElement;\n var _defaultLastTabEnabledElement = $defaultLastTabEnabledElement;\n var _firstTabEnabledElement = null;\n var _lastTabEnabledElement = null;\n var _playerInFullScreenMode = false;\n var onFullScreenChange = function onFullScreenChange(event, eventData) {\n _playerInFullScreenMode = eventData.inFullScreen;\n };\n var unbindEventsToTabEnabledElement = function unbindEventsToTabEnabledElement(element) {\n if (element) {\n element.off('keydown');\n }\n };\n var setFirstTabEnabledElement = function setFirstTabEnabledElement(firstTabEnabledElement) {\n if (_firstTabEnabledElement) {\n unbindEventsToTabEnabledElement(_firstTabEnabledElement);\n }\n if (firstTabEnabledElement === null) {\n _firstTabEnabledElement = _defaultFirstTabEnabledElement;\n } else {\n _firstTabEnabledElement = firstTabEnabledElement;\n }\n _firstTabEnabledElement.on('keydown', function (e) {\n if (_playerInFullScreenMode && keys.isKeyOfType(e.key, keys.keyTypes.tab) && e.shiftKey === true) {\n e.preventDefault();\n _lastTabEnabledElement.focus();\n }\n });\n };\n var setLastTabEnabledElement = function setLastTabEnabledElement(lastTabEnabledElement) {\n if (_lastTabEnabledElement) {\n unbindEventsToTabEnabledElement(_lastTabEnabledElement);\n }\n if (lastTabEnabledElement === null) {\n _lastTabEnabledElement = _defaultLastTabEnabledElement;\n } else {\n _lastTabEnabledElement = lastTabEnabledElement;\n }\n _lastTabEnabledElement.on('keydown', function (e) {\n if (_playerInFullScreenMode && keys.isKeyOfType(e.key, keys.keyTypes.tab) && e.shiftKey === false) {\n e.preventDefault();\n _firstTabEnabledElement.focus();\n }\n });\n };\n var initController = function initController() {\n if (!_defaultFirstTabEnabledElement || !_defaultLastTabEnabledElement) {\n throw new Error('Tab controller is missing a default tab enabled element');\n }\n setFirstTabEnabledElement(_defaultFirstTabEnabledElement);\n setLastTabEnabledElement(_defaultLastTabEnabledElement);\n $container.on(events.Controls.FullScreenChange, onFullScreenChange);\n };\n var destroy = function destroy() {\n unbindEventsToTabEnabledElement(_firstTabEnabledElement);\n unbindEventsToTabEnabledElement(_lastTabEnabledElement);\n $container.off(events.Controls.FullScreenChange, onFullScreenChange);\n };\n initController();\n return Object.defineProperties({\n destroy: destroy\n }, {\n firstTabEnabledElement: {\n get: function get() {\n return _firstTabEnabledElement;\n },\n set: setFirstTabEnabledElement\n },\n lastTabEnabledElement: {\n get: function get() {\n return _lastTabEnabledElement;\n },\n set: setLastTabEnabledElement\n }\n });\n};\nvar TabController$1 = {\n create: TabController\n};\n\n/**\n * @memberof TSC\n * @class ExternalEventsController\n * @classdesc Controller for managing external events\n * @param {jQuery} $container - Smart Player main container jquery element\n * @param {MediaView} mediaView - Media view for current media. Created by MediaViewFactory.\n * @param {TSC.MediaList} mediaList\n * @param {Object} playerViewEventCallbacks\n *\n */\nvar ExternalEventsController = function ExternalEventsController($container, mediaView, mediaList, playerViewEventCallbacks) {\n var onLoadedMetadata = function onLoadedMetadata() {\n playerViewEventCallbacks[events.External.MediaReady].forEach(function (callback) {\n callback();\n });\n };\n var onFullScreenChange = function onFullScreenChange() {\n playerViewEventCallbacks[events.External.PlayerFullScreenModeChanged].forEach(function (callback) {\n callback();\n });\n };\n var onTheaterModeChanged = function onTheaterModeChanged(e, eventData) {\n var newDisplayMode = eventData && eventData.displayMode;\n playerViewEventCallbacks[events.External.DisplayModeChanged].forEach(function (callback) {\n callback(newDisplayMode);\n });\n };\n var onCanPlayVideo = function onCanPlayVideo() {\n playerViewEventCallbacks[events.External.VideoStart].forEach(function (callback) {\n callback();\n });\n mediaView.mediaWrapper.off('canplay', onCanPlayVideo);\n };\n var onMediaEnd = function onMediaEnd(e, eventData) {\n if (eventData.isPlaybackEnded) {\n playerViewEventCallbacks[events.External.VideoEnd].forEach(function (callback) {\n callback();\n });\n }\n };\n var onVideoReplayHandler = function onVideoReplayHandler() {\n playerViewEventCallbacks[events.External.VideoReplay].forEach(function (callback) {\n callback();\n });\n };\n var onVideoError = function onVideoError() {\n playerViewEventCallbacks[events.External.MediaError].forEach(function (callback) {\n callback();\n });\n };\n var onPlayingEvent = function onPlayingEvent() {\n mediaView.mediaWrapper.off('playing', onPlayingEvent);\n\n // send a playing/streaming confirmation if applicable\n playerViewEventCallbacks[events.External.VideoPlay].forEach(function (callback) {\n callback();\n });\n };\n var onStartedPlaybackHandler = function onStartedPlaybackHandler() {\n playerViewEventCallbacks[events.External.VideoStartInitiated].forEach(function (callback) {\n callback();\n });\n };\n var triggerQuizVisible = function triggerQuizVisible() {\n playerViewEventCallbacks[events.External.QuizVisible].forEach(function (callback) {\n callback();\n });\n };\n var triggerQuizHidden = function triggerQuizHidden() {\n playerViewEventCallbacks[events.External.QuizHidden].forEach(function (callback) {\n callback();\n });\n };\n var triggerQuizPromptVisible = function triggerQuizPromptVisible() {\n playerViewEventCallbacks[events.External.ShowStartQuizPrompt].forEach(function (callback) {\n callback();\n });\n };\n var triggerQuizPromptHidden = function triggerQuizPromptHidden() {\n playerViewEventCallbacks[events.External.HideStartQuizPrompt].forEach(function (callback) {\n callback();\n });\n };\n var processCaptionChanged = function processCaptionChanged(e, eventData) {\n if (eventData) {\n playerViewEventCallbacks[events.External.CaptionChange].forEach(function (callback) {\n callback(eventData.plainText);\n });\n }\n };\n var processCaptionToggled = function processCaptionToggled(e, eventData) {\n if (eventData) {\n var externalCaptionEvent = eventData.captionsEnabled ? events.External.CaptionsVisible : events.External.CaptionsHidden;\n playerViewEventCallbacks[externalCaptionEvent].forEach(function (callback) {\n callback();\n });\n }\n };\n var triggerPlayerSettingsOpen = function triggerPlayerSettingsOpen() {\n playerViewEventCallbacks[events.External.PlayerSettingsOpen].forEach(function (callback) {\n callback();\n });\n };\n var triggerPlayerSettingsClose = function triggerPlayerSettingsClose() {\n playerViewEventCallbacks[events.External.PlayerSettingsClose].forEach(function (callback) {\n callback();\n });\n };\n var triggerVideoControlsHidden = function triggerVideoControlsHidden() {\n playerViewEventCallbacks[events.External.PlayerControlsHidden].forEach(function (callback) {\n callback();\n });\n };\n var triggerVideoControlsVisible = function triggerVideoControlsVisible() {\n playerViewEventCallbacks[events.External.PlayerControlsVisible].forEach(function (callback) {\n callback();\n });\n };\n var triggerExternalPlayerResize = function triggerExternalPlayerResize() {\n playerViewEventCallbacks[events.External.PlayerResize].forEach(function (callback) {\n callback();\n });\n };\n var triggerHeroControlHidden = function triggerHeroControlHidden() {\n playerViewEventCallbacks[events.External.HeroControlHidden].forEach(function (callback) {\n callback();\n });\n };\n var triggerImagePointerOver = function triggerImagePointerOver() {\n playerViewEventCallbacks[events.External.ImagePointerOver].forEach(function (callback) {\n callback();\n });\n };\n var triggerImagePointerLeave = function triggerImagePointerLeave() {\n playerViewEventCallbacks[events.External.ImagePointerLeave].forEach(function (callback) {\n callback();\n });\n };\n var bindToEvents = function bindToEvents() {\n $container.on(events.Controls.StartedPlayback, onStartedPlaybackHandler);\n $container.on(events.Controls.FullScreenChange, onFullScreenChange);\n $container.on(events.Controls.TheaterModeChanged, onTheaterModeChanged);\n $container.on(events.Media.End, onMediaEnd);\n $container.on(events.Media.Replay, onVideoReplayHandler);\n $container.on(events.Media.Error, onVideoError);\n $container.on(events.Quizzing.ShowStartQuizPrompt, triggerQuizVisible);\n $container.on(events.Quizzing.Review, triggerQuizHidden);\n $container.on(events.Quizzing.ShowQuestionSetView, triggerQuizVisible);\n $container.on(events.Quizzing.Complete, triggerQuizHidden);\n $container.on(events.Quizzing.ShowQuizSetup, triggerQuizPromptVisible);\n $container.on(events.Quizzing.BeginClicked, triggerQuizPromptHidden);\n $container.on(events.Quizzing.SkipClicked, triggerQuizPromptHidden);\n $container.on(events.Captions.Changed, processCaptionChanged);\n $container.on(events.Captions.Toggled, processCaptionToggled);\n $container.on(events.Controls.PlayerSettingsOpen, triggerPlayerSettingsOpen);\n $container.on(events.Controls.PlayerSettingsClose, triggerPlayerSettingsClose);\n $container.on(events.Controls.VideoControlsHidden, triggerVideoControlsHidden);\n $container.on(events.Controls.VideoControlsVisible, triggerVideoControlsVisible);\n $container.on(events.Controls.PlayerResize, triggerExternalPlayerResize);\n $container.on(events.Controls.HeroPlayControlClicked, triggerHeroControlHidden);\n $container.on(events.Images.PointerOver, triggerImagePointerOver);\n $container.on(events.Images.PointerLeave, triggerImagePointerLeave);\n var eventsToBind = {\n loadedmetadata: onLoadedMetadata,\n canplay: onCanPlayVideo,\n playing: onPlayingEvent\n };\n mediaView.mediaWrapper.on(eventsToBind);\n };\n var unbindToEvents = function unbindToEvents() {\n $container.off(events.Controls.StartedPlayback, onStartedPlaybackHandler);\n $container.off(events.Controls.FullScreenChange, onFullScreenChange);\n $container.off(events.Controls.TheaterModeChanged, onTheaterModeChanged);\n $container.off(events.Media.End, onMediaEnd);\n $container.off(events.Media.Replay, onVideoReplayHandler);\n $container.off(events.Media.Error, onVideoError);\n $container.off(events.Quizzing.ShowStartQuizPrompt, triggerQuizVisible);\n $container.off(events.Quizzing.Review, triggerQuizHidden);\n $container.off(events.Quizzing.ShowQuestionSetView, triggerQuizVisible);\n $container.off(events.Quizzing.Complete, triggerQuizHidden);\n $container.off(events.Quizzing.ShowQuizSetup, triggerQuizPromptVisible);\n $container.off(events.Quizzing.BeginClicked, triggerQuizPromptHidden);\n $container.off(events.Quizzing.SkipClicked, triggerQuizPromptHidden);\n $container.off(events.Captions.Changed, processCaptionChanged);\n $container.off(events.Captions.Toggled, processCaptionToggled);\n $container.off(events.Controls.PlayerSettingsOpen, triggerPlayerSettingsOpen);\n $container.off(events.Controls.PlayerSettingsClose, triggerPlayerSettingsClose);\n $container.off(events.Controls.VideoControlsHidden, triggerVideoControlsHidden);\n $container.off(events.Controls.VideoControlsVisible, triggerVideoControlsVisible);\n $container.off(events.Controls.PlayerResize, triggerExternalPlayerResize);\n $container.off(events.Controls.HeroPlayControlClicked, triggerHeroControlHidden);\n $container.off(events.Images.PointerOver, triggerImagePointerOver);\n $container.off(events.Images.PointerLeave, triggerImagePointerLeave);\n var eventsToBind = {\n loadedmetadata: onLoadedMetadata,\n canplay: onCanPlayVideo,\n playing: onPlayingEvent\n };\n mediaView.mediaWrapper.off(eventsToBind);\n };\n var destroy = function destroy() {\n unbindToEvents();\n };\n bindToEvents();\n return Object.defineProperties({\n destroy: destroy\n }, {});\n};\nvar ExternalEventsController$1 = {\n /**\n * Factory method that returns a new ExternalEventsController.\n * @function create\n * @memberof TSC.ExternalEventsController\n * @static\n * @param {jQuery} $container - Smart Player main container jquery element\n * @param {MediaView} mediaView - Media view for current media. Created by MediaViewFactory.\n * @param {TSC.MediaList} mediaList\n * @param {Object} playerViewEventCallbacks\n * @return new ExternalEventsController instance\n */\n create: ExternalEventsController\n};\n\n/**\n * @memberof TSC\n * @class PlayerState\n * @classdesc State object used for player instance player state.\n */\nvar PlayerState = function PlayerState() {\n var _oneOrMoreHotspotsWithTimeActionArePaused = false;\n var _videoHasQuizQuestions = false;\n var _pausedForQuiz = false;\n var _displayMode = DisplayModes.Normal;\n return Object.defineProperties({}, {\n oneOrMoreHotspotsWithTimeActionArePaused: {\n get: function get() {\n return _oneOrMoreHotspotsWithTimeActionArePaused;\n },\n set: function set(oneOrMoreHotspotsWithTimeActionArePaused) {\n _oneOrMoreHotspotsWithTimeActionArePaused = oneOrMoreHotspotsWithTimeActionArePaused;\n }\n },\n mediaHasQuizQuestions: {\n get: function get() {\n return _videoHasQuizQuestions;\n },\n set: function set(videoHasQuizQuestions) {\n _videoHasQuizQuestions = videoHasQuizQuestions;\n }\n },\n pausedForQuiz: {\n get: function get() {\n return _pausedForQuiz;\n },\n set: function set(pausedForQuiz) {\n _pausedForQuiz = pausedForQuiz;\n }\n },\n displayMode: {\n get: function get() {\n return _displayMode;\n },\n set: function set(displayMode) {\n _displayMode = displayMode;\n }\n }\n });\n};\nvar PlayerState$1 = {\n /**\n * Factory method that returns a new PlayerState object\n * @function create\n * @memberof TSC.PlayerState\n * @static\n * @return new PlayerState instance\n */\n create: PlayerState\n};\n\n/**\n * @memberof TSC.IoOverlayView\n * @class IoOverlayView\n * @classdesc IoOverlay View\n */\nvar IoOverlayView = function IoOverlayView($container) {\n var _viewOpen = false;\n var markup = templateGenerator.generateIoOverlayMarkup();\n $container.append(markup);\n var _$ioContainer = $container.find('.tsc-io-container');\n var _$ioMessage = _$ioContainer.find('span');\n var _$ioImg = _$ioContainer.find('img');\n var setViewMessage = function setViewMessage(message) {\n _$ioMessage.html(message);\n };\n var hideLoadingGraphic = function hideLoadingGraphic() {\n _$ioImg.hide();\n };\n var showLoadingGraphic = function showLoadingGraphic() {\n _$ioImg.show();\n };\n var showView = function showView() {\n _$ioContainer.stop().css('opacity', 0).show().animate({\n opacity: 1\n }, 300);\n _viewOpen = true;\n };\n var hideView = function hideView(completeCallback) {\n if (_viewOpen) {\n _viewOpen = false;\n _$ioContainer.stop().animate({\n opacity: 0\n }, 200, function () {\n if (completeCallback) {\n completeCallback.call();\n }\n _$ioContainer.hide();\n });\n }\n };\n var displayMessage = function displayMessage(message, shouldHideLoadingGraphic) {\n setViewMessage(message);\n if (shouldHideLoadingGraphic) {\n hideLoadingGraphic();\n } else {\n showLoadingGraphic();\n }\n if (!_viewOpen) {\n showView();\n }\n };\n var destroy = function destroy() {\n $container.off(events.Controls.HideIOOverlay, hideView);\n };\n var bindEvents = function bindEvents() {\n $container.on(events.Controls.HideIOOverlay, hideView);\n };\n bindEvents();\n return Object.defineProperties({\n hideView: hideView,\n displayMessage: displayMessage,\n destroy: destroy\n }, {});\n};\nvar IoOverlayView$1 = {\n /**\n * Factory method that returns a new IoOverlayView object.\n * @function create\n * @memberof TSC.IoOverlayView\n * @static\n * @param {Object} $container - jQuery element that is the smartplayer top-level container\n * @return new IoOverlayView instance\n */\n create: IoOverlayView\n};\n\nvar VIDEO_TIME_COMPARE_PRECISION = 2;\n\n/**\n * @memberof TSC\n * @class SmartPlayerView\n * @classdesc Smart Player view\n * @param {String} playerInstanceUUID\n * @param {JQuery} $rootContainer\n * @param {TSC.MediaList} mediaList\n * @param {TSC.XmpModel} xmpModel\n * @param {TSC.Quiz} quizModel\n * @param {TSC.CaptionService} captionService\n * @param {TSC.playerConfiguration} playerConfiguration\n * @param {TSC.ResponsiveController} responsiveController\n * @param {Boolean} xmpInErrorState\n */\nvar SmartPlayerView = function SmartPlayerView(playerInstanceUUID, $rootContainer, mediaList, xmpModel, quizModel, captionService, playerConfiguration, responsiveController, xmpInErrorState) {\n // eslint-disable-line\n var _mediaElementUniqueID = [$rootContainer.attr('id').replace(/^[#]/, ''), playerInstanceUUID].join('-');\n var _mediaViewReady;\n var _viewHasBeenInitialized;\n var _mediaExtensionsController;\n var _tabController;\n var _externalEventsController;\n var _scormErrorMessageBarView;\n var _$playerPluginContainer;\n var _viewInitializedPromise = new Promise$1(function (resolve, reject) {\n _viewHasBeenInitialized = resolve; // eslint-disable-line\n });\n var _playerViewEventCallbacks = {};\n var _queuedMediaBinds = {};\n var _mediaView = null;\n var _ioOverlayView = null;\n var _videoControlsController = null;\n var _videoControlsDisplayModeController = null;\n var _controlsReady = false;\n var _mediaExtensionsReady = false;\n var _mediaHasBeenLoaded = false;\n var _playerState = PlayerState$1.create();\n _playerState.mediaHasQuizQuestions = quizModel && quizModel.questionSets.length > 0;\n $rootContainer.playerState = _playerState;\n var _$mediaViewPortContainer = null;\n var _$mediaContainer = null;\n var _$playerLayoutControlsContainer = null;\n var displayXmpErrorMessage = function displayXmpErrorMessage() {\n if (deviceInfo.isLocal()) {\n MessageBarView$1.create($rootContainer, messageBarType.info, localizationStrings.getPlayerString(playerStringNames.xmpSecurity), localizationStrings.getPlayerString(playerStringNames.close));\n } else {\n MessageBarView$1.create($rootContainer, messageBarType.info, localizationStrings.getPlayerString(playerStringNames.xmpError));\n }\n };\n var onFirstPlayHandler = function onFirstPlayHandler() {\n $rootContainer.trigger(events.Media.FirstPlay);\n };\n var triggerRumDataEvent = function triggerRumDataEvent(timingMeasureList, eventCategorySuffix) {\n var eventData = {\n categorySuffix: eventCategorySuffix,\n rum: performanceWrapper.getRumEventData(timingMeasureList)\n };\n _playerViewEventCallbacks[events.External.PlayerRumData].forEach(function (callback) {\n callback(eventData);\n });\n };\n var externalEventIsSupported = function externalEventIsSupported(eventName) {\n return Object.keys(events.External).some(function (eventKey) {\n return events.External[eventKey] === eventName;\n });\n };\n var setupExternalEventCallbackHarness = function setupExternalEventCallbackHarness() {\n Object.keys(events.External).forEach(function (eventKey) {\n var eventName = events.External[eventKey];\n _playerViewEventCallbacks[eventName] = [];\n });\n };\n var getCaptionsVisible = function getCaptionsVisible() {\n return _mediaExtensionsController.captionController ? _mediaExtensionsController.captionController.getCaptionsVisible() : false;\n };\n var setCaptionsVisible = function setCaptionsVisible(value) {\n if (_mediaExtensionsController.captionController) {\n _mediaExtensionsController.captionController.setCaptionsVisible(value);\n }\n };\n var addEventListener = function addEventListener(type, listener) {\n if (externalEventIsSupported(type)) {\n _playerViewEventCallbacks[type].push(listener);\n }\n };\n var removeEventListener = function removeEventListener(type, listener) {\n if (externalEventIsSupported(type)) {\n // just in case the same listener pointer is bound more than once?\n while (_playerViewEventCallbacks[type].indexOf(listener) !== -1) {\n _playerViewEventCallbacks[type].splice(_playerViewEventCallbacks[type].indexOf(listener), 1);\n }\n }\n };\n var addMediaEventListener = function addMediaEventListener(event, handler) {\n if (_mediaView && _mediaView.mediaWrapper) {\n _mediaView.mediaWrapper.on(event, handler);\n } else {\n if (_typeof$1(_queuedMediaBinds[event]) !== 'object') {\n _queuedMediaBinds[event] = [];\n }\n _queuedMediaBinds[event].push(handler);\n }\n };\n var removeMediaEventListener = function removeMediaEventListener(event, handler) {\n if (_mediaView.mediaWrapper) {\n _mediaView.mediaWrapper.off(event, handler);\n } else {\n if (_typeof$1(_queuedMediaBinds[event]) !== 'object') {\n return;\n }\n // if the same handler is bound multiple times?\n while (_queuedMediaBinds[event].indexOf(handler) !== -1) {\n _queuedMediaBinds[event].splice(_queuedMediaBinds[event].indexOf(handler), 1);\n }\n }\n };\n var processQueuedMediaBinds = function processQueuedMediaBinds() {\n Object.keys(_queuedMediaBinds).forEach(function (event) {\n if (_typeof$1(_queuedMediaBinds[event]) === 'object') {\n _queuedMediaBinds[event].forEach(function (callback) {\n _mediaView.mediaWrapper.on(event, callback);\n });\n }\n });\n _queuedMediaBinds = {};\n };\n var triggerVideoStartEventCallbacks = function triggerVideoStartEventCallbacks() {\n // dispatch callback for media started event (note: after _mediaWrapper and _mediaElement are set)\n _playerViewEventCallbacks[events.External.VideoStart].forEach(function (callback) {\n callback();\n });\n };\n var createPlayerLayout = function createPlayerLayout() {\n $rootContainer.html(templateGenerator.generatePlayerLayoutMarkup());\n _$mediaViewPortContainer = $rootContainer.find('.media-wrapper').first();\n _$playerLayoutControlsContainer = $rootContainer.find('.video-controls-container').first();\n _$playerPluginContainer = $rootContainer.find('.player-plugin-container').first();\n };\n var createMediaView = function createMediaView() {\n return MediaViewFactory$1.createView($rootContainer, _$mediaViewPortContainer, _mediaElementUniqueID, mediaList, onFirstPlayHandler, triggerRumDataEvent);\n };\n var onMediaError = function onMediaError(e, data) {\n _ioOverlayView.hideView();\n _ioOverlayView.displayMessage(data.errorString, true);\n };\n var showVideoLoadingMessage = function showVideoLoadingMessage() {\n if (_mediaView.type !== mediaViewType.youtube && _mediaView.type !== mediaViewType.image) {\n _ioOverlayView.displayMessage(localizationStrings.getPlayerString(playerStringNames.videoLoading));\n }\n };\n var onHideLoadingMessage = function onHideLoadingMessage() {\n _ioOverlayView.hideView();\n };\n var loadMediaWhenComponentsAreReady = function loadMediaWhenComponentsAreReady() {\n if (_controlsReady && _mediaExtensionsReady && !_mediaHasBeenLoaded) {\n showVideoLoadingMessage();\n loadMedia();\n }\n };\n var onControlsVisible = function onControlsVisible() {\n if (_$playerLayoutControlsContainer.length > 0 && captionService.position === CAPTION_POSITION.under) {\n $rootContainer[0].style.setProperty(cssVariables.reservedSizeControls, \"\".concat(Math.round(_$playerLayoutControlsContainer.height()), \"px\"));\n }\n };\n var onControlsReady = function onControlsReady() {\n _controlsReady = true;\n loadMediaWhenComponentsAreReady();\n };\n var onMediaExtensionsReady = function onMediaExtensionsReady() {\n _mediaExtensionsReady = true;\n loadMediaWhenComponentsAreReady();\n };\n var onFailedToFindSCORMApi = function onFailedToFindSCORMApi() {\n _ioOverlayView.hideView();\n _scormErrorMessageBarView = MessageBarView$1.create($rootContainer, messageBarType.info, localizationStrings.getPlayerString(playerStringNames.scormApiNotFoundMessage), localizationStrings.getPlayerString(playerStringNames.close));\n };\n var onShowQuizSetup = function onShowQuizSetup() {\n $rootContainer.find('.video-wrapper').removeClass(cssClasses.hide);\n };\n var startViewPortObserver = function startViewPortObserver() {\n _mediaView.mediaWrapper.off(events.ExternalVideo.VideoLoadedMetadata, startViewPortObserver);\n // at this point, these should have been initialized\n _$mediaContainer = $rootContainer.find('.media-container');\n responsiveController.monitorMediaViewPortSize(_$mediaViewPortContainer, _$mediaContainer, _mediaView.mediaWidth, _mediaView.mediaHeight);\n };\n var onImagePointerOver = function onImagePointerOver() {\n $rootContainer.trigger(events.Images.PointerOver);\n };\n var onImagePointerLeave = function onImagePointerLeave() {\n $rootContainer.trigger(events.Images.PointerLeave);\n };\n var onMediaViewInitialized = function onMediaViewInitialized(mediaView) {\n _mediaView = mediaView;\n _ioOverlayView = IoOverlayView$1.create($rootContainer);\n $rootContainer.on(events.Media.Error, onMediaError);\n $rootContainer.on(events.Player.MediaControlsReady, onControlsReady);\n $rootContainer.on(events.Controls.VideoControlsVisible, onControlsVisible);\n $rootContainer.on(events.Player.MediaExtensionsReady, onMediaExtensionsReady);\n $rootContainer.on(events.Controls.HideLoadingMessage, onHideLoadingMessage);\n $rootContainer.on(events.SCORM.FailedToFindApi, onFailedToFindSCORMApi);\n $rootContainer.on(events.Quizzing.ShowQuizSetup, onShowQuizSetup);\n $rootContainer.on(events.Plugin.Added, initPlugins);\n _mediaView.mediaWrapper.on(events.ExternalVideo.VideoLoadedMetadata, startViewPortObserver);\n if (_mediaView.playerControlType === playerControlsType.video || _mediaView.playerControlType === playerControlsType.videoPlaylist) {\n _videoControlsController = VideoControlsController$1.create($rootContainer, _mediaView, xmpModel, quizModel, playerConfiguration);\n _videoControlsDisplayModeController = VideoControlsDisplayModeController$1.create($rootContainer, _videoControlsController, playerConfiguration);\n _tabController = TabController$1.create($rootContainer, _videoControlsController.progressBarControlView.controlElement, _videoControlsController.fullscreenControlView.controlElement);\n } else {\n // if not creating videoControls just yank the dom structure, perhaps this should be its own template\n $rootContainer.find('.video-controls-container').remove();\n if (_mediaView.type === mediaViewType.image && !deviceInfo.isTouchInterface()) {\n $rootContainer.on('pointerover', onImagePointerOver);\n $rootContainer.on('pointerleave', onImagePointerLeave);\n }\n }\n var progressBarControlView = _videoControlsController ? _videoControlsController.progressBarControlView : null;\n var beforeAfterPlayControlsView = _videoControlsController ? _videoControlsController.beforeAfterPlayControlsView : null;\n _externalEventsController = ExternalEventsController$1.create($rootContainer, mediaView, mediaList, _playerViewEventCallbacks);\n processQueuedMediaBinds();\n _mediaExtensionsController = MediaExtensionsController$1.create($rootContainer, mediaView, xmpModel, quizModel, mediaList, captionService, playerConfiguration, responsiveController, _tabController, progressBarControlView, beforeAfterPlayControlsView, _ioOverlayView);\n if (!_videoControlsController || !_videoControlsController.userNeedToClickHeroPlayControl) {\n $rootContainer.trigger(events.Player.MediaControlsReady);\n }\n $rootContainer.trigger(events.Controls.PlayerInitialized);\n triggerRumDataEvent([events.Timing.PlayerLoaded, events.Timing.PlayerInitialized], AnalyticsRumVideoCategorySuffix);\n _viewHasBeenInitialized();\n };\n var destroy = function destroy() {\n $rootContainer.off(events.Media.Error, onMediaError);\n $rootContainer.off(events.Player.MediaControlsReady, onControlsReady);\n $rootContainer.off(events.Controls.VideoControlsVisible, onControlsVisible);\n $rootContainer.off(events.Player.MediaExtensionsReady, onMediaExtensionsReady);\n $rootContainer.off(events.Controls.HideLoadingMessage, onHideLoadingMessage);\n $rootContainer.off(events.SCORM.FailedToFindApi, onFailedToFindSCORMApi);\n $rootContainer.off(events.Quizzing.ShowQuizSetup, onShowQuizSetup);\n $rootContainer.off(events.Plugin.Added, initPlugins);\n $rootContainer.off('pointerover', onImagePointerOver);\n $rootContainer.off('pointerleave', onImagePointerLeave);\n _mediaView.mediaWrapper.off(events.ExternalVideo.VideoLoadedMetadata, startViewPortObserver);\n _videoControlsController && _videoControlsController.destroy();\n _videoControlsDisplayModeController && _videoControlsDisplayModeController.destroy();\n _mediaView && _mediaView.destroy();\n _ioOverlayView && _ioOverlayView.destroy();\n _mediaExtensionsController && _mediaExtensionsController.destroy();\n _tabController && _tabController.destroy();\n _externalEventsController && _externalEventsController.destroy();\n _scormErrorMessageBarView && _scormErrorMessageBarView.remove();\n };\n var playVideo = function playVideo() {\n if (_mediaView && _mediaView.mediaElement && _mediaView.type !== mediaViewType.image) {\n if (_mediaView.mediaElement.ended) {\n $rootContainer.trigger(events.Media.Replay);\n } else {\n _mediaView.mediaElement.play();\n }\n }\n return Promise$1.reject('Media Element not yet initialized');\n };\n var pauseVideo = function pauseVideo() {\n if (_mediaView && _mediaView.mediaElement && _mediaView.type !== mediaViewType.image) {\n _mediaView.mediaElement.pause();\n }\n };\n var isInFullScreenMode = function isInFullScreenMode() {\n if (_videoControlsController && _videoControlsController.fullscreenControlView) {\n return _videoControlsController.fullscreenControlView.isFullScreen;\n }\n return false;\n };\n var getIsScrubbing = function getIsScrubbing() {\n if (_videoControlsController && _videoControlsController.progressBarControlView) {\n return _videoControlsController.progressBarControlView.scrubbing;\n }\n return false;\n };\n var setIsScrubbing = function setIsScrubbing(isScrubbingVideo) {\n if (_videoControlsController && _videoControlsController.progressBarControlView) {\n _videoControlsController.progressBarControlView.scrubbing = isScrubbingVideo;\n }\n };\n var getSafeSeekTime = function getSafeSeekTime(time) {\n if (!_mediaView && _mediaView.type === mediaViewType.image && !_mediaView.mediaElement) {\n return 0;\n }\n return videoApiUtils.getSafeSeekTime(_mediaView.mediaElement, time);\n };\n var loadMedia = function loadMedia() {\n if (_mediaHasBeenLoaded) {\n return;\n }\n _mediaHasBeenLoaded = true;\n $rootContainer.find('.video-wrapper').removeClass(cssClasses.hide);\n _mediaView.loadMedia();\n if (playerConfiguration.getAutoPlayMedia() || playerConfiguration.getForceAutoPlayMedia()) {\n $rootContainer.trigger(events.Media.TryToAutoPlay);\n }\n };\n var setExternalCurrentTime = function setExternalCurrentTime(timeInSeconds) {\n var safeSeekTime = videoApiUtils.getSafeSeekTime(_mediaView.mediaElement, timeInSeconds);\n if (_videoControlsController && _mediaView.mediaElement.currentTime.toFixed(VIDEO_TIME_COMPARE_PRECISION) !== safeSeekTime.toFixed(VIDEO_TIME_COMPARE_PRECISION)) {\n _videoControlsController.beforeAfterPlayControlsView.hideVideoClickToReplayLink();\n }\n if (_mediaView.mediaElement.ended) {\n $rootContainer.trigger(events.Media.Replay, {\n time: safeSeekTime,\n playAfterSeek: false\n });\n } else {\n $rootContainer.trigger(events.Media.SeekToTime, {\n time: safeSeekTime\n });\n }\n };\n var initPlugins = function initPlugins(event, data) {\n var pluginController = playerConfiguration.getPluginController();\n if (pluginController && data.viewElementType === supportedPluginViewElements.PLAYER) {\n pluginController.initializePluginsForViewElement(supportedPluginViewElements.PLAYER, _$playerPluginContainer);\n }\n };\n setupExternalEventCallbackHarness();\n createPlayerLayout();\n if (xmpInErrorState) {\n displayXmpErrorMessage();\n }\n _mediaViewReady = createMediaView();\n _mediaViewReady.then(onMediaViewInitialized)[\"catch\"](function (error) {\n log.logException(error);\n });\n return Object.defineProperties({\n loadMedia: loadMedia,\n destroy: destroy,\n play: playVideo,\n pause: pauseVideo,\n // custom view stuff\n isInFullScreenMode: isInFullScreenMode,\n addEventListener: addEventListener,\n removeEventListener: removeEventListener,\n addMediaEventListener: addMediaEventListener,\n removeMediaEventListener: removeMediaEventListener,\n // controls state internal to smart-player-view\n getCaptionsVisible: getCaptionsVisible,\n setCaptionsVisible: setCaptionsVisible,\n getScrubbing: getIsScrubbing,\n setScrubbing: setIsScrubbing,\n // events\n triggerVideoStartEventCallbacks: triggerVideoStartEventCallbacks,\n // util methods\n getSafeSeekTime: getSafeSeekTime\n }, {\n initializedPromise: {\n get: function get() {\n return _viewInitializedPromise;\n }\n },\n currentSrc: {\n get: function get() {\n return _mediaView ? _mediaView.currentSrc : '';\n }\n },\n currentTime: {\n get: function get() {\n return _mediaView ? _mediaView.currentTime : 0;\n },\n set: setExternalCurrentTime\n },\n duration: {\n get: function get() {\n return _mediaView ? _mediaView.duration : 0;\n }\n },\n paused: {\n get: function get() {\n return _mediaView ? _mediaView.paused : false;\n }\n },\n ended: {\n get: function get() {\n return _mediaView ? _mediaView.ended : false;\n }\n },\n seeking: {\n get: function get() {\n return _mediaView ? _mediaView.seeking : false;\n }\n },\n buffered: {\n get: function get() {\n return _mediaView ? _mediaView.buffered : [];\n }\n },\n played: {\n get: function get() {\n return _mediaView ? _mediaView.played : [];\n }\n },\n seekable: {\n get: function get() {\n return _mediaView ? _mediaView.seekable : [];\n }\n },\n volume: {\n get: function get() {\n return _mediaView ? _mediaView.volume : 1;\n },\n set: function set(volumeValue) {\n $rootContainer.trigger(events.Media.SetVolume, {\n volumeValue: volumeValue\n });\n }\n },\n muted: {\n get: function get() {\n return _mediaView ? _mediaView.muted : false;\n },\n set: function set(isMuted) {\n $rootContainer.trigger(events.Media.SetMutedState, {\n isMuted: isMuted\n });\n }\n },\n playbackRate: {\n get: function get() {\n return _mediaView ? _mediaView.playbackRate : 1;\n },\n set: function set(playbackRate) {\n $rootContainer.trigger(events.Media.SetPlaybackRate, {\n playbackRate: playbackRate\n });\n }\n },\n progressBarDisplayWidth: {\n get: function get() {\n return _videoControlsController ? _videoControlsController.progressBarControlView.displayWidth : 0;\n }\n },\n currentDisplayMode: {\n get: function get() {\n return _playerState.displayMode;\n }\n }\n });\n};\nvar SmartPlayerView$1 = {\n /**\n * Factory method that returns a new SmartPlayerView object\n * @function create\n * @memberof TSC.SmartPlayerView\n * @param {String} playerInstanceUUID\n * @param {jQuery} $rootContainer\n * @param {TSC.MediaList} mediaList\n * @param {TSC.XmpModel} xmpModel\n * @param {TSC.Quiz} quizModel\n * @param {TSC.CaptionService} captionService\n * @param {Object} playerConfiguration\n * @static\n * @return new SmartPlayerView instance\n */\n create: SmartPlayerView\n};\n\nvar smartPlayerPreRollEventConstants = Object.freeze({\n PRE_ROLL_STARTED: 'preRollStarted',\n PRE_ROLL_FINISHED: 'preRollFinished',\n PRE_ROLL_FINISHED_ACTIONS: {\n REMOVE_NOW: 'removeNow'\n }\n});\n\nvar preRollView = {\n render: function render(preRollSrc) {\n return templateGenerator.generatePreRollMarkup(preRollSrc);\n }\n};\n\nvar _onPreRollStartedCallback;\nvar $preRollView;\nvar $window = $(window);\nvar preRollMessage = function preRollMessage(e) {\n e = e.originalEvent;\n // filter out non smart player events\n if (!e.data || typeof e.data.indexOf !== 'function' || e.data.indexOf('smartPlayerEventName') === -1) {\n return;\n }\n var message = window.JSON.parse(e.data);\n switch (message.smartPlayerEventName) {\n case smartPlayerPreRollEventConstants.PRE_ROLL_STARTED:\n {\n if (_onPreRollStartedCallback) {\n _onPreRollStartedCallback();\n }\n break;\n }\n case smartPlayerPreRollEventConstants.PRE_ROLL_FINISHED:\n {\n switch (message.data.action) {\n case smartPlayerPreRollEventConstants.PRE_ROLL_FINISHED_ACTIONS.REMOVE_NOW:\n {\n destroyView();\n break;\n }\n }\n break;\n }\n }\n};\nvar onIFrameContentLoaded = function onIFrameContentLoaded() {\n $preRollView.removeClass('preRollHidden');\n};\nvar destroyView = function destroyView() {\n if ($preRollView) {\n $window.off('message', preRollMessage);\n $preRollView.off('load', onIFrameContentLoaded);\n $preRollView.remove();\n $preRollView = undefined;\n _onPreRollStartedCallback = undefined;\n }\n};\nvar preRollController = {\n createView: function createView(preRollSrc, onPreRollStartedCallback) {\n $preRollView = $(preRollView.render(preRollSrc)).appendTo('body');\n $preRollView.on('load', onIFrameContentLoaded);\n _onPreRollStartedCallback = onPreRollStartedCallback;\n $window.on('message', preRollMessage);\n },\n viewExists: function viewExists() {\n return $preRollView !== undefined;\n },\n destroyView: destroyView\n};\n\nvar _$spElement = null;\nvar setTheme$1 = function setTheme(themeName) {\n playerConfiguration.setTheme(themeName);\n applyTheme();\n};\nvar registerCallback = function registerCallback() {\n externalMessageController.addCallback('SET_THEME', setTheme$1);\n};\nvar setSmartPlayerContainerElement = function setSmartPlayerContainerElement($element) {\n _$spElement = $element;\n applyTheme();\n};\nvar getClassNameForTheme = function getClassNameForTheme(theme) {\n return 'smartplayer-' + theme + '-theme';\n};\nvar applyTheme = function applyTheme() {\n if (_$spElement) {\n var themeClassNameAsString = Object.keys(themeNames).reduce(function (accumulator, currentValue) {\n return accumulator + getClassNameForTheme(themeNames[currentValue]) + ' ';\n }, '');\n var currentThemeClassName = getClassNameForTheme(playerConfiguration.getTheme());\n _$spElement.removeClass(themeClassNameAsString);\n _$spElement.addClass(currentThemeClassName);\n }\n};\nregisterCallback();\nvar themeController = {\n setTheme: setTheme$1,\n setSmartPlayerContainerElement: setSmartPlayerContainerElement\n};\n\nvar externalVideoEventIsSupported = function externalVideoEventIsSupported(eventName) {\n return Object.keys(events.ExternalVideo).some(function (eventKey) {\n return events.ExternalVideo[eventKey] === eventName;\n });\n};\n\n// major, minor, build\nvar PLAYER_VERSION = 'x.x.x';\nvar INIT_DEFAULT_WIDTH = 1920;\nvar INIT_DEFAULT_HEIGHT = 1080;\nvar _$rootSmartPlayerElement = null;\nvar _responsiveController = null;\nvar _currentPlayerType = null;\nvar _mediaList = null;\nvar _xmp = null;\nvar _quizModel = null;\nvar _captionService = null;\nvar _smartPlayerView = NullSmartPlayerView$1.create();\nvar _viewCreated = false;\nvar _viewInitialized = false;\nvar _queuedEvents = {};\nvar _queuedExternalConfiguration = {};\nvar _playerInstanceUUID = null;\nvar _xmpInErrorState = false;\nvar mediaListError = function mediaListError() {\n MessageBarView$1.create(_$rootSmartPlayerElement, messageBarType.warning, localizationStrings.getPlayerString(playerStringNames.mediaNotFound));\n};\nvar onPreRollStart = function onPreRollStart() {\n continueInit();\n};\nvar initPlayer = function initPlayer(currentInstanceUUID) {\n _captionService = CaptionService$1.create();\n deviceInfo.lookAtDevice();\n queryParamsStripper.strip();\n themeController.setSmartPlayerContainerElement(_$rootSmartPlayerElement);\n if (playerConfiguration.getPreRollSrc()) {\n preRollController.createView(playerConfiguration.getPreRollSrc(), onPreRollStart);\n } else {\n continueInit(currentInstanceUUID);\n }\n};\nvar continueInit = function continueInit(currentInstanceUUID) {\n var mediaSources = playerConfiguration.getMediaSources();\n _mediaList = MediaList$1.create(mediaSources);\n _mediaList.ready.then(function () {\n if (_playerInstanceUUID === currentInstanceUUID) {\n mediaListReady(currentInstanceUUID);\n }\n }, mediaListError);\n};\nvar playbackInitiatedHandler = function playbackInitiatedHandler() {\n _smartPlayerView.removeEventListener(events.External.VideoStartInitiated, playbackInitiatedHandler);\n if (preRollController && preRollController.viewExists()) {\n preRollController.destroyView();\n }\n};\nvar mediaListReady = function mediaListReady(currentInstanceUUID) {\n _currentPlayerType = mediaPlayerController.getPlayerType(_mediaList);\n _responsiveController = ResponsiveController$1.create(_$rootSmartPlayerElement);\n switch (_currentPlayerType) {\n case playerType.YOUTUBE:\n {\n youTube.addApi();\n analyticsService.setCategory(AnalyticsYouTubeEventCategory);\n // we dont have any info on youtube media, so just default to 1080p, it tends to look right\n _responsiveController.initializeIntrinsicSizing(INIT_DEFAULT_WIDTH, INIT_DEFAULT_HEIGHT);\n processMediaAssets(currentInstanceUUID);\n break;\n }\n case playerType.HTML5_VIDEO:\n {\n analyticsService.setCategory(AnalyticsVideoEventCategory);\n if (playerConfiguration.getPosterImageSrc()) {\n // assumption that quick load of posterUrl will have sizing (or at least aspect ratio to match video)\n initIntrinsicSizingFromImageUrl(playerConfiguration.getPosterImageSrc());\n } else {\n _responsiveController.initializeIntrinsicSizing(INIT_DEFAULT_WIDTH, INIT_DEFAULT_HEIGHT);\n }\n processMediaAssets(currentInstanceUUID);\n break;\n }\n case playerType.IMAGE:\n {\n analyticsService.setCategory(AnalyticsImageEventCategory);\n initIntrinsicSizingFromImageUrl(_mediaList.currentMedia.uri);\n processMediaAssets(currentInstanceUUID);\n break;\n }\n case playerType.NOT_SUPPORTED:\n {\n if (_mediaList.currentMediaType === mediaType.WEBM) {\n MessageBarView$1.create(_$rootSmartPlayerElement, messageBarType.warning, localizationStrings.getPlayerString(playerStringNames.noWebMSupport));\n } else {\n MessageBarView$1.create(_$rootSmartPlayerElement, messageBarType.warning, localizationStrings.getPlayerString(playerStringNames.videoNotSupported));\n }\n break;\n }\n }\n};\nvar setQuizModel = function setQuizModel(xmpModel) {\n if (xmpModel && xmpModel.hasQuiz) {\n _quizModel = Quiz$1.create(xmpModel);\n }\n};\nvar initIntrinsicSizingFromImageUrl = function initIntrinsicSizingFromImageUrl(imgUrl) {\n var img = new Image();\n img.onload = function () {\n _responsiveController.initializeIntrinsicSizing(img.naturalWidth, img.naturalHeight);\n };\n img.onerror = function () {\n _responsiveController.initializeIntrinsicSizing(INIT_DEFAULT_WIDTH, INIT_DEFAULT_HEIGHT);\n };\n img.src = imgUrl;\n};\nvar processQuizzing = function processQuizzing() {\n return new Promise$1(function (resolve) {\n if (playerConfiguration.fathomId) {\n fathomService.addEventListener(events.Fathom.GetComplete, function (xmpModel) {\n resolve(xmpModel);\n });\n fathomService.addEventListener(events.Fathom.Error, function () {\n _xmpInErrorState = true;\n resolve();\n });\n fathomService.getFathom(playerConfiguration.fathomId);\n } else {\n resolve(_xmp);\n }\n });\n};\nvar processCaptionSrc = function processCaptionSrc() {\n if (playerConfiguration.captionSrcList.length > 0) {\n if (_xmp === null) {\n _xmp = Xmp.create();\n }\n return _xmp.importCaptionsFromFile(playerConfiguration.captionSrcList);\n }\n return Promise$1.resolve();\n};\nvar processXMP = function processXMP() {\n return new Promise$1(function (resolve) {\n if (playerConfiguration.xmpSrc) {\n _xmp = Xmp.create();\n if (window.TSC && typeof window.TSC.embedded_config_xml === 'string') {\n _xmp.parse(window.TSC.embedded_config_xml);\n } else {\n _xmp.load(playerConfiguration.xmpSrc, false);\n }\n _xmp.ready.then(resolve)[\"catch\"](function () {\n _xmpInErrorState = true;\n _xmp.abortPendingRequests();\n _xmp = null;\n resolve();\n });\n } else {\n if (playerConfiguration.getTocModelFromDescription()) {\n _xmp = Xmp.create();\n }\n resolve();\n }\n });\n};\nvar processMediaAssets = function processMediaAssets(currentInstanceUUID) {\n if (playerConfiguration.getGoogleAnalyticsID()) {\n analyticsService.initGoogleAnalytics();\n }\n processXMP().then(function () {\n if (_playerInstanceUUID === currentInstanceUUID) {\n if (_xmp) {\n playerConfiguration.configureFromXmp(_xmp);\n localizationStrings.configureFromXmp(_xmp);\n }\n processCaptionSrc().then(function () {\n if (_playerInstanceUUID === currentInstanceUUID) {\n processQuizzing().then(function (xmpModel) {\n if (_playerInstanceUUID === currentInstanceUUID) {\n if (xmpModel) {\n setQuizModel(xmpModel);\n }\n setupPlayer(currentInstanceUUID);\n }\n });\n }\n });\n }\n });\n};\nvar captionChangeHandler = function captionChangeHandler(text) {\n if (iFrameBridge.isInIframe()) {\n iFrameBridge.postMessage('CAPTION-CHANGED', '*', text);\n }\n};\nvar setupBasicCss = function setupBasicCss() {\n _$rootSmartPlayerElement.addClass(cssClasses.smartPlayerNamespace);\n _$rootSmartPlayerElement.addClass(cssClasses.playerControlsVisible);\n if (playerConfiguration.getUseLargerProgressBar()) {\n _$rootSmartPlayerElement.addClass(cssClasses.largerProgressBar);\n }\n\n // mainly for backwards compat for pre-version 3.38.0 traverse parent-chain and set height/pad/etc if default\n if (playerConfiguration.getFullViewPort()) {\n _$rootSmartPlayerElement.parents().each(function (index, parentNode) {\n var $parentNode = $(parentNode);\n $parentNode.height('100%');\n if ($parentNode.prop('tagName').toLowerCase() === 'body') {\n $parentNode.css({\n margin: 0,\n padding: 0,\n border: 0,\n overflow: 'hidden'\n });\n }\n });\n }\n};\nvar addQueuedEventsToSmartPlayerView = function addQueuedEventsToSmartPlayerView() {\n Object.keys(_queuedEvents).forEach(function (eventName) {\n _queuedEvents[eventName].forEach(function (eventCallback) {\n addEventListener$1(eventName, eventCallback);\n });\n });\n};\nvar setQueuedConfigurationValuesToSmartPlayerView = function setQueuedConfigurationValuesToSmartPlayerView() {\n if (_queuedExternalConfiguration.volume !== undefined) {\n _smartPlayerView.volume = _queuedExternalConfiguration.volume;\n }\n if (_queuedExternalConfiguration.muted !== undefined) {\n _smartPlayerView.muted = _queuedExternalConfiguration.muted;\n }\n if (_queuedExternalConfiguration.playbackRate !== undefined) {\n _smartPlayerView.playbackRate = _queuedExternalConfiguration.playbackRate;\n }\n};\nvar initPlayerView = function initPlayerView(currentInstanceUUID, displayLocalWarning) {\n _smartPlayerView = SmartPlayerView$1.create(currentInstanceUUID, _$rootSmartPlayerElement, _mediaList, _xmp, _quizModel, _captionService, playerConfiguration, _responsiveController, _xmpInErrorState);\n _viewCreated = true;\n addQueuedEventsToSmartPlayerView();\n _smartPlayerView.initializedPromise.then(function () {\n if (_playerInstanceUUID === currentInstanceUUID) {\n _viewInitialized = true;\n setQueuedConfigurationValuesToSmartPlayerView();\n _smartPlayerView.addEventListener(events.External.VideoStartInitiated, playbackInitiatedHandler);\n _smartPlayerView.addEventListener(events.External.CaptionChange, captionChangeHandler);\n if (playerConfiguration.getAutoPlayMedia() || playerConfiguration.getForceAutoPlayMedia()) {\n _smartPlayerView.loadMedia();\n }\n if (displayLocalWarning) {\n MessageBarView$1.create(_$rootSmartPlayerElement, messageBarType.info, localizationStrings.getPlayerString(playerStringNames.xmpSecurity), localizationStrings.getPlayerString(playerStringNames.close));\n }\n }\n });\n};\nvar setupPlayer = function setupPlayer(currentInstanceUUID) {\n var displayLocalWarning = false;\n if (_currentPlayerType === playerType.IMAGE) {\n _$rootSmartPlayerElement.addClass('image-view');\n } else {\n _$rootSmartPlayerElement.addClass('video-view');\n }\n if (_xmp) {\n if (_xmp.hasCaptionItems) {\n if (iFrameBridge.isInIframe()) {\n iFrameBridge.postMessage('HAS-CAPTIONS', '*');\n }\n }\n }\n if (_quizModel && _quizModel.hasQuiz) {\n if (deviceInfo.isLocal() && _quizModel.reportMethod !== reportType.NONE) {\n displayLocalWarning = true;\n _quizModel.reportMethod = reportType.NONE;\n } else if (_quizModel.useScorm && _quizModel.totalNumberOfGradedQuestionSets === 0) {\n playerConfiguration.isScormLesson = true;\n }\n }\n if (playerConfiguration.isScormLesson) {\n scormController$1.init().then(function () {\n initPlayerView(currentInstanceUUID, displayLocalWarning);\n });\n } else {\n initPlayerView(currentInstanceUUID, displayLocalWarning);\n }\n};\nvar triggerEvent = function triggerEvent(eventName, data) {\n if (_$rootSmartPlayerElement) {\n _$rootSmartPlayerElement.trigger(eventName, data);\n }\n};\nvar init = function init(rootElementID) {\n _playerInstanceUUID = uuidGenerator$1.getUUID();\n performanceWrapper.createMarker(events.Timing.PlayerInitialized);\n _$rootSmartPlayerElement = $(rootElementID);\n setupBasicCss();\n initPlayer(_playerInstanceUUID);\n};\nvar getSmartPlayerRootElement = function getSmartPlayerRootElement() {\n return _$rootSmartPlayerElement;\n};\nvar destroy$1 = function destroy() {\n _playerInstanceUUID = null;\n _currentPlayerType = null;\n _mediaList = null;\n _xmp && _xmp.abortPendingRequests();\n _xmp = null;\n _quizModel = null;\n _viewCreated = false;\n _viewInitialized = false;\n _captionService = null;\n _queuedEvents = {};\n _queuedExternalConfiguration = {};\n _xmpInErrorState = false;\n fathomService.abortPendingRequests();\n localizationStrings.reset();\n if (_$rootSmartPlayerElement) {\n _smartPlayerView.removeEventListener(events.External.VideoStartInitiated, playbackInitiatedHandler);\n _smartPlayerView.removeEventListener(events.External.CaptionChange, captionChangeHandler);\n _smartPlayerView.destroy();\n _smartPlayerView = NullSmartPlayerView$1.create();\n _$rootSmartPlayerElement.removeClass(cssClasses.smartPlayerNamespace + ' ' + cssClasses.largerProgressBar + ' video-view image-view');\n _$rootSmartPlayerElement = null;\n }\n};\nvar getVersion = function getVersion() {\n return PLAYER_VERSION;\n};\nvar playMedia = function playMedia() {\n _smartPlayerView.play();\n};\nvar pauseMedia = function pauseMedia() {\n _smartPlayerView.pause();\n};\nvar queueEventHandler = function queueEventHandler(eventName, callback) {\n if (!_queuedEvents[eventName]) {\n _queuedEvents[eventName] = [];\n }\n _queuedEvents[eventName].push(callback);\n};\nvar dequeueEventHandler = function dequeueEventHandler(eventName, callback) {\n var eventEntry = _queuedEvents[eventName];\n if (eventEntry) {\n for (var i = 0; i < eventEntry.length; i++) {\n if (eventEntry[i] === callback) {\n eventEntry.splice(i, 1);\n break;\n }\n }\n if (eventEntry.length === 0) {\n _queuedEvents[eventName] = undefined;\n }\n }\n};\nvar addEventListener$1 = function addEventListener(eventName, callback) {\n if (!_viewCreated) {\n queueEventHandler(eventName, callback);\n } else if (externalVideoEventIsSupported(eventName)) {\n _smartPlayerView.addMediaEventListener(eventName, callback);\n } else {\n _smartPlayerView.addEventListener(eventName, callback);\n }\n};\nvar removeEventListener$1 = function removeEventListener(eventName, callback) {\n if (!_viewInitialized) {\n dequeueEventHandler(eventName, callback);\n } else if (externalVideoEventIsSupported(eventName)) {\n _smartPlayerView.removeMediaEventListener(eventName, callback);\n } else {\n _smartPlayerView.removeEventListener(eventName, callback);\n }\n};\nvar getCurrentSrc = function getCurrentSrc() {\n return _viewInitialized ? _smartPlayerView.currentSrc : playerConfiguration.getMediaSrc();\n};\nvar getCurrentTime = function getCurrentTime() {\n return _smartPlayerView.currentTime;\n};\nvar setCurrentTime = function setCurrentTime(timeInSeconds) {\n _smartPlayerView.currentTime = timeInSeconds;\n};\nvar getDuration = function getDuration() {\n return _smartPlayerView.duration;\n};\nvar getEnded = function getEnded() {\n return _smartPlayerView.ended;\n};\nvar getPaused = function getPaused() {\n return _smartPlayerView.paused;\n};\nvar getPlaybackRate = function getPlaybackRate() {\n return _smartPlayerView.playbackRate;\n};\nvar setPlaybackRate = function setPlaybackRate(playbackRate) {\n if (_viewInitialized) {\n _smartPlayerView.playbackRate = playbackRate;\n } else {\n _queuedExternalConfiguration.playbackRate = playbackRate;\n }\n};\nvar getBuffered = function getBuffered() {\n return _smartPlayerView.buffered;\n};\nvar getPlayed = function getPlayed() {\n return _smartPlayerView.played;\n};\nvar getSeekable = function getSeekable() {\n return _smartPlayerView.seekable;\n};\nvar getSeeking = function getSeeking() {\n return _smartPlayerView.seeking;\n};\nvar getVolume = function getVolume() {\n return _smartPlayerView.volume;\n};\nvar setVolume = function setVolume(volumeValue) {\n if (_viewInitialized) {\n _smartPlayerView.volume = volumeValue;\n } else {\n _queuedExternalConfiguration.volume = volumeValue;\n }\n};\nvar getMuted = function getMuted() {\n return _viewInitialized ? _smartPlayerView.muted : _queuedExternalConfiguration.muted;\n};\nvar setMuted$1 = function setMuted(isMuted) {\n if (_viewInitialized) {\n _smartPlayerView.muted = isMuted;\n } else {\n _queuedExternalConfiguration.muted = isMuted;\n }\n};\nvar isInFullScreenMode = function isInFullScreenMode() {\n return _smartPlayerView.isInFullScreenMode();\n};\nvar getScrubbing = function getScrubbing() {\n return _smartPlayerView.getScrubbing();\n};\nvar setScrubbing = function setScrubbing(isScrubbing) {\n _smartPlayerView.setScrubbing(isScrubbing);\n};\nvar getSafeSeekTime = function getSafeSeekTime(time) {\n return _smartPlayerView.getSafeSeekTime(time);\n};\nvar getCaptionsVisible = function getCaptionsVisible() {\n return _smartPlayerView.getCaptionsVisible();\n};\nvar setCaptionsVisible = function setCaptionsVisible(isVisible) {\n _smartPlayerView.setCaptionsVisible(isVisible);\n};\nvar getIsYouTube = function getIsYouTube() {\n return _mediaList ? mediaPlayerController.getPlayerType(_mediaList) === playerType.YOUTUBE : false;\n};\nvar getCaptionCollection = function getCaptionCollection() {\n return _captionService.captionTrack.captionCollection;\n};\nvar getCaptionTrack = function getCaptionTrack() {\n return _captionService.captionTrack;\n};\nvar setCaptionTrack = function setCaptionTrack(value) {\n _captionService.captionTrack = value;\n};\nvar getTocChapters = function getTocChapters() {\n if (!_xmp || !_xmp.hasTocItems) {\n return [];\n }\n return _xmp.tocItemArray;\n};\nvar getProgressBarDisplayWidth = function getProgressBarDisplayWidth() {\n return _smartPlayerView ? _smartPlayerView.progressBarDisplayWidth : 0;\n};\nvar getCurrentDisplayMode = function getCurrentDisplayMode() {\n return _smartPlayerView && _smartPlayerView.currentDisplayMode;\n};\nvar mediaPlayer = Object.defineProperties({\n init: init,\n destroy: destroy$1,\n getSmartPlayerRootElement: getSmartPlayerRootElement,\n getVersion: getVersion,\n jsSeekTime: setCurrentTime,\n jsPlay: playMedia,\n play: playMedia,\n pause: pauseMedia,\n getCurrentSrc: getCurrentSrc,\n getCurrentTime: getCurrentTime,\n setCurrentTime: setCurrentTime,\n getDuration: getDuration,\n getEnded: getEnded,\n getPaused: getPaused,\n getPlaybackRate: getPlaybackRate,\n setPlaybackRate: setPlaybackRate,\n getBuffered: getBuffered,\n getPlayed: getPlayed,\n getSeekable: getSeekable,\n getSeeking: getSeeking,\n getVolume: getVolume,\n setVolume: setVolume,\n getMuted: getMuted,\n setMuted: setMuted$1,\n isInFullScreenMode: isInFullScreenMode,\n getScrubbing: getScrubbing,\n setScrubbing: setScrubbing,\n getSafeSeekTime: getSafeSeekTime,\n addEventListener: addEventListener$1,\n removeEventListener: removeEventListener$1,\n triggerEvent: triggerEvent,\n getCaptionsVisible: getCaptionsVisible,\n setCaptionsVisible: setCaptionsVisible,\n getIsYouTube: getIsYouTube,\n getCaptionCollection: getCaptionCollection,\n getCaptionTrack: getCaptionTrack,\n setCaptionTrack: setCaptionTrack,\n getTocChapters: getTocChapters,\n getProgressBarDisplayWidth: getProgressBarDisplayWidth,\n getCurrentDisplayMode: getCurrentDisplayMode\n}, {});\n\n/**\n * @memberof TSC\n * @class Plugin\n * @classdesc Plugin Object\n * @param {String} pluginName - name of plugin\n * @param {String} viewElementType - view element type to install plugin into\n */\nvar Plugin = function Plugin(pluginName, viewElementType) {\n var _initialized = false;\n var _initializedPromiseResolve;\n var _initializedPromise = new Promise$1(function (resolve) {\n _initializedPromiseResolve = resolve;\n });\n var _pluginName = pluginName;\n var _viewElementType = viewElementType;\n\n /**\n * @function init\n * @memberOf TSC.Plugin\n * Initialize plugin with dom element container that will resolve initialized promise.\n * @param {HTMLElement} pluginContainerElement - dom element that will be the container for plugin UI\n */\n var init = function init(pluginContainerElement) {\n if (_initialized) {\n return;\n }\n _initialized = true;\n _initializedPromiseResolve({\n pluginContainerElement: pluginContainerElement\n });\n };\n return Object.defineProperties({\n init: init\n }, {\n initialized: {\n get: function get() {\n return _initialized;\n }\n },\n initializedPromise: {\n get: function get() {\n return _initializedPromise;\n }\n },\n pluginName: {\n get: function get() {\n return _pluginName;\n }\n },\n viewElementType: {\n get: function get() {\n return _viewElementType;\n }\n }\n });\n};\nvar Plugin$1 = {\n /**\n * Factory method that returns a new Plugin object.\n * @function create\n * @memberof TSC.Plugin\n * @static\n * @return new Plugin instance\n */\n create: Plugin\n};\n\nvar REMOVE_SPACES_REGEX = /\\s+/g;\n\n/**\n * @memberof TSC\n * @class PluginController\n * @classdesc Plugin Controller to wire up external plugins\n */\nvar PluginController = function PluginController() {\n var _plugins = {};\n\n /**\n * @function isViewElementTypeSupported\n * Check to see if a viewElementType is supported.\n * @param {String} viewElementType - view element type for plugin\n * @return {Boolean} return if passed in viewElementType is supported.\n */\n var isViewElementTypeSupported = function isViewElementTypeSupported(viewElementType) {\n return Object.keys(supportedPluginViewElements).some(function (key) {\n return supportedPluginViewElements[key] === viewElementType;\n });\n };\n\n /**\n * @function getPluginsForViewElementType\n * Get a list of plugin objects for the passed in view element type.\n * @param {String} viewElementType - view element type for plugin\n * @return {Array} return an array of supported plugins for the passed in view element type\n */\n var getPluginsForViewElementType = function getPluginsForViewElementType(viewElementType) {\n return Object.keys(_plugins).filter(function (key) {\n return _plugins[key].viewElementType === viewElementType;\n }).map(function (key) {\n return _plugins[key];\n });\n };\n\n /**\n * @function getPluginContainerElement\n * Get a new div element setup for a plugin to append elements to.\n * @param {String} pluginName - name of plugin\n * @return {Element} return a new div element setup for old plugin dom\n */\n var getPluginContainerElement = function getPluginContainerElement(pluginName) {\n var pluginNameNoSpaces = pluginName.replace(REMOVE_SPACES_REGEX, '');\n var pluginNamedContainerClassName = cssClasses.pluginNamedContainerPrefix + pluginNameNoSpaces;\n var pluginContainerElement = document.createElement('div');\n pluginContainerElement.classList.add(cssClasses.generatedPluginContainer);\n pluginContainerElement.classList.add(pluginNamedContainerClassName);\n return pluginContainerElement;\n };\n\n /**\n * @function registerPlugin\n * @methodOf TSC.PluginController\n * @param {String} pluginName - name of plugin\n * @param {String} viewElementType - view element type to install plugin into\n * @return {Promise} return a promise that resolves when the specified view element has initialized the plugin\n */\n var registerPlugin = function registerPlugin(pluginName, viewElementType) {\n if (_plugins[pluginName]) {\n var pluginSameNameMessage = 'Plugin with name [' + pluginName + '] is already registered with the player.';\n log.logMessage(pluginSameNameMessage);\n return Promise$1.reject(pluginSameNameMessage);\n }\n if (!isViewElementTypeSupported(viewElementType)) {\n var pluginUnsupportedViewElementMessage = 'Plugin with name [' + pluginName + '] is registering with an unsupported view element [' + viewElementType + '].';\n log.logMessage(pluginUnsupportedViewElementMessage);\n return Promise$1.reject(pluginUnsupportedViewElementMessage);\n }\n var plugin = Plugin$1.create(pluginName, viewElementType);\n _plugins[pluginName] = plugin;\n return plugin.initializedPromise;\n };\n\n /**\n * @function initializePluginsForViewElement\n * @methodOf TSC.PluginController\n * Initialize all registered plugins for the passed in view element type\n * @param {String} viewElementType - view element type\n * @param {jQuery} $viewElementPluginContainer - jQuery element to add plugin dom elements into.\n */\n var initializePluginsForViewElement = function initializePluginsForViewElement(viewElementType, $viewElementPluginContainer) {\n if (!isViewElementTypeSupported(viewElementType)) {\n log.logMessage('Tried to initialize plugin with unsupported view element type [' + viewElementType + ']');\n return;\n }\n var elementTypePlugins = getPluginsForViewElementType(viewElementType);\n elementTypePlugins.forEach(function (plugin) {\n if (plugin.initialized) {\n return;\n }\n var pluginContainerElement = getPluginContainerElement(plugin.pluginName);\n $viewElementPluginContainer.append(pluginContainerElement);\n plugin.init(pluginContainerElement);\n });\n if (elementTypePlugins.length === 0) {\n $viewElementPluginContainer.hide();\n } else {\n $viewElementPluginContainer.show();\n }\n };\n return Object.defineProperties({\n registerPlugin: registerPlugin,\n initializePluginsForViewElement: initializePluginsForViewElement\n }, {});\n};\nvar PluginController$1 = {\n /**\n * Factory method that returns a new PluginController object.\n * @function create\n * @memberof TSC.PluginController\n * @static\n * @return new PluginController instance\n */\n create: PluginController\n};\n\nvar CamtasiaQuizPreviewView = function CamtasiaQuizPreviewView($container, xmpString) {\n var xmpModel = Xmp.create();\n xmpModel.parse(xmpString);\n return xmpModel.ready.then(function () {\n playerConfiguration.configureFromXmp(xmpModel);\n localizationStrings.configureFromXmp(xmpModel);\n var beforeAfterPlayControlsView = BeforeAfterPlayControlsView$1.create($container, playerConfiguration);\n var noOp = function noOp() {}; // eslint-disable-line\n var playerMarkup = templateGenerator.generateVideoViewMarkup('quiz-preview-' + new Date().getTime());\n $container.html(playerMarkup);\n var ioOverlayView = IoOverlayView$1.create($container);\n var mediaView = VideoElementView$1.create($container, $container.find('.media-container'), ['video.mp4'], true, noOp, noOp, ioOverlayView);\n\n // hack Camtasia quiz preview template to display preview correctly\n var previewElement = document.getElementsByClassName('video-view');\n if (previewElement.length > 0) {\n previewElement[0].style.height = '100%';\n }\n mediaView.mediaElement.style.display = 'none';\n var quizModel = Quiz$1.create(xmpModel);\n var quizController = QuizController$1.create($container, mediaView, quizModel, beforeAfterPlayControlsView, true);\n quizController.displayNextQuestionSet();\n });\n};\nvar CamtasiaQuizPreviewView$1 = {\n create: CamtasiaQuizPreviewView\n};\n\nvar dependencies = {\n\t\"@techsmith/tsc-cloud-style-guide\": \"^24.0.0\",\n\t\"@techsmith/tsc-media-extensions-js\": \"10.7.2\",\n\tjquery: \"^3.5.1\",\n\tpepjs: \"0.4.3\",\n\t\"promise-polyfill\": \"^8.1.0\",\n\ttinycolor2: \"^1.4.1\"\n};\nvar devDependencies = {\n\t\"@babel/core\": \"^7.20.12\",\n\t\"@babel/preset-env\": \"^7.12.13\",\n\t\"@rollup/plugin-alias\": \"^5.1.0\",\n\t\"@rollup/plugin-babel\": \"^6.0.4\",\n\t\"@rollup/plugin-commonjs\": \"^25.0.7\",\n\t\"@rollup/plugin-json\": \"^6.1.0\",\n\t\"@rollup/plugin-node-resolve\": \"^15.2.3\",\n\t\"@rollup/plugin-terser\": \"^0.4.4\",\n\tautoprefixer: \"^6.3.5\",\n\t\"axe-core\": \"^3.2.2\",\n\tcommander: \"^12.0.0\",\n\tcompressing: \"^1.5.0\",\n\tcssnano: \"^3.5.2\",\n\tcypress: \"^10.6.0\",\n\t\"cypress-axe\": \"^1.0.0\",\n\t\"cypress-intellij-reporter\": \"^0.0.7\",\n\tesbuild: \"^0.17.4\",\n\teslint: \"^7.5.0\",\n\t\"eslint-config-techsmith\": \"^1.1.0\",\n\tgrunt: \"~1.6.1\",\n\t\"grunt-banner\": \"^0.6.0\",\n\t\"grunt-cdnify\": \"~1.0.2\",\n\t\"grunt-cli\": \"~1.4.3\",\n\t\"grunt-contrib-clean\": \"~2.0.0\",\n\t\"grunt-contrib-concat\": \"^1.0.1\",\n\t\"grunt-contrib-connect\": \"~2.0.0\",\n\t\"grunt-contrib-copy\": \"~1.0.0\",\n\t\"grunt-contrib-less\": \"^2.0.0\",\n\t\"grunt-contrib-watch\": \"~1.1.0\",\n\t\"grunt-downloadfile\": \"^2.1.1\",\n\t\"grunt-htmlrefs\": \"~0.5.0\",\n\t\"grunt-md2html\": \"~0.3.1\",\n\t\"grunt-newer\": \"~1.3.0\",\n\t\"grunt-open\": \"~0.2.4\",\n\t\"grunt-postcss\": \"^0.9.0\",\n\t\"grunt-replace\": \"~1.0.1\",\n\t\"grunt-shell\": \"^3.0.1\",\n\t\"jasmine-core\": \"^2.5.2\",\n\tkarma: \"^6.3.20\",\n\t\"karma-chrome-launcher\": \"^2.2.0\",\n\t\"karma-jasmine\": \"^1.1.2\",\n\t\"karma-mocha-reporter\": \"^2.2.5\",\n\t\"karma-rollup-preprocessor\": \"^7.0.0\",\n\t\"load-grunt-tasks\": \"^0.4.0\",\n\tlodash: \"^4.17.19\",\n\tmarkdown: \"^0.5.0\",\n\t\"postcss-assets\": \"^4.0.1\",\n\t\"postcss-svg\": \"^1.0.6\",\n\trollup: \"^4.14.0\",\n\t\"rollup-plugin-filesize\": \"^10.0.0\",\n\t\"rollup-plugin-glob-import\": \"^0.5.0\",\n\t\"rollup-plugin-license\": \"^3.3.1\",\n\t\"time-grunt\": \"^2.0.0\",\n\tyamljs: \"^0.2.4\"\n};\nvar license = \"UNLICENSED\";\nvar main = \"dist/techsmith-smart-player.js\";\nvar module$1 = \"dist/techsmith-smart-player.esm.js\";\nvar name = \"@techsmith/techsmith-smartplayer\";\nvar preferGlobal = false;\nvar repository = {\n\ttype: \"git\",\n\turl: \"https://github.com/TechSmith/SmartPlayer.git\"\n};\nvar scripts = {\n\tbuildSmartPlayerIife: \"npx rollup --config rollup.config.mjs --config-env production --config-package smartplayer --config-format iife\",\n\tbuildEmbedIife: \"npx rollup --config rollup.config.mjs --config-env production --config-package embed --config-format iife\",\n\tbuildSmartPlayerEsm: \"npx rollup --config rollup.config.mjs --config-env production --config-package smartplayer --config-format esm\",\n\tbuildPreRollIife: \"npx rollup --config rollup.config.mjs --config-env production --config-package preroll --config-format iife\",\n\tdevSmartPlayerIife: \"npx rollup --config rollup.config.mjs --config-env development --config-package smartplayer --config-format iife\",\n\tdevSmartPlayerEsm: \"npx rollup --config rollup.config.mjs --config-env development --config-package smartplayer --config-format esm\",\n\tdevEmbedIife: \"npx rollup --config rollup.config.mjs --config-env development --config-package embed --config-format iife\",\n\tdevPreRollIife: \"npx rollup --config rollup.config.mjs --config-env development --config-package preroll --config-format iife\",\n\tdevESBIife: \"node ./esbuild.config.js --config-env development --config-package smartplayer --config-format iife\",\n\tdevESBEmbedIife: \"node ./esbuild.config.js --config-env development --config-package embed --config-format iife\",\n\tdevESBPrerollIife: \"node ./esbuild.config.js --config-env development --config-package preroll --config-format iife\",\n\tdevESBIEsm: \"node ./esbuild.config.js --config-env development --config-package smartplayer --config-format esm\",\n\t\"integration-release\": \"grunt integration --rs='bin/integration'\",\n\tlint: \"npx eslint html5/**/*.js\",\n\t\"lint-fix\": \"npx eslint html5/**/*.js --fix\",\n\ttest: \"npx karma start ./karma.config.js --single-run\",\n\t\"test-watch\": \"npx karma start ./karma.config.js\"\n};\nvar version = \"5.117.0\";\nvar packageJson = {\n\tdependencies: dependencies,\n\tdevDependencies: devDependencies,\n\tlicense: license,\n\tmain: main,\n\tmodule: module$1,\n\tname: name,\n\tpreferGlobal: preferGlobal,\n\trepository: repository,\n\tscripts: scripts,\n\tversion: version\n};\n\nvar timeCodeRegex = /^((0?[0-9]:)?[0-5]?[0-9]):([0-5][0-9]) /;\nvar newlineRegex = /\\r?\\n/g;\nvar milliseconds = 1000;\nvar defaultStartTime = 0;\nvar defaultChapterName = localizationStrings.getPlayerString(playerStringNames.defaultFirstChapterName);\nvar getChapterNameFromLineString = function getChapterNameFromLineString(lineString) {\n return lineString.indexOf(' ') === -1 ? defaultChapterName : lineString.substring(lineString.indexOf(' '), lineString.length).trim();\n};\nvar createTocItem = function createTocItem(chapterName, startTime) {\n var chapterParams = {\n name: chapterName,\n startTime: startTime\n };\n if (playerConfiguration.videoThumbnailsSrc) {\n chapterParams.image = playerConfiguration.videoThumbnailsSrc;\n var rect = getThumbnailRectangleByTime(startTime / milliseconds, playerConfiguration.videoThumbnailInterval, playerConfiguration.videoThumbnailColumns, playerConfiguration.videoThumbnailWidth, playerConfiguration.videoThumbnailHeight);\n chapterParams.imageRectangle = ImageRectangle$1.create({\n x: rect.x,\n y: rect.y,\n width: rect.width,\n height: rect.height\n });\n }\n return TableOfContentsItem$1.create(chapterParams);\n};\nvar parseTableOfContentsItemFromString = function parseTableOfContentsItemFromString(lineString) {\n var timecodes = lineString.match(timeCodeRegex);\n if (timecodes) {\n var chapterName = getChapterNameFromLineString(lineString);\n var chapterStartTime = timeFormatter.convertTimecodeToMilliseconds(timecodes[0]);\n return createTocItem(chapterName, chapterStartTime);\n }\n};\n\n/**\n * Utility function will take a block of text as a string and parse it looking for chapter information to convert to a TOC Model.\n * @function textToTocModel\n * @param {String} textString - A string of text to search to see if it contains chapter information to convert to a TOC model.\n * @returns {TableOfContentsTrack} Table of Contents Track object from TSC media extensions lib.\n */\nvar textToTocModel = function textToTocModel(textString) {\n if (!textString || typeof textString !== 'string') {\n return null;\n }\n var textSplitNewlines = textString.split(newlineRegex);\n var chapterItems = [];\n var previousTocItemStartTime = -1;\n textSplitNewlines.forEach(function (textLine) {\n if (timeCodeRegex.test(textLine)) {\n var tocItem = parseTableOfContentsItemFromString(textLine);\n if (tocItem && tocItem.startTime > previousTocItemStartTime) {\n previousTocItemStartTime = tocItem.startTime;\n chapterItems.push(tocItem);\n }\n }\n });\n\n // insert a default chapter at time 0 if the input did not specify one\n if (chapterItems.length && chapterItems[0].startTime !== 0) {\n chapterItems.unshift(createTocItem(defaultChapterName, defaultStartTime));\n }\n return chapterItems.length ? TableOfContentsTrack$1.create({\n items: chapterItems\n }) : null;\n};\n\nvar deprecatedConfigSetter = function deprecatedConfigSetter(deprecatedName) {\n console.info(\"[SmartPlayer] \".concat(deprecatedName, \" setter is deprecated.\")); // eslint-disable-line no-console\n};\nvar deprecatedConfigGetter = function deprecatedConfigGetter(deprecatedName, returnValue) {\n console.info(\"[SmartPlayer] \".concat(deprecatedName, \" getter is deprecated.\")); // eslint-disable-line no-console\n return returnValue;\n};\n\nvar _started = false;\nvar _controls = mediaInterfaceConstants.controls.autohide;\nvar _authInfo = {};\nvar _lastError = null;\nvar _pluginController = null;\nvar addEventListener = function addEventListener(eventName, callback) {\n if (eventName === events.External.GoogleAnalyticsCustomEvent) {\n playerConfiguration.useCustomEventTracking(true, callback);\n } else {\n mediaPlayer.addEventListener(eventName, callback);\n }\n};\nvar removeEventListener = function removeEventListener(eventName, callback) {\n if (eventName === events.External.GoogleAnalyticsCustomEvent) {\n playerConfiguration.useCustomEventTracking(false, callback);\n } else {\n mediaPlayer.removeEventListener(eventName, callback);\n }\n};\nvar setAutoPlay = function setAutoPlay(value) {\n playerConfiguration.setAutoPlayMedia(String(value).toLowerCase() === 'true');\n};\nvar getControls = function getControls() {\n return _controls;\n};\nvar setControls = function setControls(value) {\n var lowerCaseValue = String(value).toLowerCase();\n if (lowerCaseValue === mediaInterfaceConstants.controls[\"false\"]) {\n _controls = mediaInterfaceConstants.controls[\"false\"];\n playerConfiguration.setDisableControls(true);\n playerConfiguration.setAutoHideControls(false);\n playerConfiguration.setDisableYouTubeControls(true);\n } else if (lowerCaseValue === mediaInterfaceConstants.controls[\"true\"]) {\n _controls = mediaInterfaceConstants.controls[\"true\"];\n playerConfiguration.setDisableControls(false);\n playerConfiguration.setAutoHideControls(false);\n playerConfiguration.setDisableYouTubeControls(true);\n } else if (lowerCaseValue === mediaInterfaceConstants.controls.youtube) {\n _controls = mediaInterfaceConstants.controls.youtube;\n playerConfiguration.setDisableControls(true);\n playerConfiguration.setAutoHideControls(false);\n playerConfiguration.setDisableYouTubeControls(false);\n } else {\n // default 'autohide'\n _controls = mediaInterfaceConstants.controls.autohide;\n playerConfiguration.setDisableControls(false);\n playerConfiguration.setAutoHideControls(true);\n playerConfiguration.setDisableYouTubeControls(true);\n }\n mediaPlayer.triggerEvent(events.Controls.Updated);\n};\nvar setDisableInteractions = function setDisableInteractions(disableInteractions) {\n playerConfiguration.setDisableInteractions(disableInteractions);\n mediaPlayer.triggerEvent(events.Controls.Updated);\n};\nvar getLoop = function getLoop() {\n var endActionParam = playerConfiguration.getEndActionParam();\n return playerConfiguration.getEndActionType().toLowerCase() === 'loop' && (endActionParam === 'true' || endActionParam === '1');\n};\nvar setLoop = function setLoop(value) {\n if (String(value).toLowerCase() === 'true') {\n playerConfiguration.setEndActionType('loop');\n playerConfiguration.setEndActionParam('true');\n } else {\n playerConfiguration.setEndActionType('stop');\n playerConfiguration.setEndActionParam('true');\n }\n};\nvar getError = function getError() {\n return _lastError;\n};\nvar setMuted = function setMuted(value) {\n mediaPlayer.setMuted(String(value).toLowerCase() === 'true');\n};\nvar getContextMenuEnabled = function getContextMenuEnabled() {\n return !playerConfiguration.getDisableContextMenuForVideo();\n};\nvar setContextMenuEnabled = function setContextMenuEnabled(value) {\n playerConfiguration.setDisableContextMenuForVideo(!value);\n};\nvar getQuizCreateInstanceUrl = function getQuizCreateInstanceUrl() {\n return quizService.getQuizCreateInstanceUrl();\n};\nvar setQuizCreateInstanceUrl = function setQuizCreateInstanceUrl(value) {\n quizService.setQuizCreateInstanceUrl(value);\n};\nvar getAuthInfo = function getAuthInfo() {\n return _authInfo;\n};\nvar setAuthInfo = function setAuthInfo(value) {\n if (_typeof$1(value) === 'object') {\n _authInfo = $.extend(_authInfo, value);\n }\n};\nvar addMediaSrc = function addMediaSrc(src) {\n playerConfiguration.addMediaSrc(src);\n};\nvar generalErrorHandler = function generalErrorHandler(event) {\n _lastError = event.data;\n};\nvar run = function run(containerId) {\n if (_started) {\n return;\n }\n deviceInfo.lookAtDevice();\n if (_authInfo.accessTokenEndpoint) {\n playerConfiguration.setTechSmithAccessTokenEndpoint(_authInfo.accessTokenEndpoint);\n }\n playerConfiguration.setDisableFullframeMode(true);\n playerConfiguration.setFullViewPort(false);\n mediaPlayer.init('#' + containerId);\n addEventListener('error', generalErrorHandler);\n _started = true;\n};\nvar destroy = function destroy() {\n if (!_started) {\n return;\n }\n var $spElement = mediaPlayer.getSmartPlayerRootElement();\n removeEventListener('error', generalErrorHandler);\n mediaPlayer.destroy();\n if ($spElement) {\n $spElement.removeClass();\n $spElement.empty();\n }\n playerConfiguration.clearConfiguration();\n _started = false;\n _controls = mediaInterfaceConstants.controls.autohide;\n _authInfo = {};\n _lastError = null;\n _pluginController = null;\n};\nvar setTheme = function setTheme(themeName) {\n themeController.setTheme(themeName);\n};\nvar setupPluginController = function setupPluginController() {\n _pluginController = PluginController$1.create();\n playerConfiguration.setPluginController(_pluginController);\n};\nvar registerPlugin = function registerPlugin(pluginName, viewElementType) {\n if (!_pluginController) {\n setupPluginController();\n }\n var pluginInitPromise = _pluginController.registerPlugin(pluginName, viewElementType);\n mediaPlayer.triggerEvent(events.Plugin.Added, {\n viewElementType: viewElementType\n });\n return pluginInitPromise;\n};\nvar displayQuizPreview = function displayQuizPreview(containerElement, xmpString) {\n var $container = $(containerElement);\n CamtasiaQuizPreviewView$1.create($container, xmpString);\n};\nvar displayImageFullscreen = function displayImageFullscreen() {\n mediaPlayer.triggerEvent(events.External.SwitchToFullscreen);\n};\nvar exitImageFullscreen = function exitImageFullscreen() {\n mediaPlayer.triggerEvent(events.External.ExitFullscreen);\n};\nvar createTocFromDescription = function createTocFromDescription(descriptionText) {\n if (descriptionText && typeof descriptionText === 'string') {\n var tocModel = textToTocModel(decodeURIComponent(descriptionText));\n if (tocModel) {\n playerConfiguration.tocModelFromDescription = tocModel;\n }\n }\n};\nvar mediaInterfaceController = Object.defineProperties({\n play: mediaPlayer.play,\n pause: mediaPlayer.pause,\n addEventListener: addEventListener,\n removeEventListener: removeEventListener,\n addSrc: addMediaSrc,\n addCaptionSrc: playerConfiguration.addCaptionSrc,\n run: run,\n destroy: destroy,\n setTheme: setTheme,\n registerPlugin: registerPlugin,\n displayQuizPreview: displayQuizPreview,\n displayImageFullscreen: displayImageFullscreen,\n exitImageFullscreen: exitImageFullscreen,\n getSafeSeekTime: mediaPlayer.getSafeSeekTime,\n createTocFromDescription: createTocFromDescription\n}, {\n version: {\n get: function get() {\n return packageJson.version;\n }\n },\n autoplay: {\n get: playerConfiguration.getAutoPlayMedia,\n set: setAutoPlay\n },\n controls: {\n get: getControls,\n set: setControls\n },\n disableInteractions: {\n get: playerConfiguration.getDisableInteractions,\n set: setDisableInteractions\n },\n currentSrc: {\n get: mediaPlayer.getCurrentSrc\n },\n currentTime: {\n get: mediaPlayer.getCurrentTime,\n set: mediaPlayer.setCurrentTime\n },\n duration: {\n get: mediaPlayer.getDuration\n },\n error: {\n get: getError\n },\n ended: {\n get: mediaPlayer.getEnded\n },\n loop: {\n get: getLoop,\n set: setLoop\n },\n muted: {\n get: mediaPlayer.getMuted,\n set: setMuted\n },\n paused: {\n get: mediaPlayer.getPaused\n },\n playbackRate: {\n get: mediaPlayer.getPlaybackRate,\n set: mediaPlayer.setPlaybackRate\n },\n buffered: {\n get: mediaPlayer.getBuffered\n },\n played: {\n get: mediaPlayer.getPlayed\n },\n seekable: {\n get: mediaPlayer.getSeekable\n },\n preload: {\n get: playerConfiguration.getPreload,\n set: playerConfiguration.setPreload\n },\n seeking: {\n get: mediaPlayer.getSeeking\n },\n volume: {\n get: mediaPlayer.getVolume,\n set: mediaPlayer.setVolume\n },\n src: {\n get: playerConfiguration.getMediaSrc,\n set: playerConfiguration.setMediaSrc\n },\n // these are the SP extended interface options\n posterSrc: {\n get: playerConfiguration.getPosterImageSrc,\n set: playerConfiguration.setPosterImageSrc\n },\n xmpSrc: {\n get: playerConfiguration.getXMPSrc,\n set: playerConfiguration.setXMPSrc\n },\n tocSrc: {\n get: playerConfiguration.getTOCSpriteSrc,\n set: playerConfiguration.setTOCSpriteSrc\n },\n mediaTitle: {\n get: playerConfiguration.getMediaTitle,\n set: playerConfiguration.setMediaTitle\n },\n tocTitle: {\n get: playerConfiguration.getTOCTitle,\n set: playerConfiguration.setTOCTitle\n },\n tocChapters: {\n get: mediaPlayer.getTocChapters\n },\n prerollSrc: {\n get: playerConfiguration.getPreRollSrc,\n set: playerConfiguration.setPreRollSrc\n },\n audioDescriptionMediaSrc: {\n get: playerConfiguration.getAudioDescriptionMediaSrc,\n set: playerConfiguration.setAudioDescriptionMediaSrc\n },\n quizId: {\n get: playerConfiguration.getFathomId,\n set: playerConfiguration.setFathomId\n },\n quizCreateInstanceUrl: {\n get: getQuizCreateInstanceUrl,\n set: setQuizCreateInstanceUrl\n },\n background: {\n get: playerConfiguration.getBackgroundColor,\n set: playerConfiguration.setBackgroundColor\n },\n captions: {\n get: mediaPlayer.getCaptionCollection\n },\n captionTrack: {\n get: mediaPlayer.getCaptionTrack,\n set: mediaPlayer.setCaptionTrack\n },\n captionsVisible: {\n get: mediaPlayer.getCaptionsVisible,\n set: mediaPlayer.setCaptionsVisible\n },\n ignoreStoredCaptionVisible: {\n get: playerConfiguration.getIgnoreStoredCaptionVisibleSetting,\n set: playerConfiguration.setIgnoreStoredCaptionVisibleSetting\n },\n rotation: {\n get: playerConfiguration.getMediaRotation,\n set: playerConfiguration.setMediaRotation\n },\n scrubbing: {\n get: mediaPlayer.getScrubbing,\n set: mediaPlayer.setScrubbing\n },\n isYouTube: {\n get: mediaPlayer.getIsYouTube\n },\n isInFullScreenMode: {\n get: mediaPlayer.isInFullScreenMode\n },\n authInfo: {\n get: getAuthInfo,\n set: setAuthInfo\n },\n // debug layer flags\n contextMenu: {\n get: getContextMenuEnabled,\n set: setContextMenuEnabled\n },\n isIphoneOrIpod: {\n get: deviceInfo.isIPhoneOrIPod\n },\n endActionType: {\n get: playerConfiguration.getEndActionType,\n set: playerConfiguration.setEndActionType\n },\n endActionParam: {\n get: playerConfiguration.getEndActionParam,\n set: playerConfiguration.setEndActionParam\n },\n ignoreXmpControllerParameters: {\n get: playerConfiguration.getIgnoreXmpControllerParameters,\n set: playerConfiguration.setIgnoreXmpControllerParameters\n },\n ignoreQuizQuestions: {\n get: playerConfiguration.getIgnoreQuizQuestions,\n set: playerConfiguration.setIgnoreQuizQuestions\n },\n singleClickControlEnabled: {\n get: playerConfiguration.getEnableSingleClickControl,\n set: playerConfiguration.setEnableSingleClickControl\n },\n doubleClickControlEnabled: {\n get: playerConfiguration.getEnableDoubleClickControl,\n set: playerConfiguration.setEnableDoubleClickControl\n },\n useLargerProgressBar: {\n get: playerConfiguration.getUseLargerProgressBar,\n set: playerConfiguration.setUseLargerProgressBar\n },\n displayHotspotsShape: {\n get: playerConfiguration.getDisplayHotspotsShape,\n set: playerConfiguration.setDisplayHotspotsShape\n },\n disablePictureInPicture: {\n get: playerConfiguration.getDisablePictureInPicture,\n set: playerConfiguration.setDisablePictureInPicture\n },\n contentBase: {\n get: playerConfiguration.getContentBase,\n set: playerConfiguration.setContentBase\n },\n skipVideoControlsEnabled: {\n get: playerConfiguration.getSkipVideoControlsEnabled,\n set: playerConfiguration.setSkipVideoControlsEnabled\n },\n skipVideoDuration: {\n get: playerConfiguration.getSkipVideoDuration,\n set: playerConfiguration.setSkipVideoDuration\n },\n allowFastForward: {\n get: playerConfiguration.getAllowFastForward,\n set: playerConfiguration.setAllowFastForward\n },\n showADACompliantCaptions: {\n get: playerConfiguration.getShowADACompliantCaptions,\n set: playerConfiguration.setShowADACompliantCaptions\n },\n rememberUserInfo: {\n get: playerConfiguration.getRememberUserInfo,\n set: playerConfiguration.setRememberUserInfo\n },\n userInfo: {\n get: playerConfiguration.getUserInfo,\n set: playerConfiguration.setUserInfo\n },\n userSignedIn: {\n get: playerConfiguration.getUserSignedIn,\n set: playerConfiguration.setUserSignedIn\n },\n disableContinueWithoutQuestions: {\n get: playerConfiguration.getDisableContinueWithoutQuestions,\n set: playerConfiguration.setDisableContinueWithoutQuestions\n },\n logScormApiCalls: {\n get: playerConfiguration.getLogScormApiCalls,\n set: playerConfiguration.setLogScormApiCalls\n },\n videoThumbnailsSrc: {\n get: playerConfiguration.getVideoThumbnailSrc,\n set: playerConfiguration.setVideoThumbnailSrc\n },\n videoThumbnailWidth: {\n get: playerConfiguration.getVideoThumbnailWidth,\n set: playerConfiguration.setVideoThumbnailWidth\n },\n videoThumbnailHeight: {\n get: playerConfiguration.getVideoThumbnailHeight,\n set: playerConfiguration.setVideoThumbnailHeight\n },\n videoThumbnailInterval: {\n get: playerConfiguration.getVideoThumbnailInterval,\n set: playerConfiguration.setVideoThumbnailInterval\n },\n videoThumbnailColumns: {\n get: playerConfiguration.getVideoThumbnailColumns,\n set: playerConfiguration.setVideoThumbnailColumns\n },\n completeScormOnRequirementsComplete: {\n get: playerConfiguration.getCompleteScormOnRequirementsComplete,\n set: playerConfiguration.setCompleteScormOnRequirementsComplete\n },\n progressBarWidth: {\n get: mediaPlayer.getProgressBarDisplayWidth\n },\n quizServiceBaseUrl: {\n get: playerConfiguration.getQuizServiceBaseUrl,\n set: playerConfiguration.setQuizServiceBaseUrl\n },\n resultsServiceBaseUrl: {\n get: playerConfiguration.getResultsServiceBaseUrl,\n set: playerConfiguration.setResultsServiceBaseUrl\n },\n customFullScreenDomElement: {\n get: playerConfiguration.getCustomFullScreenDomElement,\n set: playerConfiguration.setCustomFullScreenDomElement\n },\n enableTheaterMode: {\n get: playerConfiguration.getEnableTheaterMode,\n set: playerConfiguration.setEnableTheaterMode\n },\n currentDisplayMode: {\n get: function get() {\n return mediaPlayer.getCurrentDisplayMode() || DisplayModes.Normal;\n }\n },\n // deprecated\n environment: {\n get: function get() {\n return deprecatedConfigGetter('mediaInterface.environment', 0);\n },\n set: function set() {\n deprecatedConfigSetter('mediaInterface.environment');\n }\n }\n});\n\nexport { deviceInfo, DisplayModes as displayModes, events, fathomService, languageCodes, localizationStrings, log, mediaInterfaceController as mediaInterface, mediaInterfaceConstants, mediaPlayer, playerConfiguration, preloadOptions, quizService, scormController$1 as scormController, supportedPluginViewElements, themeNames };\n//# sourceMappingURL=techsmith-smart-player.esm.js.map\n"],"names":["commonjsGlobal","globalThis","window","g","self","getDefaultExportFromCjs","x","__esModule","Object","prototype","hasOwnProperty","call","module","exports","MOUSE_PROPS","MOUSE_DEFAULTS","PointerEvent","inType","inDict","create","e","document","createEvent","initEvent","bubbles","cancelable","p","i","length","buttons","pressure","clientX","y","clientY","pointerId","width","height","tiltX","tiltY","twist","tangentialPressure","pointerType","hwTimestamp","isPrimary","PointerMap","Map","forEach","SparseArrayMap","this","array","size","set","k","v","undefined","has","get","clear","callback","thisArg","CLONE_PROPS","CLONE_DEFAULTS","BOUNDARY_EVENTS","HAS_SVG_INSTANCE","SVGElementInstance","dispatcher","pointermap","eventMap","captureInfo","eventSources","eventSourceList","registerSource","name","source","s","newEvents","events","bind","push","register","element","es","l","unregister","contains","container","contained","ex","down","inEvent","fireEvent","move","up","enter","leave","over","out","cancel","leaveOut","event","propagate","enterOver","eventHandler","_handledByPE","type","fn","listen","target","addEvent","unlisten","removeEvent","eventName","addEventListener","boundHandler","removeEventListener","makeEvent","relatedTarget","preventDefault","_target","dispatchEvent","cloneEvent","eventCopy","correspondingUseElement","getTarget","capture","propagateDown","targets","parentNode","reverse","setCapture","inPointerId","inTarget","skipDispatch","releaseCapture","implicitRelease","asyncDispatchEvent","t","requestAnimationFrame","targeting","shadow","inEl","shadowRoot","webkitShadowRoot","canTarget","Boolean","elementFromPoint","targetingShadow","olderShadow","os","olderShadowRoot","se","querySelector","allShadows","shadows","searchRoot","inRoot","st","sr","ssr","owner","nodeType","Node","DOCUMENT_NODE","DOCUMENT_FRAGMENT_NODE","findTarget","Array","map","toArray","slice","filter","MO","MutationObserver","WebKitMutationObserver","SELECTOR","OBSERVER_INIT","subtree","childList","attributes","attributeOldValue","attributeFilter","Installer","add","remove","changed","binder","addCallback","removeCallback","changedCallback","observer","mutationWatcher","shadowSelector","selector","rule","watchSubtree","observe","enableOnSubtree","readyState","installOnLoad","installNewSubtree","findElements","addElement","querySelectorAll","removeElement","el","elementChanged","oldValue","concatLists","accum","list","concat","isElement","n","ELEMENT_NODE","flattenMutationTree","inNodes","tree","reduce","mutations","mutationHandler","m","addedNodes","removedNodes","attrib2css","selectors","styles","hasNativePE","MSPointerEvent","hasShadowRoot","ShadowDOMPolyfill","head","createShadowRoot","applyAttributeStyles","r","String","createElement","textContent","appendChild","DEDUP_DIST","BUTTON_TO_BUTTONS","HAS_BUTTONS","MouseEvent","INSTALLER","mouseEvents","POINTER_ID","POINTER_TYPE","lastTouches","isEventSimulatedFromTouch","lts","dx","Math","abs","dy","prepareEvent","pd","prepareButtonsForMove","which","mousedown","button","mousemove","mouseup","mouseover","mouseout","deactivateMouse","pointermap$1","DEDUP_TIMEOUT","CLICK_COUNT_TIMEOUT","ATTRIB","touchEvents","elementAdded","a","getAttribute","touchActionToScrollType","_scrollType","elementRemoved","oldSt","scrollTypes","EMITTER","XSCROLLER","YSCROLLER","SCROLLER","touchAction","exec","firstTouch","isPrimaryTouch","inTouch","identifier","setPrimaryTouch","firstXY","X","Y","scrolling","cancelResetClickCount","removePrimaryPointer","inPointer","resetClickCount","clickCount","resetId","setTimeout","clearTimeout","typeToButtons","ret","touchToPointer","cte","currentTouchEvent","id","detail","radiusX","webkitRadiusX","radiusY","webkitRadiusY","force","webkitForce","altKey","ctrlKey","metaKey","shiftKey","processTouches","inFunction","tl","changedTouches","shouldScroll","scrollAxis","currentTarget","oa","findTouch","inTL","inId","vacuumTouches","touches","d","value","key","cancelOut","touchstart","dedupSynthMouse","overDown","outTarget","touchmove","touchcancel","moveOverOut","pointer","outEvent","touchend","upOut","cleanUpPointer","lt","indexOf","splice","h","pointermap$2","HAS_BITMAP_TYPE","MSPOINTER_TYPE_MOUSE","msEvents","POINTER_TYPES","cleanup","MSPointerDown","MSPointerMove","MSPointerUp","MSPointerOut","MSPointerOver","MSPointerCancel","MSLostPointerCapture","MSGotPointerCapture","applyPolyfill","navigator","msPointerEnabled","tp","msMaxTouchPoints","defineProperty","enumerable","ontouchstart","assertActive","error","Error","assertConnected","elem","parent","ownerDocument","inActiveButtonState","applyPolyfill$1","Element","setPointerCapture","defineProperties","msSetPointerCapture","msReleasePointerCapture","targetFinding","factory","freeze","External","VideoStartInitiated","VideoStart","VideoEnd","VideoReplay","MediaError","MediaReady","CaptionChange","Ready","VideoPlay","PlayerFullScreenModeChanged","PlayerRumData","GoogleAnalyticsCustomEvent","QuizVisible","QuizHidden","ShowStartQuizPrompt","HideStartQuizPrompt","SwitchToFullscreen","ExitFullscreen","PlayerSettingsOpen","PlayerSettingsClose","PlayerControlsHidden","PlayerControlsVisible","PlayerResize","HeroControlHidden","ImagePointerOver","ImagePointerLeave","DisplayModeChanged","CaptionsHidden","CaptionsVisible","ExternalVideo","VideoLoadStart","VideoLoadedMetadata","VideoLoadedData","VideoCanPlay","VideoCanPlayThrough","VideoPlaying","VideoWaiting","VideoSeeking","VideoSeeked","VideoEnded","VideoPause","VideoResize","VideoError","VideoVolumeChange","VideoDurationChange","VideoRateChange","VideoTimeUpdate","VideoProgress","Player","MediaControlsReady","MediaExtensionsReady","Controls","ClickPrev","ClickNext","FullScreenChange","ToggleFullScreen","ExpandVideo","ShowToc","HideToc","TocScroll","Disable","Enable","Updated","HotspotClicked","PipChanged","TheaterModeChanged","MediaResize","PlayerInitialized","ShowVideoBufferingView","HideVideoBufferingView","VideoControlsHidden","HideVideoControls","VideoControlsVisible","ShowVideoControls","DisplayCaptionControl","DisplayTocControl","TocDisplayToggled","FocusTocButton","HeroPlayControlClicked","HeroPlayControlVisible","HeroPlayControlHidden","ReplayControlVisible","ReplayControlHidden","StartedPlayback","HideIOOverlay","SearchFocusChange","HideLoadingMessage","Hotspots","Paused","Resume","AreaActive","AreaInactive","Media","Play","Playing","Pause","SeekToTime","Replay","End","Abort","Suspend","Emptied","Stalled","Progress","InitializeCurrent","SourceChanged","TryToAutoPlay","SetVolume","SetMutedState","SetPlaybackRate","FirstPlay","IFrame","EnterFullFrame","ExitFullFrame","Update","QuizMarkers","PlayProgress","LoadProgress","NextQuestionPosition","Scrubbing","Started","Ended","Quizzing","QuizSetupComplete","Complete","Review","Begin","BeginClicked","Skip","SkipClicked","Status","SubmittingInstance","CreatedInstance","Submitted","ShowSubmissionRetryMessage","HideSubmissionRetryMessage","TransitionImageQuizToAnswers","HideQuiz","ShowQuizBar","ShowQuizSetup","ShowQuestionSetView","CloseQuestionSetView","SubmitQuestionSet","RationaleActionLocation","RationaleActionJumpToTime","QuizIsOutOfDate","QuizBadDefinition","MinimizeUI","MaximizeUI","UIVisible","UIHidden","Captions","Toggled","StateLoaded","Changed","LanguageChanged","DragStart","DragEnd","Resized","CaptionService","NewCaptionTrack","AudioDescription","Failed","Timing","PlayerLoaded","VideoMetadataLoaded","VideoHasEnoughData","Analytics","VideoStarted","ContentLoaded","VideoPercentViewed","VideoFinishedAction","VideoFinished","VideoLoadingTimeInSeconds","VideoLoadingTime","OpenExternalLinkView","OpenExternalLinkClick","HotspotAction","CouldNotPlaySmoothlyIn20Secs","PlaybackWasStoppedToBuffer","Plugin","Added","MediaAreaPluginMouseDown","MediaAreaPluginMouseUp","MediaAreaPluginKeyDown","MediaAreaPluginKeyUp","Network","Retrying","Fathom","GetComplete","Modals","Open","Closed","ExternalLinkView","Clicked","SCORM","ExitSession","ExitSessionConfirmed","ExitSessionWithOutProgressConfirmed","ResumeSession","FailedToFindApi","Images","PointerOver","PointerLeave","supportedPluginViewElements","PROGRESS_BAR","MEDIA","BEFORE_AFTER_PLAY_CONTROLS","PLAYER","_supportedLanguages","languageCodes","ENGLISH","GERMAN","JAPANESE","FRENCH","SPANISH","CHINESE","PORTUGUESE","ENU","DEU","JPN","FRA","SP","ZH","PT","isValid","language","some","supportedLanguage","mediaInterfaceConstants","controls","autohide","youtube","_typeof$1","o","Symbol","iterator","constructor","arrayMap","iteratee","index","result","eq","other","assocIndexOf","ListCache","entries","entry","__data__","data","pop","freeGlobal","freeSelf","root","Function","_Symbol","objectProto","nativeObjectToString","toString","symToStringTag","toStringTag","nativeObjectToString$1","nullTag","undefinedTag","symToStringTag$1","baseGetTag","isOwn","tag","unmasked","getRawTag","objectToString","isObject","asyncTag","funcTag","genTag","proxyTag","isFunction","uid","coreJsData","maskSrcKey","keys","IE_PROTO","funcToString","toSource","func","reIsHostCtor","funcProto$1","objectProto$2","funcToString$1","hasOwnProperty$1","reIsNative","RegExp","replace","baseIsNative","test","getNative","object","getValue","Map$1","nativeCreate","hasOwnProperty$2","hasOwnProperty$3","Hash","getMapData","MapCache","Stack","pairs","LARGE_ARRAY_SIZE","SetCache","values","arraySome","predicate","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","equalArrays","bitmask","customizer","equalFunc","stack","isPartial","arrLength","othLength","stacked","seen","arrValue","othValue","compared","othIndex","Uint8Array","mapToArray","setToArray","COMPARE_PARTIAL_FLAG$1","COMPARE_UNORDERED_FLAG$1","boolTag","dateTag","errorTag","mapTag","numberTag","regexpTag","setTag","stringTag","symbolTag","arrayBufferTag","dataViewTag","symbolProto","symbolValueOf","valueOf","arrayPush","offset","isArray$1","isArray","baseGetAllKeys","keysFunc","symbolsFunc","arrayFilter","resIndex","stubArray","propertyIsEnumerable","nativeGetSymbols","getOwnPropertySymbols","getSymbols","symbol","isObjectLike","baseIsArguments","objectProto$6","hasOwnProperty$4","propertyIsEnumerable$1","isArguments","arguments","freeExports","freeModule","Buffer","isBuffer","MAX_SAFE_INTEGER","reIsUint","isIndex","MAX_SAFE_INTEGER$1","isLength","typedArrayTags","baseUnary","freeExports$1","freeModule$1","freeProcess","process","nodeUtil","types","require","binding","nodeIsTypedArray","isTypedArray","hasOwnProperty$5","arrayLikeKeys","inherited","isArr","isArg","isBuff","isType","skipIndexes","baseTimes","objectProto$8","isPrototype","Ctor","overArg","transform","arg","nativeKeys","hasOwnProperty$6","isArrayLike","keys$1","baseKeys","getAllKeys","COMPARE_PARTIAL_FLAG$2","hasOwnProperty$7","DataView","Promise$2","Set","WeakMap","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","ArrayBuffer","resolve","ctorString","getTag$1","COMPARE_PARTIAL_FLAG$3","argsTag$2","arrayTag$1","objectTag$2","hasOwnProperty$8","baseIsEqualDeep","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","byteLength","byteOffset","buffer","message","convert","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","skipCtor","objValue","objCtor","othCtor","equalObjects","baseIsEqual","COMPARE_PARTIAL_FLAG$4","COMPARE_UNORDERED_FLAG$2","isStrictComparable","matchesStrictComparable","srcValue","baseMatches","matchData","getMatchData","noCustomizer","baseIsMatch","symbolTag$1","isSymbol","reIsDeepProp","reIsPlainProp","isKey","FUNC_ERROR_TEXT","memoize","resolver","TypeError","memoized","args","apply","cache","Cache","rePropName","reEscapeChar","stringToPath","string","charCodeAt","match","number","quote","subString","INFINITY","symbolProto$1","symbolToString","baseToString","castPath","INFINITY$1","toKey","baseGet","path","baseHasIn","hasPath","hasFunc","COMPARE_PARTIAL_FLAG$5","COMPARE_UNORDERED_FLAG$3","baseMatchesProperty","defaultValue","hasIn","identity","property","basePropertyDeep","baseIteratee","fromRight","baseFor","iterable","props","baseEach","eachFunc","collection","createBaseEach","baseMap","arrayEach","baseFindIndex","fromIndex","NAN","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","INFINITY$2","MAX_INTEGER","toFinite","isBinary","toNumber","toInteger","remainder","nativeMax","max","findIndex","findIndexFunc","find","baseFilter","FUNC_ERROR_TEXT$1","reject$1","negate","last","baseSlice","start","end","nativeMax$1","baseSetToString","nativeNow","Date","now","shortOut","count","lastCalled","stamp","remaining","setToString","baseRest","otherArgs","overRest","invokeMap","isFunc","baseInvoke","splice$1","indexes","lastIndex","previous","basePullAt","parseXml","wellKnownNamespaces","xml","rdf","dc","exif","stDim","stFnt","tsc","tscDM","tscHS","tscIQ","xmp","xmpDM","xmpG","xmpMM","namespaceResolver","prefix","stringTag$2","isString","isNil","DOMParser","canParseHtmlNatively","DOMParserProto","realParseFromString","parseFromString","markup","firstElement","doc","implementation","createHTMLDocument","docElement","documentElement","innerHTML","firstElementChild","childElementCount","localName","toLowerCase","replaceChild","xmlStr","contentType","ActiveXObject","xmlDoc","async","loadXML","getElementText","getElementsByTagName","getElementsByTagNameNS","getFirstElementByTagName","childElements","XmlUtility","xmlDocFragmentToString","XMLSerializer","serializeToString","xmlDocToString","hasAttribute","attributeName","hasAttributeWithValue","createDocument","createElementWithValue","createTextNode","getFirstChildElementTextByTagName","childElement","createElementNS","ns","getNSInfo","tagName","nameParts","split","nsUrl","nsPrefix","tagShortName","NamespaceXmlUtility","getFirstElementByTagNameNSPrefix","docOrElement","evaluate","isDocument","XPathResult","FIRST_ORDERED_NODE_TYPE","singleNodeValue","getElementsByTagNameNSPrefix","tokens","getFirstChildElementTextByTagNameNSPrefix","createDocumentNS","createElementFromObject","tagInfo","that","toXmp","nsInfo","newElement","atts","attrVal","attrName","attNsInfo","setAttributeNS","setAttribute","children","child","text","createElementNSWithValue","LanguageIdentifier$1","languageIdentifier","languageIdentifierParts","_identifier","_language","_region","join","toPOJO","region","_identifiers","af","displayName","regions","za","sq","al","ar","dz","bh","eg","iq","jo","kw","lb","ly","ma","om","qa","sa","sy","tn","ae","ye","hy","am","az","eu","be","by","bg","ca","zh","cn","hk","mo","sg","tw","chs","cht","hr","cs","cz","da","dk","div","mv","nl","en","au","bz","cb","ie","jm","nz","ph","tt","gb","us","zw","et","ee","fo","fa","ir","fi","fr","lu","mc","ch","gl","ka","ge","de","at","li","gr","gu","he","il","hi","hu","is","it","ja","jp","kn","kk","kz","kok","ko","kr","ky","lv","mk","ms","bn","my","mr","mn","nb","no","nn","pl","pt","br","pa","ro","ru","sp","sk","sl","si","bo","cl","co","cr","ec","sv","gt","hn","mx","ni","py","pe","pr","uy","ve","sw","ke","syr","ta","te","th","tr","uk","ua","ur","pk","uz","vi","vn","languageIdentifiers","isSupportedLanguage","languageIdentifierString","identifiers","setTimeoutFunc$1","noop$2","Promise$1$1","_state","_handled","_value","_deferreds","doResolve$1","handle$1","deferred","_immediateFn","onFulfilled","onRejected","reject$1$1","promise","resolve$1","newValue","then","finale$1","_unhandledRejectionFn","len","Handler$1","done","reason","prom","reject","all","arr","res","val","race","setImmediate","err","console","warn","UndoAction","undoFunc","undoParams","redoFunc","redoParams","execute","UndoAction$1","ImageRectangle$1","propertyInfo","_x","_y","_width","_height","Number","_public","toXmpAtt","ImageRectangle","isBlacklistedTag","strTag","findNextTag","strTextToSearch","nStartPoint","nPosition","nCode","getTagAt","strText","nTagPosition","nEnd","substring","findNextTagNotBlacklisted","getTextToCloseTag","arrStack","strCloseTags","arrOpenTags","strCloseTagNeeded","matchingTag","strOpenTagNeeded","isClosingTag","strToMatch","strMatch","removeTag","strToFix","nTagEnd","trimString","charAt","Rtf","str","removeLastBracket","strFixed","nCountCorrectedThisLoop","nNextPosition","strAlternateTag","strNextTag","nStringBetweenBegin","strBetween","removeEmptyTags","arrTagStack","nestTags","CaptionText","params","_text","_plainText","_markupText","_languageIdentifier","_additionalParamProperties","_xmlUtility","setLanguageIdentifier","previousLanguageIdentifierString","setText","plainText","markupText","treeDesc","pojo","validateParams","CaptionText$1","textElement","rtfText","decoratorFunctions","nullCaptionText","Caption","_startTime","_duration","_horizontalAlignment","_verticalAlignment","_file","_image","_imageIndex","_imageOffset","_imageRectangle","_captionTextList","_activeLanguageIdentifier","setStartTime","startTime","floor","setDuration","duration","addOrReplaceCaptionText","newCaptionText","existingCaptionItemIndex","captionItem","oldCaptionItem","removeCaptionText","captionText","removedCaptionItems","captionTextItem","removedCaptionItem","setHorizontalAlignment","horizontalAlignment","setVerticalAlignment","verticalAlignment","setFile","file","setImage","image","setImageIndex","imageIndex","setImageOffset","imageOffset","setImageRectangle","imageRectangle","getCaptionText","preferredCaptionText","endTime","captionTextList","activeLanguageIdentifier","getAvailableLanguages","Caption$1","captionElement","tinycolor$1","createCommonjsModule","trimLeft","trimRight","tinyCounter","mathRound","round","mathMin","min","mathMax","mathRandom","random","tinycolor","color","opts","rgb","b","ok","format","named","names","matchers","rgba","hsl","hsla","hsv","hsva","hex8","parseIntFromHex","convertHexToDecimal","hex6","hex4","hex3","stringInputToObject","isValidCSSUnit","bound01","substr","convertToPercentage","f","q","mod","hsvToRgb","hue2rgb","hslToRgb","boundAlpha","inputToRGB","_originalInput","_r","_g","_b","_a","_roundA","_format","_gradientType","gradientType","_ok","_tc_id","rgbToHsl","rgbToHsv","rgbToHex","allow3Char","hex","pad2","rgbaToArgbHex","convertDecimalToHex","_desaturate","amount","toHsl","clamp01","_saturate","_greyscale","desaturate","_lighten","_brighten","toRgb","_darken","_spin","hue","_complement","_triad","_tetrad","_splitcomplement","_analogous","results","slices","part","_monochromatic","toHsv","modification","isDark","getBrightness","isLight","getOriginalInput","getFormat","getAlpha","getLuminance","RsRGB","GsRGB","BsRGB","pow","setAlpha","toHsvString","toHslString","toHex","toHexString","toHex8","allow4Char","rgbaToHex","toHex8String","toRgbString","toPercentageRgb","toPercentageRgbString","toName","hexNames","toFilter","secondColor","hex8String","secondHex8String","formatSet","formattedString","hasAlpha","clone","_applyModification","lighten","brighten","darken","saturate","greyscale","spin","_applyCombination","analogous","complement","monochromatic","splitcomplement","triad","tetrad","fromRatio","newColor","equals","color1","color2","mix","rgb1","rgb2","readability","c1","c2","isReadable","wcag2","wcag2Parms","parms","level","toUpperCase","validateWCAG2Parms","mostReadable","baseColor","colorList","includeFallbackColors","bestColor","bestScore","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","burntsienna","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","flipped","flip","parseFloat","isNaN","isOnePointZero","processPercent","isPercentage","c","CSS_UNIT","PERMISSIVE_MATCH3","PERMISSIVE_MATCH4","MAX_ARRAY_INDEX","MAX_ARRAY_LENGTH","nativeFloor","nativeMin","sortedIndexBy","retHighest","low","high","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","mid","computed","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedIndexBy","baseAssignValue","hasOwnProperty$9","assignValue","copyObject","isNew","hasOwnProperty$a","baseKeysIn","nativeKeysIn","isProto","keysIn$1","freeExports$2","freeModule$2","Buffer$1","allocUnsafe","copyArray","getPrototype","getPrototypeOf","getSymbolsIn","getAllKeysIn","hasOwnProperty$b","cloneArrayBuffer","arrayBuffer","reFlags","symbolProto$2","symbolValueOf$1","boolTag$2","dateTag$2","mapTag$3","numberTag$2","regexpTag$2","setTag$3","stringTag$3","symbolTag$2","arrayBufferTag$2","dataViewTag$3","float32Tag$1","float64Tag$1","int8Tag$1","int16Tag$1","int32Tag$1","uint8Tag$1","uint8ClampedTag$1","uint16Tag$1","uint32Tag$1","initCloneByTag","isDeep","dataView","cloneDataView","typedArray","cloneTypedArray","regexp","cloneRegExp","objectCreate","baseCreate","proto","nodeIsMap","isMap","nodeIsSet","isSet","CLONE_DEEP_FLAG","CLONE_FLAT_FLAG","CLONE_SYMBOLS_FLAG","argsTag$3","funcTag$2","genTag$1","objectTag$3","cloneableTags","baseClone","isFlat","isFull","input","initCloneArray","copy","cloneBuffer","initCloneObject","copySymbolsIn","baseAssignIn","copySymbols","baseAssign","subValue","keysIn","spreadableSymbol","isConcatSpreadable","isFlattenable","baseFlatten","depth","isStrict","compareAscending","valIsDefined","valIsReflexive","baseOrderBy","iteratees","orders","comparer","sort","baseSortBy","objCriteria","criteria","othCriteria","ordersLength","compareMultiple","isIterateeCall","sortBy","CaptionCollection","_captions","_captionLanguages","addCaptionFromLanguageCodeCache","caption","addCaption","removeCaption","removeCaptionFromLanguageCodeCache","setCaptions","captions","setActiveLanguageIdentifier","previousActiveLanguageIdentifierString","getActiveLanguageIdentifier","mergeCaptions","captionsToMerge","captionToMerge","matchingCaption","existingCaption","captionsClone","CaptionCollection$1","_defaults$1","fontFamily","fontSize","fgColor","bgColor","CaptionTrack","_fgColor","_bgColor","_fontFamily","_fontSize","parseFontSize","_position","position","_barHeight","barHeight","_captionCollection","attsFromColor","tinycolorToSimpleRgb","tinycolorObj","rgbaColorObj","fgHexColor","bgOpacity","bgHexColor","bgRGBACssColor","captionCollection","getRGBColor","defaultFontSize","parsedFontSize","CaptionTrack$1","captionTrackElement","captionTrack","fgColorElement","bgColorElement","CaptionController$2","_activeCaptionTrack","_captionTracks","cacheActiveCaptionTrack","preferredCaptionTrack","addCaptionTrack","storeCaptionLanguage","removeCaptionTrack","captionTrackToRemove","removedCaptionTracks","removedCaptionTrack","getMergedCaptionTrack","captionTrackParams","mergedCaptionTrack","activeCaptionTrackIsDefinedWithCaptions","activeCaptionTrack","numberCaptionTracks","containsCaptions","captionsContainsTocThumbnails","clearCaptions","addCaptionTrackFromXmpElement","parsedCaptionTrack","availableLanguages","filteredCaptionTextList","captionParams","newCaption","getActiveCaptionsTocThumbnailImage","CaptionController$1$1","TableOfContentsItem","_name","TableOfContentsItem$1","tableOfContentsItemElement","TableOfContentsTrack","_items","items","cellLayout","TableOfContentsTrack$1","tableOfContentsTrackElement","tableOfContentsTrack","tableOfContentsItemElements","BoundingPoly$1","coordinatesString","_coordinates","coordinateTokens","compact","coordinateString","coordinates","coord","BoundingPoly","Hotspot","_label","_boundingPoly","_rotate","_pause","_jumpTime","_location","_newWindow","_jumpFile","label","boundingPoly","rotate","pause","jumpTime","location","newWindow","jumpFile","Hotspot$1","hotspotElement","HotspotTrack","_hotspots","hotspots","HotspotTrack$1","hotspotTrackElement","hotspotTrack","Answer","_orderId","orderId","Answer$1","answerElement","answerText","Feedback","_reason","_jumpToTime","jumpToTime","Feedback$1","feedbackElement","feedbackText","Question$2","_id","_type","_correctAnswer","_answers","_feedback","correctAnswer","answers","feedback","Question$1$1","questionElement","correctAnswerText","descriptionElements","QuestionSet$2","_questions","questions","QuestionSet$1$1","questionSetElement","QuizTrack","_quizGuid","_authoredEmail","_requireUserId","_locale","_reportMethod","_clientId","_quizHash","_hideReplay","_allowSkipQuiz","_parameters","_questionSets","quizGuid","authoredEmail","requireUserId","locale","reportMethod","clientId","quizHash","hideReplay","allowSkipQuiz","parameters","questionSets","param","parseParameter","parameterElement","parseParameters","quizParametersElement","xmlUtility","QuizTrack$1","quizTrackElement","quizTrack","SpeechMarker","_probability","probability","SpeechMarker$1","speechMarkerElement","SpeechTrack","_markers","markers","SpeechTrack$1","speechTrackElement","speechTrack","ScreenTextMarker","_tableOfContentsEntry","tableOfContentsEntry","ScreenTextMarker$1","screenTextMarkerElement","ScreenTextTrack","ScreenTextTrack$1","screenTextTrackElement","screenTextTrack","getXmlUtility","Controller","_controllerTextItems","controllerTextItems","localizedTextTree","item","localizedTexts","localizedText","lang","parseParameter$1","parseParameters$1","parametersElement","parseLocalizedTextItem","parseControllerText","controllerTextItemElement","textElements","parseControllerTextItems","controllerTextElement","Controller$1","controllerElement","descriptionElement","ContentList","parseContentListItems","contentListItemElements","itemElement","ContentList$1","contentListElement","castSlice","baseIsNaN","baseIndexOf","strictIndexOf","charsStartIndex","strSymbols","chrSymbols","reHasUnicode","hasUnicode","rsAstral","rsCombo","rsFitz","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsSeq","rsSymbol","reUnicode","stringToArray","unicodeToArray","asciiToArray","reTrimStart","baseValues","nativeMax$2","_parsers","trimLeadingDot","extension","chars","guard","trimStart","captionParsers","supportedExtensions","parserCreator","extensions","parser","theParser","includes","captionImporter","captionController","fileName","fileContents","deserialize","Xmp$1","xmpXml","_version","_title","_date","_creator","_presenterEmail","_description","_source","_about","_keywords","_thumbnail","_firstFrame","_project","_originId","_iPodExplicit","_documentId","_videoFrameSize","_controller","_contentList","_captionController","_hotspotTrack","_tableOfContentsTrack","_quizTrack","_speechTrack","_screenTextTrack","_languages","_containsTocThumbnails","_containsToc","_containsCaptions","_containsHotspots","_containsQuiz","_containsQuizQuestions","_containsScreenText","_containsSpeechText","tracksContainer","track","langName","langValue","unit","scale","version","title","date","creator","presenterEmail","description","about","keywords","thumbnail","firstFrame","project","originId","iPodExplicit","documentId","videoFrameSize","tocThumbnailImageSrc","containsTocThumbnails","containsToc","containsHotspots","containsQuiz","containsQuizQuestions","containsScreenText","containsSpeechText","controller","contentList","parseLanguageName","languageNameElement","parseProductionDetails","rootDescriptionElement","videoFrameSizeElement","langNameElement","parseLanguages","durationElement","getElementForTrackType","elements","trackType","parseTracks","tracksElement","tracksDescriptionElements","parseCaptionTrack","parseHotspotTrack","parseTableOfContentsTrack","parseQuizTrack","parseSpeechTrack","parseScreenTextTrack","recordXmpContentFlags","nsElement","rdfElement","importCaptionsFromFile","languages","hasOwnProperty$c","baseHas","nativeJoin","reTrim$1","trim","charsEndIndex","methodName","upperFirst","chr","trailing","arrayReduce","accumulator","initAccum","baseReduce","metaMap","baseSetData","createCtor","thisBinding","WRAP_BIND_FLAG","nativeMax$3","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","nativeMax$4","composeArgsRight","holdersIndex","rightIndex","rightLength","baseLodash","MAX_ARRAY_LENGTH$1","LazyWrapper","__wrapped__","__actions__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","getData","realNames","hasOwnProperty$d","LodashWrapper","chainAll","__chain__","__index__","__values__","hasOwnProperty$e","lodash","wrapper","wrapperClone","isLaziable","funcName","otherFunc","getFuncName","setData","reWrapDetails","reSplitDetails","reWrapComment","wrapFlags","updateWrapDetails","details","pair","arrayIncludes","setWrapToString","reference","insertWrapDetails","getWrapDetails","WRAP_BIND_FLAG$2","WRAP_BIND_KEY_FLAG$1","WRAP_CURRY_BOUND_FLAG","WRAP_CURRY_FLAG$1","WRAP_PARTIAL_FLAG$1","WRAP_PARTIAL_RIGHT_FLAG$1","createRecurry","wrapFunc","placeholder","argPos","ary","arity","isCurry","newData","getHolder","nativeMin$1","PLACEHOLDER","replaceHolders","WRAP_BIND_FLAG$3","WRAP_BIND_KEY_FLAG$2","WRAP_CURRY_FLAG$2","WRAP_CURRY_RIGHT_FLAG$1","WRAP_ARY_FLAG$1","WRAP_FLIP_FLAG$1","createHybrid","partialsRight","holdersRight","isAry","isBind","isBindKey","isFlip","holdersCount","countHolders","newHolders","oldArray","reorder","WRAP_BIND_FLAG$4","PLACEHOLDER$1","WRAP_BIND_FLAG$5","WRAP_BIND_KEY_FLAG$3","WRAP_CURRY_BOUND_FLAG$1","WRAP_CURRY_FLAG$3","WRAP_ARY_FLAG$2","WRAP_REARG_FLAG$1","nativeMin$2","FUNC_ERROR_TEXT$2","WRAP_BIND_FLAG$6","WRAP_BIND_KEY_FLAG$4","WRAP_CURRY_FLAG$4","WRAP_CURRY_RIGHT_FLAG$2","WRAP_PARTIAL_FLAG$2","WRAP_PARTIAL_RIGHT_FLAG$2","nativeMax$5","createWrap","srcBitmask","newBitmask","isCommon","isCombo","mergeData","createCurry","createPartial","createBind","curry","toSeconds","timeIn","nextNonEmptyLine","linesArray","idx","_readCaptionsFromString","timeDelimiter","hasIdRow","lines","time","endIndex","timeSplitRegex","SSATagRegex","lessThanRegex","greaterThanRegex","newlinePlaceholderRegex","lastNonEmptyLine","padWithZero","inputNumber","formatMillisecondsToTimeCode","inputMilliseconds","options","hoursPadding","hours","getUTCHours","minutes","getUTCMinutes","seconds","getUTCSeconds","milliseconds","getUTCMilliseconds","toFixed","millisecondDelimiter","baseNewlineParser","readCaptionsFromStringWithIdRow","readCaptionsFromString","captionsToString","output","DEFAULT_CAPTION_LANGUAGE_IDENTIFIER_STRING","samiParser","nonBreakingSpace","fromCharCode","getSyncTagText","separator","elementsText","parseSyncTagToCaption","createParams","cssColorToRGB","cssColorValue","getCaptionTrackCreateParams","styleElements","styleElement","body","sheet","cssRules","parseStyle","captionStyle","selectorText","style","backgroundColor","textAlign","captionToString","nextCaption","getTextAlignment","allAlignments","alignments","alignment","syncElements","createCaptionTrackParams","currentCaption","assignCaptionDurationsByFillingCaptionStartTimeGaps","serialize","sbvParser","srtParser","ttmlParser","rWhitespace","rLineBreak","rBreakTag","parseChildren","node","timeOffset","newOffset","currNode","firstChild","currRegion","getNodeRegion","retVal","nodeName","parseNode","nextSibling","defaultTo","sub","MAX_VALUE","subtitle","timeStr","framerate","digitPairs","lastPair","firstPair","frameInfo","frameTime","toTimelineSeconds","getMetricIndex","xmlDocument","vttParser","vttTimeDelimiter","parseCueHeader","line","lineSegments","skipWhitespace","skipNonWhitespace","skipToCueHeader","breakTagRegex","_registeredExceptionListeners","_registeredMessageListeners","removeValueFromArray","log","logException","logMessage","listener","throwError","removeAllEventListeners","playerStringNames","accessBtnAnswersSubmitted","accessBtnAudioDescription","accessBtnClearSearch","accessBtnClickToReplayLink","accessBtnClosedCaption","accessBtnCorrectOutOf","accessResultsLabelCorrectSuffix","accessResultsLabelIncorrectSuffix","accessResultsLabelNoResponseSuffix","accessResultsLabelNoResponseGradedSuffix","accessBtnFullScreen","accessBtnFullScreenExpand","accessBtnGradedQuestions","accessBtnHideAnswer","accessBtnHideQuiz","accessBtnPreviousQuestion","accessBtnNextQuestion","accessBtnNext","accessBtnPip","accessBtnPlay","accessBtnPrevious","accessBtnProgressBar","accessBtnRewind","accessBtnForward","accessBtnSettings","accessBtnShowAnswer","accessBtnShowQuiz","accessBtnTableOfContents","accessBtnTakeQuiz","accessBtnVolume","accessBtnWasNotGraded","accessBtnWereNotGraded","accessListNoSearchResults","accessListSearchResults","accessListTableOfContents","accessQuestionSetConfirmationTitle","accessQuizResults","accessQuestionFeedbackContext","accessTxtVolume","accessVideoPausedForQuiz","accessQuizHidden","accessQuizShown","accessProgressBarTimeConjunction","accessPlayerSettingsClose","accessBtnTheaterMode","accessBtnExitTheaterMode","ccLanguageText","close","mediaNotFound","noWebMSupport","playerRateOptionsText","playerRateText","scormApiNotFoundMessage","search","searchDisabledFullScreen","searchPlaceholder","txtAnswerQuestion","txtBadImageQuiz","txtBegin","txtContinue","txtCorrect","txtCorrectAnswer","txtCorrectString","txtEnterEmail","txtEnterFirstName","txtEnterLastName","txtHotspot","txtHotspotScreenReaderAlert","txtHotspotScreenReaderAlertPlural","txtImageQuizNetworkErrorMessage","txtIncorrect","txtIncorrectString","txtJumpToMedia","txtJumpToTime","txtLoaderMessageDefinition","txtNext","txtHideQuiz","txtOpenLink","txtOpenLinkHeader","txtOpenLinkSubHeader","txtPrev","txtQuestionCount","txtQuizBadDefinitionMessage","txtQuizErrorMessage","txtQuizOutOfDateMessage","txtQuizOutOfDateRefreshButtonText","txtReplayVideo","txtRequiredMessage","txtResults","txtReview","txtReviewAnswer","txtSkip","txtSubmit","txtSubmittingAnswers","txtVideoQuizNetworkErrorMessage","txtVisitSite","txtYourAnswer","videoLoading","videoNotSupported","xmpSecurity","xmpError","confirmOpenUrlModalScreenReaderAlertText","confirmOpenUrlConfirmButtonScreenReaderText","fastForwardDisabledScreenReaderText","scormCompleteVideoLater","scormCompleteVideo","scormExitVideo","scormConfirmCompleteModalText","scormConfirmCompleteModalRestartVideoText","scormConfirmCompleteModalResumeVideoText","scormConfirmCompleteModalFailedToSaveProgressText","scormConfirmCompleteModalDismissButtonText","scormConfirmCompleteModalDismissButtonScreenReaderText","scormConfirmCompleteModalConfirmButtonText","scormConfirmCompleteModalConfirmButtonScreenReaderText","scormSessionEndedText","searchOrJumpTo","searchTextCleared","searchResultsUpdated","tableOfContentsDisplayed","tableOfContentsHidden","defaultMediaTitle","hideThumbnailDueToQuiz","defaultFirstChapterName","strings$7","quizAtTimeHeading","enUsLocale","getReadableTimeByLocale","timeStringList","hoursReadableString","minutesReadableString","secondsReadableString","strings","strings$6","deDeLocale","strings$5","jaJpLocale","strings$4","frFrLocale","strings$3","esEsLocale","strings$2","zhCnLocale","strings$1","ptBrLocale","localeFactory","getLocaleByLanguageCode","languageCode","customStrings","setString","stringKey","clearStrings","_currentLocale","setLanguage","getPlayerString","stringName","localizationStrings","getLanguage","getLanguageNameFromIdentifierString","configureFromXmp","controllerParameters","controllerParameter","configureLanguageFromXmp","quizParameters","quizParameter","configureCustomStringsFromXmp","getQuestionCountString","currentQuestionNumber","totalNumberQuestions","questionCountString","reset","mediaMimeType","JSON","M3U","MP4","WEBM","OGV","JPEG","PNG","GIF","UNKNOWN","jquery","global","noGlobal","getProto","_slice","flat","class2type","hasOwn","fnToString","ObjectFunctionString","support","obj","isWindow","preservedScriptAttributes","src","nonce","noModule","DOMEval","code","script","removeChild","toType","rhtmlSuffix","jQuery","context","init","num","pushStack","elems","merge","prevObject","each","first","even","grep","_elem","odd","j","extend","copyIsArray","deep","isPlainObject","expando","isReady","msg","noop","isEmptyObject","globalEval","nodeValue","makeArray","inArray","isXMLDoc","namespace","namespaceURI","docElem","second","invert","matches","callbackExpect","guid","_i","whitespace","rtrimCSS","bup","compareDocumentPosition","rcssescape","fcssescape","asCodePoint","escapeSelector","sel","preferredDoc","pushNative","Expr","outermostContext","sortInput","hasDuplicate","documentIsHTML","rbuggyQSA","dirruns","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","booleans","pseudos","rwhitespace","rcomma","rleadingCombinator","rdescend","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rquickExpr","rsibling","runescape","funescape","escape","nonHex","unloadHandler","setDocument","inDisabledFieldset","addCombinator","disabled","dir","next","childNodes","els","seed","nid","groups","newSelector","newContext","getElementById","getElementsByClassName","testContext","scope","tokenize","toSelector","qsaError","removeAttribute","select","cacheLength","shift","markFunction","assert","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","subWindow","webkitMatchesSelector","msMatchesSelector","defaultView","top","getById","getElementsByName","disconnectedMatch","cssHas","attrId","getAttributeNode","className","compare","sortDetached","expr","matchesSelector","attr","attrHandle","uniqueSort","duplicates","sortStable","createPseudo","relative","preFilter","excess","unquoted","nodeNameSelector","expectedNodeName","pattern","operator","check","what","_argument","simple","forward","ofType","_context","outerCache","nodeIndex","useCache","diff","lastChild","pseudo","setFilters","matched","not","matcher","compile","unmatched","elemLang","hash","focus","activeElement","safeActiveElement","hasFocus","href","tabIndex","enabled","checked","selected","selectedIndex","empty","header","_matchIndexes","nth","radio","checkbox","password","submit","parseOnly","soFar","preFilters","cached","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","matcherOut","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","token","compiled","filters","unique","getText","isXML","_dir","until","truncate","_siblings","rneedsContext","rsingleTag","winnow","qualifier","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","contents","prev","sibling","cur","closest","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","siblings","contentDocument","content","rnothtmlwhite","Identity","Thrower","adoptValue","noValue","method","fail","Callbacks","_","flag","createOptions","firing","memory","_fired","_locked","queue","firingIndex","fire","once","stopOnFalse","disable","lock","locked","fireWith","fired","Deferred","tuples","_promise","state","always","pipe","fns","newDefer","tuple","returned","progress","notify","onProgress","maxDepth","handler","special","mightThrow","notifyWith","resolveWith","exceptionHook","rejectWith","getErrorHook","getStackHook","stateString","when","singleValue","resolveContexts","resolveValues","primary","updateFunc","rerrorNames","asyncError","readyException","readyList","completed","readyWait","wait","doScroll","access","chainable","emptyGet","raw","bulk","_key","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","camelCase","acceptData","Data","configurable","prop","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","parse","_data","removeData","_removeData","attrs","dequeue","startLength","hooks","_queueHooks","unshift","stop","setter","clearQueue","tmp","defer","pnum","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","display","css","adjustCSS","valueParts","tween","adjusted","maxIterations","currentValue","initial","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","show","hide","toggle","rcheckableType","rtagName","rscriptType","createDocumentFragment","checkClone","cloneNode","noCloneChecked","option","wrapMap","thead","col","td","_default","getAll","setGlobalEval","refElements","tbody","tfoot","colgroup","optgroup","rhtml","buildFragment","scripts","selection","ignored","wrap","attached","fragment","nodes","htmlPrefilter","rtypenamespace","returnTrue","returnFalse","_on","one","origFn","off","leverageNative","isSetup","saved","isTrigger","delegateType","stopPropagation","stopImmediatePropagation","trigger","isImmediatePropagationStopped","handleObjIn","eventHandle","handleObj","handlers","namespaces","origType","elemData","handle","triggered","dispatch","bindType","delegateCount","setup","mappedTypes","origCount","teardown","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","rnamespace","postDispatch","_handlers","matchedHandlers","matchedSelectors","addProp","hook","Event","originalEvent","writable","load","noBubble","click","beforeunload","returnValue","isDefaultPrevented","defaultPrevented","timeStamp","isSimulated","eventPhase","pageX","pageY","view","charCode","keyCode","offsetX","offsetY","screenX","screenY","targetTouches","toElement","blur","focusMappedHandler","documentMode","simulate","attaches","dataHolder","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","on","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","udataOld","udataCur","fixInput","domManip","hasScripts","iNoClone","valueIsFunction","html","_evalUrl","_remove","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","append","prepend","insertBefore","before","after","replaceWith","appendTo","prependTo","insertAfter","replaceAll","original","insert","rnumnonpx","rcustomProp","getStyles","opener","getComputedStyle","swap","old","rboxStyle","curCSS","minWidth","maxWidth","isCustomProp","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","right","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","offsetWidth","measure","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","table","trChild","trStyle","borderTopWidth","borderBottomWidth","offsetHeight","cssPrefixes","emptyStyle","vendorProps","finalPropName","_final","cssProps","capName","vendorPropName","rdisplayswap","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","boxModelAdjustment","dimension","box","isBorderBox","computedVal","extra","delta","marginDelta","ceil","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","Tween","easing","cssHooks","opacity","animationIterationCount","aspectRatio","borderImageSlice","columnCount","flexGrow","flexShrink","gridArea","gridColumn","gridColumnEnd","gridColumnStart","gridRow","gridRowEnd","gridRowStart","lineHeight","order","orphans","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeMiterlimit","strokeOpacity","origName","setProperty","isFinite","getBoundingClientRect","scrollboxSizeBuggy","left","margin","padding","border","suffix","expand","expanded","parts","propHooks","run","percent","eased","pos","step","fx","scrollTop","scrollLeft","linear","swing","cos","PI","fxNow","inProgress","rfxtypes","rrun","schedule","hidden","interval","tick","createFxNow","genFx","includeWidth","createTween","animation","Animation","tweeners","properties","stopped","prefilters","currentTime","tweens","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","complete","timer","anim","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflow","overflowX","overflowY","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","delay","timeout","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","attrNames","getter","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","addClass","classNames","curValue","finalValue","removeClass","toggleClass","stateVal","isValidValue","hasClass","rreturn","valHooks","optionSet","rquery","parseXML","parserErrorElem","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","triggerHandler","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","valueOrFunction","encodeURIComponent","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","active","lastModified","etag","url","isLocal","protocol","processData","accepts","json","responseFields","converters","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","_statusCode","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","status","abort","statusText","finalText","crossDomain","host","hasContent","ifModified","headers","beforeSend","success","send","nativeStatusText","responses","isSuccess","response","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","current","conv","dataFilter","ajaxConvert","getJSON","getScript","wrapAll","wrapInner","htmlIsFunction","unwrap","visible","xhr","XMLHttpRequest","xhrSuccessStatus","xhrSupported","cors","_callback","errorCallback","open","username","xhrFields","onload","onerror","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","_callback2","scriptAttrs","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","keepScripts","parsed","animated","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","rect","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","unbind","delegate","undelegate","hover","fnOver","fnOut","rtrim","proxy","holdReady","hold","parseJSON","isNumeric","_jQuery","_$","$","noConflict","w","_xmpSrc","_posterImageSrc","_tocSpriteSrc","_googleAnalyticsID","_customEventCallback","_techSmithAccessTokenEndpoint","_fathomId$1","_embedIFrameId","_preRollSrc","_webConnector","jqueryExports","windowWrapper","wrapInJQuery","features","documentWrapper","_supportsHTML5","_supportsMP4","_supportOgg","_supportWebM","_isIE","_isEdge","_ieVersion","_safariMajorVersion","_isFirefox","_isChrome","_isIPad","_isIPhone","_isIPod","_isIOS","_isAndroid","_isSafari","_isRetinaDisplay","_isSmallScreen","isTouchIEInterface","isTouchInterface","deviceInfo","isSmallScreen","isRetinaDisplay","isIPad","isIPhoneOrIPod","isIOS","isIE","isEdge","getIEVersion","getSafariMajorVersion","isFirefox","isChrome","isSafari","isAndroid","canPlayHTML5Video","canPlayMP4","canPlayOgg","canPlayWebM","getFullScreenChangeEventNames","documentRef","onfullscreenchange","onwebkitfullscreenchange","requiresManualPreload","supportsFullScreen","fullscreenEnabled","webkitFullscreenEnabled","supportsLegacyIOSFullScreen","videoElement","webkitSupportsFullscreen","mediaLocation","baseindex","lastIndexOf","basex","encodeURI","checkLocationProtocol","lookAtDevice","detect","canPlayType","OGG","userAgent","appName","iOSChromeMatchExp","appVersion","$1","matchExp","safariVersion","screen","availWidth","availHeight","devicePixelRatio","_lookAtDevice","themeNames","DAWN","DUSK","preloadOptions","none","metadata","auto","endsWithSlashRegex","_mediaSources","_mediaTitle","_tocTitle","_mediaRotation","_endActionType","_endActionParam","_ignoreXmpControllerParameters","_ignoreQuizQuestions","_isSearchable","_autoPlayMedia","_forceAutoPlayMedia","_skipVideoDuration","_skipVideoControlsEnabled","_captionsEnabled","_ignoreStoredCaptionVisibleSetting","_sidebarEnabled","_sidebarLocation","_backgroundColor","_useUnicode","_autoHideControls","_reportScormComplete","_isScormLesson","_enforceLinearAssessment","_disableFullframeMode","_disableControls","_disableYouTubeControls","_disablePictureInPicture","_disableContinueWithoutQuestions","_mobileWebViewCanAutoPlay","_gaPageViewTrack","_gaEventTrack","_customEventTracking","_altEventCategoryAsFilename","_altLoadTimeAsSeconds","_isUserIdentified","_additionalAppQueryString","_useSlimAppSplashScreen","_showYouTubeAnnotations","_contentType","_preload","_fullViewPort","_contentBasePath","_disableContextMenuForVideo","_theme","_enableSingleClickControl","_enableDoubleClickControl","_pluginController$1","_useLargerProgressBar","_displayHotspotsShape","_audioDescriptionMediaSrc","_captionSrcList","_disableInteractions","_allowFastForward","_showADACompliantCaptions","_rememberUserInfo","_logScormApiCalls","_userInfo","_videoThumbnailsSrc","_videoThumbnailWidth","_videoThumbnailHeight","_videoThumbnailInterval","_videoThumbnailColumns","_tocModelFromDescription","_completeScormOnRequirementsComplete","_customFullScreenDomElement","_quizServiceBaseUrl","_resultsServiceBaseUrl","_enableTheaterMode","isValidTheme","themeName","themeKey","decodedApostrophe","runOnServer","getUnicodeSafeString","decodeURI","getIsUserIdentified","isParamBeingIgnored","shouldLoadXmpParam","param1","param2","getMediaSrc","setMediaSrc","mediaSrc","getXMPSrc","setXMPSrc","xmpSrc","getDisableInteractions","setDisableInteractions$1","disableInteractions","getPosterImageSrc","setPosterImageSrc","posterImageSrc","getTOCSpriteSrc","setTOCSpriteSrc","tocSpriteSrc","getMediaTitle","setMediaTitle","mediaTitle","getTOCTitle","setTOCTitle","tocTitle","getMediaRotation","setMediaRotation","rotation","getEndActionType$1","setEndActionType","endActionType","getEndActionParam","setEndActionParam","endActionParam","getIgnoreXmpControllerParameters","setIgnoreXmpControllerParameters","ignoreXmpControllerParameters","upperCasedIgnores","getIgnoreQuizQuestions","setIgnoreQuizQuestions","ignoreQuizQuestions","getIsSearchable","setIsSearchable","isSearchable","getAutoPlayMedia","setAutoPlayMedia","autoPlayMedia","getForceAutoPlayMedia","setForceAutoPlayMedia","forceAutoPlayMedia","getCaptionsEnabled","setCaptionsEnabled","captionsEnabled","getIgnoreStoredCaptionVisibleSetting","setIgnoreStoredCaptionVisibleSetting","ignoreStored","getSidebarEnabled","setSidebarEnabled","sidebarEnabled","getSidebarLocation","setSidebarLocation","sidebarLocation","getBackgroundColor","setBackgroundColor","getAutoHideControls","setAutoHideControls","autoHideControls","getProcessUnicodeNames","setProcessUnicodeNames","useUnicode","getEnforceLinearAssessment","setEnforceLinearAssessment","enforceLinearAssessment","getDisableFullframeMode","setDisableFullframeMode","disableFullframeMode","getDisableControls","setDisableControls","disableControls","getDisableYouTubeControls","setDisableYouTubeControls","disableYouTubeControls","getDisablePictureInPicture","setDisablePictureInPicture","disablePictureInPicture","getDisableContinueWithoutQuestions","setDisableContinueWithoutQuestions","disableContinueWithoutQuestions","getMobileWebViewCanAutoPlay","setMobileWebViewCanAutoPlay","canAutoPlay","getGoogleAnalyticsID","setGoogleAnalyticsID","getGAPageViewTracking","setGAPageViewTracking","gaPageViewTrack","getGAEventTracking","setGAEventTracking","gaEventTrack","getAltEventCategoryAsFilename","setAltEventCategoryAsFilename","altEventCategoryAsFilename","getAltLoadTimeAsSeconds","setAltLoadTimeAsSeconds","altLoadTimeAsSeconds","getTechSmithAccessTokenEndpoint","setTechSmithAccessTokenEndpoint","accessTokenEndpoint","setUserSignedIn","getJumpToTime","setJumpToTime","getFathomId","setFathomId","fathomId","getEmbedIFrameId","setEmbedIFrameId","embedIFrameId","getUseSlimAppSplashScreen","setUseSlimAppSplashScreen","useSlimAppSplashScreen","setDisableContextMenuForVideo","disableContextMenuForVideo","getShowYouTubeAnnotations","setShowYouTubeAnnotations","showAnnotations","getPreRollSrc","setPreRollSrc","preRollSrc","getContentBase","setContentBase","getContentType","setContentType","getPreload","setPreload","preloadOption","isValidPreloadOption","getFullViewPort","setFullViewPort","getWebConnector","setWebConnector","getTheme","setTheme$2","getEnableSingleClickControl","setEnableSingleClickControl","getEnableDoubleClickControl","setEnableDoubleClickControl","getPluginController","setPluginController","pluginController","getUseLargerProgressBar","setUseLargerProgressBar","useLargerProgressBar","getDisplayHotspotsShape","setDisplayHotspotsShape","displayHotspotsShape","getAudioDescriptionMediaSrc","setAudioDescriptionMediaSrc","audioDescriptionMediaSrc","getSkipVideoControlsEnabled","setSkipVideoControlsEnabled","skipVideoControlsEnabled","getSkipVideoDuration","setSkipVideoDuration","skipVideoDuration","getAllowFastForward","setAllowFastForward","allowFastForward","getShowADACompliantCaptions","setShowADACompliantCaptions","showADACompliantCaptions","getRememberUserInfo","setRememberUserInfo","rememberUserInfo","getLogScormApiCalls","setLogScormApiCalls","logScormApiCalls","getUserInfo","setUserInfo","userInfo","userSignedIn","getVideoThumbnailSrc","setVideoThumbnailSrc","videoThumbnailSrc","getVideoThumbnailWidth","setVideoThumbnailWidth","videoThumbnailWidth","getVideoThumbnailHeight","setVideoThumbnailHeight","videoThumbnailHeight","getVideoThumbnailInterval","setVideoThumbnailInterval","videoThumbnailInterval","getVideoThumbnailColumns","setVideoThumbnailColumns","videoThumbnailColumns","getTocModelFromDescription","setTocModelFromDescription","tocModelFromDescription","getCompleteScormOnRequirementsComplete","setCompleteScormOnRequirementsComplete","completeScormOnRequirementsComplete","getCustomFullScreenDomElement","setCustomFullScreenDomElement","customFullScreenDomElement","getEnableTheaterMode","setEnableTheaterMode","deprecatedNoOp","playerConfiguration","clearConfiguration","addMediaSrc","getMediaSources","addCaptionSrc","captionSrc","getMediaFileName","mediaSource","splitEl","getUnableToDisplayContentString","useCustomEventTracking","customEventTracking","customEventCallback","getTrackEvents","getCustomEventTracking","getCustomEventCallback","setAdditionalAppQueryParamsFromJson","queryString","getAdditionalAppQueryString","saveConfigurationFromQueryString","configParams","numberParams","getEndActionType","setDisableInteractions","getReportScormComplete","setReportScormComplete","reportScorm","getDisableContextMenuForVideo","setTheme","getUserSignedIn","getQuizServiceBaseUrl","setQuizServiceBaseUrl","quizServiceBaseUrl","getResultsServiceBaseUrl","setResultsServiceBaseUrl","resultsServiceBaseUrl","setSwfBase","isIEOnServerWithUnicode","setFlashUpdateBootstrapSwf","getAdvancedSeeking","setAdvancedSeeking","getDebugUIMode","setDebugUIMode","getPlayerWidth","setPlayerWidth","getPlayerHeight","setPlayerHeight","setFlashPlayerSwf","setForceFlashPlayer","setForceHtml5Player","setConfigurationSrc","setPrioritizeFullScreen","getDisableYouTubeFullscreen","setDisableYouTubeFullscreen","setAllowRewind","mediaRotation","ignoreStoredCaptionVisibleSetting","processUnicodeNames","mobileWebViewCanAutoPlay","googleAnalyticsID","googleAnalyticsPageViewTracking","googleAnalyticsEventTracking","techSmithAccessTokenEndpoint","showYouTubeAnnotations","contentBase","preload","fullViewPort","webConnector","theme","enableSingleClickControl","enableDoubleClickControl","isScormLesson","captionSrcList","videoThumbnailsSrc","enableTheaterMode","AggregateError","errors","setTimeoutFunc","noop$1","Promise$1","doResolve","finale","Handler","any","P","rejectionReasons","allSettled","_currentPlayerType$1","_performanceApiSupported","performance","mark","getEntriesByType","performanceWrapper","markerName","measureName","startMark","endMark","measureNames","rumData","measureDuration","measures","getMeasureDuration","registeredEvents","listeningToWindowMessageEvent","onExternalMessage","smartPlayerEventName","removeWindowMessageListener","externalMessageController","callbackFunction","attachEvent","iFrameBridge","domain","iFrameId","postMessage","stringify","parsePlayerURLParams","playerUrlParams","parseEmbeddedURLParams","queryParamsStripper","mediaType","YOUTUBE","JPG","PLAYLIST","NOT_AVAILABLE","MULTIPLE_TYPES","Media$1","media","uri","_media","_mimeType","_uri","getFileExtension","mediaTypeFromMimeType","MediaListParser$1","mediaSources","_ready","_mediaList","_mediaProcessedPromises","parsePlaylistSource","playlistMediaSource","playlistSrc","jHxr","playlistData","playListMediaPromises","playListMedia","parseMediaUrl","playlistMedia","mediaList","inferredMimeType","ext","inferMimeTypeFromFileExtension","textStatus","findMediaMimeTypeByRequestHeader","parseMedia","youTubeMediaSource","parseYouTubeMedia","MediaList$1","_readyPromiseResolve","_readyPromiseReject","_mediaListParser","_readyPromise","_currentMediaIndex","getMediaIndexByUri","mediaIndex","isMediaTypeAvailable","currentMedia","currentMediaIndex","mediaPosition","currentMediaType","onFirstMedia","onLastMedia","hasImage","isPlaylist","playerType","HTML5_VIDEO","IMAGE","NOT_SUPPORTED","mediaPlayerController","haveImage","haveWebMAndCanPlay","haveMP4AndCanPlay","haveOGGAndCanPlay","haveYoutubeEmbedUrl","_getPlayerType","cssClasses","smartPlayerNamespace","videoWrapper","scormModule","scormModuleNavigationContainer","playerControlsVisible","largerProgressBar","hideElement","volumeSliderHidden","hideSecondaryControls","fullscreenMode","volumeMutedButtonGlyph","volumeLowButtonGlyph","volumeMediumButtonGlyph","volumeHighButtonGlyph","playButtonGlyph","pauseButtonGlyph","fullscreenButtonGlyph","fullscreenButtonActiveGlyph","fullFrameButtonGlyph","fullFrameButtonActiveGlyph","expandButtonGlyph","audioDescriptionButtonGlyph","audioDescriptionButtonActiveGlyph","closedCaptionButtonGlyph","closedCaptionNonEnglishButtonGlyph","closedCaptionButtonActiveGlyph","closedCaptionNonEnglishButtonActiveGlyph","tocButtonGlyph","tocButtonActiveGlyph","settingsButtonGlyph","settingsButtonActiveGlyph","tertiaryButton","tertiaryButtonActive","generatedPluginContainer","pluginNamedContainerPrefix","hotspotVisible","screenReaderAlert","imageViewAnimateTransitions","safariPipIssueFix","captionsUnderVideo","captionsVerticalAlignTop","captionsVerticalAlignBottom","captionsHorizontalAlignLeft","captionsHorizontalAlignCenter","captionsHorizontalAlignRight","captionsCustomPosition","captionsCaptionSelected","captionsPreventCaptionDrag","captionXmpView","captionAdaView","progressBarTrackPreventSeeking","hideBubbleArrow","hiddenVideoThumbnailVisible","scrubPreviewHasThumbnail","focusableAnswerInput","constrainMediaHeight","constrainMediaWidth","mediaTypeYouTube","theaterModeButtonGlyph","theaterModeButtonActiveGlyph","cssVariables","playerWidth","playerHeight","mediaIntrinsicWidth","mediaIntrinsicHeight","mediaIntrinsicAspectRatio","mediaIntrinsicAspectRatioNumber","mediaViewPortWidth","mediaViewPortHeight","mediaViewPortAspectRatio","mediaViewPortAspectRatioNumber","reservedSizeScorm","reservedSizeCaptions","reservedSizeControls","tocTopOffset","ResponsiveController$1","$rootContainer","_$rootContainer","_$mediaViewPortContainer","_$mediaSizingContainer","_currentViewPortWidth","_currentViewPortHeight","_currentViewPortAspectRatio","_intrinsicWidth","_intrinsicHeight","_intrinsicAspectRatio","_rootContainerResizeObserver","_viewPortContainerResizeObserver","_initialCheck","isApproximatelySameSize","newDimensionDouble","existingCssVarName","ResizeObserver","manageResponsiveClasses","calculateMediaViewPortDimensions","setCssVariables","_responsiveBreakpoints","viewPortWidth","viewPortHeight","domContainer","containerWidth","containerHeight","breakpoint","widthClassName","heightClassName","monitorContainerSize","monitorMediaViewPortSize","$mediaViewPortContainer","$mediaSizingContainer","intrinsicWidth","intrinsicHeight","initializeIntrinsicSizing","clearContainerMonitors","disconnect","responsiveBreakpoints","currentMediaWidth","currentMediaHeight","intrinsicMediaWidth","intrinsicMediaHeight","intrinsicMediaAspectRatio","currentViewPortWidth","currentViewPortHeight","currentViewPortAspectRatio","reportType","NONE","API","APIANDSCORM","QuestionSetMarker$1","questionSetIndex","questionSet","_questionSetIndex","_rangeStart","_rangeEnd","_canSeekPast","questionSetId","rangeStart","rangeEnd","canSeekPast","questionType","FILL_IN","CHOICE","SHORT","Question$1","tscmeQuestionModel","_userResponse","_isResponseCorrect","_isGraded","_attemptDuration","_responseLocked","_feedbackActionExecuted","toJSON","questionText","choices","answer","getSnapShot","snapshotUserResponse","rl","ad","irc","populateQuestion","questionSnapShot","getQuizServiceData","percentOfVideoSegmentWatched","questionData","correct","segmentWatched","getFeedbackForReason","feedbackItem","isGraded","userResponse","isResponseCorrect","attemptDuration","responseLocked","feedbackActionExecuted","QuestionSet$1","tscmeQuestionSetModel","_percentOfVideoSegmentWatched","_numberGradedQuestions","_numberUngradedQuestions","cacheQuestionDetails","question","tscmeQuestion","mediaTimePosition","vsw","populateQuestionSet","questionSetSnapShot","quizId","questionSetData","displayFeedback","every","numberGradedQuestions","numberUngradedQuestions","numberCorrectQuestions","usesRationale","Quiz$1","xmpModel","_productionName","_projectName","_quizTitle","_quizId","_quizInstanceId","_questionSetMarkers","_mediaDuration","setReportMethod","quizLocale","quizRequireUserId","quizHideReplay","quizAuthoredEmail","quizClientId","mediaDuration","quizReportMethod","quizAllowSkipQuiz","quizQuestionSetArray","tscmeQuestionSet","getApiDataForQuestionSet","getScormScore","scormScore","totalGradableQuestions","totalCorrectQuestions","isLastQuestionComplete","considerQuestionSetCompleteId","getPreviousMarkerTimeForMarker","markerTime","qs","populateQuiz","quizModelSnapshot","questionSetSnapshot","quizDefinition","quizDef","projectName","productionName","reportRecipients","useQuizApi","useScorm","quizTitle","quizID","quizInstanceID","quizInstanceId","questionSetMarkerTimes","numberQuestionSets","minMarkerTimeDiff","totalNumberOfGradedQuestionSets","totalGradableQuestionSets","urlService","ensureUrlHasValidScheme","paramName","paramValue","kvp","query","generateQueryStringWithExtraParam","windowLocation","port","hostname","pathname","hrs","sec","strTime","hrsPattern","minPattern","secPattern","numPattern","hrsTest","minTest","secTest","numTest","_typeof","polyad","_fathomId","_getCompleteCallback","_errorHandlerCallback","_xmpModel","_videoId","_defaultTextColorObject","_defaultBgColorObject","_defaults","captionFontFamily","captionFontSize","captionFontSizeMin","captionFontSizeMax","captionTextColor","captionBgColor","captionPosition","captionBarHeight","_font","_fontSizeForPlayerDimensions","_fontSizeMin","_fontSizeMax","_textColor","_eventHandlers","setFontSize","initFromXmp","minCaptionFontSize","maxCaptionFontSize","captionBg","initDefaults","setFontSizeForPlayerDimensions","scaleX","scaleY","eventEntry","font","fontEnclosedWithQuotes","fontSizeForPlayerDimensions","fontSizeMin","fontSizeMax","textColor","backgroundOpacity","newCaptionTrack","eventCallback","hasCaptions","CaptionService$1","Xmp","_groupedScreenTextItems","_captionDefaults","_xmpAjaxPromise","_captionFileAjaxPromiseList","loadXmpWithRetry","retrylimit","crossDomainRequest","parseXmp","imageExistsForTocFromDescription","captionsSrcList","loadedCaptionData","captionSrcItem","captionAjaxPromise","captionData","abortPendingRequests","hasAdvancedFeatures","hasTocItems","hasCaptionItems","hasHotspotItems","hasQuiz","hasScreenTextItems","hasSpeechTextItems","hasSearchableItems","hasAnySearchableItems","tocImageSrc","tocCellLayoutType","tocItemArray","speechTextItemArray","screenTextItemArray","itemStartTime","groupIndex","groupedItem","previousItemName","currentItemName","hotspotItemArray","captionsHasMultipleLanguages","captionItems","captionBgOpacity","tocContainsThumbs","tocThumbImageSrc","_getFathom","xmlModel","onFathomLoad","fathomService","getFathom","NullSmartPlayerView$1","noOp","loadMedia","destroy","play","isInFullScreenMode","addMediaEventListener","removeMediaEventListener","getCaptionsVisible","setCaptionsVisible","getScrubbing","setScrubbing","triggerVideoStartEventCallbacks","getSafeSeekTime","initializedPromise","Promise","currentSrc","paused","volume","muted","playbackRate","ended","seeking","buffered","played","seekable","uuidGenerator$1","_p8","_analyticsCategory","analyticsService","analyticsCategory","gaReference","_gaq","ga","action","category","readyStates","VideoPlaybackQualityMetrics$1","videoElementView","triggerRumDataEventCallback","eventLabelSuffixRetriever","playerState","_readyStateHasAtLeastEnoughDataOnce","_readyStateHasEnoughDataAfterSeeked","_timeToReachFirstHaveEnoughData","_videoLoadStartTimeInMilliseconds","_uniqueID","_mediaLocation","_eventListeners","_currentReadyState","_isSeeking","_playingEventShouldFireAfterStalled","_mediaElement","mediaElement","_eventLabel","_queuedEvents","_sendEventsDelayID","getEventLabel","triggerShowVideoBufferingViewEvent","triggerHideVideoBufferingView","sendQueuedEvents","queuedEvent","checkVideoReadyState","currentReadyState","previousReadyState","pausedForQuiz","eventLabel","onStalledEventHandler","onProgressEventHandler","removeStoppedToBufferEventIfNeeded","onVideoSeekingHandler","onVideoSeekedHandler","onVideoWaitingHandler","onVideoTimeUpdateHandler","onVideoLoadStartHandler","onVideoMetadataLoadedHandler","onVideoLoadedDataHandler","onVideoCanPlayHandler","onVideoDurationChange","onMediaPlayingEventHandler","setEventLabel","Disabled","DomOrder","escaped","padIfNecessary","getHourMinuteSecondsFromTimeInSeconds","timeInSeconds","secondsWithoutHours","timeFormatter","timeComponents","timeInterval","timecode","multiplier","timecodeParts","lowTimeBounds","timePartAsNumber","PLACEHOLDER_GLYPH_DATA_URL","templateGenerator","_ref","fullscreenIndex","audioDescriptionIndex","audioDescriptionTrackSrc","playButtonIndex","playIndex","accessBtnClickToPlay","replayButtonIndex","replayIndex","accessBtnClickToReplay","templateContext","closedCaptionIndex","questionAnswers","placeHolderImg","answerIndex","isChecked","_ref2","choiceAnswerTemplate","autoFocus","inputLabel","inputId","inputName","useAutofocus","fillAnswerTemplate","buttonTitle","hotspotContainerWidth","hotspotContainerHeight","hotspotIndex","descriptionId","hotspotDescription","hotspotShape","hotspotCoordinatesSeparationBySpace","hotspotLinkClassName","hotspotDescriptionId","hotspotViewTemplate","screenReaderAlertText","screenReaderAlertTemplate","hotspotsContainerId","hotspotsTemplate","hotspotsAltText","videoTagUniqueId","videoViewTemplate","mediaTagUniqueId","imageViewTemplate","loaderImg","loaderAltText","messageText","primaryActionButtonText","messageBarViewTemplate","link","headerText","subHeaderText","replayText","openButtonScreenReaderText","visitSiteText","openExternalLinkTemplate","pipButtonIndex","skipDuration","rewindIndex","forwardIndex","videoWrapperIndex","preRollSizeClass","preRollContainerTemplate","previousIndex","nextIndex","progressIndex","chapterIndex","progressBarChapterSegmentTemplate","questionTextTemplate","questionFeedbackContextText","questionFeedbackContextTextTemplate","correctTextString","incorrectTextString","questionGradedStatusContext","reviewText","confirmationText","alertText","questionSetConfirmationTemplate","totalQuestions","questionCountText","questionCountContext","quizTime","submittingImg","submittingImgAltText","previousQuestionButtonA11yText","previousButtonName","nextQuestionButtonA11yText","nextButtonName","submitButtonName","continueButtonName","hideQuizA11yText","hideQuizText","showQuizText","videoId","questionSetTemplate","numberCorrectText","percentCorrectText","numberInCorrectText","percentInCorrectText","continueText","numberCorrect","percentCorrect","numberInCorrect","percentInCorrect","reviewAnswerText","questionSetReviewConfirmationTemplate","gradableDetails","unGradeableDetails","questionSetResultsTabIndex","txtAnswersSubmitted","gradeableDetails","txtViewAnswers","txtHideAnswers","questionSetReviewStatusTemplate","enterName1","enterName2","name1Class","name2Class","reverseNames","setupMessage","enterEmail","beginButtonText","skipControlText","quizSetupTemplate","hasMultipleLanguages","playbackRatesList","ccLanguageList","captionsExist","settingsIndex","speedSettingIndex","playbackRates","ccLanguageSettingIndex","ccLanguages","languageValue","languageLabel","_ref3","rateValue","rateLabel","settingsViewTemplate","shortAnswerTemplate","tocIndex","dataTocTime","dataFileText","showThumbnail","centerContent","showText","tocText","tocRawText","tocItemRawText","tocItemIndex","tocItemText","tocItemTemplate","searchLabel","msgSearch","msgSearchIsDisabledInFS","tocSearchIndex","tocEraseIndex","cachedVolume","volumeIndex","accessVolumeSlider","minVolume","maxVolume","currentVolume","buttonLabel","isPrimaryButton","completeSessionButtonLabel","scormNavigationBarTemplate","confirmText","dismissButtonText","dismissButtonScreenReaderText","confirmButtonText","confirmButtonScreenReaderText","isDestructiveButton","scormConfirmCompleteModalTemplate","sessionEndedText","theaterModeIndex","VideoSeekingSpinnerView$1","$container","_viewOpen","_displayTimeoutId","_$seekingSpinnerContainer","showViewAfterDelay","hideView","showView","quizController","videoApiUtils","questionSetMarker","timeInMilliseconds","quizModel","quizEnabled","newQuizController","mediaView","wrapperWidth","wrapperHeight","mediaWidth","mediaHeight","ratioOfWidth","ratioOfHeight","playerControlsType","video","videoPlaylist","mediaViewType","playlist","VideoElementView$1","$mediaContainer","includeControls","triggerRumDataEvent","firstPlayCallback","includePosterIfAvailable","_view","_mediaWrapper","_videoSeekingSpinnerView","_videoPlaybackQualityMetrics","_containsWebTrackCaptions","_videoFirstPlayTriggered","_$videoAndVideoSources","_captionTrackElements","showVideoBufferingView","hideVideoBufferingView","onVideoErrorHandler","errorString","onFirstPlayHandler","unbindVideoEvents","bindVideoSourceEvents","videoElementMarkup","languageDisplayName","$videoElementContainer","createView","captionTrackElements","textTracks","numberTracks","captionLanguage","cacheCaptionTrackElements","hotfixViewAndControlsCSS","$controlsView","showCaptionTrack","mode","hideCaptionTrack","onEventHandler","reshowVideoAfterClickToReplay","processVideoEnd","numberMediaSource","mediaWrapper","containsWebTrackCaptions","videoWidth","videoHeight","currentTimeInMilliseconds","currentTimeInSeconds","canDragContentOnVideo","playerControlType","supportsClickToPlayControls","supportsSCORM","playbackQualityMetrics","timingMeasureList","messageBarType","info","warning","MessageBarView$1","customActionButtonHandler","_$messageBarContainer","_$actionButton","onActionClick","playedTracker","tracker","internalPlayed","currentMediaSegmentIndex","lastTimeUpdate","segmentIndex","createNewPlayedMediaSegment","newIndex","numberPlayedSegments","PlayedMediaSegment","onMediaSeekEnd","mediaSegmentIndexForTime","getPlayedMediaSegmentIndexByTime","mergeOverlappingMediaSegments","numberSegments","areMediaSegmentsOverlapping","mergeMediaSegments","segmentOneIndex","segmentTwoIndex","mergedIndex","notMergedIndex","timeChangeSinceLastUpdate","recordTime","segment1","segment2","startInOuterSegment","endInOuterSegment","segment","youtubeIdParser","videoUrl","videoIdMatch","onYouTubeIframeAPIReady","queued","_playbackReadyPromiseResolve","_videoLoadStartTime","_videoLoadEndTime","_previousActiveElement","_previousActiveElementWasHighlighted","_playbackReadyPromise","youTube","onFirstPlay","onError","startTimeInSeconds","disableFullScreen","loadedPercent","supportPlaybackRate","availableRateSettings","displayAnnotations","heartbeatIntervalId","playbackReadyPromise","handlerIndex","arg1","arg2","firstPlay","player","getDuration","YT","playerVars","wmode","loop","autoplay","disablekb","rel","showsearch","showinfo","iv_load_policy","playsinline","fs","modestbranding","onReady","playerIFrame","getAvailablePlaybackRates","onStateChange","PlayerState","PAUSED","ENDED","PLAYING","BUFFERING","onPlaybackRateChange","eventHandlers","_playedTracker","getCurrentTime","seekTo","setPlaybackRate","scaledValue","setVolume","mute","unMute","playVideo","pauseVideo","cueVideoById","clearInterval","setInterval","getPlayerState","videoLoadedFraction","getVideoLoadedFraction","percentLoaded","youTubeApiFound","YoutubeElementView$1","containerElementUniqueId","_youtubePlayer","_errorMessageBarView","_$youtubePointerEventWorkaround","internalFirstPlayCallback","onControlsHidden","onControlsVisible","bindToEvents","youtubeElementViewObject","mediaHasQuizQuestions","SEGMENT_CHOICES","segmentLength","_videoDuration","_segmentLength","_numberSegments","_videoSegments","_numberVideoSegmentWatched","_currentPlayTime","_enabled","videoAnalytics","loadTime","videoDurationInMilliseconds","videoTimeInMilliseconds","startTimeInMilliseconds","endTimeInMilliseconds","percentageWatched","startSegmentIndex","endSegmentIndex","numberSegmentsWatched","totalSegmentsInRange","segmentValue","videoSegmentSnapshot","videoSegmentSnapshotList","PlaylistElementView$1","_videoElementView","initCurrentMedia","enablePreviousButton","enableNextButton","clickPrevHandler","clickNextHandler","wasPlaylistLastMediaItem","fullscreenHelper","elementToFullScreen","requestFullscreen","webkitRequestFullscreen","webkitEnterFullscreen","fullScreenElement","exitFullscreen","webkitExitFullscreen","ImageView$1","imageSrc","_$imageEl","imageViewMarkup","_imageTapActive","_$document","onImageError","switchToFullscreenMode","exitFullscreenMode","onFullscreenChange","fullscreenElement","onImageTouchToggle","naturalWidth","naturalHeight","MediaViewFactory$1","playerMarkup","disableHighlights","$element","highlightDisabler","highlightState","_keyTypes","space","leftArrow","upArrow","rightArrow","downArrow","tab","tableOfContents","isKeyPassedOfSameType","isKeyOfLanguageSpecificType","isKeyOfEnglishSpecificType","isKeyOfGermanSpecificType","isKeyOfJapaneseSpecificType","isKeyOfType","keyTypes","_$focusTrapElement","_firstFocusableEl","_lastFocusableEl","_$window$1","scrollIntoView","scrollParent","scrollIntoViewIfNeeded","elementFitsInsideContainer","innerHeight","saveActiveElement","disableHighlightsOnPreviousActiveElement","$previousActiveElement","onFocusTrapTab","removeFocusTrap","viewHelper","trapFocus","focusableEls","scrollActiveElementIntoView","focusPreviousElement","elementOrChildHasFocus","getActiveElement","iframes","focused","contentWindow","rightParenRegex$1","leftParenRegex$1","playReplayControlStates","playVideoDisplayed","replayVideoDisplayed","BeforeAfterPlayControlsView$1","_markup","_$videoClickToPlayLink","_$videoClickToReplayLink","_$videoClickToPlayGraphic","_$videoClickToReplayGraphic","_$pluginContainer","_viewState","onPlayHandler","hideVideoClickToPlayLink","hideVideoClickToReplayLink","replayHandler","enableControls","toggleFullscreen","initPlugins","viewElementType","initializePluginsForViewElement","showVideoClickToPlayLink","setVideoClickToPlayErrorState","showVideoClickToReplayLink","addVideoClickToPlayBackground","posterSrc","disableClickToPlayEvents","viewState","mouseButtons","mainButton","auxiliaryButton","secondaryButton","ProgressChapterModel$1","startAsPercent","endAsPercent","durationAsPercent","$chapterElement","_index","_startAsPercent","_endAsPercent","_durationAsPercent","_$chapterElement","_$loadProgressElement","_$seekHintProgressElement","_$playProgressElement","$loadProgressElement","$seekHintProgressElement","$playProgressElement","getThumbnailRectangleByTime","timeIndex","row","ProgressBarControlView$1","_videoThumbnailImage","_formattedDuration","_readableDuration","_documentRef","_windowRef","_requestAnimationId","_scrubbing","_lastScrubTime","_wasPlayingBeforeSeek","_playStatusAfterSeek","_quizModel","_$playTimeDisplay","_$scrubBar","_$scrubbarTrack","_$quizMarkers","_$scrubPreview","_$scrubVideoThumbnail","_$hiddenVideoThumbnail","_scrubVideoThumbnailCanvasCtx","_$scrubPreviewChapterName","_$scrubPreviewVideoTime","_keysEnabled","_durationDisplayInitialized","_markersCreated","_lastUpdatedFormattedMediaTime","_lastUpdatedScrubTime","_showSeekPreview","_lastSeekHintVideoPercent","_lastSeekPreviewDetails","hideThumbnail","videoTimeInSeconds","displayAtVideoPercent","chapterName","formattedVideoTime","_chaptersCache","_shouldRespectQuizMarkers","_updateBufferedTimeout","_hideSeekPreviewTimeoutId","_currentProgressBarWidth","shouldRespectQuizMarkers","getClickX","allowSkipQuestionSetMarkersBeforeTime","getChapterPercentageFromTotalPercentage","totalPercent","chapter","getVideoTimeFromXPosition","xPos","relativeXPos","scrubBarWidth","amountPlayedPercentage","pendingVideoTime","videoTime","closestRequiredQuizMarker","getClosestRequiredQuizMarkerTimeBeforeVideoTime","updateLoadProgress","onDownSeek","onMoveSeek","onUpSeek","setPlayProgress","setScrubPreviewDetailsAtTime","videoSeekTimes","unrestrictedVideoPercent","restrictedVideoPercent","getChapterNameAtVideoTime","onMouseMoveToPreview","clearHideScrubPreviewDelay","showScrubPreview","updateSeekHint","hideScrubPreview","onScrubBarMouseOut","atVideoEndTime","videoTimes","previewDisplayText","videoPercent","previewLeftPos","scrubPreviewWidth","thumbnailRect","drawImage","updateVideoThumbnail","videoPercentNormalized","drawSeekHint","updateUi","percentPlayed","updateTimeDisplay","formattedCurrentTime","progressDisplayText","ariaValueText","cacheProgressBarWidth","onPlayerResize","updateQuizMarkers","createQuizMarkers","updateMarkerVisibility","mediaDurationInMilliseconds","timePercent","quizMarkerContainerWidth","marker","markerSize","onselectstart","keyPressed","fastForwardDisabledText","screenReaderAlertMarkup","$screenReaderAlert","timeToSkip","onMousedown","disableKeyListeners","enableKeyListeners","onQuizzingCompleteHandler","onMediaSeekedEvent","resetSeekPastFlagForQuizMarkersPastTime","onLoadedMetadata","onVideoThumbnailLoaded","getContext","onAddPlugin","onVideoProgress","downloadedPercent","progressBarChapterSegmentMarkup","onRequestAnimationFrame","playAfterSeek","updatePlayProgress","Image","getXPositionForQuestionSetMarker","questionSetMarkerId","measuredContainerWidth","measuredQuizMarkerWidth","usedElementWidth","scrubBarLeftOffset","durationHasChanged","createTocChapters","xmpTocItems","lastStartTime","lastChapterDuration","nextChapterTimeOrDuration","chapterPercentage","cancelAnimationFrame","setShouldRespectQuizMarkers","newShouldRespectQuizMarkers","scrubbing","lastScrubTime","controlElement","displayWidth","PlayRewindControlsView$1","_disabled","_$playControl","_$rewindControl","_$forwardControl","_$playButtonGlyph","_$pauseButtonGlyph","pauseMedia","togglePlay","seekVideo","rewindVideo","skipVideoForward","setInitialFocus","PrevNextControlsView$1","_$previousControl","_$nextControl","disablePreviousButton","disableNextButton","localStorageWrapper","localStorage","setItem","getItem","VOLUME_STRING","VolumeControlView$1","cachedVolumeValue","_showVolumeSlider","_secondaryControlsHidden","_cachedVolume","_cachedMuted","_sliderShowTimeoutId","_$controlsContainer","_$primaryControlsContainer","_$secondaryControlsContainer","_$volumeContainer","_$volumeSliderContainer","_$volumeSlider","_$volumeSliderTrack","_$volumeControl","_initialVolume","_initialMuted","_sliderVolumeValue","_sliderActive","onKeyDownHandler","onKeyHandler","setSliderValue","updateVolumeSliderPositionByVolume","clampVolumePercentage","volumeAsPercent","volumePercentageValue","onSliderMouseDownHandler","volumeSliderLeftOffset","pendingVolumeValue","updateSliderValue","onMouseMove","onMouseUp","updateSliderOnAnimationFrame","volumeFromMedia","volumeConverted","volumeSliderLeftCssValue","volumeTrackWidthCssValue","showVolumeSlider","handleSecondaryControls","shouldHideSecondaryControls","setSecondaryControlsVisibility","isHidden","hideVolumeSlider","updateUI","volumeValue","setMuted","newVolumeAsPercent","startHideSliderTimeout","onContainerMouseOver","onContainerMouseLeave","hideVolumeSliderOnFocusOut","onVolumeButtonClick","onResize","onMediaVolumeChange","hideControls","AudioDescriptionControlView$1","_$audioDescriptionButton","_$audioDescriptionGlyph","_audioDescriptionEnabled","onButtonClick","audioDescriptionEnabled","onAudioDescriptionChange","eventData","audioDescriptionFailedToPlay","disableControl","enableControl","CaptionsControlView$1","_$closedCaptionButton","_$closedCaptionGlyph","_normalButtonClass","_activeButtonClass","savePreference","onCaptionsToggle","savedStateLoaded","setCaptionButtonVisible","captionButtonVisible","_hotkeysEnabled","hotkeyService","TocControlView$1","_$tocButton","_$tocGlyph","tocButtonMarkup","_tocDisplayed","setTocDisplayState","displayToc","classList","onHideToc","onShowToc","focusTocButton","_defaultAvailablePlaybackRates","PlayerSettingsView$1","_isOpen","_currentPlaybackRate","_availablePlaybackRates","_minPlaybackRate","_maxPlaybackRate","defaultPlaybackRate","playerSettingsViewMarkup","playerRateOptionsLocalizedStrings","rate","getPlaybackRates","selectedLanguageIdentifier","foundSelectedLanguageInAvailableList","languageShouldBeSelected","getClosedCaptionLanguages","savedPlayBackSpeedFromLocalStorage","_$playerSettingsViewEl","_$playbackRateSelectEl","_$ccLanguageSelectEl","_$playerSettingsButton","_$playerSettingsButtonGlyph","_$closedCaptionToggleContainer","_$closedCaptionToggle","_$closedCaptionToggleElement","_$audioDescriptionToggle","_$audioDescriptionToggleElement","_$settingsCloseButton","_$settingsHeaderContainer","removeClickHandler","addClickHandler","trapFocusInModalView","hideSettingsViewOnClickOutside","playbackSpeed","onPlaybackRateControlChange","onCCLanguageControlChange","ccLanguageCode","onAudioDescriptionToggleChange","onClosedCaptionToggleChange","onCaptionsToggled","onPlaybackRateValueChange","realPlaybackRate","onKeyboardShortCut","indexOfCurrentRate","decrementPlaybackRate","onPlayerSettingsButtonClick","onDisplayCaptionControl","displayCaptionControl","isOpen","nullPipController","exit","bindChangeEvent","unbindChangeEvent","inPip","isSupported","StandardsPipController$1","requestPictureInPicture","exitPictureInPicture","onChangeHandler","pictureInPictureElement","pictureInPictureEnabled","LegacySafariPipController$1","webkitSetPresentationMode","webkitPresentationMode","webkitSupportsPresentationMode","pipControllerFactory","PipControlView$1","_$pipButton","_pipApiController","onPresentationModeChange","pipViewActive","onPipControlClick","handleSmartPlayerActionEvents","initialize","DisplayModes","Normal","Theater","Fullscreen","PictureInPicture","TheaterModeControlView$1","_$theaterModeButton","_$theaterModeGlyph","_theaterModeEnabled","sendTheaterModeChangedEvent","displayMode","setDisplayMode","loadSavedSettings","savedDisplayStateStorage","inFullScreen","FullscreenControlView$1","_$fullScreenButton","_$fullScreenGlyph","_elementToFullscreen","_inFullScreen","_inFullFrame","_fullScreenDomElement","_buttonMode","_legacyIOSFullScreenMode","findButtonMode","canSupportExpandVideoMode","setButtonDisplay","onFullScreenChange","cancelFullScreen","switchFromFullScreenMode","toggleFullScreenMode","toggleFullFrameMode","onFullScreenClick","checkToExitFullScreen","onFullButtonClick","initializeHandlers","fullScreenEventNames","initializeFullScreenSupport","onVideoEnd","onDoubleClick","isFullScreen","isFullFrame","ClickControlsView$1","fullscreenControlView","progressBarControlView","doubleClickDelay","_$clickControls","_$playPauseStateContainer","_$playPauseStateIndicator","_clicks","_doubleClickTimer","_draggingCaption","_mediaPluginInteractionActive","_doubleClickDelay","processHotspotActiveChange","hasTimeChangeAction","enable","onControlClick","mediaPaused","onCaptionDragStart","onCaptionDragEnd","processMediaAreaPluginInteractiveHandler","VideoControlsController$1","$rootSmartPlayerElement","_$videoControlsContainer","_beforeAfterPlayControlsView","_progressBarControlView","_playRewindControlsView","_prevNextControlsView","_volumeControlView","_audioDescriptionControlView","_captionsControlView","_tocControlView","_playerSettingsView","_pipControlView","_theaterModeControlView","_fullScreenControlView","_clickControlsView","_lastClickTime","_displayStartScreenOnPlaybackError","_mediaIsSeeking","_timeToSeekAfterCurrentSeekOperation","_displayMode","_playbackInitialized","_userNeedToClickHeroPlayControl","_controlsHidden","_autoHideControlsTimeoutId","_lastMouseMoveCoords","forceHide","hideElementAfterFadeOut","controlsAreBusy","hideControlsOnTimeout","clearHideControlsTimeout","resetHideControlsTimeout","enableClickControlsIfNotPausedForHotspot","oneOrMoreHotspotsWithTimeActionArePaused","showControls","showControlsWithAutoHide","onContainerClick","getTime","onContainerLeave","onContainerMousemove","enableAutoHideControls","disableAutoHideControls","resetTime","onPlaybackInitialized","playPromise","setControlsDisplayMode","onSeekToTime","onSetVolume","onSetMuted","isMuted","onSetPlaybackRate","onVideoSeeking","onVideoSeeked","onVideoMetadataLoaded","seekToInitialTimeIfSet","teardownHideShowControls","onDisplayTocControl","onTocScroll","timeToSeek","initializePlayback","onQuizSetupComplete","onHeroPlayControlClick","onMediaError","onHotspotInactive","onTryToAutoPlay","userNeedToClickHeroPlayControl","playbackInitialized","beforeAfterPlayControlsView","CAPTION_POSITION","CAPTION_ALIGNMENT","VideoControlsDisplayModeController$1","videoControlsController","_quizUIVisible","_quizUIMinimized","_pipViewActive","_captionViewPosition","_searchIsFocused","_isScrubbing","_externalLinkViewOpen","_mediaError","getDisplayMode","updateVideoControlsDisplayMode","captionViewPosition","onPipChanged","onQuizUIVisible","onQuizUIHidden","onMinimizeQuizUI","onMaximizeQuizUI","onShowQuizSetup","handleControlsUpdated","onSearchFocusChange","searchIsFocused","onScrubbingStarted","onScrubbingEnded","onExternalLinkViewOpen","onExternalLinkViewClosed","hotspotViewState","firstVisible","HotspotViewModel$1","hotspotXmpModel","videoNativeWidth","videoNativeHeight","_hotspotXmpModel","_hotspotIndex","_isActive","_hasPausedAtEnd","_viewPoints","viewPoints","coordinate","hsViewData","xOrig","yOrig","xScale","yScale","getHotspotViewPoints","hotspotText","jumpMediaText","jumpTimeText","openLinkText","playText","createHotspotDescription","isTimeNearEndOfHotspot","getTimeLeftUntilEnd","getCoordinates","hotspotViewWidth","hotspotViewHeight","viewPoint","isHotspotWithinTime","shouldPauseAtTheEnd","isActive","hasPausedAtEnd","HotspotView$1","spContainer","$hotspotsContainerElement","hotspotViewModel","_$hotspotSvgElement","_$hotspotLinkElement","_timerId","svgViewMarkup","$svgView","enableTabbing","disableTabbing","onQuizEventHandler","onControlsUpdatedHandler","hideHotspot","getCurrentTimeInMilliseconds","displayHotspot","addHotspotViewToDom","$svgElementWithLowerIndex","$svg","getSvgElementWithLowerIndex","pauseOnHotspot","initPauseOnHotspot","mediaPlaybackRate","frameBuffer","getTimeToHotspotEnd","resetHasPaused","update","hotspotState","HotspotsView$1","tabController","_$hotspots","_currentFile","hotspotsMarkup","_xmp","_eventContainer","_hotspotsContainerId","_hotspotXmpModels","_hotspotViews","_mediaNativeWidth","_mediaNativeHeight","_oneOrMoreHotspotActive","preventEvent","onHotspotActiveChange","oneOrMoreHotspotActive","numberHotspotsJustDisplayed","isHotspotWithTimeActionPaused","lastActiveHotspotView","getLastActiveHotspotView","lastTabEnabledElement","hotspotAlertText","addScreenReaderAlert","onHotspotClick","targetHotspotXmpModel","targetHotspotViewModel","currentFile","hotspotView","currentMediaTimeInMilliseconds","$hotspots","HotspotController$1","_hotspotsView","_$hotspotsContainer","onVideoTimeUpdate","updateHotSpotsViewTime","processHotspotClick","targetWindow","onSeeked","eventsToBind","loadedmetadata","timeupdate","seeked","unbindToEvents","_scaledFontSize$1","_currentCaptionWidth$1","xmpCaptionView","setStyle","captionsService","$positionContainer","$textContainer","background","setWidth","scaledVideoWidth","captionPositionUnderVideo","setScale","canvasScale","maxRequiredHeight","scaledFontSize","captionWidth","_scaledFontSize","_currentCaptionWidth","adaCaptionView","captionViewFactory","CaptionsView$1","canDragCaptions","_lastUpdateCurrentFile","_window","_$positionContainer","_$textContainer","_canvasScale","_visible","_currentCaptionIndex","_lastUpdateCurrentTime","_initDragClientPosition","_onStartDragCaptionContainerSize","_initCaptionTextPosition","_customCaptionPosition","onCaptionLanguageChanged","updateCaption","onDragAnimationFrame","getInteractionPointFromEvent","onCaptionDrag","point","dragXOffset","dragYOffset","offsetXPercent","offsetYPercent","maxWidthPercentage","currentCaptionWidth","innerWidth","currentCaptionHeight","currentCaptionOffset","currentTextOffset","topPercent","leftPercent","setVisible","handleDisplayCaptions","resizeCaptionsContainer","updateView","captionStylesHaveChanged","onSizeChange","forceActiveCaptionUpdate","newCaptionIndex","getHorizontalAlignmentClass","setupDomStructure","showVideoTrackCaptions","hideVideoTrackCaptions","CaptionController$1","captionService","_captionsView","_$controls","setupCaptionView","isNotNullOrUndefined","resizeCaptions","scaleContainer","updateCaptions","onNewCaptionTrack","savedCaptionsStateFromLocalStorage","initialState","videoCaptionsSetting","loadInitialState","getCaptionCollection","getCaptionTrack","setCaptionTrack","showCaptionControls","EMAIL_REGEX","textSanitizer","email","TIME_SALT","getMilliseconds","UNIQUE_TOKEN_1","UNIQUE_TOKEN_2","REGEX_REPLACEMENT_STRING","TOKEN_1_REGEX","TOKEN_2_REGEX","REGEX_ESCAPE","createHighlightedText","searchRegex","textWithSearchMatchPlaceholders","searchTool","searchString","itemsToSearch","itemText","rawText","imageRef","imageRect","simpleSearch","TocView$1","_viewVisible","_viewIsOpen","_searchFocus","_scrolledToc","_$tocHeadContainer","_$searchContainer","_$searchInput","_$titleHeader","_$clearSearchButton","_$tocPipImageContainer","_$searchInputDisabled","_$tocContentScrollContainer","_$tocContent","_$tocContentScreenReaderLabel","_$tocItemDomList","_$tocContainer","_$noSearchResultsAlert","_tocThumbsImage","_tocPipImage","_pointerDownClientPoint","animationSpeed","openView","resizeView","headerHeight","tocTopPosition","displayTocPipImage","targetWidth","targetHeight","imageWidth","imageHeight","TOC_WIDTH","pipImageBackgroundStyle","pipImageBackground","setupTocHeader","clearTocContent","createTocItem","tocTime","tocFile","tocItemThumbnailCanvasEl","imageThumbRect","tocItemMarkup","$tocItem","yPos","thumbScale","TOC_MAX_HEIGHT","verticalThumbScale","ctx","fillStyle","fillRect","generateTocItemThumbnail","displayTocItems","tocItem","thumbnailCanvasEl","tocItemClickHandler","seekToTocItem","clickTocItem","$currentTarget","timeToSeekTo","fileToSeekTo","onTocItemPointerDown","onTocItemPointerMove","onSearchTextInput","updateSearchResults","$tocButtons","searchResults","searchResultsTocItems","updatedSearchAlertText","alertScreenReader","clearSearch","clearSearchAlertText","onSearchInputFocus","onSearchInputBlur","onTocItemKeyUp","onTocItemKeyDown","onTocContentScrollHandler","tocMarkup","blurSearchInput","disableSearch","enableSearch","resize","tocContainsActiveElement","TableOfContentsController$1","_tocView","resizeTableOfContents","onTocItemClicked","videoIndex","hideToc","mobileOrientationChange","onQuizMinimizeUI","onQuizMaximizeUI","onQuizReview","onQuizPaused","onTocDisplayToggled","AudioDescriptionTrackView$1","_audioDescriptionAudioEl","_audioTrackEnabled","_videoIsSeeking","_videoIsBuffering","_lastBufferedVideoTime","onAudioError","syncAudioTimeWithVideoTime","syncAudioVolumeWithVideoVolume","pauseAudioDescription","onVideoPlaying","onVideoStartSeeking","onWaiting","playAudioDescriptionIfVideoIsPlaying","onRateChange","onAudioTrackSeeked","onAudioDescriptionControlChange","onTimeUpdate","AudioDescriptionController$1","_audioDescriptionTrackView","ConfirmOpenUrlView$1","_$view","_$externalLinkReplayButton","_$externalLinkVisitButton","onConfirmHandler","onReplay","bindEvents","notAvailable","jumpToTimeAndPlay","jumpToTImeAndStop","showReplayControls","hideReplayControls","openUrl","openUrlInNewWindow","xmpEndActionType","xmpEndActionTypeLowerCase","executeSeekAction","onReplayHandler","seekTime","displayConfirmOpenUrlView","$localContainer","inNewWindow","urlString","executeEndAction","replayVideoHandler","showReplayControlsHandler","EndActionsController$1","_processingEndOfVideo","replayVideo","showClickToReplay","onVideoReplayHandler","replayTime","processEndOfMedia","isPlaybackEnded","BubbleView$1","containerId","_viewIsMinimized","_viewBottom","_ignoreBreakpoints","_containerId","_topContainer","_$container","_$overlay","_$arrowBubble","clickCapture","isDesktopBreakpoint","cacheElements","ignoreBreakpoints","maximizeView","minimizeView","updateViewPosition","removeView","destroyOverlay","getOverlayMarkup","setBottomOffset","bottom","pointAt","quizXPos","arrowPos","outerWidth","viewWidth","halfViewWidth","borderWidth","arrowWidth","viewIsMinimized","rationaleActionType","CONTINUE","LOCATION","JUMP_TO_TIME","CORRECT_GLYPH_DATA_URL","INCORRECT_GLYPH_DATA_URL","CORRECT_ANSWER_TEXT","YOUR_ANSWER_TEXT","AnswersView$1","showResults","answersMarkup","_$window","_$textInput","getCorrectAnswerIndex","numberAnswers","correctAnswerBitshifted","displayResults","$labelEls","correctAnswerIndex","$placeHolderImgEls","$userResponseInputImageEl","$correctResponseInputImageEl","$correctImage","$incorrectImage","displayResponseFillInResults","$inputEls","disableInput","getAnswersMarkup","getUserResponse","getCorrectAnswerText","userAnsweredQuestion","responseSuffix","getTextResponseSuffix","usersAnswer","getUsersAnswer","fullAnswerText","isTextInputOrAreaFocused","QuestionView$1","$questionTextContainer","$questionGradedStatusContainer","$feedbackContainer","$answersContainer","_answersView","feedbackMarkup","_feedbackContextMarkup","questionTextMarkup","questionGradedStatusMarkup","QuestionSetView$1","displayOverlay","mediaIsImage","showQuestionSetResults","_resolveInitPromise","questionSetViewMarkup","_currentQuestionIndex","_startTimeForQuestion","_currentQuestionView","_initTimeoutId","_alertScreenReaderTimeoutId","_$questionSetContainer","_$questionSetContent","_$questionTextContainer","_$answersContainer","_$feedbackContainer","_$questionCountContainer","_$questionGradedStatusContainer","_$hideControl","_$showControl","_$prevControl","_$continueControl","_$submitControl","_$minimizedContainer","_minimizedByKeyboardShortcut","_superView","initPromise","onHideQuizClick","onShowQuizHandler","onKeyUpHandler","isOnLastQuestion","saveQuestionUserInput","timeBetween","executeContinueAction","displayNextQuestion","executeRationaleAction","feedbackInfo","actionType","feedbackReason","getFeedbackInfoForCurrentQuestion","displayQuestion","onPreviousQuestion","onNextQuestion","onContinue","onSubmit","onIphoneTouchstart","getControlsConfig","currentQuestion","onFirstQuestion","onLastQuestion","hasOneQuestion","controlsConfig","showSubmitNav","showContinueNav","showPrevNav","showNextNav","prevDisabled","nextDisabled","updateControls","updateQuestionCount","questionCountMarkup","checkQuestionSetProgress","completeCallback","showFeedbackForCurrentQuestion","viewInitializedPromise","_superView$2","questionSetConfirmationView","getViewMarkup","getReviewControlRef","getConfirmControlRef","$confirmControl","sessionStorageWrapper","sessionStorage","rightParenRegex","leftParenRegex","QuizSetupView$1","quizSetupMarkup","_$quizSetupView","_$firstNameInput","_$lastNameInput","_$emailInput","_$beginButton","_$skipButton","getKeys","validateInput","firstName","lastName","beginQuiz","cacheSelfIdentity","skipQuiz","hideSkipButton","$view","_superView$1","reviewAnswersConfirmationView","getContinueControlRef","$reviewControl","BackoffStrategyFactory","retryLimit","backoffTime","maxDelay","tries","backoff","statusCodes","Unauthorized","UnprocessableEntity","_quizInstanceDataPromiseResolve","_quizInstanceDataPromiseReject","_gradeableDetails","_unGradeableDetails","_onPreRollStartedCallback","$preRollView","NO_RETRY_STATUS_CODES","HttpService$1","retryStrategyFactory","logFailures","_pendingRequestPromises","removePendingRequestPromise","requestPromise","UUID","addRequestToPendingList","requestUUID","sendRequest","httpVerb","retryStrategy","request","retries","responseData","canRetryFromStatusCode","retryResponse","sendFormDataPost","quizDataXmlConverter","recipient","choice","httpService$1","tokenService","AccessToken","_quizCreateInstanceUrl","_quizInstanceDataPromise","httpService","httpServiceWithUnlimitedRetries","httpServiceWithNoLogging","getBaseURL","quizService","setQuizCreateInstanceUrl","quizCreateInstanceUrl","getQuizCreateInstanceUrl","startQuizInstance","playerConfig","QuizId","CheckForQuizDefinition","FirstName","LastName","Email","getInstanceFormData","DefinitionRequired","quizJsonData","quizDefinitionXml","DefinitionText","submitQuizDefinition","analyticsSampleRate","SampleRate","reportingRate","ReportingRate","Id","submitQuestionSet","quizInstanceData","questionSetXml","ResponseText","sendProgress","sampleRateInMilliseconds","completedSamples","InstanceId","Interval","ViewedSegments","getAnalyticsRate","QuizProgressTracker$1","videoToTrack","reportingRateInMilliseconds","_intervalId","_playCallbackFunction","_didAttachToEndedEvent","_didAttachToPlayEvent","attachToEndedEvent","stopInterval","setupProgressInterval","attachToPlayEvent","videoStartMilliseconds","videoEndMilliseconds","isEndOfVideo","firstSample","lastSample","mergedPlayedInMilliseconds","mergedPlayedIndex","processPlayedSegments","computePercentageViewed","questionGrader","FATHOM","XMP","fathomGrader","processQuestionSetResults","questionResult","isCorrect","processQuestionResults","doesLocalGrading","gradeQuestion","responseNumber","gradeChoiceQuestion","responseLowerCase","possibleAnswers","numberPossibleAnswers","gradeFillInTheBlankQuestion","xmpGrader","gradeQuestionSet","questionSetReviewStatusView","setGradeableDetails","setUngradeableDetails","getHideAnswersControlRef","getShowAnswersControlRef","$readableElement","scormConstants","terminate","setValue","commit","dataModelID","cmiExit","cmiLocation","cmiSuspendData","cmiProgressMeasure","cmiScaledPassingScore","cmiScoreMin","cmiScoreMax","cmiScoreRaw","cmiScoreScaled","cmiSuccessStatus","cmiCompletionStatus","cmiSessionTime","adlNavRequest","scorm1Dot2DataModel","scorm2004DataModel","incomplete","notAttempted","unknown","passed","failed","browsed","exitStates","suspend","logout","navRequestStates","exitAll","suspendAll","versions","NOT_DETECTED","SCORM_1_2","SCORM_2004","assessment","minScore","maxScore","scoreNormalizationDivider","ScormDataModel$1","_percentageComplete","_quizPercentageCorrect","_quizCompletionStatus","_quizModelSnapshot","_videoAnalyticsSnapshot","_videoTimeInSecondsSnapshot","_videoTimeInSeconds","_completionStatus","_passingStatus","parseSuspendedDataString","suspendedDataString","suspendedData","pc","vas","cvt","getSuspendedDataString","percentageComplete","quizPercentageCorrect","quizPercentageCorrectAsString","quizCompletionStatus","videoAnalyticsSnapshot","snapshot","videoTimeInSecondsSnapshot","completionStatus","passingStatus","ScormApiWrapper$1","scormApi","noAPIFound","apiVersion","scormManifestDocString","apiCall","scormFunctionName","dataModalID","dmeValue","dataModel","Initialize","LMSInitialize","GetValue","LMSGetValue","Terminate","LMSFinish","SetValue","canSetValue","lessonStatus","LMSSetValue","Commit","LMSCommit","getScormManifestDoc","getScormApiOnWindow","windowRef","API_1484_11","manifestDocAsString","scormApiVersion","findAPI","findAPITries","lookForApiOnWindowTopOpener","getAPI","lookForApiOnParentWindow","getTitleFromManifestDoc","manifestXml","api","getTitle","getLastError","errorNumber","diagnostic","GetLastError","GetErrorString","GetDiagnostic","LMSGetLastError","LMSGetErrorString","LMSGetDiagnostic","ScormNavigationBarView$1","_$scormNavigationBarContainer","_$scormHeaderElement","_$scormCompleteSessionButton","_scoObjectiveHasBeenCompleted","onCompleteSessionHandler","scormNavigationBarMarkup","setTitle","scormTitle","scoObjectiveHasBeenCompleted","ScormConfirmCompleteModalView$1","_$confirmButton","_$dismissButton","_$scormConfirmCompleteModalWrapper","onDismissClickHandler","onCompleteClickHandler","failedToSaveSuspendedData","finalConfirmText","canResumeVideo","scormConfirmCompleteModalMarkup","ScormSessionEndedView$1","_$scormSessionEndedWrapper","scormSessionEndedMarkup","scormController$1","_scormApiWrapper","_isDisposed","_initialized","_scormModel","_scormNavigationBarView","_scormConfirmCompleteModalView","_minimumScoreToPass","_minimumViewPercentageToCompleteLesson","_sessionStartTimeInMilliseconds","_preventWindowClose","_ignoreFailedToSuspendError","_pendingScoExitValue","_scoSessionHasEnded","scoHasQuiz","scormSessionHasUnfinishedQuiz","canSuspendScormSession","endScormSession","timeInSecondsAsString","scoSuccessStatusValue","scoCompletionStatusValue","submitScore","suspendSuccess","sessionTimeInMilliseconds","sessionTimeInSeconds","onExitSessionHandler","exitScormSession","onExitSessionConfirmedHandler","onExitSessionWithOutProgressConfirmed","tryAndTerminateSessionOnPageUnloadIfNeeded","currentScore","allQuestionsAnswered","scoreNeededToPass","scoreNeededMultiplier","maxPassingScoreValue","lmsPassingScore","apiResult","onbeforeunload","preventPopUpWindowClose","initView","submitVideoWatchedPercentage","initialized","initialPercentageComplete","initialVideoAnalyticsSnapshot","initialQuizModelSnapshot","initialVideoTimeInSeconds","minScoreToPassLesson","minimumScoreToPass","minViewPercentageToCompleteLesson","minimumViewPercentageToCompleteLesson","supportsResumeSession","scormController","quizServiceErrorIds","badDefinition","QuizController$1","_questionGrader","_quizUserDetails","_quizSetupPromise","_resolveQuizSetup","_quizSetupView","_currentView","_retrySubmissionMessageDisplayBar","_quizOutOfDateMessageView","_quizBadDefinitionMessageView","_progressTracker","_numberQuestionSets","_currentQuestionSetIndex","_bottomOffset","_pointAt","_quizEnabled","_quizReady","_mediaIsImage","_lastStatusMessage","_shouldReportViewedOnPageLoad","submitScoreToScormController","userSubmitToLMS","onNetworkRetryEvent","completeQuestionSetEventDispatch","questionSetCompleteHandler","onContinueHandler","createQuestionSetFeedbackView","needOverlay","questionSetView","continueVideoHandler","initQuestionSetFeedback","initFeedbackFromReviewStatusView","hideQuizStatus","onRationaleActionHandler","onCloseQuestionSetView","possibleCorrect","numberUngradable","createQuestionSetReviewStatusView","numberIncorrectText","percentIncorrectText","numberIncorrect","updateViewBottom","createReviewAnswersConfirmationView","submitResults","ioMessage","gradeResults","onGradingComplete","apiErrorEventHandler","createQuestionSetView","reviewHandler","confirmHandler","destroyQuizSetupView","beginQuizHandler","skipQuizHandler","createSetupView","startQuizApiInstance","errorID","responseJSON","errorId","displaySetupView","removeSubmissionRetryMessage","showSubmissionRetryMessage","showQuizIsOutOfDateMessage","reload","showQuizBadDefinitionMessage","setQuestionGrader","grader","forceProgressUpdate","segmentsCompleted","onMediaFirstPlayerHandler","onMediaControlsReady","setQuizModel","newQuizModel","resolveQuizSetup","hasMultipleQuestionSets","getLastStatusMessage","displayNextQuestionSet","findQuestionSet","activeQuestionSetId","numberMarkers","findPrevMarkerTimeForMarker","updatePercentWatchedForQuestionSet","percentWatched","displayConfirm","createConfirmView","showQuiz","hideQuiz","pointViewAt","startTrackingProgress","populateQuizModel","suspendedQuizData","quizIsSetupPromise","quizReady","viewIsOpen","hasQuizQuestions","QuizEventController$1","ioOverlayView","_lastQuestionSetId","_lastQuestionSetMarkerTime","_quizzingErrorMessageBarView","updateQuizPointAtPosition","playerXOffset","pointAtXPosition","seekToTime","safeSeekTime","updateQuizzing","intervalId","quizEventHandler","prevMarkerTimeInSeconds","displayMessage","jumpToTimeInSeconds","lastStatusMessage","onVideoControlsVisible","MediaAnalyticsController$1","_eventPlayTracking","_eventLastPercentReported","initVideoAnalytics","resumeSCORMSession","handleTimeUpdate","updateAnalytics","onCanPlayVideo","eventAction","resetPlayStartAnalytics","videoStartedEventAction","onMediaEnd","onMediaWrapperMediaEnd","onOpenExternalLink","onClickExternalLink","onStartedPlayback","quizRequiresAnalytics","playerConfigurationRequiresAnalytics","onPlayerInitialized","canplay","metadataReady","canPlayReady","PluginEventsController$1","_$mediaPluginContainer","onMediaPluginContainerKeyHandler","onMediaPluginContainerMouseHandler","initMediaPlugins","onPluginAdded","MediaSessionController$1","mediaPosterImageSrc","_navigatorRef","_mediaSessionRef","mediaSession","setActionHandler","MediaMetadata","_metaDataSet","setMetaData","artwork","updateMediaSessionState","playbackState","setPositionState","onPlayAction","onPauseAction","onSeekToAction","MediaExtensionsController$1","responsiveController","_hotspotController","_tableOfContentsController","_audioDescriptionController","_endActionsController","_quizController","_quizEventController","_mediaAnalyticsController","_pluginEventsController","_mediaSessionController","hasAnEnabledQuiz","setupVideoControllers","disableHighlightOnMouseDown","TabController$1","$defaultFirstTabEnabledElement","$defaultLastTabEnabledElement","_defaultFirstTabEnabledElement","_defaultLastTabEnabledElement","_firstTabEnabledElement","_lastTabEnabledElement","_playerInFullScreenMode","unbindEventsToTabEnabledElement","setFirstTabEnabledElement","firstTabEnabledElement","setLastTabEnabledElement","initController","ExternalEventsController$1","playerViewEventCallbacks","onTheaterModeChanged","newDisplayMode","onVideoError","onPlayingEvent","onStartedPlaybackHandler","triggerQuizVisible","triggerQuizHidden","triggerQuizPromptVisible","triggerQuizPromptHidden","processCaptionChanged","processCaptionToggled","externalCaptionEvent","triggerPlayerSettingsOpen","triggerPlayerSettingsClose","triggerVideoControlsHidden","triggerVideoControlsVisible","triggerExternalPlayerResize","triggerHeroControlHidden","triggerImagePointerOver","triggerImagePointerLeave","playing","PlayerState$1","_oneOrMoreHotspotsWithTimeActionArePaused","_videoHasQuizQuestions","_pausedForQuiz","videoHasQuizQuestions","IoOverlayView$1","_$ioContainer","_$ioMessage","_$ioImg","shouldHideLoadingGraphic","setViewMessage","SmartPlayerView$1","playerInstanceUUID","xmpInErrorState","_viewHasBeenInitialized","_mediaExtensionsController","_tabController","_externalEventsController","_scormErrorMessageBarView","_$playerPluginContainer","_mediaElementUniqueID","_viewInitializedPromise","_playerViewEventCallbacks","_queuedMediaBinds","_mediaView","_ioOverlayView","_videoControlsController","_videoControlsDisplayModeController","_controlsReady","_mediaExtensionsReady","_mediaHasBeenLoaded","_playerState","_$mediaContainer","_$playerLayoutControlsContainer","eventCategorySuffix","categorySuffix","rum","externalEventIsSupported","eventKey","onHideLoadingMessage","loadMediaWhenComponentsAreReady","onControlsReady","onMediaExtensionsReady","onFailedToFindSCORMApi","startViewPortObserver","onImagePointerOver","onImagePointerLeave","isScrubbingVideo","progressBarDisplayWidth","currentDisplayMode","smartPlayerPreRollEventConstants","PRE_ROLL_STARTED","PRE_ROLL_FINISHED","PRE_ROLL_FINISHED_ACTIONS","REMOVE_NOW","preRollView","$window","preRollMessage","destroyView","onIFrameContentLoaded","preRollController","onPreRollStartedCallback","viewExists","_$spElement","setTheme$1","applyTheme","getClassNameForTheme","themeClassNameAsString","currentThemeClassName","themeController","externalVideoEventIsSupported","_$rootSmartPlayerElement","_responsiveController","_currentPlayerType","_captionService","_smartPlayerView","_viewCreated","_viewInitialized","_queuedExternalConfiguration","_playerInstanceUUID","_xmpInErrorState","mediaListError","onPreRollStart","continueInit","currentInstanceUUID","mediaListReady","playbackInitiatedHandler","processMediaAssets","initIntrinsicSizingFromImageUrl","imgUrl","img","TSC","embedded_config_xml","setupPlayer","captionChangeHandler","initPlayerView","displayLocalWarning","addEventListener$1","playMedia","queueEventHandler","setCurrentTime","mediaPlayer","rootElementID","$parentNode","getSmartPlayerRootElement","getVersion","jsSeekTime","jsPlay","getCurrentSrc","getEnded","getPaused","getPlaybackRate","getBuffered","getPlayed","getSeekable","getSeeking","getVolume","getMuted","isScrubbing","dequeueEventHandler","triggerEvent","isVisible","getIsYouTube","getTocChapters","getProgressBarDisplayWidth","getCurrentDisplayMode","Plugin$1","pluginName","_initializedPromiseResolve","_initializedPromise","_pluginName","_viewElementType","pluginContainerElement","REMOVE_SPACES_REGEX","PluginController$1","_plugins","isViewElementTypeSupported","registerPlugin","pluginSameNameMessage","pluginUnsupportedViewElementMessage","plugin","$viewElementPluginContainer","elementTypePlugins","getPluginsForViewElementType","pluginNameNoSpaces","pluginNamedContainerClassName","getPluginContainerElement","CamtasiaQuizPreviewView$1","xmpString","previewElement","packageJson","timeCodeRegex","newlineRegex","defaultChapterName","chapterParams","parseTableOfContentsItemFromString","lineString","timecodes","getChapterNameFromLineString","chapterStartTime","_started","_controls","_authInfo","_lastError","_pluginController","generalErrorHandler","mediaInterfaceController","addSrc","$spElement","pluginInitPromise","displayQuizPreview","containerElement","displayImageFullscreen","exitImageFullscreen","createTocFromDescription","descriptionText","tocModel","textString","textSplitNewlines","chapterItems","previousTocItemStartTime","textLine","textToTocModel","decodeURIComponent","lowerCaseValue","tocSrc","tocChapters","prerollSrc","captionsVisible","ignoreStoredCaptionVisible","isYouTube","authInfo","contextMenu","isIphoneOrIpod","singleClickControlEnabled","doubleClickControlEnabled","progressBarWidth","environment","deprecatedName"],"sourceRoot":""}