From f6217d9d5e9e9812b64723af031fd31c8fcf9d18 Mon Sep 17 00:00:00 2001 From: jos Date: Tue, 3 Mar 2015 15:00:19 +0100 Subject: [PATCH] Implemented creating new range items by dragging in an empty space with the ctrl key down. --- HISTORY.md | 2 + dist/vis.js | 9112 +++++++++++++------------- dist/vis.map | 2 +- dist/vis.min.js | 22 +- docs/timeline.html | 10 +- examples/timeline/08_edit_items.html | 1 + lib/timeline/component/ItemSet.js | 130 +- 7 files changed, 4709 insertions(+), 4570 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index 7ccfd7d0..da99dc53 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -20,6 +20,8 @@ http://visjs.org - Implemented orientation option `'both'`, displaying a time axis both on top and bottom (#665). +- Implemented creating new range items by dragging in an empty space with the + ctrl key down. - Fixed not property initializing with a DataView for groups. - Merged add custom timebar functionality, thanks @aytech! - Fixed #664: end of item not restored when canceling a move event. diff --git a/dist/vis.js b/dist/vis.js index 2b232976..6f95c67e 100644 --- a/dist/vis.js +++ b/dist/vis.js @@ -13507,6 +13507,54 @@ return /******/ (function(modules) { // webpackBootstrap event.stopPropagation(); } + else if (this.options.editable.add && event.gesture.srcEvent.ctrlKey) { + // create a new range item when dragging with ctrl key down + this._onDragStartAddItem(event); + } + }; + + /** + * Start creating a new range item by dragging. + * @param {Event} event + * @private + */ + ItemSet.prototype._onDragStartAddItem = function (event) { + var snap = this.options.snap || null; + var xAbs = util.getAbsoluteLeft(this.dom.frame); + var x = event.gesture.center.pageX - xAbs - 10; // minus 10 to compensate for the drag starting as soon as you've moved 10px + var time = this.body.util.toTime(x); + var scale = this.body.util.getScale(); + var step = this.body.util.getStep(); + var start = snap ? snap(time, scale, step) : start; + var end = start; + + var itemData = { + type: 'range', + start: start, + end: end, + content: 'new item' + }; + + var id = util.randomUUID(); + itemData[this.itemsData._fieldId] = id; + + var group = this.groupFromTarget(event); + if (group) { + itemData.group = group.groupId; + } + + var newItem = new RangeItem(itemData, this.conversion, this.options); + newItem.id = id; // TODO: not so nice setting id afterwards + this._addItem(newItem); + + var props = { + item: newItem, + end: end.valueOf(), + initialX: event.gesture.center.clientX + }; + this.touchParams.itemProps = [props]; + + event.stopPropagation(); }; /** @@ -13617,49 +13665,65 @@ return /******/ (function(modules) { // webpackBootstrap if (this.touchParams.itemProps) { // prepare a change set for the changed items - var changes = [], - me = this, - dataset = this.itemsData.getDataSet(); + var changes = []; + var me = this; + var dataset = this.itemsData.getDataSet(); var itemProps = this.touchParams.itemProps ; this.touchParams.itemProps = null; itemProps.forEach(function (props) { - var id = props.item.id, - itemData = me.itemsData.get(id, me.itemOptions); - - var changed = false; - if ('start' in props.item.data) { - changed = (props.start != props.item.data.start.valueOf()); - itemData.start = util.convert(props.item.data.start, - dataset._options.type && dataset._options.type.start || 'Date'); - } - if ('end' in props.item.data) { - changed = changed || (props.end != props.item.data.end.valueOf()); - itemData.end = util.convert(props.item.data.end, - dataset._options.type && dataset._options.type.end || 'Date'); - } - if ('group' in props.item.data) { - changed = changed || (props.group != props.item.data.group); - itemData.group = props.item.data.group; - } + var id = props.item.id; + var itemData = me.itemsData.get(id, me.itemOptions); - // only apply changes when start or end is actually changed - if (changed) { - me.options.onMove(itemData, function (itemData) { + if (!itemData) { + // add a new item + me.options.onAdd(props.item.data, function (itemData) { + me._removeItem(props.item); // remove temporary item if (itemData) { - // apply changes - itemData[dataset._fieldId] = id; // ensure the item contains its id (can be undefined) - changes.push(itemData); + me.itemsData.getDataSet().add(itemData); } - else { - // restore original values - me._updateItemProps(props.item, props); - me.stackDirty = true; // force re-stacking of all items next redraw - me.body.emitter.emit('change'); - } + // force re-stacking of all items next redraw + me.stackDirty = true; + me.body.emitter.emit('change'); }); } + else { + // update existing item + var changed = false; + if ('start' in props.item.data) { + changed = (props.start != props.item.data.start.valueOf()); + itemData.start = util.convert(props.item.data.start, + dataset._options.type && dataset._options.type.start || 'Date'); + } + if ('end' in props.item.data) { + changed = changed || (props.end != props.item.data.end.valueOf()); + itemData.end = util.convert(props.item.data.end, + dataset._options.type && dataset._options.type.end || 'Date'); + } + if ('group' in props.item.data) { + changed = changed || (props.group != props.item.data.group); + itemData.group = props.item.data.group; + } + + // only apply changes when start or end is actually changed + if (changed) { + me.options.onMove(itemData, function (itemData) { + if (itemData) { + // apply changes + itemData[dataset._fieldId] = id; // ensure the item contains its id (can be undefined) + changes.push(itemData); + } + else { + // restore original values + me._updateItemProps(props.item, props); + + me.stackDirty = true; // force re-stacking of all items next redraw + me.body.emitter.emit('change'); + } + }); + } + } }); // apply the changes to the data (if there are changes) @@ -22474,7 +22538,7 @@ return /******/ (function(modules) { // webpackBootstrap // first check if moment.js is already loaded in the browser window, if so, // use this instance. Else, load via commonjs. - module.exports = (typeof window !== 'undefined') && window['moment'] || __webpack_require__(58); + module.exports = (typeof window !== 'undefined') && window['moment'] || __webpack_require__(59); /***/ }, @@ -22484,7 +22548,7 @@ return /******/ (function(modules) { // webpackBootstrap // Only load hammer.js when in a browser environment // (loading hammer.js in a node.js environment gives errors) if (typeof window !== 'undefined') { - module.exports = window['Hammer'] || __webpack_require__(59); + module.exports = window['Hammer'] || __webpack_require__(58); } else { module.exports = function () { @@ -25071,5218 +25135,5218 @@ return /******/ (function(modules) { // webpackBootstrap /* 58 */ /***/ function(module, exports, __webpack_require__) { - var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global, module) {//! moment.js - //! version : 2.9.0 - //! authors : Tim Wood, Iskren Chernev, Moment.js contributors - //! license : MIT - //! momentjs.com + var __WEBPACK_AMD_DEFINE_RESULT__;/*! Hammer.JS - v1.1.3 - 2014-05-20 + * http://eightmedia.github.io/hammer.js + * + * Copyright (c) 2014 Jorik Tangelder ; + * Licensed under the MIT license */ - (function (undefined) { - /************************************ - Constants - ************************************/ + (function(window, undefined) { + 'use strict'; - var moment, - VERSION = '2.9.0', - // the global-scope this is NOT the global object in Node.js - globalScope = (typeof global !== 'undefined' && (typeof window === 'undefined' || window === global.window)) ? global : this, - oldGlobalMoment, - round = Math.round, - hasOwnProperty = Object.prototype.hasOwnProperty, - i, + /** + * @main + * @module hammer + * + * @class Hammer + * @static + */ - YEAR = 0, - MONTH = 1, - DATE = 2, - HOUR = 3, - MINUTE = 4, - SECOND = 5, - MILLISECOND = 6, + /** + * Hammer, use this to create instances + * ```` + * var hammertime = new Hammer(myElement); + * ```` + * + * @method Hammer + * @param {HTMLElement} element + * @param {Object} [options={}] + * @return {Hammer.Instance} + */ + var Hammer = function Hammer(element, options) { + return new Hammer.Instance(element, options || {}); + }; - // internal storage for locale config files - locales = {}, + /** + * version, as defined in package.json + * the value will be set at each build + * @property VERSION + * @final + * @type {String} + */ + Hammer.VERSION = '1.1.3'; - // extra moment internal properties (plugins register props here) - momentProperties = [], + /** + * default settings. + * more settings are defined per gesture at `/gestures`. Each gesture can be disabled/enabled + * by setting it's name (like `swipe`) to false. + * You can set the defaults for all instances by changing this object before creating an instance. + * @example + * ```` + * Hammer.defaults.drag = false; + * Hammer.defaults.behavior.touchAction = 'pan-y'; + * delete Hammer.defaults.behavior.userSelect; + * ```` + * @property defaults + * @type {Object} + */ + Hammer.defaults = { + /** + * this setting object adds styles and attributes to the element to prevent the browser from doing + * its native behavior. The css properties are auto prefixed for the browsers when needed. + * @property defaults.behavior + * @type {Object} + */ + behavior: { + /** + * Disables text selection to improve the dragging gesture. When the value is `none` it also sets + * `onselectstart=false` for IE on the element. Mainly for desktop browsers. + * @property defaults.behavior.userSelect + * @type {String} + * @default 'none' + */ + userSelect: 'none', - // check for nodeJS - hasModule = (typeof module !== 'undefined' && module && module.exports), + /** + * Specifies whether and how a given region can be manipulated by the user (for instance, by panning or zooming). + * Used by Chrome 35> and IE10>. By default this makes the element blocking any touch event. + * @property defaults.behavior.touchAction + * @type {String} + * @default: 'pan-y' + */ + touchAction: 'pan-y', - // ASP.NET json date format regex - aspNetJsonRegex = /^\/?Date\((\-?\d+)/i, - aspNetTimeSpanJsonRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/, + /** + * Disables the default callout shown when you touch and hold a touch target. + * On iOS, when you touch and hold a touch target such as a link, Safari displays + * a callout containing information about the link. This property allows you to disable that callout. + * @property defaults.behavior.touchCallout + * @type {String} + * @default 'none' + */ + touchCallout: 'none', - // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html - // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere - isoDurationRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/, + /** + * Specifies whether zooming is enabled. Used by IE10> + * @property defaults.behavior.contentZooming + * @type {String} + * @default 'none' + */ + contentZooming: 'none', - // format tokens - formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|x|X|zz?|ZZ?|.)/g, - localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, + /** + * Specifies that an entire element should be draggable instead of its contents. + * Mainly for desktop browsers. + * @property defaults.behavior.userDrag + * @type {String} + * @default 'none' + */ + userDrag: 'none', - // parsing token regexes - parseTokenOneOrTwoDigits = /\d\d?/, // 0 - 99 - parseTokenOneToThreeDigits = /\d{1,3}/, // 0 - 999 - parseTokenOneToFourDigits = /\d{1,4}/, // 0 - 9999 - parseTokenOneToSixDigits = /[+\-]?\d{1,6}/, // -999,999 - 999,999 - parseTokenDigits = /\d+/, // nonzero number of digits - parseTokenWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, // any word (or two) characters or numbers including two/three word month in arabic. - parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z - parseTokenT = /T/i, // T (ISO separator) - parseTokenOffsetMs = /[\+\-]?\d+/, // 1234567890123 - parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123 + /** + * Overrides the highlight color shown when the user taps a link or a JavaScript + * clickable element in Safari on iPhone. This property obeys the alpha value, if specified. + * + * If you don't specify an alpha value, Safari on iPhone applies a default alpha value + * to the color. To disable tap highlighting, set the alpha value to 0 (invisible). + * If you set the alpha value to 1.0 (opaque), the element is not visible when tapped. + * @property defaults.behavior.tapHighlightColor + * @type {String} + * @default 'rgba(0,0,0,0)' + */ + tapHighlightColor: 'rgba(0,0,0,0)' + } + }; - //strict parsing regexes - parseTokenOneDigit = /\d/, // 0 - 9 - parseTokenTwoDigits = /\d\d/, // 00 - 99 - parseTokenThreeDigits = /\d{3}/, // 000 - 999 - parseTokenFourDigits = /\d{4}/, // 0000 - 9999 - parseTokenSixDigits = /[+-]?\d{6}/, // -999,999 - 999,999 - parseTokenSignedNumber = /[+-]?\d+/, // -inf - inf + /** + * hammer document where the base events are added at + * @property DOCUMENT + * @type {HTMLElement} + * @default window.document + */ + Hammer.DOCUMENT = document; - // iso 8601 regex - // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) - isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/, + /** + * detect support for pointer events + * @property HAS_POINTEREVENTS + * @type {Boolean} + */ + Hammer.HAS_POINTEREVENTS = navigator.pointerEnabled || navigator.msPointerEnabled; - isoFormat = 'YYYY-MM-DDTHH:mm:ssZ', + /** + * detect support for touch events + * @property HAS_TOUCHEVENTS + * @type {Boolean} + */ + Hammer.HAS_TOUCHEVENTS = ('ontouchstart' in window); - isoDates = [ - ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/], - ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/], - ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/], - ['GGGG-[W]WW', /\d{4}-W\d{2}/], - ['YYYY-DDD', /\d{4}-\d{3}/] - ], + /** + * detect mobile browsers + * @property IS_MOBILE + * @type {Boolean} + */ + Hammer.IS_MOBILE = /mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent); - // iso time formats and regexes - isoTimes = [ - ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/], - ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/], - ['HH:mm', /(T| )\d\d:\d\d/], - ['HH', /(T| )\d\d/] - ], + /** + * detect if we want to support mouseevents at all + * @property NO_MOUSEEVENTS + * @type {Boolean} + */ + Hammer.NO_MOUSEEVENTS = (Hammer.HAS_TOUCHEVENTS && Hammer.IS_MOBILE) || Hammer.HAS_POINTEREVENTS; - // timezone chunker '+10:00' > ['10', '00'] or '-1530' > ['-', '15', '30'] - parseTimezoneChunker = /([\+\-]|\d\d)/gi, + /** + * interval in which Hammer recalculates current velocity/direction/angle in ms + * @property CALCULATE_INTERVAL + * @type {Number} + * @default 25 + */ + Hammer.CALCULATE_INTERVAL = 25; - // getter and setter names - proxyGettersAndSetters = 'Date|Hours|Minutes|Seconds|Milliseconds'.split('|'), - unitMillisecondFactors = { - 'Milliseconds' : 1, - 'Seconds' : 1e3, - 'Minutes' : 6e4, - 'Hours' : 36e5, - 'Days' : 864e5, - 'Months' : 2592e6, - 'Years' : 31536e6 - }, + /** + * eventtypes per touchevent (start, move, end) are filled by `Event.determineEventTypes` on `setup` + * the object contains the DOM event names per type (`EVENT_START`, `EVENT_MOVE`, `EVENT_END`) + * @property EVENT_TYPES + * @private + * @writeOnce + * @type {Object} + */ + var EVENT_TYPES = {}; - unitAliases = { - ms : 'millisecond', - s : 'second', - m : 'minute', - h : 'hour', - d : 'day', - D : 'date', - w : 'week', - W : 'isoWeek', - M : 'month', - Q : 'quarter', - y : 'year', - DDD : 'dayOfYear', - e : 'weekday', - E : 'isoWeekday', - gg: 'weekYear', - GG: 'isoWeekYear' - }, + /** + * direction strings, for safe comparisons + * @property DIRECTION_DOWN|LEFT|UP|RIGHT + * @final + * @type {String} + * @default 'down' 'left' 'up' 'right' + */ + var DIRECTION_DOWN = Hammer.DIRECTION_DOWN = 'down'; + var DIRECTION_LEFT = Hammer.DIRECTION_LEFT = 'left'; + var DIRECTION_UP = Hammer.DIRECTION_UP = 'up'; + var DIRECTION_RIGHT = Hammer.DIRECTION_RIGHT = 'right'; - camelFunctions = { - dayofyear : 'dayOfYear', - isoweekday : 'isoWeekday', - isoweek : 'isoWeek', - weekyear : 'weekYear', - isoweekyear : 'isoWeekYear' - }, + /** + * pointertype strings, for safe comparisons + * @property POINTER_MOUSE|TOUCH|PEN + * @final + * @type {String} + * @default 'mouse' 'touch' 'pen' + */ + var POINTER_MOUSE = Hammer.POINTER_MOUSE = 'mouse'; + var POINTER_TOUCH = Hammer.POINTER_TOUCH = 'touch'; + var POINTER_PEN = Hammer.POINTER_PEN = 'pen'; - // format function strings - formatFunctions = {}, + /** + * eventtypes + * @property EVENT_START|MOVE|END|RELEASE|TOUCH + * @final + * @type {String} + * @default 'start' 'change' 'move' 'end' 'release' 'touch' + */ + var EVENT_START = Hammer.EVENT_START = 'start'; + var EVENT_MOVE = Hammer.EVENT_MOVE = 'move'; + var EVENT_END = Hammer.EVENT_END = 'end'; + var EVENT_RELEASE = Hammer.EVENT_RELEASE = 'release'; + var EVENT_TOUCH = Hammer.EVENT_TOUCH = 'touch'; - // default relative time thresholds - relativeTimeThresholds = { - s: 45, // seconds to minute - m: 45, // minutes to hour - h: 22, // hours to day - d: 26, // days to month - M: 11 // months to year - }, + /** + * if the window events are set... + * @property READY + * @writeOnce + * @type {Boolean} + * @default false + */ + Hammer.READY = false; - // tokens to ordinalize and pad - ordinalizeTokens = 'DDD w W M D d'.split(' '), - paddedTokens = 'M D H h m s w W'.split(' '), + /** + * plugins namespace + * @property plugins + * @type {Object} + */ + Hammer.plugins = Hammer.plugins || {}; - formatTokenFunctions = { - M : function () { - return this.month() + 1; - }, - MMM : function (format) { - return this.localeData().monthsShort(this, format); - }, - MMMM : function (format) { - return this.localeData().months(this, format); - }, - D : function () { - return this.date(); - }, - DDD : function () { - return this.dayOfYear(); - }, - d : function () { - return this.day(); - }, - dd : function (format) { - return this.localeData().weekdaysMin(this, format); - }, - ddd : function (format) { - return this.localeData().weekdaysShort(this, format); - }, - dddd : function (format) { - return this.localeData().weekdays(this, format); - }, - w : function () { - return this.week(); - }, - W : function () { - return this.isoWeek(); - }, - YY : function () { - return leftZeroFill(this.year() % 100, 2); - }, - YYYY : function () { - return leftZeroFill(this.year(), 4); - }, - YYYYY : function () { - return leftZeroFill(this.year(), 5); - }, - YYYYYY : function () { - var y = this.year(), sign = y >= 0 ? '+' : '-'; - return sign + leftZeroFill(Math.abs(y), 6); - }, - gg : function () { - return leftZeroFill(this.weekYear() % 100, 2); - }, - gggg : function () { - return leftZeroFill(this.weekYear(), 4); - }, - ggggg : function () { - return leftZeroFill(this.weekYear(), 5); - }, - GG : function () { - return leftZeroFill(this.isoWeekYear() % 100, 2); - }, - GGGG : function () { - return leftZeroFill(this.isoWeekYear(), 4); - }, - GGGGG : function () { - return leftZeroFill(this.isoWeekYear(), 5); - }, - e : function () { - return this.weekday(); - }, - E : function () { - return this.isoWeekday(); - }, - a : function () { - return this.localeData().meridiem(this.hours(), this.minutes(), true); - }, - A : function () { - return this.localeData().meridiem(this.hours(), this.minutes(), false); - }, - H : function () { - return this.hours(); - }, - h : function () { - return this.hours() % 12 || 12; - }, - m : function () { - return this.minutes(); - }, - s : function () { - return this.seconds(); - }, - S : function () { - return toInt(this.milliseconds() / 100); - }, - SS : function () { - return leftZeroFill(toInt(this.milliseconds() / 10), 2); - }, - SSS : function () { - return leftZeroFill(this.milliseconds(), 3); - }, - SSSS : function () { - return leftZeroFill(this.milliseconds(), 3); - }, - Z : function () { - var a = this.utcOffset(), - b = '+'; - if (a < 0) { - a = -a; - b = '-'; - } - return b + leftZeroFill(toInt(a / 60), 2) + ':' + leftZeroFill(toInt(a) % 60, 2); - }, - ZZ : function () { - var a = this.utcOffset(), - b = '+'; - if (a < 0) { - a = -a; - b = '-'; - } - return b + leftZeroFill(toInt(a / 60), 2) + leftZeroFill(toInt(a) % 60, 2); - }, - z : function () { - return this.zoneAbbr(); - }, - zz : function () { - return this.zoneName(); - }, - x : function () { - return this.valueOf(); - }, - X : function () { - return this.unix(); - }, - Q : function () { - return this.quarter(); - } - }, + /** + * gestures namespace + * see `/gestures` for the definitions + * @property gestures + * @type {Object} + */ + Hammer.gestures = Hammer.gestures || {}; - deprecations = {}, - - lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin'], - - updateInProgress = false; - - // Pick the first defined of two or three arguments. dfl comes from - // default. - function dfl(a, b, c) { - switch (arguments.length) { - case 2: return a != null ? a : b; - case 3: return a != null ? a : b != null ? b : c; - default: throw new Error('Implement me'); - } - } - - function hasOwnProp(a, b) { - return hasOwnProperty.call(a, b); - } - - function defaultParsingFlags() { - // We need to deep clone this object, and es5 standard is not very - // helpful. - return { - empty : false, - unusedTokens : [], - unusedInput : [], - overflow : -2, - charsLeftOver : 0, - nullInput : false, - invalidMonth : null, - invalidFormat : false, - userInvalidated : false, - iso: false - }; - } - - function printMsg(msg) { - if (moment.suppressDeprecationWarnings === false && - typeof console !== 'undefined' && console.warn) { - console.warn('Deprecation warning: ' + msg); - } + /** + * setup events to detect gestures on the document + * this function is called when creating an new instance + * @private + */ + function setup() { + if(Hammer.READY) { + return; } - function deprecate(msg, fn) { - var firstTime = true; - return extend(function () { - if (firstTime) { - printMsg(msg); - firstTime = false; - } - return fn.apply(this, arguments); - }, fn); - } + // find what eventtypes we add listeners to + Event.determineEventTypes(); - function deprecateSimple(name, msg) { - if (!deprecations[name]) { - printMsg(msg); - deprecations[name] = true; - } - } + // Register all gestures inside Hammer.gestures + Utils.each(Hammer.gestures, function(gesture) { + Detection.register(gesture); + }); - function padToken(func, count) { - return function (a) { - return leftZeroFill(func.call(this, a), count); - }; - } - function ordinalizeToken(func, period) { - return function (a) { - return this.localeData().ordinal(func.call(this, a), period); - }; - } + // Add touch events on the document + Event.onTouch(Hammer.DOCUMENT, EVENT_MOVE, Detection.detect); + Event.onTouch(Hammer.DOCUMENT, EVENT_END, Detection.detect); - function monthDiff(a, b) { - // difference in months - var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), - // b is in (anchor - 1 month, anchor + 1 month) - anchor = a.clone().add(wholeMonthDiff, 'months'), - anchor2, adjust; + // Hammer is ready...! + Hammer.READY = true; + } - if (b - anchor < 0) { - anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); - // linear across the month - adjust = (b - anchor) / (anchor - anchor2); - } else { - anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); - // linear across the month - adjust = (b - anchor) / (anchor2 - anchor); + /** + * @module hammer + * + * @class Utils + * @static + */ + var Utils = Hammer.utils = { + /** + * extend method, could also be used for cloning when `dest` is an empty object. + * changes the dest object + * @method extend + * @param {Object} dest + * @param {Object} src + * @param {Boolean} [merge=false] do a merge + * @return {Object} dest + */ + extend: function extend(dest, src, merge) { + for(var key in src) { + if(!src.hasOwnProperty(key) || (dest[key] !== undefined && merge)) { + continue; + } + dest[key] = src[key]; } + return dest; + }, - return -(wholeMonthDiff + adjust); - } - - while (ordinalizeTokens.length) { - i = ordinalizeTokens.pop(); - formatTokenFunctions[i + 'o'] = ordinalizeToken(formatTokenFunctions[i], i); - } - while (paddedTokens.length) { - i = paddedTokens.pop(); - formatTokenFunctions[i + i] = padToken(formatTokenFunctions[i], 2); - } - formatTokenFunctions.DDDD = padToken(formatTokenFunctions.DDD, 3); + /** + * simple addEventListener wrapper + * @method on + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + */ + on: function on(element, type, handler) { + element.addEventListener(type, handler, false); + }, + /** + * simple removeEventListener wrapper + * @method off + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + */ + off: function off(element, type, handler) { + element.removeEventListener(type, handler, false); + }, - function meridiemFixWrap(locale, hour, meridiem) { - var isPm; + /** + * forEach over arrays and objects + * @method each + * @param {Object|Array} obj + * @param {Function} iterator + * @param {any} iterator.item + * @param {Number} iterator.index + * @param {Object|Array} iterator.obj the source object + * @param {Object} context value to use as `this` in the iterator + */ + each: function each(obj, iterator, context) { + var i, len; - if (meridiem == null) { - // nothing to do - return hour; - } - if (locale.meridiemHour != null) { - return locale.meridiemHour(hour, meridiem); - } else if (locale.isPM != null) { - // Fallback - isPm = locale.isPM(meridiem); - if (isPm && hour < 12) { - hour += 12; - } - if (!isPm && hour === 12) { - hour = 0; + // native forEach on arrays + if('forEach' in obj) { + obj.forEach(iterator, context); + // arrays + } else if(obj.length !== undefined) { + for(i = 0, len = obj.length; i < len; i++) { + if(iterator.call(context, obj[i], i, obj) === false) { + return; + } } - return hour; + // objects } else { - // thie is not supposed to happen - return hour; + for(i in obj) { + if(obj.hasOwnProperty(i) && + iterator.call(context, obj[i], i, obj) === false) { + return; + } + } } - } - - /************************************ - Constructors - ************************************/ + }, - function Locale() { - } + /** + * find if a string contains the string using indexOf + * @method inStr + * @param {String} src + * @param {String} find + * @return {Boolean} found + */ + inStr: function inStr(src, find) { + return src.indexOf(find) > -1; + }, - // Moment prototype object - function Moment(config, skipOverflow) { - if (skipOverflow !== false) { - checkOverflow(config); - } - copyConfig(this, config); - this._d = new Date(+config._d); - // Prevent infinite loop in case updateOffset creates new moment - // objects. - if (updateInProgress === false) { - updateInProgress = true; - moment.updateOffset(this); - updateInProgress = false; + /** + * find if a array contains the object using indexOf or a simple polyfill + * @method inArray + * @param {String} src + * @param {String} find + * @return {Boolean|Number} false when not found, or the index + */ + inArray: function inArray(src, find) { + if(src.indexOf) { + var index = src.indexOf(find); + return (index === -1) ? false : index; + } else { + for(var i = 0, len = src.length; i < len; i++) { + if(src[i] === find) { + return i; + } + } + return false; } - } - - // Duration Constructor - function Duration(duration) { - var normalizedInput = normalizeObjectUnits(duration), - years = normalizedInput.year || 0, - quarters = normalizedInput.quarter || 0, - months = normalizedInput.month || 0, - weeks = normalizedInput.week || 0, - days = normalizedInput.day || 0, - hours = normalizedInput.hour || 0, - minutes = normalizedInput.minute || 0, - seconds = normalizedInput.second || 0, - milliseconds = normalizedInput.millisecond || 0; - - // representation for dateAddRemove - this._milliseconds = +milliseconds + - seconds * 1e3 + // 1000 - minutes * 6e4 + // 1000 * 60 - hours * 36e5; // 1000 * 60 * 60 - // Because of dateAddRemove treats 24 hours as different from a - // day when working around DST, we need to store them separately - this._days = +days + - weeks * 7; - // It is impossible translate months into days without knowing - // which months you are are talking about, so we have to store - // it separately. - this._months = +months + - quarters * 3 + - years * 12; - - this._data = {}; - - this._locale = moment.localeData(); - - this._bubble(); - } - - /************************************ - Helpers - ************************************/ + }, + /** + * convert an array-like object (`arguments`, `touchlist`) to an array + * @method toArray + * @param {Object} obj + * @return {Array} + */ + toArray: function toArray(obj) { + return Array.prototype.slice.call(obj, 0); + }, - function extend(a, b) { - for (var i in b) { - if (hasOwnProp(b, i)) { - a[i] = b[i]; + /** + * find if a node is in the given parent + * @method hasParent + * @param {HTMLElement} node + * @param {HTMLElement} parent + * @return {Boolean} found + */ + hasParent: function hasParent(node, parent) { + while(node) { + if(node == parent) { + return true; } + node = node.parentNode; } + return false; + }, - if (hasOwnProp(b, 'toString')) { - a.toString = b.toString; - } - - if (hasOwnProp(b, 'valueOf')) { - a.valueOf = b.valueOf; - } - - return a; - } - - function copyConfig(to, from) { - var i, prop, val; + /** + * get the center of all the touches + * @method getCenter + * @param {Array} touches + * @return {Object} center contains `pageX`, `pageY`, `clientX` and `clientY` properties + */ + getCenter: function getCenter(touches) { + var pageX = [], + pageY = [], + clientX = [], + clientY = [], + min = Math.min, + max = Math.max; - if (typeof from._isAMomentObject !== 'undefined') { - to._isAMomentObject = from._isAMomentObject; - } - if (typeof from._i !== 'undefined') { - to._i = from._i; - } - if (typeof from._f !== 'undefined') { - to._f = from._f; - } - if (typeof from._l !== 'undefined') { - to._l = from._l; - } - if (typeof from._strict !== 'undefined') { - to._strict = from._strict; - } - if (typeof from._tzm !== 'undefined') { - to._tzm = from._tzm; - } - if (typeof from._isUTC !== 'undefined') { - to._isUTC = from._isUTC; - } - if (typeof from._offset !== 'undefined') { - to._offset = from._offset; - } - if (typeof from._pf !== 'undefined') { - to._pf = from._pf; - } - if (typeof from._locale !== 'undefined') { - to._locale = from._locale; + // no need to loop when only one touch + if(touches.length === 1) { + return { + pageX: touches[0].pageX, + pageY: touches[0].pageY, + clientX: touches[0].clientX, + clientY: touches[0].clientY + }; } - if (momentProperties.length > 0) { - for (i in momentProperties) { - prop = momentProperties[i]; - val = from[prop]; - if (typeof val !== 'undefined') { - to[prop] = val; - } - } - } + Utils.each(touches, function(touch) { + pageX.push(touch.pageX); + pageY.push(touch.pageY); + clientX.push(touch.clientX); + clientY.push(touch.clientY); + }); - return to; - } + return { + pageX: (min.apply(Math, pageX) + max.apply(Math, pageX)) / 2, + pageY: (min.apply(Math, pageY) + max.apply(Math, pageY)) / 2, + clientX: (min.apply(Math, clientX) + max.apply(Math, clientX)) / 2, + clientY: (min.apply(Math, clientY) + max.apply(Math, clientY)) / 2 + }; + }, - function absRound(number) { - if (number < 0) { - return Math.ceil(number); - } else { - return Math.floor(number); - } - } + /** + * calculate the velocity between two points. unit is in px per ms. + * @method getVelocity + * @param {Number} deltaTime + * @param {Number} deltaX + * @param {Number} deltaY + * @return {Object} velocity `x` and `y` + */ + getVelocity: function getVelocity(deltaTime, deltaX, deltaY) { + return { + x: Math.abs(deltaX / deltaTime) || 0, + y: Math.abs(deltaY / deltaTime) || 0 + }; + }, - // left zero fill a number - // see http://jsperf.com/left-zero-filling for performance comparison - function leftZeroFill(number, targetLength, forceSign) { - var output = '' + Math.abs(number), - sign = number >= 0; + /** + * calculate the angle between two coordinates + * @method getAngle + * @param {Touch} touch1 + * @param {Touch} touch2 + * @return {Number} angle + */ + getAngle: function getAngle(touch1, touch2) { + var x = touch2.clientX - touch1.clientX, + y = touch2.clientY - touch1.clientY; - while (output.length < targetLength) { - output = '0' + output; - } - return (sign ? (forceSign ? '+' : '') : '-') + output; - } + return Math.atan2(y, x) * 180 / Math.PI; + }, - function positiveMomentsDifference(base, other) { - var res = {milliseconds: 0, months: 0}; + /** + * do a small comparision to get the direction between two touches. + * @method getDirection + * @param {Touch} touch1 + * @param {Touch} touch2 + * @return {String} direction matches `DIRECTION_LEFT|RIGHT|UP|DOWN` + */ + getDirection: function getDirection(touch1, touch2) { + var x = Math.abs(touch1.clientX - touch2.clientX), + y = Math.abs(touch1.clientY - touch2.clientY); - res.months = other.month() - base.month() + - (other.year() - base.year()) * 12; - if (base.clone().add(res.months, 'M').isAfter(other)) { - --res.months; + if(x >= y) { + return touch1.clientX - touch2.clientX > 0 ? DIRECTION_LEFT : DIRECTION_RIGHT; } + return touch1.clientY - touch2.clientY > 0 ? DIRECTION_UP : DIRECTION_DOWN; + }, - res.milliseconds = +other - +(base.clone().add(res.months, 'M')); + /** + * calculate the distance between two touches + * @method getDistance + * @param {Touch}touch1 + * @param {Touch} touch2 + * @return {Number} distance + */ + getDistance: function getDistance(touch1, touch2) { + var x = touch2.clientX - touch1.clientX, + y = touch2.clientY - touch1.clientY; - return res; - } + return Math.sqrt((x * x) + (y * y)); + }, - function momentsDifference(base, other) { - var res; - other = makeAs(other, base); - if (base.isBefore(other)) { - res = positiveMomentsDifference(base, other); - } else { - res = positiveMomentsDifference(other, base); - res.milliseconds = -res.milliseconds; - res.months = -res.months; + /** + * calculate the scale factor between two touchLists + * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out + * @method getScale + * @param {Array} start array of touches + * @param {Array} end array of touches + * @return {Number} scale + */ + getScale: function getScale(start, end) { + // need two fingers... + if(start.length >= 2 && end.length >= 2) { + return this.getDistance(end[0], end[1]) / this.getDistance(start[0], start[1]); } + return 1; + }, - return res; - } - - // TODO: remove 'name' arg after deprecation is removed - function createAdder(direction, name) { - return function (val, period) { - var dur, tmp; - //invert the arguments, but complain about it - if (period !== null && !isNaN(+period)) { - deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period).'); - tmp = val; val = period; period = tmp; - } - - val = typeof val === 'string' ? +val : val; - dur = moment.duration(val, period); - addOrSubtractDurationFromMoment(this, dur, direction); - return this; - }; - } - - function addOrSubtractDurationFromMoment(mom, duration, isAdding, updateOffset) { - var milliseconds = duration._milliseconds, - days = duration._days, - months = duration._months; - updateOffset = updateOffset == null ? true : updateOffset; - - if (milliseconds) { - mom._d.setTime(+mom._d + milliseconds * isAdding); - } - if (days) { - rawSetter(mom, 'Date', rawGetter(mom, 'Date') + days * isAdding); - } - if (months) { - rawMonthSetter(mom, rawGetter(mom, 'Month') + months * isAdding); - } - if (updateOffset) { - moment.updateOffset(mom, days || months); + /** + * calculate the rotation degrees between two touchLists + * @method getRotation + * @param {Array} start array of touches + * @param {Array} end array of touches + * @return {Number} rotation + */ + getRotation: function getRotation(start, end) { + // need two fingers + if(start.length >= 2 && end.length >= 2) { + return this.getAngle(end[1], end[0]) - this.getAngle(start[1], start[0]); } - } + return 0; + }, - // check if is an array - function isArray(input) { - return Object.prototype.toString.call(input) === '[object Array]'; - } + /** + * find out if the direction is vertical * + * @method isVertical + * @param {String} direction matches `DIRECTION_UP|DOWN` + * @return {Boolean} is_vertical + */ + isVertical: function isVertical(direction) { + return direction == DIRECTION_UP || direction == DIRECTION_DOWN; + }, - function isDate(input) { - return Object.prototype.toString.call(input) === '[object Date]' || - input instanceof Date; - } + /** + * set css properties with their prefixes + * @param {HTMLElement} element + * @param {String} prop + * @param {String} value + * @param {Boolean} [toggle=true] + * @return {Boolean} + */ + setPrefixedCss: function setPrefixedCss(element, prop, value, toggle) { + var prefixes = ['', 'Webkit', 'Moz', 'O', 'ms']; + prop = Utils.toCamelCase(prop); - // compare two arrays, return the number of differences - function compareArrays(array1, array2, dontConvert) { - var len = Math.min(array1.length, array2.length), - lengthDiff = Math.abs(array1.length - array2.length), - diffs = 0, - i; - for (i = 0; i < len; i++) { - if ((dontConvert && array1[i] !== array2[i]) || - (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { - diffs++; + for(var i = 0; i < prefixes.length; i++) { + var p = prop; + // prefixes + if(prefixes[i]) { + p = prefixes[i] + p.slice(0, 1).toUpperCase() + p.slice(1); } - } - return diffs + lengthDiff; - } - function normalizeUnits(units) { - if (units) { - var lowered = units.toLowerCase().replace(/(.)s$/, '$1'); - units = unitAliases[units] || camelFunctions[lowered] || lowered; - } - return units; - } - - function normalizeObjectUnits(inputObject) { - var normalizedInput = {}, - normalizedProp, - prop; - - for (prop in inputObject) { - if (hasOwnProp(inputObject, prop)) { - normalizedProp = normalizeUnits(prop); - if (normalizedProp) { - normalizedInput[normalizedProp] = inputObject[prop]; - } + // test the style + if(p in element.style) { + element.style[p] = (toggle == null || toggle) && value || ''; + break; } } + }, - return normalizedInput; - } - - function makeList(field) { - var count, setter; - - if (field.indexOf('week') === 0) { - count = 7; - setter = 'day'; - } - else if (field.indexOf('month') === 0) { - count = 12; - setter = 'month'; - } - else { + /** + * toggle browser default behavior by setting css properties. + * `userSelect='none'` also sets `element.onselectstart` to false + * `userDrag='none'` also sets `element.ondragstart` to false + * + * @method toggleBehavior + * @param {HtmlElement} element + * @param {Object} props + * @param {Boolean} [toggle=true] + */ + toggleBehavior: function toggleBehavior(element, props, toggle) { + if(!props || !element || !element.style) { return; } - moment[field] = function (format, index) { - var i, getter, - method = moment._locale[field], - results = []; - - if (typeof format === 'number') { - index = format; - format = undefined; - } - - getter = function (i) { - var m = moment().utc().set(setter, i); - return method.call(moment._locale, m, format || ''); - }; + // set the css properties + Utils.each(props, function(value, prop) { + Utils.setPrefixedCss(element, prop, value, toggle); + }); - if (index != null) { - return getter(index); - } - else { - for (i = 0; i < count; i++) { - results.push(getter(i)); - } - return results; - } + var falseFn = toggle && function() { + return false; }; - } - - function toInt(argumentForCoercion) { - var coercedNumber = +argumentForCoercion, - value = 0; - if (coercedNumber !== 0 && isFinite(coercedNumber)) { - if (coercedNumber >= 0) { - value = Math.floor(coercedNumber); - } else { - value = Math.ceil(coercedNumber); - } + // also the disable onselectstart + if(props.userSelect == 'none') { + element.onselectstart = falseFn; + } + // and disable ondragstart + if(props.userDrag == 'none') { + element.ondragstart = falseFn; } + }, - return value; + /** + * convert a string with underscores to camelCase + * so prevent_default becomes preventDefault + * @param {String} str + * @return {String} camelCaseStr + */ + toCamelCase: function toCamelCase(str) { + return str.replace(/[_-]([a-z])/g, function(s) { + return s[1].toUpperCase(); + }); } + }; - function daysInMonth(year, month) { - return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); - } - function weeksInYear(year, dow, doy) { - return weekOfYear(moment([year, 11, 31 + dow - doy]), dow, doy).week; - } + /** + * @module hammer + */ + /** + * @class Event + * @static + */ + var Event = Hammer.event = { + /** + * when touch events have been fired, this is true + * this is used to stop mouse events + * @property prevent_mouseevents + * @private + * @type {Boolean} + */ + preventMouseEvents: false, - function daysInYear(year) { - return isLeapYear(year) ? 366 : 365; - } + /** + * if EVENT_START has been fired + * @property started + * @private + * @type {Boolean} + */ + started: false, - function isLeapYear(year) { - return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; - } + /** + * when the mouse is hold down, this is true + * @property should_detect + * @private + * @type {Boolean} + */ + shouldDetect: false, - function checkOverflow(m) { - var overflow; - if (m._a && m._pf.overflow === -2) { - overflow = - m._a[MONTH] < 0 || m._a[MONTH] > 11 ? MONTH : - m._a[DATE] < 1 || m._a[DATE] > daysInMonth(m._a[YEAR], m._a[MONTH]) ? DATE : - m._a[HOUR] < 0 || m._a[HOUR] > 24 || - (m._a[HOUR] === 24 && (m._a[MINUTE] !== 0 || - m._a[SECOND] !== 0 || - m._a[MILLISECOND] !== 0)) ? HOUR : - m._a[MINUTE] < 0 || m._a[MINUTE] > 59 ? MINUTE : - m._a[SECOND] < 0 || m._a[SECOND] > 59 ? SECOND : - m._a[MILLISECOND] < 0 || m._a[MILLISECOND] > 999 ? MILLISECOND : - -1; + /** + * simple event binder with a hook and support for multiple types + * @method on + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + * @param {Function} [hook] + * @param {Object} hook.type + */ + on: function on(element, type, handler, hook) { + var types = type.split(' '); + Utils.each(types, function(type) { + Utils.on(element, type, handler); + hook && hook(type); + }); + }, - if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { - overflow = DATE; - } + /** + * simple event unbinder with a hook and support for multiple types + * @method off + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + * @param {Function} [hook] + * @param {Object} hook.type + */ + off: function off(element, type, handler, hook) { + var types = type.split(' '); + Utils.each(types, function(type) { + Utils.off(element, type, handler); + hook && hook(type); + }); + }, - m._pf.overflow = overflow; - } - } + /** + * the core touch event handler. + * this finds out if we should to detect gestures + * @method onTouch + * @param {HTMLElement} element + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {Function} handler + * @return onTouchHandler {Function} the core event handler + */ + onTouch: function onTouch(element, eventType, handler) { + var self = this; - function isValid(m) { - if (m._isValid == null) { - m._isValid = !isNaN(m._d.getTime()) && - m._pf.overflow < 0 && - !m._pf.empty && - !m._pf.invalidMonth && - !m._pf.nullInput && - !m._pf.invalidFormat && - !m._pf.userInvalidated; + var onTouchHandler = function onTouchHandler(ev) { + var srcType = ev.type.toLowerCase(), + isPointer = Hammer.HAS_POINTEREVENTS, + isMouse = Utils.inStr(srcType, 'mouse'), + triggerType; - if (m._strict) { - m._isValid = m._isValid && - m._pf.charsLeftOver === 0 && - m._pf.unusedTokens.length === 0 && - m._pf.bigHour === undefined; + // if we are in a mouseevent, but there has been a touchevent triggered in this session + // we want to do nothing. simply break out of the event. + if(isMouse && self.preventMouseEvents) { + return; + + // mousebutton must be down + } else if(isMouse && eventType == EVENT_START && ev.button === 0) { + self.preventMouseEvents = false; + self.shouldDetect = true; + } else if(isPointer && eventType == EVENT_START) { + self.shouldDetect = (ev.buttons === 1 || PointerEvent.matchType(POINTER_TOUCH, ev)); + // just a valid start event, but no mouse + } else if(!isMouse && eventType == EVENT_START) { + self.preventMouseEvents = true; + self.shouldDetect = true; } - } - return m._isValid; - } - function normalizeLocale(key) { - return key ? key.toLowerCase().replace('_', '-') : key; - } + // update the pointer event before entering the detection + if(isPointer && eventType != EVENT_END) { + PointerEvent.updatePointer(eventType, ev); + } - // pick the locale from the array - // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each - // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root - function chooseLocale(names) { - var i = 0, j, next, locale, split; + // we are in a touch/down state, so allowed detection of gestures + if(self.shouldDetect) { + triggerType = self.doDetect.call(self, ev, eventType, element, handler); + } - while (i < names.length) { - split = normalizeLocale(names[i]).split('-'); - j = split.length; - next = normalizeLocale(names[i + 1]); - next = next ? next.split('-') : null; - while (j > 0) { - locale = loadLocale(split.slice(0, j).join('-')); - if (locale) { - return locale; - } - if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { - //the next array item is better than a shallower substring of this one - break; - } - j--; + // ...and we are done with the detection + // so reset everything to start each detection totally fresh + if(triggerType == EVENT_END) { + self.preventMouseEvents = false; + self.shouldDetect = false; + PointerEvent.reset(); + // update the pointerevent object after the detection } - i++; - } - return null; - } - function loadLocale(name) { - var oldLocale = null; - if (!locales[name] && hasModule) { - try { - oldLocale = moment.locale(); - !(function webpackMissingModule() { var e = new Error("Cannot find module \"./locale\""); e.code = 'MODULE_NOT_FOUND'; throw e; }()); - // because defineLocale currently also sets the global locale, we want to undo that for lazy loaded locales - moment.locale(oldLocale); - } catch (e) { } - } - return locales[name]; - } + if(isPointer && eventType == EVENT_END) { + PointerEvent.updatePointer(eventType, ev); + } + }; - // Return a moment from input, that is local/utc/utcOffset equivalent to - // model. - function makeAs(input, model) { - var res, diff; - if (model._isUTC) { - res = model.clone(); - diff = (moment.isMoment(input) || isDate(input) ? - +input : +moment(input)) - (+res); - // Use low-level api, because this fn is low-level api. - res._d.setTime(+res._d + diff); - moment.updateOffset(res, false); - return res; - } else { - return moment(input).local(); + this.on(element, EVENT_TYPES[eventType], onTouchHandler); + return onTouchHandler; + }, + + /** + * the core detection method + * this finds out what hammer-touch-events to trigger + * @method doDetect + * @param {Object} ev + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {HTMLElement} element + * @param {Function} handler + * @return {String} triggerType matches `EVENT_START|MOVE|END` + */ + doDetect: function doDetect(ev, eventType, element, handler) { + var touchList = this.getTouchList(ev, eventType); + var touchListLength = touchList.length; + var triggerType = eventType; + var triggerChange = touchList.trigger; // used by fakeMultitouch plugin + var changedLength = touchListLength; + + // at each touchstart-like event we want also want to trigger a TOUCH event... + if(eventType == EVENT_START) { + triggerChange = EVENT_TOUCH; + // ...the same for a touchend-like event + } else if(eventType == EVENT_END) { + triggerChange = EVENT_RELEASE; + + // keep track of how many touches have been removed + changedLength = touchList.length - ((ev.changedTouches) ? ev.changedTouches.length : 1); } - } - /************************************ - Locale - ************************************/ + // after there are still touches on the screen, + // we just want to trigger a MOVE event. so change the START or END to a MOVE + // but only after detection has been started, the first time we actualy want a START + if(changedLength > 0 && this.started) { + triggerType = EVENT_MOVE; + } + // detection has been started, we keep track of this, see above + this.started = true; - extend(Locale.prototype, { + // generate some event data, some basic information + var evData = this.collectEventData(element, triggerType, touchList, ev); - set : function (config) { - var prop, i; - for (i in config) { - prop = config[i]; - if (typeof prop === 'function') { - this[i] = prop; - } else { - this['_' + i] = prop; - } - } - // Lenient ordinal parsing accepts just a number in addition to - // number + (possibly) stuff coming from _ordinalParseLenient. - this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + /\d{1,2}/.source); - }, + // trigger the triggerType event before the change (TOUCH, RELEASE) events + // but the END event should be at last + if(eventType != EVENT_END) { + handler.call(Detection, evData); + } - _months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - months : function (m) { - return this._months[m.month()]; - }, + // trigger a change (TOUCH, RELEASE) event, this means the length of the touches changed + if(triggerChange) { + evData.changedLength = changedLength; + evData.eventType = triggerChange; - _monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - monthsShort : function (m) { - return this._monthsShort[m.month()]; - }, + handler.call(Detection, evData); - monthsParse : function (monthName, format, strict) { - var i, mom, regex; + evData.eventType = triggerType; + delete evData.changedLength; + } - if (!this._monthsParse) { - this._monthsParse = []; - this._longMonthsParse = []; - this._shortMonthsParse = []; - } + // trigger the END event + if(triggerType == EVENT_END) { + handler.call(Detection, evData); - for (i = 0; i < 12; i++) { - // make the regex if we don't have it already - mom = moment.utc([2000, i]); - if (strict && !this._longMonthsParse[i]) { - this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); - this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); - } - if (!strict && !this._monthsParse[i]) { - regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); - this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { - return i; - } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { - return i; - } else if (!strict && this._monthsParse[i].test(monthName)) { - return i; - } - } - }, - - _weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdays : function (m) { - return this._weekdays[m.day()]; - }, + // ...and we are done with the detection + // so reset everything to start each detection totally fresh + this.started = false; + } - _weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysShort : function (m) { - return this._weekdaysShort[m.day()]; - }, + return triggerType; + }, - _weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - weekdaysMin : function (m) { - return this._weekdaysMin[m.day()]; - }, + /** + * we have different events for each device/browser + * determine what we need and set them in the EVENT_TYPES constant + * the `onTouch` method is bind to these properties. + * @method determineEventTypes + * @return {Object} events + */ + determineEventTypes: function determineEventTypes() { + var types; + if(Hammer.HAS_POINTEREVENTS) { + if(window.PointerEvent) { + types = [ + 'pointerdown', + 'pointermove', + 'pointerup pointercancel lostpointercapture' + ]; + } else { + types = [ + 'MSPointerDown', + 'MSPointerMove', + 'MSPointerUp MSPointerCancel MSLostPointerCapture' + ]; + } + } else if(Hammer.NO_MOUSEEVENTS) { + types = [ + 'touchstart', + 'touchmove', + 'touchend touchcancel' + ]; + } else { + types = [ + 'touchstart mousedown', + 'touchmove mousemove', + 'touchend touchcancel mouseup' + ]; + } - weekdaysParse : function (weekdayName) { - var i, mom, regex; + EVENT_TYPES[EVENT_START] = types[0]; + EVENT_TYPES[EVENT_MOVE] = types[1]; + EVENT_TYPES[EVENT_END] = types[2]; + return EVENT_TYPES; + }, - if (!this._weekdaysParse) { - this._weekdaysParse = []; - } + /** + * create touchList depending on the event + * @method getTouchList + * @param {Object} ev + * @param {String} eventType + * @return {Array} touches + */ + getTouchList: function getTouchList(ev, eventType) { + // get the fake pointerEvent touchlist + if(Hammer.HAS_POINTEREVENTS) { + return PointerEvent.getTouchList(); + } - for (i = 0; i < 7; i++) { - // make the regex if we don't have it already - if (!this._weekdaysParse[i]) { - mom = moment([2000, 1]).day(i); - regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); - this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (this._weekdaysParse[i].test(weekdayName)) { - return i; - } + // get the touchlist + if(ev.touches) { + if(eventType == EVENT_MOVE) { + return ev.touches; } - }, - _longDateFormat : { - LTS : 'h:mm:ss A', - LT : 'h:mm A', - L : 'MM/DD/YYYY', - LL : 'MMMM D, YYYY', - LLL : 'MMMM D, YYYY LT', - LLLL : 'dddd, MMMM D, YYYY LT' - }, - longDateFormat : function (key) { - var output = this._longDateFormat[key]; - if (!output && this._longDateFormat[key.toUpperCase()]) { - output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) { - return val.slice(1); - }); - this._longDateFormat[key] = output; - } - return output; - }, + var identifiers = []; + var concat = [].concat(Utils.toArray(ev.touches), Utils.toArray(ev.changedTouches)); + var touchList = []; - isPM : function (input) { - // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays - // Using charAt should be more compatible. - return ((input + '').toLowerCase().charAt(0) === 'p'); - }, + Utils.each(concat, function(touch) { + if(Utils.inArray(identifiers, touch.identifier) === false) { + touchList.push(touch); + } + identifiers.push(touch.identifier); + }); - _meridiemParse : /[ap]\.?m?\.?/i, - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'pm' : 'PM'; - } else { - return isLower ? 'am' : 'AM'; - } - }, + return touchList; + } + // make fake touchList from mouse position + ev.identifier = 1; + return [ev]; + }, - _calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - calendar : function (key, mom, now) { - var output = this._calendar[key]; - return typeof output === 'function' ? output.apply(mom, [now]) : output; - }, + /** + * collect basic event data + * @method collectEventData + * @param {HTMLElement} element + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {Array} touches + * @param {Object} ev + * @return {Object} ev + */ + collectEventData: function collectEventData(element, eventType, touches, ev) { + // find out pointerType + var pointerType = POINTER_TOUCH; + if(Utils.inStr(ev.type, 'mouse') || PointerEvent.matchType(POINTER_MOUSE, ev)) { + pointerType = POINTER_MOUSE; + } else if(PointerEvent.matchType(POINTER_PEN, ev)) { + pointerType = POINTER_PEN; + } - _relativeTime : { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' - }, + return { + center: Utils.getCenter(touches), + timeStamp: Date.now(), + target: ev.target, + touches: touches, + eventType: eventType, + pointerType: pointerType, + srcEvent: ev, - relativeTime : function (number, withoutSuffix, string, isFuture) { - var output = this._relativeTime[string]; - return (typeof output === 'function') ? - output(number, withoutSuffix, string, isFuture) : - output.replace(/%d/i, number); - }, + /** + * prevent the browser default actions + * mostly used to disable scrolling of the browser + */ + preventDefault: function() { + var srcEvent = this.srcEvent; + srcEvent.preventManipulation && srcEvent.preventManipulation(); + srcEvent.preventDefault && srcEvent.preventDefault(); + }, - pastFuture : function (diff, output) { - var format = this._relativeTime[diff > 0 ? 'future' : 'past']; - return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); - }, + /** + * stop bubbling the event up to its parents + */ + stopPropagation: function() { + this.srcEvent.stopPropagation(); + }, - ordinal : function (number) { - return this._ordinal.replace('%d', number); - }, - _ordinal : '%d', - _ordinalParse : /\d{1,2}/, + /** + * immediately stop gesture detection + * might be useful after a swipe was detected + * @return {*} + */ + stopDetect: function() { + return Detection.stopDetect(); + } + }; + } + }; - preparse : function (string) { - return string; - }, - postformat : function (string) { - return string; - }, - - week : function (mom) { - return weekOfYear(mom, this._week.dow, this._week.doy).week; - }, - - _week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - }, + /** + * @module hammer + * + * @class PointerEvent + * @static + */ + var PointerEvent = Hammer.PointerEvent = { + /** + * holds all pointers, by `identifier` + * @property pointers + * @type {Object} + */ + pointers: {}, - firstDayOfWeek : function () { - return this._week.dow; - }, + /** + * get the pointers as an array + * @method getTouchList + * @return {Array} touchlist + */ + getTouchList: function getTouchList() { + var touchlist = []; + // we can use forEach since pointerEvents only is in IE10 + Utils.each(this.pointers, function(pointer) { + touchlist.push(pointer); + }); + return touchlist; + }, - firstDayOfYear : function () { - return this._week.doy; - }, + /** + * update the position of a pointer + * @method updatePointer + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {Object} pointerEvent + */ + updatePointer: function updatePointer(eventType, pointerEvent) { + if(eventType == EVENT_END || (eventType != EVENT_END && pointerEvent.buttons !== 1)) { + delete this.pointers[pointerEvent.pointerId]; + } else { + pointerEvent.identifier = pointerEvent.pointerId; + this.pointers[pointerEvent.pointerId] = pointerEvent; + } + }, - _invalidDate: 'Invalid date', - invalidDate: function () { - return this._invalidDate; + /** + * check if ev matches pointertype + * @method matchType + * @param {String} pointerType matches `POINTER_MOUSE|TOUCH|PEN` + * @param {PointerEvent} ev + */ + matchType: function matchType(pointerType, ev) { + if(!ev.pointerType) { + return false; } - }); - /************************************ - Formatting - ************************************/ + var pt = ev.pointerType, + types = {}; + types[POINTER_MOUSE] = (pt === (ev.MSPOINTER_TYPE_MOUSE || POINTER_MOUSE)); + types[POINTER_TOUCH] = (pt === (ev.MSPOINTER_TYPE_TOUCH || POINTER_TOUCH)); + types[POINTER_PEN] = (pt === (ev.MSPOINTER_TYPE_PEN || POINTER_PEN)); + return types[pointerType]; + }, - function removeFormattingTokens(input) { - if (input.match(/\[[\s\S]/)) { - return input.replace(/^\[|\]$/g, ''); - } - return input.replace(/\\/g, ''); + /** + * reset the stored pointers + * @method reset + */ + reset: function resetList() { + this.pointers = {}; } + }; - function makeFormatFunction(format) { - var array = format.match(formattingTokens), i, length; - for (i = 0, length = array.length; i < length; i++) { - if (formatTokenFunctions[array[i]]) { - array[i] = formatTokenFunctions[array[i]]; - } else { - array[i] = removeFormattingTokens(array[i]); - } + /** + * @module hammer + * + * @class Detection + * @static + */ + var Detection = Hammer.detection = { + // contains all registred Hammer.gestures in the correct order + gestures: [], + + // data of the current Hammer.gesture detection session + current: null, + + // the previous Hammer.gesture session data + // is a full clone of the previous gesture.current object + previous: null, + + // when this becomes true, no gestures are fired + stopped: false, + + /** + * start Hammer.gesture detection + * @method startDetect + * @param {Hammer.Instance} inst + * @param {Object} eventData + */ + startDetect: function startDetect(inst, eventData) { + // already busy with a Hammer.gesture detection on an element + if(this.current) { + return; } - return function (mom) { - var output = ''; - for (i = 0; i < length; i++) { - output += array[i] instanceof Function ? array[i].call(mom, format) : array[i]; - } - return output; + this.stopped = false; + + // holds current session + this.current = { + inst: inst, // reference to HammerInstance we're working for + startEvent: Utils.extend({}, eventData), // start eventData for distances, timing etc + lastEvent: false, // last eventData + lastCalcEvent: false, // last eventData for calculations. + futureCalcEvent: false, // last eventData for calculations. + lastCalcData: {}, // last lastCalcData + name: '' // current gesture we're in/detected, can be 'tap', 'hold' etc }; - } - // format date using native date object - function formatMoment(m, format) { - if (!m.isValid()) { - return m.localeData().invalidDate(); + this.detect(eventData); + }, + + /** + * Hammer.gesture detection + * @method detect + * @param {Object} eventData + * @return {any} + */ + detect: function detect(eventData) { + if(!this.current || this.stopped) { + return; } - format = expandFormat(format, m.localeData()); + // extend event data with calculations about scale, distance etc + eventData = this.extendEventData(eventData); - if (!formatFunctions[format]) { - formatFunctions[format] = makeFormatFunction(format); + // hammer instance and instance options + var inst = this.current.inst, + instOptions = inst.options; + + // call Hammer.gesture handlers + Utils.each(this.gestures, function triggerGesture(gesture) { + // only when the instance options have enabled this gesture + if(!this.stopped && inst.enabled && instOptions[gesture.name]) { + gesture.handler.call(gesture, eventData, inst); + } + }, this); + + // store as previous event event + if(this.current) { + this.current.lastEvent = eventData; } - return formatFunctions[format](m); - } + if(eventData.eventType == EVENT_END) { + this.stopDetect(); + } - function expandFormat(format, locale) { - var i = 5; + return eventData; + }, - function replaceLongDateFormatTokens(input) { - return locale.longDateFormat(input) || input; + /** + * clear the Hammer.gesture vars + * this is called on endDetect, but can also be used when a final Hammer.gesture has been detected + * to stop other Hammer.gestures from being fired + * @method stopDetect + */ + stopDetect: function stopDetect() { + // clone current data to the store as the previous gesture + // used for the double tap gesture, since this is an other gesture detect session + this.previous = Utils.extend({}, this.current); + + // reset the current + this.current = null; + this.stopped = true; + }, + + /** + * calculate velocity, angle and direction + * @method getVelocityData + * @param {Object} ev + * @param {Object} center + * @param {Number} deltaTime + * @param {Number} deltaX + * @param {Number} deltaY + */ + getCalculatedData: function getCalculatedData(ev, center, deltaTime, deltaX, deltaY) { + var cur = this.current, + recalc = false, + calcEv = cur.lastCalcEvent, + calcData = cur.lastCalcData; + + if(calcEv && ev.timeStamp - calcEv.timeStamp > Hammer.CALCULATE_INTERVAL) { + center = calcEv.center; + deltaTime = ev.timeStamp - calcEv.timeStamp; + deltaX = ev.center.clientX - calcEv.center.clientX; + deltaY = ev.center.clientY - calcEv.center.clientY; + recalc = true; } - localFormattingTokens.lastIndex = 0; - while (i >= 0 && localFormattingTokens.test(format)) { - format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); - localFormattingTokens.lastIndex = 0; - i -= 1; + if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { + cur.futureCalcEvent = ev; } - return format; - } + if(!cur.lastCalcEvent || recalc) { + calcData.velocity = Utils.getVelocity(deltaTime, deltaX, deltaY); + calcData.angle = Utils.getAngle(center, ev.center); + calcData.direction = Utils.getDirection(center, ev.center); + cur.lastCalcEvent = cur.futureCalcEvent || ev; + cur.futureCalcEvent = ev; + } - /************************************ - Parsing - ************************************/ + ev.velocityX = calcData.velocity.x; + ev.velocityY = calcData.velocity.y; + ev.interimAngle = calcData.angle; + ev.interimDirection = calcData.direction; + }, + /** + * extend eventData for Hammer.gestures + * @method extendEventData + * @param {Object} ev + * @return {Object} ev + */ + extendEventData: function extendEventData(ev) { + var cur = this.current, + startEv = cur.startEvent, + lastEv = cur.lastEvent || startEv; - // get the regex to find the next token - function getParseRegexForToken(token, config) { - var a, strict = config._strict; - switch (token) { - case 'Q': - return parseTokenOneDigit; - case 'DDDD': - return parseTokenThreeDigits; - case 'YYYY': - case 'GGGG': - case 'gggg': - return strict ? parseTokenFourDigits : parseTokenOneToFourDigits; - case 'Y': - case 'G': - case 'g': - return parseTokenSignedNumber; - case 'YYYYYY': - case 'YYYYY': - case 'GGGGG': - case 'ggggg': - return strict ? parseTokenSixDigits : parseTokenOneToSixDigits; - case 'S': - if (strict) { - return parseTokenOneDigit; - } - /* falls through */ - case 'SS': - if (strict) { - return parseTokenTwoDigits; - } - /* falls through */ - case 'SSS': - if (strict) { - return parseTokenThreeDigits; - } - /* falls through */ - case 'DDD': - return parseTokenOneToThreeDigits; - case 'MMM': - case 'MMMM': - case 'dd': - case 'ddd': - case 'dddd': - return parseTokenWord; - case 'a': - case 'A': - return config._locale._meridiemParse; - case 'x': - return parseTokenOffsetMs; - case 'X': - return parseTokenTimestampMs; - case 'Z': - case 'ZZ': - return parseTokenTimezone; - case 'T': - return parseTokenT; - case 'SSSS': - return parseTokenDigits; - case 'MM': - case 'DD': - case 'YY': - case 'GG': - case 'gg': - case 'HH': - case 'hh': - case 'mm': - case 'ss': - case 'ww': - case 'WW': - return strict ? parseTokenTwoDigits : parseTokenOneOrTwoDigits; - case 'M': - case 'D': - case 'd': - case 'H': - case 'h': - case 'm': - case 's': - case 'w': - case 'W': - case 'e': - case 'E': - return parseTokenOneOrTwoDigits; - case 'Do': - return strict ? config._locale._ordinalParse : config._locale._ordinalParseLenient; - default : - a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), 'i')); - return a; + // update the start touchlist to calculate the scale/rotation + if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { + startEv.touches = []; + Utils.each(ev.touches, function(touch) { + startEv.touches.push({ + clientX: touch.clientX, + clientY: touch.clientY + }); + }); } - } - function utcOffsetFromString(string) { - string = string || ''; - var possibleTzMatches = (string.match(parseTokenTimezone) || []), - tzChunk = possibleTzMatches[possibleTzMatches.length - 1] || [], - parts = (tzChunk + '').match(parseTimezoneChunker) || ['-', 0, 0], - minutes = +(parts[1] * 60) + toInt(parts[2]); + var deltaTime = ev.timeStamp - startEv.timeStamp, + deltaX = ev.center.clientX - startEv.center.clientX, + deltaY = ev.center.clientY - startEv.center.clientY; - return parts[0] === '+' ? minutes : -minutes; - } + this.getCalculatedData(ev, lastEv.center, deltaTime, deltaX, deltaY); - // function to convert string input to date - function addTimeToArrayFromToken(token, input, config) { - var a, datePartArray = config._a; + Utils.extend(ev, { + startEvent: startEv, - switch (token) { - // QUARTER - case 'Q': - if (input != null) { - datePartArray[MONTH] = (toInt(input) - 1) * 3; - } - break; - // MONTH - case 'M' : // fall through to MM - case 'MM' : - if (input != null) { - datePartArray[MONTH] = toInt(input) - 1; - } - break; - case 'MMM' : // fall through to MMMM - case 'MMMM' : - a = config._locale.monthsParse(input, token, config._strict); - // if we didn't find a month name, mark the date as invalid. - if (a != null) { - datePartArray[MONTH] = a; - } else { - config._pf.invalidMonth = input; - } - break; - // DAY OF MONTH - case 'D' : // fall through to DD - case 'DD' : - if (input != null) { - datePartArray[DATE] = toInt(input); - } - break; - case 'Do' : - if (input != null) { - datePartArray[DATE] = toInt(parseInt( - input.match(/\d{1,2}/)[0], 10)); + deltaTime: deltaTime, + deltaX: deltaX, + deltaY: deltaY, + + distance: Utils.getDistance(startEv.center, ev.center), + angle: Utils.getAngle(startEv.center, ev.center), + direction: Utils.getDirection(startEv.center, ev.center), + scale: Utils.getScale(startEv.touches, ev.touches), + rotation: Utils.getRotation(startEv.touches, ev.touches) + }); + + return ev; + }, + + /** + * register new gesture + * @method register + * @param {Object} gesture object, see `gestures/` for documentation + * @return {Array} gestures + */ + register: function register(gesture) { + // add an enable gesture options if there is no given + var options = gesture.defaults || {}; + if(options[gesture.name] === undefined) { + options[gesture.name] = true; + } + + // extend Hammer default options with the Hammer.gesture options + Utils.extend(Hammer.defaults, options, true); + + // set its index + gesture.index = gesture.index || 1000; + + // add Hammer.gesture to the list + this.gestures.push(gesture); + + // sort the list by index + this.gestures.sort(function(a, b) { + if(a.index < b.index) { + return -1; } - break; - // DAY OF YEAR - case 'DDD' : // fall through to DDDD - case 'DDDD' : - if (input != null) { - config._dayOfYear = toInt(input); + if(a.index > b.index) { + return 1; } + return 0; + }); - break; - // YEAR - case 'YY' : - datePartArray[YEAR] = moment.parseTwoDigitYear(input); - break; - case 'YYYY' : - case 'YYYYY' : - case 'YYYYYY' : - datePartArray[YEAR] = toInt(input); - break; - // AM / PM - case 'a' : // fall through to A - case 'A' : - config._meridiem = input; - // config._isPm = config._locale.isPM(input); - break; - // HOUR - case 'h' : // fall through to hh - case 'hh' : - config._pf.bigHour = true; - /* falls through */ - case 'H' : // fall through to HH - case 'HH' : - datePartArray[HOUR] = toInt(input); - break; - // MINUTE - case 'm' : // fall through to mm - case 'mm' : - datePartArray[MINUTE] = toInt(input); - break; - // SECOND - case 's' : // fall through to ss - case 'ss' : - datePartArray[SECOND] = toInt(input); - break; - // MILLISECOND - case 'S' : - case 'SS' : - case 'SSS' : - case 'SSSS' : - datePartArray[MILLISECOND] = toInt(('0.' + input) * 1000); - break; - // UNIX OFFSET (MILLISECONDS) - case 'x': - config._d = new Date(toInt(input)); - break; - // UNIX TIMESTAMP WITH MS - case 'X': - config._d = new Date(parseFloat(input) * 1000); - break; - // TIMEZONE - case 'Z' : // fall through to ZZ - case 'ZZ' : - config._useUTC = true; - config._tzm = utcOffsetFromString(input); - break; - // WEEKDAY - human - case 'dd': - case 'ddd': - case 'dddd': - a = config._locale.weekdaysParse(input); - // if we didn't get a weekday name, mark the date as invalid - if (a != null) { - config._w = config._w || {}; - config._w['d'] = a; - } else { - config._pf.invalidWeekday = input; - } - break; - // WEEK, WEEK DAY - numeric - case 'w': - case 'ww': - case 'W': - case 'WW': - case 'd': - case 'e': - case 'E': - token = token.substr(0, 1); - /* falls through */ - case 'gggg': - case 'GGGG': - case 'GGGGG': - token = token.substr(0, 2); - if (input) { - config._w = config._w || {}; - config._w[token] = toInt(input); - } - break; - case 'gg': - case 'GG': - config._w = config._w || {}; - config._w[token] = moment.parseTwoDigitYear(input); - } + return this.gestures; } + }; - function dayOfYearFromWeekInfo(config) { - var w, weekYear, week, weekday, dow, doy, temp; - w = config._w; - if (w.GG != null || w.W != null || w.E != null) { - dow = 1; - doy = 4; + /** + * @module hammer + */ - // TODO: We need to take the current isoWeekYear, but that depends on - // how we interpret now (local, utc, fixed offset). So create - // a now version of current config (take local/utc/offset flags, and - // create now). - weekYear = dfl(w.GG, config._a[YEAR], weekOfYear(moment(), 1, 4).year); - week = dfl(w.W, 1); - weekday = dfl(w.E, 1); - } else { - dow = config._locale._week.dow; - doy = config._locale._week.doy; + /** + * create new hammer instance + * all methods should return the instance itself, so it is chainable. + * + * @class Instance + * @constructor + * @param {HTMLElement} element + * @param {Object} [options={}] options are merged with `Hammer.defaults` + * @return {Hammer.Instance} + */ + Hammer.Instance = function(element, options) { + var self = this; - weekYear = dfl(w.gg, config._a[YEAR], weekOfYear(moment(), dow, doy).year); - week = dfl(w.w, 1); + // setup HammerJS window events and register all gestures + // this also sets up the default options + setup(); - if (w.d != null) { - // weekday -- low day numbers are considered next week - weekday = w.d; - if (weekday < dow) { - ++week; - } - } else if (w.e != null) { - // local weekday -- counting starts from begining of week - weekday = w.e + dow; - } else { - // default to begining of week - weekday = dow; - } - } - temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow); + /** + * @property element + * @type {HTMLElement} + */ + this.element = element; - config._a[YEAR] = temp.year; - config._dayOfYear = temp.dayOfYear; - } + /** + * @property enabled + * @type {Boolean} + * @protected + */ + this.enabled = true; - // convert an array to a date. - // the array should mirror the parameters below - // note: all values past the year are optional and will default to the lowest possible value. - // [year, month, day , hour, minute, second, millisecond] - function dateFromConfig(config) { - var i, date, input = [], currentDate, yearToUse; + /** + * options, merged with the defaults + * options with an _ are converted to camelCase + * @property options + * @type {Object} + */ + Utils.each(options, function(value, name) { + delete options[name]; + options[Utils.toCamelCase(name)] = value; + }); - if (config._d) { - return; - } + this.options = Utils.extend(Utils.extend({}, Hammer.defaults), options || {}); - currentDate = currentDateArray(config); + // add some css to the element to prevent the browser from doing its native behavoir + if(this.options.behavior) { + Utils.toggleBehavior(this.element, this.options.behavior, true); + } - //compute day of the year from weeks and weekdays - if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { - dayOfYearFromWeekInfo(config); + /** + * event start handler on the element to start the detection + * @property eventStartHandler + * @type {Object} + */ + this.eventStartHandler = Event.onTouch(element, EVENT_START, function(ev) { + if(self.enabled && ev.eventType == EVENT_START) { + Detection.startDetect(self, ev); + } else if(ev.eventType == EVENT_TOUCH) { + Detection.detect(ev); } + }); - //if the day of the year is set, figure out what it is - if (config._dayOfYear) { - yearToUse = dfl(config._a[YEAR], currentDate[YEAR]); - - if (config._dayOfYear > daysInYear(yearToUse)) { - config._pf._overflowDayOfYear = true; - } + /** + * keep a list of user event handlers which needs to be removed when calling 'dispose' + * @property eventHandlers + * @type {Array} + */ + this.eventHandlers = []; + }; - date = makeUTCDate(yearToUse, 0, config._dayOfYear); - config._a[MONTH] = date.getUTCMonth(); - config._a[DATE] = date.getUTCDate(); - } + Hammer.Instance.prototype = { + /** + * bind events to the instance + * @method on + * @chainable + * @param {String} gestures multiple gestures by splitting with a space + * @param {Function} handler + * @param {Object} handler.ev event object + */ + on: function onEvent(gestures, handler) { + var self = this; + Event.on(self.element, gestures, handler, function(type) { + self.eventHandlers.push({ gesture: type, handler: handler }); + }); + return self; + }, - // Default to current date. - // * if no year, month, day of month are given, default to today - // * if day of month is given, default month and year - // * if month is given, default only year - // * if year is given, don't default anything - for (i = 0; i < 3 && config._a[i] == null; ++i) { - config._a[i] = input[i] = currentDate[i]; - } + /** + * unbind events to the instance + * @method off + * @chainable + * @param {String} gestures + * @param {Function} handler + */ + off: function offEvent(gestures, handler) { + var self = this; - // Zero out whatever was not defaulted, including time - for (; i < 7; i++) { - config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; - } + Event.off(self.element, gestures, handler, function(type) { + var index = Utils.inArray({ gesture: type, handler: handler }); + if(index !== false) { + self.eventHandlers.splice(index, 1); + } + }); + return self; + }, - // Check for 24:00:00.000 - if (config._a[HOUR] === 24 && - config._a[MINUTE] === 0 && - config._a[SECOND] === 0 && - config._a[MILLISECOND] === 0) { - config._nextDay = true; - config._a[HOUR] = 0; + /** + * trigger gesture event + * @method trigger + * @chainable + * @param {String} gesture + * @param {Object} [eventData] + */ + trigger: function triggerEvent(gesture, eventData) { + // optional + if(!eventData) { + eventData = {}; } - config._d = (config._useUTC ? makeUTCDate : makeDate).apply(null, input); - // Apply timezone offset from input. The actual utcOffset can be changed - // with parseZone. - if (config._tzm != null) { - config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); - } + // create DOM event + var event = Hammer.DOCUMENT.createEvent('Event'); + event.initEvent(gesture, true, true); + event.gesture = eventData; - if (config._nextDay) { - config._a[HOUR] = 24; + // trigger on the target if it is in the instance element, + // this is for event delegation tricks + var element = this.element; + if(Utils.hasParent(eventData.target, element)) { + element = eventData.target; } - } - function dateFromObject(config) { - var normalizedInput; + element.dispatchEvent(event); + return this; + }, - if (config._d) { - return; - } - - normalizedInput = normalizeObjectUnits(config._i); - config._a = [ - normalizedInput.year, - normalizedInput.month, - normalizedInput.day || normalizedInput.date, - normalizedInput.hour, - normalizedInput.minute, - normalizedInput.second, - normalizedInput.millisecond - ]; + /** + * enable of disable hammer.js detection + * @method enable + * @chainable + * @param {Boolean} state + */ + enable: function enable(state) { + this.enabled = state; + return this; + }, - dateFromConfig(config); - } + /** + * dispose this hammer instance + * @method dispose + * @return {Null} + */ + dispose: function dispose() { + var i, eh; - function currentDateArray(config) { - var now = new Date(); - if (config._useUTC) { - return [ - now.getUTCFullYear(), - now.getUTCMonth(), - now.getUTCDate() - ]; - } else { - return [now.getFullYear(), now.getMonth(), now.getDate()]; - } - } + // undo all changes made by stop_browser_behavior + Utils.toggleBehavior(this.element, this.options.behavior, false); - // date from string and format string - function makeDateFromStringAndFormat(config) { - if (config._f === moment.ISO_8601) { - parseISO(config); - return; + // unbind all custom event handlers + for(i = -1; (eh = this.eventHandlers[++i]);) { + Utils.off(this.element, eh.gesture, eh.handler); } - config._a = []; - config._pf.empty = true; - - // This array is used to make a Date, either with `new Date` or `Date.UTC` - var string = '' + config._i, - i, parsedInput, tokens, token, skipped, - stringLength = string.length, - totalParsedInputLength = 0; - - tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; - - for (i = 0; i < tokens.length; i++) { - token = tokens[i]; - parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; - if (parsedInput) { - skipped = string.substr(0, string.indexOf(parsedInput)); - if (skipped.length > 0) { - config._pf.unusedInput.push(skipped); - } - string = string.slice(string.indexOf(parsedInput) + parsedInput.length); - totalParsedInputLength += parsedInput.length; - } - // don't parse if it's not a known token - if (formatTokenFunctions[token]) { - if (parsedInput) { - config._pf.empty = false; - } - else { - config._pf.unusedTokens.push(token); - } - addTimeToArrayFromToken(token, parsedInput, config); - } - else if (config._strict && !parsedInput) { - config._pf.unusedTokens.push(token); - } - } + this.eventHandlers = []; - // add remaining unparsed input length to the string - config._pf.charsLeftOver = stringLength - totalParsedInputLength; - if (string.length > 0) { - config._pf.unusedInput.push(string); - } + // unbind the start event listener + Event.off(this.element, EVENT_TYPES[EVENT_START], this.eventStartHandler); - // clear _12h flag if hour is <= 12 - if (config._pf.bigHour === true && config._a[HOUR] <= 12) { - config._pf.bigHour = undefined; - } - // handle meridiem - config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], - config._meridiem); - dateFromConfig(config); - checkOverflow(config); + return null; } + }; - function unescapeFormat(s) { - return s.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { - return p1 || p2 || p3 || p4; - }); - } - // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript - function regexpEscape(s) { - return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); - } + /** + * @module gestures + */ + /** + * Move with x fingers (default 1) around on the page. + * Preventing the default browser behavior is a good way to improve feel and working. + * ```` + * hammertime.on("drag", function(ev) { + * console.log(ev); + * ev.gesture.preventDefault(); + * }); + * ```` + * + * @class Drag + * @static + */ + /** + * @event drag + * @param {Object} ev + */ + /** + * @event dragstart + * @param {Object} ev + */ + /** + * @event dragend + * @param {Object} ev + */ + /** + * @event drapleft + * @param {Object} ev + */ + /** + * @event dragright + * @param {Object} ev + */ + /** + * @event dragup + * @param {Object} ev + */ + /** + * @event dragdown + * @param {Object} ev + */ - // date from string and array of format strings - function makeDateFromStringAndArray(config) { - var tempConfig, - bestMoment, + /** + * @param {String} name + */ + (function(name) { + var triggered = false; - scoreToBeat, - i, - currentScore; + function dragGesture(ev, inst) { + var cur = Detection.current; - if (config._f.length === 0) { - config._pf.invalidFormat = true; - config._d = new Date(NaN); + // max touches + if(inst.options.dragMaxTouches > 0 && + ev.touches.length > inst.options.dragMaxTouches) { return; } - for (i = 0; i < config._f.length; i++) { - currentScore = 0; - tempConfig = copyConfig({}, config); - if (config._useUTC != null) { - tempConfig._useUTC = config._useUTC; - } - tempConfig._pf = defaultParsingFlags(); - tempConfig._f = config._f[i]; - makeDateFromStringAndFormat(tempConfig); + switch(ev.eventType) { + case EVENT_START: + triggered = false; + break; - if (!isValid(tempConfig)) { - continue; - } + case EVENT_MOVE: + // when the distance we moved is too small we skip this gesture + // or we can be already in dragging + if(ev.distance < inst.options.dragMinDistance && + cur.name != name) { + return; + } - // if there is any input that was not parsed add a penalty for that format - currentScore += tempConfig._pf.charsLeftOver; + var startCenter = cur.startEvent.center; - //or tokens - currentScore += tempConfig._pf.unusedTokens.length * 10; + // we are dragging! + if(cur.name != name) { + cur.name = name; + if(inst.options.dragDistanceCorrection && ev.distance > 0) { + // When a drag is triggered, set the event center to dragMinDistance pixels from the original event center. + // Without this correction, the dragged distance would jumpstart at dragMinDistance pixels instead of at 0. + // It might be useful to save the original start point somewhere + var factor = Math.abs(inst.options.dragMinDistance / ev.distance); + startCenter.pageX += ev.deltaX * factor; + startCenter.pageY += ev.deltaY * factor; + startCenter.clientX += ev.deltaX * factor; + startCenter.clientY += ev.deltaY * factor; - tempConfig._pf.score = currentScore; + // recalculate event data using new start point + ev = Detection.extendEventData(ev); + } + } - if (scoreToBeat == null || currentScore < scoreToBeat) { - scoreToBeat = currentScore; - bestMoment = tempConfig; - } - } + // lock drag to axis? + if(cur.lastEvent.dragLockToAxis || + ( inst.options.dragLockToAxis && + inst.options.dragLockMinDistance <= ev.distance + )) { + ev.dragLockToAxis = true; + } - extend(config, bestMoment || tempConfig); - } + // keep direction on the axis that the drag gesture started on + var lastDirection = cur.lastEvent.direction; + if(ev.dragLockToAxis && lastDirection !== ev.direction) { + if(Utils.isVertical(lastDirection)) { + ev.direction = (ev.deltaY < 0) ? DIRECTION_UP : DIRECTION_DOWN; + } else { + ev.direction = (ev.deltaX < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT; + } + } - // date from iso format - function parseISO(config) { - var i, l, - string = config._i, - match = isoRegex.exec(string); - - if (match) { - config._pf.iso = true; - for (i = 0, l = isoDates.length; i < l; i++) { - if (isoDates[i][1].exec(string)) { - // match[5] should be 'T' or undefined - config._f = isoDates[i][0] + (match[6] || ' '); - break; - } - } - for (i = 0, l = isoTimes.length; i < l; i++) { - if (isoTimes[i][1].exec(string)) { - config._f += isoTimes[i][0]; - break; + // first time, trigger dragstart event + if(!triggered) { + inst.trigger(name + 'start', ev); + triggered = true; } - } - if (string.match(parseTokenTimezone)) { - config._f += 'Z'; - } - makeDateFromStringAndFormat(config); - } else { - config._isValid = false; - } - } - // date from iso format or fallback - function makeDateFromString(config) { - parseISO(config); - if (config._isValid === false) { - delete config._isValid; - moment.createFromInputFallback(config); - } - } + // trigger events + inst.trigger(name, ev); + inst.trigger(name + ev.direction, ev); - function map(arr, fn) { - var res = [], i; - for (i = 0; i < arr.length; ++i) { - res.push(fn(arr[i], i)); - } - return res; - } + var isVertical = Utils.isVertical(ev.direction); - function makeDateFromInput(config) { - var input = config._i, matched; - if (input === undefined) { - config._d = new Date(); - } else if (isDate(input)) { - config._d = new Date(+input); - } else if ((matched = aspNetJsonRegex.exec(input)) !== null) { - config._d = new Date(+matched[1]); - } else if (typeof input === 'string') { - makeDateFromString(config); - } else if (isArray(input)) { - config._a = map(input.slice(0), function (obj) { - return parseInt(obj, 10); - }); - dateFromConfig(config); - } else if (typeof(input) === 'object') { - dateFromObject(config); - } else if (typeof(input) === 'number') { - // from milliseconds - config._d = new Date(input); - } else { - moment.createFromInputFallback(config); - } - } + // block the browser events + if((inst.options.dragBlockVertical && isVertical) || + (inst.options.dragBlockHorizontal && !isVertical)) { + ev.preventDefault(); + } + break; - function makeDate(y, m, d, h, M, s, ms) { - //can't just apply() to create a date: - //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply - var date = new Date(y, m, d, h, M, s, ms); + case EVENT_RELEASE: + if(triggered && ev.changedLength <= inst.options.dragMaxTouches) { + inst.trigger(name + 'end', ev); + triggered = false; + } + break; - //the date constructor doesn't accept years < 1970 - if (y < 1970) { - date.setFullYear(y); + case EVENT_END: + triggered = false; + break; } - return date; } - function makeUTCDate(y) { - var date = new Date(Date.UTC.apply(null, arguments)); - if (y < 1970) { - date.setUTCFullYear(y); - } - return date; - } + Hammer.gestures.Drag = { + name: name, + index: 50, + handler: dragGesture, + defaults: { + /** + * minimal movement that have to be made before the drag event gets triggered + * @property dragMinDistance + * @type {Number} + * @default 10 + */ + dragMinDistance: 10, - function parseWeekday(input, locale) { - if (typeof input === 'string') { - if (!isNaN(input)) { - input = parseInt(input, 10); - } - else { - input = locale.weekdaysParse(input); - if (typeof input !== 'number') { - return null; - } - } - } - return input; - } + /** + * Set dragDistanceCorrection to true to make the starting point of the drag + * be calculated from where the drag was triggered, not from where the touch started. + * Useful to avoid a jerk-starting drag, which can make fine-adjustments + * through dragging difficult, and be visually unappealing. + * @property dragDistanceCorrection + * @type {Boolean} + * @default true + */ + dragDistanceCorrection: true, - /************************************ - Relative Time - ************************************/ + /** + * set 0 for unlimited, but this can conflict with transform + * @property dragMaxTouches + * @type {Number} + * @default 1 + */ + dragMaxTouches: 1, + /** + * prevent default browser behavior when dragging occurs + * be careful with it, it makes the element a blocking element + * when you are using the drag gesture, it is a good practice to set this true + * @property dragBlockHorizontal + * @type {Boolean} + * @default false + */ + dragBlockHorizontal: false, - // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize - function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { - return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); - } + /** + * same as `dragBlockHorizontal`, but for vertical movement + * @property dragBlockVertical + * @type {Boolean} + * @default false + */ + dragBlockVertical: false, - function relativeTime(posNegDuration, withoutSuffix, locale) { - var duration = moment.duration(posNegDuration).abs(), - seconds = round(duration.as('s')), - minutes = round(duration.as('m')), - hours = round(duration.as('h')), - days = round(duration.as('d')), - months = round(duration.as('M')), - years = round(duration.as('y')), + /** + * dragLockToAxis keeps the drag gesture on the axis that it started on, + * It disallows vertical directions if the initial direction was horizontal, and vice versa. + * @property dragLockToAxis + * @type {Boolean} + * @default false + */ + dragLockToAxis: false, - args = seconds < relativeTimeThresholds.s && ['s', seconds] || - minutes === 1 && ['m'] || - minutes < relativeTimeThresholds.m && ['mm', minutes] || - hours === 1 && ['h'] || - hours < relativeTimeThresholds.h && ['hh', hours] || - days === 1 && ['d'] || - days < relativeTimeThresholds.d && ['dd', days] || - months === 1 && ['M'] || - months < relativeTimeThresholds.M && ['MM', months] || - years === 1 && ['y'] || ['yy', years]; + /** + * drag lock only kicks in when distance > dragLockMinDistance + * This way, locking occurs only when the distance has become large enough to reliably determine the direction + * @property dragLockMinDistance + * @type {Number} + * @default 25 + */ + dragLockMinDistance: 25 + } + }; + })('drag'); - args[2] = withoutSuffix; - args[3] = +posNegDuration > 0; - args[4] = locale; - return substituteTimeAgo.apply({}, args); + /** + * @module gestures + */ + /** + * trigger a simple gesture event, so you can do anything in your handler. + * only usable if you know what your doing... + * + * @class Gesture + * @static + */ + /** + * @event gesture + * @param {Object} ev + */ + Hammer.gestures.Gesture = { + name: 'gesture', + index: 1337, + handler: function releaseGesture(ev, inst) { + inst.trigger(this.name, ev); } + }; + /** + * @module gestures + */ + /** + * Touch stays at the same place for x time + * + * @class Hold + * @static + */ + /** + * @event hold + * @param {Object} ev + */ - /************************************ - Week of Year - ************************************/ + /** + * @param {String} name + */ + (function(name) { + var timer; + function holdGesture(ev, inst) { + var options = inst.options, + current = Detection.current; - // firstDayOfWeek 0 = sun, 6 = sat - // the day of the week that starts the week - // (usually sunday or monday) - // firstDayOfWeekOfYear 0 = sun, 6 = sat - // the first week is the week that contains the first - // of this day of the week - // (eg. ISO weeks use thursday (4)) - function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) { - var end = firstDayOfWeekOfYear - firstDayOfWeek, - daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(), - adjustedMoment; + switch(ev.eventType) { + case EVENT_START: + clearTimeout(timer); + // set the gesture so we can check in the timeout if it still is + current.name = name; - if (daysToDayOfWeek > end) { - daysToDayOfWeek -= 7; - } + // set timer and if after the timeout it still is hold, + // we trigger the hold event + timer = setTimeout(function() { + if(current && current.name == name) { + inst.trigger(name, ev); + } + }, options.holdTimeout); + break; - if (daysToDayOfWeek < end - 7) { - daysToDayOfWeek += 7; - } + case EVENT_MOVE: + if(ev.distance > options.holdThreshold) { + clearTimeout(timer); + } + break; - adjustedMoment = moment(mom).add(daysToDayOfWeek, 'd'); - return { - week: Math.ceil(adjustedMoment.dayOfYear() / 7), - year: adjustedMoment.year() - }; + case EVENT_RELEASE: + clearTimeout(timer); + break; + } } - //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday - function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) { - var d = makeUTCDate(year, 0, 1).getUTCDay(), daysToAdd, dayOfYear; + Hammer.gestures.Hold = { + name: name, + index: 10, + defaults: { + /** + * @property holdTimeout + * @type {Number} + * @default 500 + */ + holdTimeout: 500, - d = d === 0 ? 7 : d; - weekday = weekday != null ? weekday : firstDayOfWeek; - daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0); - dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1; + /** + * movement allowed while holding + * @property holdThreshold + * @type {Number} + * @default 2 + */ + holdThreshold: 2 + }, + handler: holdGesture + }; + })('hold'); - return { - year: dayOfYear > 0 ? year : year - 1, - dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear - }; + /** + * @module gestures + */ + /** + * when a touch is being released from the page + * + * @class Release + * @static + */ + /** + * @event release + * @param {Object} ev + */ + Hammer.gestures.Release = { + name: 'release', + index: Infinity, + handler: function releaseGesture(ev, inst) { + if(ev.eventType == EVENT_RELEASE) { + inst.trigger(this.name, ev); + } } + }; - /************************************ - Top Level Functions - ************************************/ + /** + * @module gestures + */ + /** + * triggers swipe events when the end velocity is above the threshold + * for best usage, set `preventDefault` (on the drag gesture) to `true` + * ```` + * hammertime.on("dragleft swipeleft", function(ev) { + * console.log(ev); + * ev.gesture.preventDefault(); + * }); + * ```` + * + * @class Swipe + * @static + */ + /** + * @event swipe + * @param {Object} ev + */ + /** + * @event swipeleft + * @param {Object} ev + */ + /** + * @event swiperight + * @param {Object} ev + */ + /** + * @event swipeup + * @param {Object} ev + */ + /** + * @event swipedown + * @param {Object} ev + */ + Hammer.gestures.Swipe = { + name: 'swipe', + index: 40, + defaults: { + /** + * @property swipeMinTouches + * @type {Number} + * @default 1 + */ + swipeMinTouches: 1, - function makeMoment(config) { - var input = config._i, - format = config._f, - res; + /** + * @property swipeMaxTouches + * @type {Number} + * @default 1 + */ + swipeMaxTouches: 1, - config._locale = config._locale || moment.localeData(config._l); + /** + * horizontal swipe velocity + * @property swipeVelocityX + * @type {Number} + * @default 0.6 + */ + swipeVelocityX: 0.6, - if (input === null || (format === undefined && input === '')) { - return moment.invalid({nullInput: true}); - } + /** + * vertical swipe velocity + * @property swipeVelocityY + * @type {Number} + * @default 0.6 + */ + swipeVelocityY: 0.6 + }, - if (typeof input === 'string') { - config._i = input = config._locale.preparse(input); - } + handler: function swipeGesture(ev, inst) { + if(ev.eventType == EVENT_RELEASE) { + var touches = ev.touches.length, + options = inst.options; - if (moment.isMoment(input)) { - return new Moment(input, true); - } else if (format) { - if (isArray(format)) { - makeDateFromStringAndArray(config); - } else { - makeDateFromStringAndFormat(config); + // max touches + if(touches < options.swipeMinTouches || + touches > options.swipeMaxTouches) { + return; } - } else { - makeDateFromInput(config); - } - res = new Moment(config); - if (res._nextDay) { - // Adding is smart enough around DST - res.add(1, 'd'); - res._nextDay = undefined; + // when the distance we moved is too small we skip this gesture + // or we can be already in dragging + if(ev.velocityX > options.swipeVelocityX || + ev.velocityY > options.swipeVelocityY) { + // trigger swipe events + inst.trigger(this.name, ev); + inst.trigger(this.name + ev.direction, ev); + } } - - return res; } + }; - moment = function (input, format, locale, strict) { - var c; - - if (typeof(locale) === 'boolean') { - strict = locale; - locale = undefined; - } - // object construction must be done this way. - // https://github.com/moment/moment/issues/1423 - c = {}; - c._isAMomentObject = true; - c._i = input; - c._f = format; - c._l = locale; - c._strict = strict; - c._isUTC = false; - c._pf = defaultParsingFlags(); + /** + * @module gestures + */ + /** + * Single tap and a double tap on a place + * + * @class Tap + * @static + */ + /** + * @event tap + * @param {Object} ev + */ + /** + * @event doubletap + * @param {Object} ev + */ - return makeMoment(c); - }; + /** + * @param {String} name + */ + (function(name) { + var hasMoved = false; - moment.suppressDeprecationWarnings = false; + function tapGesture(ev, inst) { + var options = inst.options, + current = Detection.current, + prev = Detection.previous, + sincePrev, + didDoubleTap; - moment.createFromInputFallback = deprecate( - 'moment construction falls back to js Date. This is ' + - 'discouraged and will be removed in upcoming major ' + - 'release. Please refer to ' + - 'https://github.com/moment/moment/issues/1407 for more info.', - function (config) { - config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); - } - ); - - // Pick a moment m from moments so that m[fn](other) is true for all - // other. This relies on the function fn to be transitive. - // - // moments should either be an array of moment objects or an array, whose - // first element is an array of moment objects. - function pickBy(fn, moments) { - var res, i; - if (moments.length === 1 && isArray(moments[0])) { - moments = moments[0]; - } - if (!moments.length) { - return moment(); - } - res = moments[0]; - for (i = 1; i < moments.length; ++i) { - if (moments[i][fn](res)) { - res = moments[i]; - } - } - return res; - } - - moment.min = function () { - var args = [].slice.call(arguments, 0); - - return pickBy('isBefore', args); - }; + switch(ev.eventType) { + case EVENT_START: + hasMoved = false; + break; - moment.max = function () { - var args = [].slice.call(arguments, 0); + case EVENT_MOVE: + hasMoved = hasMoved || (ev.distance > options.tapMaxDistance); + break; - return pickBy('isAfter', args); - }; + case EVENT_END: + if(!Utils.inStr(ev.srcEvent.type, 'cancel') && ev.deltaTime < options.tapMaxTime && !hasMoved) { + // previous gesture, for the double tap since these are two different gesture detections + sincePrev = prev && prev.lastEvent && ev.timeStamp - prev.lastEvent.timeStamp; + didDoubleTap = false; - // creating with utc - moment.utc = function (input, format, locale, strict) { - var c; + // check if double tap + if(prev && prev.name == name && + (sincePrev && sincePrev < options.doubleTapInterval) && + ev.distance < options.doubleTapDistance) { + inst.trigger('doubletap', ev); + didDoubleTap = true; + } - if (typeof(locale) === 'boolean') { - strict = locale; - locale = undefined; + // do a single tap + if(!didDoubleTap || options.tapAlways) { + current.name = name; + inst.trigger(current.name, ev); + } + } + break; } - // object construction must be done this way. - // https://github.com/moment/moment/issues/1423 - c = {}; - c._isAMomentObject = true; - c._useUTC = true; - c._isUTC = true; - c._l = locale; - c._i = input; - c._f = format; - c._strict = strict; - c._pf = defaultParsingFlags(); - - return makeMoment(c).utc(); - }; - - // creating with unix timestamp (in seconds) - moment.unix = function (input) { - return moment(input * 1000); - }; + } - // duration - moment.duration = function (input, key) { - var duration = input, - // matching against regexp is expensive, do it on demand - match = null, - sign, - ret, - parseIso, - diffRes; + Hammer.gestures.Tap = { + name: name, + index: 100, + handler: tapGesture, + defaults: { + /** + * max time of a tap, this is for the slow tappers + * @property tapMaxTime + * @type {Number} + * @default 250 + */ + tapMaxTime: 250, - if (moment.isDuration(input)) { - duration = { - ms: input._milliseconds, - d: input._days, - M: input._months - }; - } else if (typeof input === 'number') { - duration = {}; - if (key) { - duration[key] = input; - } else { - duration.milliseconds = input; - } - } else if (!!(match = aspNetTimeSpanJsonRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : 1; - duration = { - y: 0, - d: toInt(match[DATE]) * sign, - h: toInt(match[HOUR]) * sign, - m: toInt(match[MINUTE]) * sign, - s: toInt(match[SECOND]) * sign, - ms: toInt(match[MILLISECOND]) * sign - }; - } else if (!!(match = isoDurationRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : 1; - parseIso = function (inp) { - // We'd normally use ~~inp for this, but unfortunately it also - // converts floats to ints. - // inp may be undefined, so careful calling replace on it. - var res = inp && parseFloat(inp.replace(',', '.')); - // apply sign while we're at it - return (isNaN(res) ? 0 : res) * sign; - }; - duration = { - y: parseIso(match[2]), - M: parseIso(match[3]), - d: parseIso(match[4]), - h: parseIso(match[5]), - m: parseIso(match[6]), - s: parseIso(match[7]), - w: parseIso(match[8]) - }; - } else if (duration == null) {// checks for null or undefined - duration = {}; - } else if (typeof duration === 'object' && - ('from' in duration || 'to' in duration)) { - diffRes = momentsDifference(moment(duration.from), moment(duration.to)); + /** + * max distance of movement of a tap, this is for the slow tappers + * @property tapMaxDistance + * @type {Number} + * @default 10 + */ + tapMaxDistance: 10, - duration = {}; - duration.ms = diffRes.milliseconds; - duration.M = diffRes.months; - } + /** + * always trigger the `tap` event, even while double-tapping + * @property tapAlways + * @type {Boolean} + * @default true + */ + tapAlways: true, - ret = new Duration(duration); + /** + * max distance between two taps + * @property doubleTapDistance + * @type {Number} + * @default 20 + */ + doubleTapDistance: 20, - if (moment.isDuration(input) && hasOwnProp(input, '_locale')) { - ret._locale = input._locale; + /** + * max time between two taps + * @property doubleTapInterval + * @type {Number} + * @default 300 + */ + doubleTapInterval: 300 } - - return ret; }; + })('tap'); - // version number - moment.version = VERSION; + /** + * @module gestures + */ + /** + * when a touch is being touched at the page + * + * @class Touch + * @static + */ + /** + * @event touch + * @param {Object} ev + */ + Hammer.gestures.Touch = { + name: 'touch', + index: -Infinity, + defaults: { + /** + * call preventDefault at touchstart, and makes the element blocking by disabling the scrolling of the page, + * but it improves gestures like transforming and dragging. + * be careful with using this, it can be very annoying for users to be stuck on the page + * @property preventDefault + * @type {Boolean} + * @default false + */ + preventDefault: false, - // default format - moment.defaultFormat = isoFormat; + /** + * disable mouse events, so only touch (or pen!) input triggers events + * @property preventMouse + * @type {Boolean} + * @default false + */ + preventMouse: false + }, + handler: function touchGesture(ev, inst) { + if(inst.options.preventMouse && ev.pointerType == POINTER_MOUSE) { + ev.stopDetect(); + return; + } - // constant that refers to the ISO standard - moment.ISO_8601 = function () {}; + if(inst.options.preventDefault) { + ev.preventDefault(); + } - // Plugins that add properties should also add the key here (null value), - // so we can properly clone ourselves. - moment.momentProperties = momentProperties; + if(ev.eventType == EVENT_TOUCH) { + inst.trigger('touch', ev); + } + } + }; - // This function will be called whenever a moment is mutated. - // It is intended to keep the offset in sync with the timezone. - moment.updateOffset = function () {}; - - // This function allows you to set a threshold for relative time strings - moment.relativeTimeThreshold = function (threshold, limit) { - if (relativeTimeThresholds[threshold] === undefined) { - return false; - } - if (limit === undefined) { - return relativeTimeThresholds[threshold]; - } - relativeTimeThresholds[threshold] = limit; - return true; - }; - - moment.lang = deprecate( - 'moment.lang is deprecated. Use moment.locale instead.', - function (key, value) { - return moment.locale(key, value); - } - ); + /** + * @module gestures + */ + /** + * User want to scale or rotate with 2 fingers + * Preventing the default browser behavior is a good way to improve feel and working. This can be done with the + * `preventDefault` option. + * + * @class Transform + * @static + */ + /** + * @event transform + * @param {Object} ev + */ + /** + * @event transformstart + * @param {Object} ev + */ + /** + * @event transformend + * @param {Object} ev + */ + /** + * @event pinchin + * @param {Object} ev + */ + /** + * @event pinchout + * @param {Object} ev + */ + /** + * @event rotate + * @param {Object} ev + */ - // This function will load locale and then set the global locale. If - // no arguments are passed in, it will simply return the current global - // locale key. - moment.locale = function (key, values) { - var data; - if (key) { - if (typeof(values) !== 'undefined') { - data = moment.defineLocale(key, values); - } - else { - data = moment.localeData(key); - } + /** + * @param {String} name + */ + (function(name) { + var triggered = false; - if (data) { - moment.duration._locale = moment._locale = data; - } - } + function transformGesture(ev, inst) { + switch(ev.eventType) { + case EVENT_START: + triggered = false; + break; - return moment._locale._abbr; - }; + case EVENT_MOVE: + // at least multitouch + if(ev.touches.length < 2) { + return; + } - moment.defineLocale = function (name, values) { - if (values !== null) { - values.abbr = name; - if (!locales[name]) { - locales[name] = new Locale(); - } - locales[name].set(values); + var scaleThreshold = Math.abs(1 - ev.scale); + var rotationThreshold = Math.abs(ev.rotation); - // backwards compat for now: also set the locale - moment.locale(name); + // when the distance we moved is too small we skip this gesture + // or we can be already in dragging + if(scaleThreshold < inst.options.transformMinScale && + rotationThreshold < inst.options.transformMinRotation) { + return; + } - return locales[name]; - } else { - // useful for testing - delete locales[name]; - return null; - } - }; + // we are transforming! + Detection.current.name = name; - moment.langData = deprecate( - 'moment.langData is deprecated. Use moment.localeData instead.', - function (key) { - return moment.localeData(key); - } - ); + // first time, trigger dragstart event + if(!triggered) { + inst.trigger(name + 'start', ev); + triggered = true; + } - // returns locale data - moment.localeData = function (key) { - var locale; + inst.trigger(name, ev); // basic transform event - if (key && key._locale && key._locale._abbr) { - key = key._locale._abbr; - } + // trigger rotate event + if(rotationThreshold > inst.options.transformMinRotation) { + inst.trigger('rotate', ev); + } - if (!key) { - return moment._locale; - } + // trigger pinch event + if(scaleThreshold > inst.options.transformMinScale) { + inst.trigger('pinch', ev); + inst.trigger('pinch' + (ev.scale < 1 ? 'in' : 'out'), ev); + } + break; - if (!isArray(key)) { - //short-circuit everything else - locale = loadLocale(key); - if (locale) { - return locale; - } - key = [key]; + case EVENT_RELEASE: + if(triggered && ev.changedLength < 2) { + inst.trigger(name + 'end', ev); + triggered = false; + } + break; } + } - return chooseLocale(key); - }; - - // compare moment object - moment.isMoment = function (obj) { - return obj instanceof Moment || - (obj != null && hasOwnProp(obj, '_isAMomentObject')); - }; - - // for typechecking Duration objects - moment.isDuration = function (obj) { - return obj instanceof Duration; - }; + Hammer.gestures.Transform = { + name: name, + index: 45, + defaults: { + /** + * minimal scale factor, no scale is 1, zoomin is to 0 and zoomout until higher then 1 + * @property transformMinScale + * @type {Number} + * @default 0.01 + */ + transformMinScale: 0.01, - for (i = lists.length - 1; i >= 0; --i) { - makeList(lists[i]); - } + /** + * rotation in degrees + * @property transformMinRotation + * @type {Number} + * @default 1 + */ + transformMinRotation: 1 + }, - moment.normalizeUnits = function (units) { - return normalizeUnits(units); + handler: transformGesture }; + })('transform'); - moment.invalid = function (flags) { - var m = moment.utc(NaN); - if (flags != null) { - extend(m._pf, flags); - } - else { - m._pf.userInvalidated = true; - } + /** + * @module hammer + */ - return m; - }; + // AMD export + if(true) { + !(__WEBPACK_AMD_DEFINE_RESULT__ = function() { + return Hammer; + }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + // commonjs export + } else if(typeof module !== 'undefined' && module.exports) { + module.exports = Hammer; + // browser export + } else { + window.Hammer = Hammer; + } - moment.parseZone = function () { - return moment.apply(null, arguments).parseZone(); - }; + })(window); - moment.parseTwoDigitYear = function (input) { - return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); - }; +/***/ }, +/* 59 */ +/***/ function(module, exports, __webpack_require__) { - moment.isDate = isDate; + var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global, module) {//! moment.js + //! version : 2.9.0 + //! authors : Tim Wood, Iskren Chernev, Moment.js contributors + //! license : MIT + //! momentjs.com + (function (undefined) { /************************************ - Moment Prototype + Constants ************************************/ + var moment, + VERSION = '2.9.0', + // the global-scope this is NOT the global object in Node.js + globalScope = (typeof global !== 'undefined' && (typeof window === 'undefined' || window === global.window)) ? global : this, + oldGlobalMoment, + round = Math.round, + hasOwnProperty = Object.prototype.hasOwnProperty, + i, - extend(moment.fn = Moment.prototype, { - - clone : function () { - return moment(this); - }, - - valueOf : function () { - return +this._d - ((this._offset || 0) * 60000); - }, - - unix : function () { - return Math.floor(+this / 1000); - }, - - toString : function () { - return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); - }, - - toDate : function () { - return this._offset ? new Date(+this) : this._d; - }, - - toISOString : function () { - var m = moment(this).utc(); - if (0 < m.year() && m.year() <= 9999) { - if ('function' === typeof Date.prototype.toISOString) { - // native implementation is ~50x faster, use it when we can - return this.toDate().toISOString(); - } else { - return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); - } - } else { - return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); - } - }, - - toArray : function () { - var m = this; - return [ - m.year(), - m.month(), - m.date(), - m.hours(), - m.minutes(), - m.seconds(), - m.milliseconds() - ]; - }, - - isValid : function () { - return isValid(this); - }, - - isDSTShifted : function () { - if (this._a) { - return this.isValid() && compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()) > 0; - } + YEAR = 0, + MONTH = 1, + DATE = 2, + HOUR = 3, + MINUTE = 4, + SECOND = 5, + MILLISECOND = 6, - return false; - }, + // internal storage for locale config files + locales = {}, - parsingFlags : function () { - return extend({}, this._pf); - }, + // extra moment internal properties (plugins register props here) + momentProperties = [], - invalidAt: function () { - return this._pf.overflow; - }, + // check for nodeJS + hasModule = (typeof module !== 'undefined' && module && module.exports), - utc : function (keepLocalTime) { - return this.utcOffset(0, keepLocalTime); - }, + // ASP.NET json date format regex + aspNetJsonRegex = /^\/?Date\((\-?\d+)/i, + aspNetTimeSpanJsonRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/, - local : function (keepLocalTime) { - if (this._isUTC) { - this.utcOffset(0, keepLocalTime); - this._isUTC = false; + // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html + // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere + isoDurationRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/, - if (keepLocalTime) { - this.subtract(this._dateUtcOffset(), 'm'); - } - } - return this; - }, + // format tokens + formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|x|X|zz?|ZZ?|.)/g, + localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, - format : function (inputString) { - var output = formatMoment(this, inputString || moment.defaultFormat); - return this.localeData().postformat(output); - }, + // parsing token regexes + parseTokenOneOrTwoDigits = /\d\d?/, // 0 - 99 + parseTokenOneToThreeDigits = /\d{1,3}/, // 0 - 999 + parseTokenOneToFourDigits = /\d{1,4}/, // 0 - 9999 + parseTokenOneToSixDigits = /[+\-]?\d{1,6}/, // -999,999 - 999,999 + parseTokenDigits = /\d+/, // nonzero number of digits + parseTokenWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, // any word (or two) characters or numbers including two/three word month in arabic. + parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z + parseTokenT = /T/i, // T (ISO separator) + parseTokenOffsetMs = /[\+\-]?\d+/, // 1234567890123 + parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123 - add : createAdder(1, 'add'), + //strict parsing regexes + parseTokenOneDigit = /\d/, // 0 - 9 + parseTokenTwoDigits = /\d\d/, // 00 - 99 + parseTokenThreeDigits = /\d{3}/, // 000 - 999 + parseTokenFourDigits = /\d{4}/, // 0000 - 9999 + parseTokenSixDigits = /[+-]?\d{6}/, // -999,999 - 999,999 + parseTokenSignedNumber = /[+-]?\d+/, // -inf - inf - subtract : createAdder(-1, 'subtract'), + // iso 8601 regex + // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) + isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/, - diff : function (input, units, asFloat) { - var that = makeAs(input, this), - zoneDiff = (that.utcOffset() - this.utcOffset()) * 6e4, - anchor, diff, output, daysAdjust; + isoFormat = 'YYYY-MM-DDTHH:mm:ssZ', - units = normalizeUnits(units); + isoDates = [ + ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/], + ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/], + ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/], + ['GGGG-[W]WW', /\d{4}-W\d{2}/], + ['YYYY-DDD', /\d{4}-\d{3}/] + ], - if (units === 'year' || units === 'month' || units === 'quarter') { - output = monthDiff(this, that); - if (units === 'quarter') { - output = output / 3; - } else if (units === 'year') { - output = output / 12; - } - } else { - diff = this - that; - output = units === 'second' ? diff / 1e3 : // 1000 - units === 'minute' ? diff / 6e4 : // 1000 * 60 - units === 'hour' ? diff / 36e5 : // 1000 * 60 * 60 - units === 'day' ? (diff - zoneDiff) / 864e5 : // 1000 * 60 * 60 * 24, negate dst - units === 'week' ? (diff - zoneDiff) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst - diff; - } - return asFloat ? output : absRound(output); - }, + // iso time formats and regexes + isoTimes = [ + ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/], + ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/], + ['HH:mm', /(T| )\d\d:\d\d/], + ['HH', /(T| )\d\d/] + ], - from : function (time, withoutSuffix) { - return moment.duration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); - }, + // timezone chunker '+10:00' > ['10', '00'] or '-1530' > ['-', '15', '30'] + parseTimezoneChunker = /([\+\-]|\d\d)/gi, - fromNow : function (withoutSuffix) { - return this.from(moment(), withoutSuffix); + // getter and setter names + proxyGettersAndSetters = 'Date|Hours|Minutes|Seconds|Milliseconds'.split('|'), + unitMillisecondFactors = { + 'Milliseconds' : 1, + 'Seconds' : 1e3, + 'Minutes' : 6e4, + 'Hours' : 36e5, + 'Days' : 864e5, + 'Months' : 2592e6, + 'Years' : 31536e6 }, - calendar : function (time) { - // We want to compare the start of today, vs this. - // Getting start-of-today depends on whether we're locat/utc/offset - // or not. - var now = time || moment(), - sod = makeAs(now, this).startOf('day'), - diff = this.diff(sod, 'days', true), - format = diff < -6 ? 'sameElse' : - diff < -1 ? 'lastWeek' : - diff < 0 ? 'lastDay' : - diff < 1 ? 'sameDay' : - diff < 2 ? 'nextDay' : - diff < 7 ? 'nextWeek' : 'sameElse'; - return this.format(this.localeData().calendar(format, this, moment(now))); + unitAliases = { + ms : 'millisecond', + s : 'second', + m : 'minute', + h : 'hour', + d : 'day', + D : 'date', + w : 'week', + W : 'isoWeek', + M : 'month', + Q : 'quarter', + y : 'year', + DDD : 'dayOfYear', + e : 'weekday', + E : 'isoWeekday', + gg: 'weekYear', + GG: 'isoWeekYear' }, - isLeapYear : function () { - return isLeapYear(this.year()); + camelFunctions = { + dayofyear : 'dayOfYear', + isoweekday : 'isoWeekday', + isoweek : 'isoWeek', + weekyear : 'weekYear', + isoweekyear : 'isoWeekYear' }, - isDST : function () { - return (this.utcOffset() > this.clone().month(0).utcOffset() || - this.utcOffset() > this.clone().month(5).utcOffset()); - }, + // format function strings + formatFunctions = {}, - day : function (input) { - var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); - if (input != null) { - input = parseWeekday(input, this.localeData()); - return this.add(input - day, 'd'); - } else { - return day; - } + // default relative time thresholds + relativeTimeThresholds = { + s: 45, // seconds to minute + m: 45, // minutes to hour + h: 22, // hours to day + d: 26, // days to month + M: 11 // months to year }, - month : makeAccessor('Month', true), + // tokens to ordinalize and pad + ordinalizeTokens = 'DDD w W M D d'.split(' '), + paddedTokens = 'M D H h m s w W'.split(' '), - startOf : function (units) { - units = normalizeUnits(units); - // the following switch intentionally omits break keywords - // to utilize falling through the cases. - switch (units) { - case 'year': - this.month(0); - /* falls through */ - case 'quarter': - case 'month': - this.date(1); - /* falls through */ - case 'week': - case 'isoWeek': - case 'day': - this.hours(0); - /* falls through */ - case 'hour': - this.minutes(0); - /* falls through */ - case 'minute': - this.seconds(0); - /* falls through */ - case 'second': - this.milliseconds(0); - /* falls through */ + formatTokenFunctions = { + M : function () { + return this.month() + 1; + }, + MMM : function (format) { + return this.localeData().monthsShort(this, format); + }, + MMMM : function (format) { + return this.localeData().months(this, format); + }, + D : function () { + return this.date(); + }, + DDD : function () { + return this.dayOfYear(); + }, + d : function () { + return this.day(); + }, + dd : function (format) { + return this.localeData().weekdaysMin(this, format); + }, + ddd : function (format) { + return this.localeData().weekdaysShort(this, format); + }, + dddd : function (format) { + return this.localeData().weekdays(this, format); + }, + w : function () { + return this.week(); + }, + W : function () { + return this.isoWeek(); + }, + YY : function () { + return leftZeroFill(this.year() % 100, 2); + }, + YYYY : function () { + return leftZeroFill(this.year(), 4); + }, + YYYYY : function () { + return leftZeroFill(this.year(), 5); + }, + YYYYYY : function () { + var y = this.year(), sign = y >= 0 ? '+' : '-'; + return sign + leftZeroFill(Math.abs(y), 6); + }, + gg : function () { + return leftZeroFill(this.weekYear() % 100, 2); + }, + gggg : function () { + return leftZeroFill(this.weekYear(), 4); + }, + ggggg : function () { + return leftZeroFill(this.weekYear(), 5); + }, + GG : function () { + return leftZeroFill(this.isoWeekYear() % 100, 2); + }, + GGGG : function () { + return leftZeroFill(this.isoWeekYear(), 4); + }, + GGGGG : function () { + return leftZeroFill(this.isoWeekYear(), 5); + }, + e : function () { + return this.weekday(); + }, + E : function () { + return this.isoWeekday(); + }, + a : function () { + return this.localeData().meridiem(this.hours(), this.minutes(), true); + }, + A : function () { + return this.localeData().meridiem(this.hours(), this.minutes(), false); + }, + H : function () { + return this.hours(); + }, + h : function () { + return this.hours() % 12 || 12; + }, + m : function () { + return this.minutes(); + }, + s : function () { + return this.seconds(); + }, + S : function () { + return toInt(this.milliseconds() / 100); + }, + SS : function () { + return leftZeroFill(toInt(this.milliseconds() / 10), 2); + }, + SSS : function () { + return leftZeroFill(this.milliseconds(), 3); + }, + SSSS : function () { + return leftZeroFill(this.milliseconds(), 3); + }, + Z : function () { + var a = this.utcOffset(), + b = '+'; + if (a < 0) { + a = -a; + b = '-'; + } + return b + leftZeroFill(toInt(a / 60), 2) + ':' + leftZeroFill(toInt(a) % 60, 2); + }, + ZZ : function () { + var a = this.utcOffset(), + b = '+'; + if (a < 0) { + a = -a; + b = '-'; + } + return b + leftZeroFill(toInt(a / 60), 2) + leftZeroFill(toInt(a) % 60, 2); + }, + z : function () { + return this.zoneAbbr(); + }, + zz : function () { + return this.zoneName(); + }, + x : function () { + return this.valueOf(); + }, + X : function () { + return this.unix(); + }, + Q : function () { + return this.quarter(); } + }, - // weeks are a special case - if (units === 'week') { - this.weekday(0); - } else if (units === 'isoWeek') { - this.isoWeekday(1); - } + deprecations = {}, - // quarters are also special - if (units === 'quarter') { - this.month(Math.floor(this.month() / 3) * 3); - } + lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin'], - return this; - }, + updateInProgress = false; - endOf: function (units) { - units = normalizeUnits(units); - if (units === undefined || units === 'millisecond') { - return this; - } - return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); - }, + // Pick the first defined of two or three arguments. dfl comes from + // default. + function dfl(a, b, c) { + switch (arguments.length) { + case 2: return a != null ? a : b; + case 3: return a != null ? a : b != null ? b : c; + default: throw new Error('Implement me'); + } + } - isAfter: function (input, units) { - var inputMs; - units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); - if (units === 'millisecond') { - input = moment.isMoment(input) ? input : moment(input); - return +this > +input; - } else { - inputMs = moment.isMoment(input) ? +input : +moment(input); - return inputMs < +this.clone().startOf(units); - } - }, + function hasOwnProp(a, b) { + return hasOwnProperty.call(a, b); + } - isBefore: function (input, units) { - var inputMs; - units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); - if (units === 'millisecond') { - input = moment.isMoment(input) ? input : moment(input); - return +this < +input; - } else { - inputMs = moment.isMoment(input) ? +input : +moment(input); - return +this.clone().endOf(units) < inputMs; - } - }, + function defaultParsingFlags() { + // We need to deep clone this object, and es5 standard is not very + // helpful. + return { + empty : false, + unusedTokens : [], + unusedInput : [], + overflow : -2, + charsLeftOver : 0, + nullInput : false, + invalidMonth : null, + invalidFormat : false, + userInvalidated : false, + iso: false + }; + } - isBetween: function (from, to, units) { - return this.isAfter(from, units) && this.isBefore(to, units); - }, + function printMsg(msg) { + if (moment.suppressDeprecationWarnings === false && + typeof console !== 'undefined' && console.warn) { + console.warn('Deprecation warning: ' + msg); + } + } - isSame: function (input, units) { - var inputMs; - units = normalizeUnits(units || 'millisecond'); - if (units === 'millisecond') { - input = moment.isMoment(input) ? input : moment(input); - return +this === +input; - } else { - inputMs = +moment(input); - return +(this.clone().startOf(units)) <= inputMs && inputMs <= +(this.clone().endOf(units)); + function deprecate(msg, fn) { + var firstTime = true; + return extend(function () { + if (firstTime) { + printMsg(msg); + firstTime = false; } - }, - - min: deprecate( - 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548', - function (other) { - other = moment.apply(null, arguments); - return other < this ? this : other; - } - ), + return fn.apply(this, arguments); + }, fn); + } - max: deprecate( - 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548', - function (other) { - other = moment.apply(null, arguments); - return other > this ? this : other; - } - ), + function deprecateSimple(name, msg) { + if (!deprecations[name]) { + printMsg(msg); + deprecations[name] = true; + } + } - zone : deprecate( - 'moment().zone is deprecated, use moment().utcOffset instead. ' + - 'https://github.com/moment/moment/issues/1779', - function (input, keepLocalTime) { - if (input != null) { - if (typeof input !== 'string') { - input = -input; - } + function padToken(func, count) { + return function (a) { + return leftZeroFill(func.call(this, a), count); + }; + } + function ordinalizeToken(func, period) { + return function (a) { + return this.localeData().ordinal(func.call(this, a), period); + }; + } - this.utcOffset(input, keepLocalTime); + function monthDiff(a, b) { + // difference in months + var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), + // b is in (anchor - 1 month, anchor + 1 month) + anchor = a.clone().add(wholeMonthDiff, 'months'), + anchor2, adjust; - return this; - } else { - return -this.utcOffset(); - } - } - ), + if (b - anchor < 0) { + anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor - anchor2); + } else { + anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor2 - anchor); + } - // keepLocalTime = true means only change the timezone, without - // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> - // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset - // +0200, so we adjust the time as needed, to be valid. - // - // Keeping the time actually adds/subtracts (one hour) - // from the actual represented time. That is why we call updateOffset - // a second time. In case it wants us to change the offset again - // _changeInProgress == true case, then we have to adjust, because - // there is no such time in the given timezone. - utcOffset : function (input, keepLocalTime) { - var offset = this._offset || 0, - localAdjust; - if (input != null) { - if (typeof input === 'string') { - input = utcOffsetFromString(input); - } - if (Math.abs(input) < 16) { - input = input * 60; - } - if (!this._isUTC && keepLocalTime) { - localAdjust = this._dateUtcOffset(); - } - this._offset = input; - this._isUTC = true; - if (localAdjust != null) { - this.add(localAdjust, 'm'); - } - if (offset !== input) { - if (!keepLocalTime || this._changeInProgress) { - addOrSubtractDurationFromMoment(this, - moment.duration(input - offset, 'm'), 1, false); - } else if (!this._changeInProgress) { - this._changeInProgress = true; - moment.updateOffset(this, true); - this._changeInProgress = null; - } - } + return -(wholeMonthDiff + adjust); + } - return this; - } else { - return this._isUTC ? offset : this._dateUtcOffset(); - } - }, + while (ordinalizeTokens.length) { + i = ordinalizeTokens.pop(); + formatTokenFunctions[i + 'o'] = ordinalizeToken(formatTokenFunctions[i], i); + } + while (paddedTokens.length) { + i = paddedTokens.pop(); + formatTokenFunctions[i + i] = padToken(formatTokenFunctions[i], 2); + } + formatTokenFunctions.DDDD = padToken(formatTokenFunctions.DDD, 3); - isLocal : function () { - return !this._isUTC; - }, - isUtcOffset : function () { - return this._isUTC; - }, + function meridiemFixWrap(locale, hour, meridiem) { + var isPm; - isUtc : function () { - return this._isUTC && this._offset === 0; - }, + if (meridiem == null) { + // nothing to do + return hour; + } + if (locale.meridiemHour != null) { + return locale.meridiemHour(hour, meridiem); + } else if (locale.isPM != null) { + // Fallback + isPm = locale.isPM(meridiem); + if (isPm && hour < 12) { + hour += 12; + } + if (!isPm && hour === 12) { + hour = 0; + } + return hour; + } else { + // thie is not supposed to happen + return hour; + } + } - zoneAbbr : function () { - return this._isUTC ? 'UTC' : ''; - }, + /************************************ + Constructors + ************************************/ - zoneName : function () { - return this._isUTC ? 'Coordinated Universal Time' : ''; - }, + function Locale() { + } - parseZone : function () { - if (this._tzm) { - this.utcOffset(this._tzm); - } else if (typeof this._i === 'string') { - this.utcOffset(utcOffsetFromString(this._i)); - } - return this; - }, + // Moment prototype object + function Moment(config, skipOverflow) { + if (skipOverflow !== false) { + checkOverflow(config); + } + copyConfig(this, config); + this._d = new Date(+config._d); + // Prevent infinite loop in case updateOffset creates new moment + // objects. + if (updateInProgress === false) { + updateInProgress = true; + moment.updateOffset(this); + updateInProgress = false; + } + } - hasAlignedHourOffset : function (input) { - if (!input) { - input = 0; - } - else { - input = moment(input).utcOffset(); - } + // Duration Constructor + function Duration(duration) { + var normalizedInput = normalizeObjectUnits(duration), + years = normalizedInput.year || 0, + quarters = normalizedInput.quarter || 0, + months = normalizedInput.month || 0, + weeks = normalizedInput.week || 0, + days = normalizedInput.day || 0, + hours = normalizedInput.hour || 0, + minutes = normalizedInput.minute || 0, + seconds = normalizedInput.second || 0, + milliseconds = normalizedInput.millisecond || 0; - return (this.utcOffset() - input) % 60 === 0; - }, + // representation for dateAddRemove + this._milliseconds = +milliseconds + + seconds * 1e3 + // 1000 + minutes * 6e4 + // 1000 * 60 + hours * 36e5; // 1000 * 60 * 60 + // Because of dateAddRemove treats 24 hours as different from a + // day when working around DST, we need to store them separately + this._days = +days + + weeks * 7; + // It is impossible translate months into days without knowing + // which months you are are talking about, so we have to store + // it separately. + this._months = +months + + quarters * 3 + + years * 12; - daysInMonth : function () { - return daysInMonth(this.year(), this.month()); - }, + this._data = {}; - dayOfYear : function (input) { - var dayOfYear = round((moment(this).startOf('day') - moment(this).startOf('year')) / 864e5) + 1; - return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); - }, + this._locale = moment.localeData(); - quarter : function (input) { - return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); - }, + this._bubble(); + } - weekYear : function (input) { - var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year; - return input == null ? year : this.add((input - year), 'y'); - }, + /************************************ + Helpers + ************************************/ - isoWeekYear : function (input) { - var year = weekOfYear(this, 1, 4).year; - return input == null ? year : this.add((input - year), 'y'); - }, - week : function (input) { - var week = this.localeData().week(this); - return input == null ? week : this.add((input - week) * 7, 'd'); - }, + function extend(a, b) { + for (var i in b) { + if (hasOwnProp(b, i)) { + a[i] = b[i]; + } + } - isoWeek : function (input) { - var week = weekOfYear(this, 1, 4).week; - return input == null ? week : this.add((input - week) * 7, 'd'); - }, + if (hasOwnProp(b, 'toString')) { + a.toString = b.toString; + } - weekday : function (input) { - var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; - return input == null ? weekday : this.add(input - weekday, 'd'); - }, + if (hasOwnProp(b, 'valueOf')) { + a.valueOf = b.valueOf; + } - isoWeekday : function (input) { - // behaves the same as moment#day except - // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) - // as a setter, sunday should belong to the previous week. - return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7); - }, - - isoWeeksInYear : function () { - return weeksInYear(this.year(), 1, 4); - }, + return a; + } - weeksInYear : function () { - var weekInfo = this.localeData()._week; - return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); - }, + function copyConfig(to, from) { + var i, prop, val; - get : function (units) { - units = normalizeUnits(units); - return this[units](); - }, + if (typeof from._isAMomentObject !== 'undefined') { + to._isAMomentObject = from._isAMomentObject; + } + if (typeof from._i !== 'undefined') { + to._i = from._i; + } + if (typeof from._f !== 'undefined') { + to._f = from._f; + } + if (typeof from._l !== 'undefined') { + to._l = from._l; + } + if (typeof from._strict !== 'undefined') { + to._strict = from._strict; + } + if (typeof from._tzm !== 'undefined') { + to._tzm = from._tzm; + } + if (typeof from._isUTC !== 'undefined') { + to._isUTC = from._isUTC; + } + if (typeof from._offset !== 'undefined') { + to._offset = from._offset; + } + if (typeof from._pf !== 'undefined') { + to._pf = from._pf; + } + if (typeof from._locale !== 'undefined') { + to._locale = from._locale; + } - set : function (units, value) { - var unit; - if (typeof units === 'object') { - for (unit in units) { - this.set(unit, units[unit]); - } - } - else { - units = normalizeUnits(units); - if (typeof this[units] === 'function') { - this[units](value); + if (momentProperties.length > 0) { + for (i in momentProperties) { + prop = momentProperties[i]; + val = from[prop]; + if (typeof val !== 'undefined') { + to[prop] = val; } } - return this; - }, - - // If passed a locale key, it will set the locale for this - // instance. Otherwise, it will return the locale configuration - // variables for this instance. - locale : function (key) { - var newLocaleData; + } - if (key === undefined) { - return this._locale._abbr; - } else { - newLocaleData = moment.localeData(key); - if (newLocaleData != null) { - this._locale = newLocaleData; - } - return this; - } - }, + return to; + } - lang : deprecate( - 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', - function (key) { - if (key === undefined) { - return this.localeData(); - } else { - return this.locale(key); - } - } - ), + function absRound(number) { + if (number < 0) { + return Math.ceil(number); + } else { + return Math.floor(number); + } + } - localeData : function () { - return this._locale; - }, + // left zero fill a number + // see http://jsperf.com/left-zero-filling for performance comparison + function leftZeroFill(number, targetLength, forceSign) { + var output = '' + Math.abs(number), + sign = number >= 0; - _dateUtcOffset : function () { - // On Firefox.24 Date#getTimezoneOffset returns a floating point. - // https://github.com/moment/moment/pull/1871 - return -Math.round(this._d.getTimezoneOffset() / 15) * 15; + while (output.length < targetLength) { + output = '0' + output; } + return (sign ? (forceSign ? '+' : '') : '-') + output; + } - }); - - function rawMonthSetter(mom, value) { - var dayOfMonth; + function positiveMomentsDifference(base, other) { + var res = {milliseconds: 0, months: 0}; - // TODO: Move this out of here! - if (typeof value === 'string') { - value = mom.localeData().monthsParse(value); - // TODO: Another silent failure? - if (typeof value !== 'number') { - return mom; - } + res.months = other.month() - base.month() + + (other.year() - base.year()) * 12; + if (base.clone().add(res.months, 'M').isAfter(other)) { + --res.months; } - dayOfMonth = Math.min(mom.date(), - daysInMonth(mom.year(), value)); - mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); - return mom; - } + res.milliseconds = +other - +(base.clone().add(res.months, 'M')); - function rawGetter(mom, unit) { - return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit](); + return res; } - function rawSetter(mom, unit, value) { - if (unit === 'Month') { - return rawMonthSetter(mom, value); + function momentsDifference(base, other) { + var res; + other = makeAs(other, base); + if (base.isBefore(other)) { + res = positiveMomentsDifference(base, other); } else { - return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); + res = positiveMomentsDifference(other, base); + res.milliseconds = -res.milliseconds; + res.months = -res.months; } + + return res; } - function makeAccessor(unit, keepTime) { - return function (value) { - if (value != null) { - rawSetter(this, unit, value); - moment.updateOffset(this, keepTime); - return this; - } else { - return rawGetter(this, unit); + // TODO: remove 'name' arg after deprecation is removed + function createAdder(direction, name) { + return function (val, period) { + var dur, tmp; + //invert the arguments, but complain about it + if (period !== null && !isNaN(+period)) { + deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period).'); + tmp = val; val = period; period = tmp; } + + val = typeof val === 'string' ? +val : val; + dur = moment.duration(val, period); + addOrSubtractDurationFromMoment(this, dur, direction); + return this; }; } - moment.fn.millisecond = moment.fn.milliseconds = makeAccessor('Milliseconds', false); - moment.fn.second = moment.fn.seconds = makeAccessor('Seconds', false); - moment.fn.minute = moment.fn.minutes = makeAccessor('Minutes', false); - // Setting the hour should keep the time, because the user explicitly - // specified which hour he wants. So trying to maintain the same hour (in - // a new timezone) makes sense. Adding/subtracting hours does not follow - // this rule. - moment.fn.hour = moment.fn.hours = makeAccessor('Hours', true); - // moment.fn.month is defined separately - moment.fn.date = makeAccessor('Date', true); - moment.fn.dates = deprecate('dates accessor is deprecated. Use date instead.', makeAccessor('Date', true)); - moment.fn.year = makeAccessor('FullYear', true); - moment.fn.years = deprecate('years accessor is deprecated. Use year instead.', makeAccessor('FullYear', true)); - - // add plural methods - moment.fn.days = moment.fn.day; - moment.fn.months = moment.fn.month; - moment.fn.weeks = moment.fn.week; - moment.fn.isoWeeks = moment.fn.isoWeek; - moment.fn.quarters = moment.fn.quarter; - - // add aliased format methods - moment.fn.toJSON = moment.fn.toISOString; - - // alias isUtc for dev-friendliness - moment.fn.isUTC = moment.fn.isUtc; + function addOrSubtractDurationFromMoment(mom, duration, isAdding, updateOffset) { + var milliseconds = duration._milliseconds, + days = duration._days, + months = duration._months; + updateOffset = updateOffset == null ? true : updateOffset; - /************************************ - Duration Prototype - ************************************/ + if (milliseconds) { + mom._d.setTime(+mom._d + milliseconds * isAdding); + } + if (days) { + rawSetter(mom, 'Date', rawGetter(mom, 'Date') + days * isAdding); + } + if (months) { + rawMonthSetter(mom, rawGetter(mom, 'Month') + months * isAdding); + } + if (updateOffset) { + moment.updateOffset(mom, days || months); + } + } + // check if is an array + function isArray(input) { + return Object.prototype.toString.call(input) === '[object Array]'; + } - function daysToYears (days) { - // 400 years have 146097 days (taking into account leap year rules) - return days * 400 / 146097; + function isDate(input) { + return Object.prototype.toString.call(input) === '[object Date]' || + input instanceof Date; } - function yearsToDays (years) { - // years * 365 + absRound(years / 4) - - // absRound(years / 100) + absRound(years / 400); - return years * 146097 / 400; + // compare two arrays, return the number of differences + function compareArrays(array1, array2, dontConvert) { + var len = Math.min(array1.length, array2.length), + lengthDiff = Math.abs(array1.length - array2.length), + diffs = 0, + i; + for (i = 0; i < len; i++) { + if ((dontConvert && array1[i] !== array2[i]) || + (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { + diffs++; + } + } + return diffs + lengthDiff; } - extend(moment.duration.fn = Duration.prototype, { + function normalizeUnits(units) { + if (units) { + var lowered = units.toLowerCase().replace(/(.)s$/, '$1'); + units = unitAliases[units] || camelFunctions[lowered] || lowered; + } + return units; + } - _bubble : function () { - var milliseconds = this._milliseconds, - days = this._days, - months = this._months, - data = this._data, - seconds, minutes, hours, years = 0; + function normalizeObjectUnits(inputObject) { + var normalizedInput = {}, + normalizedProp, + prop; - // The following code bubbles up values, see the tests for - // examples of what that means. - data.milliseconds = milliseconds % 1000; + for (prop in inputObject) { + if (hasOwnProp(inputObject, prop)) { + normalizedProp = normalizeUnits(prop); + if (normalizedProp) { + normalizedInput[normalizedProp] = inputObject[prop]; + } + } + } - seconds = absRound(milliseconds / 1000); - data.seconds = seconds % 60; + return normalizedInput; + } - minutes = absRound(seconds / 60); - data.minutes = minutes % 60; + function makeList(field) { + var count, setter; - hours = absRound(minutes / 60); - data.hours = hours % 24; + if (field.indexOf('week') === 0) { + count = 7; + setter = 'day'; + } + else if (field.indexOf('month') === 0) { + count = 12; + setter = 'month'; + } + else { + return; + } - days += absRound(hours / 24); + moment[field] = function (format, index) { + var i, getter, + method = moment._locale[field], + results = []; - // Accurately convert days to years, assume start from year 0. - years = absRound(daysToYears(days)); - days -= absRound(yearsToDays(years)); + if (typeof format === 'number') { + index = format; + format = undefined; + } - // 30 days to a month - // TODO (iskren): Use anchor date (like 1st Jan) to compute this. - months += absRound(days / 30); - days %= 30; + getter = function (i) { + var m = moment().utc().set(setter, i); + return method.call(moment._locale, m, format || ''); + }; - // 12 months -> 1 year - years += absRound(months / 12); - months %= 12; + if (index != null) { + return getter(index); + } + else { + for (i = 0; i < count; i++) { + results.push(getter(i)); + } + return results; + } + }; + } - data.days = days; - data.months = months; - data.years = years; - }, + function toInt(argumentForCoercion) { + var coercedNumber = +argumentForCoercion, + value = 0; - abs : function () { - this._milliseconds = Math.abs(this._milliseconds); - this._days = Math.abs(this._days); - this._months = Math.abs(this._months); + if (coercedNumber !== 0 && isFinite(coercedNumber)) { + if (coercedNumber >= 0) { + value = Math.floor(coercedNumber); + } else { + value = Math.ceil(coercedNumber); + } + } - this._data.milliseconds = Math.abs(this._data.milliseconds); - this._data.seconds = Math.abs(this._data.seconds); - this._data.minutes = Math.abs(this._data.minutes); - this._data.hours = Math.abs(this._data.hours); - this._data.months = Math.abs(this._data.months); - this._data.years = Math.abs(this._data.years); + return value; + } - return this; - }, + function daysInMonth(year, month) { + return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); + } - weeks : function () { - return absRound(this.days() / 7); - }, + function weeksInYear(year, dow, doy) { + return weekOfYear(moment([year, 11, 31 + dow - doy]), dow, doy).week; + } - valueOf : function () { - return this._milliseconds + - this._days * 864e5 + - (this._months % 12) * 2592e6 + - toInt(this._months / 12) * 31536e6; - }, + function daysInYear(year) { + return isLeapYear(year) ? 366 : 365; + } - humanize : function (withSuffix) { - var output = relativeTime(this, !withSuffix, this.localeData()); + function isLeapYear(year) { + return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; + } - if (withSuffix) { - output = this.localeData().pastFuture(+this, output); + function checkOverflow(m) { + var overflow; + if (m._a && m._pf.overflow === -2) { + overflow = + m._a[MONTH] < 0 || m._a[MONTH] > 11 ? MONTH : + m._a[DATE] < 1 || m._a[DATE] > daysInMonth(m._a[YEAR], m._a[MONTH]) ? DATE : + m._a[HOUR] < 0 || m._a[HOUR] > 24 || + (m._a[HOUR] === 24 && (m._a[MINUTE] !== 0 || + m._a[SECOND] !== 0 || + m._a[MILLISECOND] !== 0)) ? HOUR : + m._a[MINUTE] < 0 || m._a[MINUTE] > 59 ? MINUTE : + m._a[SECOND] < 0 || m._a[SECOND] > 59 ? SECOND : + m._a[MILLISECOND] < 0 || m._a[MILLISECOND] > 999 ? MILLISECOND : + -1; + + if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { + overflow = DATE; } - return this.localeData().postformat(output); - }, + m._pf.overflow = overflow; + } + } - add : function (input, val) { - // supports only 2.0-style add(1, 's') or add(moment) - var dur = moment.duration(input, val); + function isValid(m) { + if (m._isValid == null) { + m._isValid = !isNaN(m._d.getTime()) && + m._pf.overflow < 0 && + !m._pf.empty && + !m._pf.invalidMonth && + !m._pf.nullInput && + !m._pf.invalidFormat && + !m._pf.userInvalidated; - this._milliseconds += dur._milliseconds; - this._days += dur._days; - this._months += dur._months; + if (m._strict) { + m._isValid = m._isValid && + m._pf.charsLeftOver === 0 && + m._pf.unusedTokens.length === 0 && + m._pf.bigHour === undefined; + } + } + return m._isValid; + } - this._bubble(); + function normalizeLocale(key) { + return key ? key.toLowerCase().replace('_', '-') : key; + } - return this; - }, + // pick the locale from the array + // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each + // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root + function chooseLocale(names) { + var i = 0, j, next, locale, split; - subtract : function (input, val) { - var dur = moment.duration(input, val); + while (i < names.length) { + split = normalizeLocale(names[i]).split('-'); + j = split.length; + next = normalizeLocale(names[i + 1]); + next = next ? next.split('-') : null; + while (j > 0) { + locale = loadLocale(split.slice(0, j).join('-')); + if (locale) { + return locale; + } + if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { + //the next array item is better than a shallower substring of this one + break; + } + j--; + } + i++; + } + return null; + } - this._milliseconds -= dur._milliseconds; - this._days -= dur._days; - this._months -= dur._months; + function loadLocale(name) { + var oldLocale = null; + if (!locales[name] && hasModule) { + try { + oldLocale = moment.locale(); + !(function webpackMissingModule() { var e = new Error("Cannot find module \"./locale\""); e.code = 'MODULE_NOT_FOUND'; throw e; }()); + // because defineLocale currently also sets the global locale, we want to undo that for lazy loaded locales + moment.locale(oldLocale); + } catch (e) { } + } + return locales[name]; + } - this._bubble(); + // Return a moment from input, that is local/utc/utcOffset equivalent to + // model. + function makeAs(input, model) { + var res, diff; + if (model._isUTC) { + res = model.clone(); + diff = (moment.isMoment(input) || isDate(input) ? + +input : +moment(input)) - (+res); + // Use low-level api, because this fn is low-level api. + res._d.setTime(+res._d + diff); + moment.updateOffset(res, false); + return res; + } else { + return moment(input).local(); + } + } - return this; - }, + /************************************ + Locale + ************************************/ - get : function (units) { - units = normalizeUnits(units); - return this[units.toLowerCase() + 's'](); - }, - as : function (units) { - var days, months; - units = normalizeUnits(units); + extend(Locale.prototype, { - if (units === 'month' || units === 'year') { - days = this._days + this._milliseconds / 864e5; - months = this._months + daysToYears(days) * 12; - return units === 'month' ? months : months / 12; - } else { - // handle milliseconds separately because of floating point math errors (issue #1867) - days = this._days + Math.round(yearsToDays(this._months / 12)); - switch (units) { - case 'week': return days / 7 + this._milliseconds / 6048e5; - case 'day': return days + this._milliseconds / 864e5; - case 'hour': return days * 24 + this._milliseconds / 36e5; - case 'minute': return days * 24 * 60 + this._milliseconds / 6e4; - case 'second': return days * 24 * 60 * 60 + this._milliseconds / 1000; - // Math.floor prevents floating point math errors here - case 'millisecond': return Math.floor(days * 24 * 60 * 60 * 1000) + this._milliseconds; - default: throw new Error('Unknown unit ' + units); + set : function (config) { + var prop, i; + for (i in config) { + prop = config[i]; + if (typeof prop === 'function') { + this[i] = prop; + } else { + this['_' + i] = prop; } } + // Lenient ordinal parsing accepts just a number in addition to + // number + (possibly) stuff coming from _ordinalParseLenient. + this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + /\d{1,2}/.source); }, - lang : moment.fn.lang, - locale : moment.fn.locale, + _months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), + months : function (m) { + return this._months[m.month()]; + }, - toIsoString : deprecate( - 'toIsoString() is deprecated. Please use toISOString() instead ' + - '(notice the capitals)', - function () { - return this.toISOString(); - } - ), + _monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + monthsShort : function (m) { + return this._monthsShort[m.month()]; + }, - toISOString : function () { - // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js - var years = Math.abs(this.years()), - months = Math.abs(this.months()), - days = Math.abs(this.days()), - hours = Math.abs(this.hours()), - minutes = Math.abs(this.minutes()), - seconds = Math.abs(this.seconds() + this.milliseconds() / 1000); + monthsParse : function (monthName, format, strict) { + var i, mom, regex; - if (!this.asSeconds()) { - // this is the same as C#'s (Noda) and python (isodate)... - // but not other JS (goog.date) - return 'P0D'; + if (!this._monthsParse) { + this._monthsParse = []; + this._longMonthsParse = []; + this._shortMonthsParse = []; } - return (this.asSeconds() < 0 ? '-' : '') + - 'P' + - (years ? years + 'Y' : '') + - (months ? months + 'M' : '') + - (days ? days + 'D' : '') + - ((hours || minutes || seconds) ? 'T' : '') + - (hours ? hours + 'H' : '') + - (minutes ? minutes + 'M' : '') + - (seconds ? seconds + 'S' : ''); + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + mom = moment.utc([2000, i]); + if (strict && !this._longMonthsParse[i]) { + this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); + this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); + } + if (!strict && !this._monthsParse[i]) { + regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); + this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { + return i; + } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { + return i; + } else if (!strict && this._monthsParse[i].test(monthName)) { + return i; + } + } }, - localeData : function () { - return this._locale; + _weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), + weekdays : function (m) { + return this._weekdays[m.day()]; }, - toJSON : function () { - return this.toISOString(); - } - }); - - moment.duration.fn.toString = moment.duration.fn.toISOString; - - function makeDurationGetter(name) { - moment.duration.fn[name] = function () { - return this._data[name]; - }; - } - - for (i in unitMillisecondFactors) { - if (hasOwnProp(unitMillisecondFactors, i)) { - makeDurationGetter(i.toLowerCase()); - } - } - - moment.duration.fn.asMilliseconds = function () { - return this.as('ms'); - }; - moment.duration.fn.asSeconds = function () { - return this.as('s'); - }; - moment.duration.fn.asMinutes = function () { - return this.as('m'); - }; - moment.duration.fn.asHours = function () { - return this.as('h'); - }; - moment.duration.fn.asDays = function () { - return this.as('d'); - }; - moment.duration.fn.asWeeks = function () { - return this.as('weeks'); - }; - moment.duration.fn.asMonths = function () { - return this.as('M'); - }; - moment.duration.fn.asYears = function () { - return this.as('y'); - }; + _weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysShort : function (m) { + return this._weekdaysShort[m.day()]; + }, - /************************************ - Default Locale - ************************************/ + _weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + weekdaysMin : function (m) { + return this._weekdaysMin[m.day()]; + }, + weekdaysParse : function (weekdayName) { + var i, mom, regex; - // Set default locale, other locale will inherit from English. - moment.locale('en', { - ordinalParse: /\d{1,2}(th|st|nd|rd)/, - ordinal : function (number) { - var b = number % 10, - output = (toInt(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - } - }); + if (!this._weekdaysParse) { + this._weekdaysParse = []; + } - /* EMBED_LOCALES */ + for (i = 0; i < 7; i++) { + // make the regex if we don't have it already + if (!this._weekdaysParse[i]) { + mom = moment([2000, 1]).day(i); + regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); + this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (this._weekdaysParse[i].test(weekdayName)) { + return i; + } + } + }, - /************************************ - Exposing Moment - ************************************/ + _longDateFormat : { + LTS : 'h:mm:ss A', + LT : 'h:mm A', + L : 'MM/DD/YYYY', + LL : 'MMMM D, YYYY', + LLL : 'MMMM D, YYYY LT', + LLLL : 'dddd, MMMM D, YYYY LT' + }, + longDateFormat : function (key) { + var output = this._longDateFormat[key]; + if (!output && this._longDateFormat[key.toUpperCase()]) { + output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) { + return val.slice(1); + }); + this._longDateFormat[key] = output; + } + return output; + }, - function makeGlobal(shouldDeprecate) { - /*global ender:false */ - if (typeof ender !== 'undefined') { - return; - } - oldGlobalMoment = globalScope.moment; - if (shouldDeprecate) { - globalScope.moment = deprecate( - 'Accessing Moment through the global scope is ' + - 'deprecated, and will be removed in an upcoming ' + - 'release.', - moment); - } else { - globalScope.moment = moment; - } - } + isPM : function (input) { + // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays + // Using charAt should be more compatible. + return ((input + '').toLowerCase().charAt(0) === 'p'); + }, - // CommonJS module is defined - if (hasModule) { - module.exports = moment; - } else if (true) { - !(__WEBPACK_AMD_DEFINE_RESULT__ = function (require, exports, module) { - if (module.config && module.config() && module.config().noGlobal === true) { - // release the global variable - globalScope.moment = oldGlobalMoment; + _meridiemParse : /[ap]\.?m?\.?/i, + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'pm' : 'PM'; + } else { + return isLower ? 'am' : 'AM'; } + }, - return moment; - }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - makeGlobal(true); - } else { - makeGlobal(); - } - }).call(this); - - /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(71)(module))) - -/***/ }, -/* 59 */ -/***/ function(module, exports, __webpack_require__) { - var __WEBPACK_AMD_DEFINE_RESULT__;/*! Hammer.JS - v1.1.3 - 2014-05-20 - * http://eightmedia.github.io/hammer.js - * - * Copyright (c) 2014 Jorik Tangelder ; - * Licensed under the MIT license */ + _calendar : { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }, + calendar : function (key, mom, now) { + var output = this._calendar[key]; + return typeof output === 'function' ? output.apply(mom, [now]) : output; + }, - (function(window, undefined) { - 'use strict'; + _relativeTime : { + future : 'in %s', + past : '%s ago', + s : 'a few seconds', + m : 'a minute', + mm : '%d minutes', + h : 'an hour', + hh : '%d hours', + d : 'a day', + dd : '%d days', + M : 'a month', + MM : '%d months', + y : 'a year', + yy : '%d years' + }, - /** - * @main - * @module hammer - * - * @class Hammer - * @static - */ + relativeTime : function (number, withoutSuffix, string, isFuture) { + var output = this._relativeTime[string]; + return (typeof output === 'function') ? + output(number, withoutSuffix, string, isFuture) : + output.replace(/%d/i, number); + }, - /** - * Hammer, use this to create instances - * ```` - * var hammertime = new Hammer(myElement); - * ```` - * - * @method Hammer - * @param {HTMLElement} element - * @param {Object} [options={}] - * @return {Hammer.Instance} - */ - var Hammer = function Hammer(element, options) { - return new Hammer.Instance(element, options || {}); - }; + pastFuture : function (diff, output) { + var format = this._relativeTime[diff > 0 ? 'future' : 'past']; + return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); + }, - /** - * version, as defined in package.json - * the value will be set at each build - * @property VERSION - * @final - * @type {String} - */ - Hammer.VERSION = '1.1.3'; + ordinal : function (number) { + return this._ordinal.replace('%d', number); + }, + _ordinal : '%d', + _ordinalParse : /\d{1,2}/, - /** - * default settings. - * more settings are defined per gesture at `/gestures`. Each gesture can be disabled/enabled - * by setting it's name (like `swipe`) to false. - * You can set the defaults for all instances by changing this object before creating an instance. - * @example - * ```` - * Hammer.defaults.drag = false; - * Hammer.defaults.behavior.touchAction = 'pan-y'; - * delete Hammer.defaults.behavior.userSelect; - * ```` - * @property defaults - * @type {Object} - */ - Hammer.defaults = { - /** - * this setting object adds styles and attributes to the element to prevent the browser from doing - * its native behavior. The css properties are auto prefixed for the browsers when needed. - * @property defaults.behavior - * @type {Object} - */ - behavior: { - /** - * Disables text selection to improve the dragging gesture. When the value is `none` it also sets - * `onselectstart=false` for IE on the element. Mainly for desktop browsers. - * @property defaults.behavior.userSelect - * @type {String} - * @default 'none' - */ - userSelect: 'none', + preparse : function (string) { + return string; + }, - /** - * Specifies whether and how a given region can be manipulated by the user (for instance, by panning or zooming). - * Used by Chrome 35> and IE10>. By default this makes the element blocking any touch event. - * @property defaults.behavior.touchAction - * @type {String} - * @default: 'pan-y' - */ - touchAction: 'pan-y', + postformat : function (string) { + return string; + }, - /** - * Disables the default callout shown when you touch and hold a touch target. - * On iOS, when you touch and hold a touch target such as a link, Safari displays - * a callout containing information about the link. This property allows you to disable that callout. - * @property defaults.behavior.touchCallout - * @type {String} - * @default 'none' - */ - touchCallout: 'none', + week : function (mom) { + return weekOfYear(mom, this._week.dow, this._week.doy).week; + }, - /** - * Specifies whether zooming is enabled. Used by IE10> - * @property defaults.behavior.contentZooming - * @type {String} - * @default 'none' - */ - contentZooming: 'none', + _week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + }, - /** - * Specifies that an entire element should be draggable instead of its contents. - * Mainly for desktop browsers. - * @property defaults.behavior.userDrag - * @type {String} - * @default 'none' - */ - userDrag: 'none', + firstDayOfWeek : function () { + return this._week.dow; + }, - /** - * Overrides the highlight color shown when the user taps a link or a JavaScript - * clickable element in Safari on iPhone. This property obeys the alpha value, if specified. - * - * If you don't specify an alpha value, Safari on iPhone applies a default alpha value - * to the color. To disable tap highlighting, set the alpha value to 0 (invisible). - * If you set the alpha value to 1.0 (opaque), the element is not visible when tapped. - * @property defaults.behavior.tapHighlightColor - * @type {String} - * @default 'rgba(0,0,0,0)' - */ - tapHighlightColor: 'rgba(0,0,0,0)' - } - }; + firstDayOfYear : function () { + return this._week.doy; + }, - /** - * hammer document where the base events are added at - * @property DOCUMENT - * @type {HTMLElement} - * @default window.document - */ - Hammer.DOCUMENT = document; + _invalidDate: 'Invalid date', + invalidDate: function () { + return this._invalidDate; + } + }); - /** - * detect support for pointer events - * @property HAS_POINTEREVENTS - * @type {Boolean} - */ - Hammer.HAS_POINTEREVENTS = navigator.pointerEnabled || navigator.msPointerEnabled; + /************************************ + Formatting + ************************************/ - /** - * detect support for touch events - * @property HAS_TOUCHEVENTS - * @type {Boolean} - */ - Hammer.HAS_TOUCHEVENTS = ('ontouchstart' in window); - /** - * detect mobile browsers - * @property IS_MOBILE - * @type {Boolean} - */ - Hammer.IS_MOBILE = /mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent); + function removeFormattingTokens(input) { + if (input.match(/\[[\s\S]/)) { + return input.replace(/^\[|\]$/g, ''); + } + return input.replace(/\\/g, ''); + } - /** - * detect if we want to support mouseevents at all - * @property NO_MOUSEEVENTS - * @type {Boolean} - */ - Hammer.NO_MOUSEEVENTS = (Hammer.HAS_TOUCHEVENTS && Hammer.IS_MOBILE) || Hammer.HAS_POINTEREVENTS; + function makeFormatFunction(format) { + var array = format.match(formattingTokens), i, length; - /** - * interval in which Hammer recalculates current velocity/direction/angle in ms - * @property CALCULATE_INTERVAL - * @type {Number} - * @default 25 - */ - Hammer.CALCULATE_INTERVAL = 25; + for (i = 0, length = array.length; i < length; i++) { + if (formatTokenFunctions[array[i]]) { + array[i] = formatTokenFunctions[array[i]]; + } else { + array[i] = removeFormattingTokens(array[i]); + } + } - /** - * eventtypes per touchevent (start, move, end) are filled by `Event.determineEventTypes` on `setup` - * the object contains the DOM event names per type (`EVENT_START`, `EVENT_MOVE`, `EVENT_END`) - * @property EVENT_TYPES - * @private - * @writeOnce - * @type {Object} - */ - var EVENT_TYPES = {}; + return function (mom) { + var output = ''; + for (i = 0; i < length; i++) { + output += array[i] instanceof Function ? array[i].call(mom, format) : array[i]; + } + return output; + }; + } - /** - * direction strings, for safe comparisons - * @property DIRECTION_DOWN|LEFT|UP|RIGHT - * @final - * @type {String} - * @default 'down' 'left' 'up' 'right' - */ - var DIRECTION_DOWN = Hammer.DIRECTION_DOWN = 'down'; - var DIRECTION_LEFT = Hammer.DIRECTION_LEFT = 'left'; - var DIRECTION_UP = Hammer.DIRECTION_UP = 'up'; - var DIRECTION_RIGHT = Hammer.DIRECTION_RIGHT = 'right'; + // format date using native date object + function formatMoment(m, format) { + if (!m.isValid()) { + return m.localeData().invalidDate(); + } - /** - * pointertype strings, for safe comparisons - * @property POINTER_MOUSE|TOUCH|PEN - * @final - * @type {String} - * @default 'mouse' 'touch' 'pen' - */ - var POINTER_MOUSE = Hammer.POINTER_MOUSE = 'mouse'; - var POINTER_TOUCH = Hammer.POINTER_TOUCH = 'touch'; - var POINTER_PEN = Hammer.POINTER_PEN = 'pen'; + format = expandFormat(format, m.localeData()); - /** - * eventtypes - * @property EVENT_START|MOVE|END|RELEASE|TOUCH - * @final - * @type {String} - * @default 'start' 'change' 'move' 'end' 'release' 'touch' - */ - var EVENT_START = Hammer.EVENT_START = 'start'; - var EVENT_MOVE = Hammer.EVENT_MOVE = 'move'; - var EVENT_END = Hammer.EVENT_END = 'end'; - var EVENT_RELEASE = Hammer.EVENT_RELEASE = 'release'; - var EVENT_TOUCH = Hammer.EVENT_TOUCH = 'touch'; + if (!formatFunctions[format]) { + formatFunctions[format] = makeFormatFunction(format); + } - /** - * if the window events are set... - * @property READY - * @writeOnce - * @type {Boolean} - * @default false - */ - Hammer.READY = false; + return formatFunctions[format](m); + } - /** - * plugins namespace - * @property plugins - * @type {Object} - */ - Hammer.plugins = Hammer.plugins || {}; + function expandFormat(format, locale) { + var i = 5; - /** - * gestures namespace - * see `/gestures` for the definitions - * @property gestures - * @type {Object} - */ - Hammer.gestures = Hammer.gestures || {}; + function replaceLongDateFormatTokens(input) { + return locale.longDateFormat(input) || input; + } - /** - * setup events to detect gestures on the document - * this function is called when creating an new instance - * @private - */ - function setup() { - if(Hammer.READY) { - return; + localFormattingTokens.lastIndex = 0; + while (i >= 0 && localFormattingTokens.test(format)) { + format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); + localFormattingTokens.lastIndex = 0; + i -= 1; + } + + return format; + } + + + /************************************ + Parsing + ************************************/ + + + // get the regex to find the next token + function getParseRegexForToken(token, config) { + var a, strict = config._strict; + switch (token) { + case 'Q': + return parseTokenOneDigit; + case 'DDDD': + return parseTokenThreeDigits; + case 'YYYY': + case 'GGGG': + case 'gggg': + return strict ? parseTokenFourDigits : parseTokenOneToFourDigits; + case 'Y': + case 'G': + case 'g': + return parseTokenSignedNumber; + case 'YYYYYY': + case 'YYYYY': + case 'GGGGG': + case 'ggggg': + return strict ? parseTokenSixDigits : parseTokenOneToSixDigits; + case 'S': + if (strict) { + return parseTokenOneDigit; + } + /* falls through */ + case 'SS': + if (strict) { + return parseTokenTwoDigits; + } + /* falls through */ + case 'SSS': + if (strict) { + return parseTokenThreeDigits; + } + /* falls through */ + case 'DDD': + return parseTokenOneToThreeDigits; + case 'MMM': + case 'MMMM': + case 'dd': + case 'ddd': + case 'dddd': + return parseTokenWord; + case 'a': + case 'A': + return config._locale._meridiemParse; + case 'x': + return parseTokenOffsetMs; + case 'X': + return parseTokenTimestampMs; + case 'Z': + case 'ZZ': + return parseTokenTimezone; + case 'T': + return parseTokenT; + case 'SSSS': + return parseTokenDigits; + case 'MM': + case 'DD': + case 'YY': + case 'GG': + case 'gg': + case 'HH': + case 'hh': + case 'mm': + case 'ss': + case 'ww': + case 'WW': + return strict ? parseTokenTwoDigits : parseTokenOneOrTwoDigits; + case 'M': + case 'D': + case 'd': + case 'H': + case 'h': + case 'm': + case 's': + case 'w': + case 'W': + case 'e': + case 'E': + return parseTokenOneOrTwoDigits; + case 'Do': + return strict ? config._locale._ordinalParse : config._locale._ordinalParseLenient; + default : + a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), 'i')); + return a; + } + } + + function utcOffsetFromString(string) { + string = string || ''; + var possibleTzMatches = (string.match(parseTokenTimezone) || []), + tzChunk = possibleTzMatches[possibleTzMatches.length - 1] || [], + parts = (tzChunk + '').match(parseTimezoneChunker) || ['-', 0, 0], + minutes = +(parts[1] * 60) + toInt(parts[2]); + + return parts[0] === '+' ? minutes : -minutes; + } + + // function to convert string input to date + function addTimeToArrayFromToken(token, input, config) { + var a, datePartArray = config._a; + + switch (token) { + // QUARTER + case 'Q': + if (input != null) { + datePartArray[MONTH] = (toInt(input) - 1) * 3; + } + break; + // MONTH + case 'M' : // fall through to MM + case 'MM' : + if (input != null) { + datePartArray[MONTH] = toInt(input) - 1; + } + break; + case 'MMM' : // fall through to MMMM + case 'MMMM' : + a = config._locale.monthsParse(input, token, config._strict); + // if we didn't find a month name, mark the date as invalid. + if (a != null) { + datePartArray[MONTH] = a; + } else { + config._pf.invalidMonth = input; + } + break; + // DAY OF MONTH + case 'D' : // fall through to DD + case 'DD' : + if (input != null) { + datePartArray[DATE] = toInt(input); + } + break; + case 'Do' : + if (input != null) { + datePartArray[DATE] = toInt(parseInt( + input.match(/\d{1,2}/)[0], 10)); + } + break; + // DAY OF YEAR + case 'DDD' : // fall through to DDDD + case 'DDDD' : + if (input != null) { + config._dayOfYear = toInt(input); + } + + break; + // YEAR + case 'YY' : + datePartArray[YEAR] = moment.parseTwoDigitYear(input); + break; + case 'YYYY' : + case 'YYYYY' : + case 'YYYYYY' : + datePartArray[YEAR] = toInt(input); + break; + // AM / PM + case 'a' : // fall through to A + case 'A' : + config._meridiem = input; + // config._isPm = config._locale.isPM(input); + break; + // HOUR + case 'h' : // fall through to hh + case 'hh' : + config._pf.bigHour = true; + /* falls through */ + case 'H' : // fall through to HH + case 'HH' : + datePartArray[HOUR] = toInt(input); + break; + // MINUTE + case 'm' : // fall through to mm + case 'mm' : + datePartArray[MINUTE] = toInt(input); + break; + // SECOND + case 's' : // fall through to ss + case 'ss' : + datePartArray[SECOND] = toInt(input); + break; + // MILLISECOND + case 'S' : + case 'SS' : + case 'SSS' : + case 'SSSS' : + datePartArray[MILLISECOND] = toInt(('0.' + input) * 1000); + break; + // UNIX OFFSET (MILLISECONDS) + case 'x': + config._d = new Date(toInt(input)); + break; + // UNIX TIMESTAMP WITH MS + case 'X': + config._d = new Date(parseFloat(input) * 1000); + break; + // TIMEZONE + case 'Z' : // fall through to ZZ + case 'ZZ' : + config._useUTC = true; + config._tzm = utcOffsetFromString(input); + break; + // WEEKDAY - human + case 'dd': + case 'ddd': + case 'dddd': + a = config._locale.weekdaysParse(input); + // if we didn't get a weekday name, mark the date as invalid + if (a != null) { + config._w = config._w || {}; + config._w['d'] = a; + } else { + config._pf.invalidWeekday = input; + } + break; + // WEEK, WEEK DAY - numeric + case 'w': + case 'ww': + case 'W': + case 'WW': + case 'd': + case 'e': + case 'E': + token = token.substr(0, 1); + /* falls through */ + case 'gggg': + case 'GGGG': + case 'GGGGG': + token = token.substr(0, 2); + if (input) { + config._w = config._w || {}; + config._w[token] = toInt(input); + } + break; + case 'gg': + case 'GG': + config._w = config._w || {}; + config._w[token] = moment.parseTwoDigitYear(input); + } } - // find what eventtypes we add listeners to - Event.determineEventTypes(); + function dayOfYearFromWeekInfo(config) { + var w, weekYear, week, weekday, dow, doy, temp; - // Register all gestures inside Hammer.gestures - Utils.each(Hammer.gestures, function(gesture) { - Detection.register(gesture); - }); + w = config._w; + if (w.GG != null || w.W != null || w.E != null) { + dow = 1; + doy = 4; - // Add touch events on the document - Event.onTouch(Hammer.DOCUMENT, EVENT_MOVE, Detection.detect); - Event.onTouch(Hammer.DOCUMENT, EVENT_END, Detection.detect); + // TODO: We need to take the current isoWeekYear, but that depends on + // how we interpret now (local, utc, fixed offset). So create + // a now version of current config (take local/utc/offset flags, and + // create now). + weekYear = dfl(w.GG, config._a[YEAR], weekOfYear(moment(), 1, 4).year); + week = dfl(w.W, 1); + weekday = dfl(w.E, 1); + } else { + dow = config._locale._week.dow; + doy = config._locale._week.doy; - // Hammer is ready...! - Hammer.READY = true; - } + weekYear = dfl(w.gg, config._a[YEAR], weekOfYear(moment(), dow, doy).year); + week = dfl(w.w, 1); - /** - * @module hammer - * - * @class Utils - * @static - */ - var Utils = Hammer.utils = { - /** - * extend method, could also be used for cloning when `dest` is an empty object. - * changes the dest object - * @method extend - * @param {Object} dest - * @param {Object} src - * @param {Boolean} [merge=false] do a merge - * @return {Object} dest - */ - extend: function extend(dest, src, merge) { - for(var key in src) { - if(!src.hasOwnProperty(key) || (dest[key] !== undefined && merge)) { - continue; + if (w.d != null) { + // weekday -- low day numbers are considered next week + weekday = w.d; + if (weekday < dow) { + ++week; + } + } else if (w.e != null) { + // local weekday -- counting starts from begining of week + weekday = w.e + dow; + } else { + // default to begining of week + weekday = dow; } - dest[key] = src[key]; } - return dest; - }, + temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow); - /** - * simple addEventListener wrapper - * @method on - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - */ - on: function on(element, type, handler) { - element.addEventListener(type, handler, false); - }, + config._a[YEAR] = temp.year; + config._dayOfYear = temp.dayOfYear; + } - /** - * simple removeEventListener wrapper - * @method off - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - */ - off: function off(element, type, handler) { - element.removeEventListener(type, handler, false); - }, + // convert an array to a date. + // the array should mirror the parameters below + // note: all values past the year are optional and will default to the lowest possible value. + // [year, month, day , hour, minute, second, millisecond] + function dateFromConfig(config) { + var i, date, input = [], currentDate, yearToUse; - /** - * forEach over arrays and objects - * @method each - * @param {Object|Array} obj - * @param {Function} iterator - * @param {any} iterator.item - * @param {Number} iterator.index - * @param {Object|Array} iterator.obj the source object - * @param {Object} context value to use as `this` in the iterator - */ - each: function each(obj, iterator, context) { - var i, len; + if (config._d) { + return; + } - // native forEach on arrays - if('forEach' in obj) { - obj.forEach(iterator, context); - // arrays - } else if(obj.length !== undefined) { - for(i = 0, len = obj.length; i < len; i++) { - if(iterator.call(context, obj[i], i, obj) === false) { - return; - } - } - // objects - } else { - for(i in obj) { - if(obj.hasOwnProperty(i) && - iterator.call(context, obj[i], i, obj) === false) { - return; - } - } + currentDate = currentDateArray(config); + + //compute day of the year from weeks and weekdays + if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { + dayOfYearFromWeekInfo(config); } - }, - /** - * find if a string contains the string using indexOf - * @method inStr - * @param {String} src - * @param {String} find - * @return {Boolean} found - */ - inStr: function inStr(src, find) { - return src.indexOf(find) > -1; - }, + //if the day of the year is set, figure out what it is + if (config._dayOfYear) { + yearToUse = dfl(config._a[YEAR], currentDate[YEAR]); - /** - * find if a array contains the object using indexOf or a simple polyfill - * @method inArray - * @param {String} src - * @param {String} find - * @return {Boolean|Number} false when not found, or the index - */ - inArray: function inArray(src, find) { - if(src.indexOf) { - var index = src.indexOf(find); - return (index === -1) ? false : index; - } else { - for(var i = 0, len = src.length; i < len; i++) { - if(src[i] === find) { - return i; - } + if (config._dayOfYear > daysInYear(yearToUse)) { + config._pf._overflowDayOfYear = true; } - return false; + + date = makeUTCDate(yearToUse, 0, config._dayOfYear); + config._a[MONTH] = date.getUTCMonth(); + config._a[DATE] = date.getUTCDate(); } - }, - /** - * convert an array-like object (`arguments`, `touchlist`) to an array - * @method toArray - * @param {Object} obj - * @return {Array} - */ - toArray: function toArray(obj) { - return Array.prototype.slice.call(obj, 0); - }, + // Default to current date. + // * if no year, month, day of month are given, default to today + // * if day of month is given, default month and year + // * if month is given, default only year + // * if year is given, don't default anything + for (i = 0; i < 3 && config._a[i] == null; ++i) { + config._a[i] = input[i] = currentDate[i]; + } - /** - * find if a node is in the given parent - * @method hasParent - * @param {HTMLElement} node - * @param {HTMLElement} parent - * @return {Boolean} found - */ - hasParent: function hasParent(node, parent) { - while(node) { - if(node == parent) { - return true; - } - node = node.parentNode; + // Zero out whatever was not defaulted, including time + for (; i < 7; i++) { + config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; } - return false; - }, - /** - * get the center of all the touches - * @method getCenter - * @param {Array} touches - * @return {Object} center contains `pageX`, `pageY`, `clientX` and `clientY` properties - */ - getCenter: function getCenter(touches) { - var pageX = [], - pageY = [], - clientX = [], - clientY = [], - min = Math.min, - max = Math.max; + // Check for 24:00:00.000 + if (config._a[HOUR] === 24 && + config._a[MINUTE] === 0 && + config._a[SECOND] === 0 && + config._a[MILLISECOND] === 0) { + config._nextDay = true; + config._a[HOUR] = 0; + } - // no need to loop when only one touch - if(touches.length === 1) { - return { - pageX: touches[0].pageX, - pageY: touches[0].pageY, - clientX: touches[0].clientX, - clientY: touches[0].clientY - }; + config._d = (config._useUTC ? makeUTCDate : makeDate).apply(null, input); + // Apply timezone offset from input. The actual utcOffset can be changed + // with parseZone. + if (config._tzm != null) { + config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); } - Utils.each(touches, function(touch) { - pageX.push(touch.pageX); - pageY.push(touch.pageY); - clientX.push(touch.clientX); - clientY.push(touch.clientY); - }); + if (config._nextDay) { + config._a[HOUR] = 24; + } + } - return { - pageX: (min.apply(Math, pageX) + max.apply(Math, pageX)) / 2, - pageY: (min.apply(Math, pageY) + max.apply(Math, pageY)) / 2, - clientX: (min.apply(Math, clientX) + max.apply(Math, clientX)) / 2, - clientY: (min.apply(Math, clientY) + max.apply(Math, clientY)) / 2 - }; - }, + function dateFromObject(config) { + var normalizedInput; - /** - * calculate the velocity between two points. unit is in px per ms. - * @method getVelocity - * @param {Number} deltaTime - * @param {Number} deltaX - * @param {Number} deltaY - * @return {Object} velocity `x` and `y` - */ - getVelocity: function getVelocity(deltaTime, deltaX, deltaY) { - return { - x: Math.abs(deltaX / deltaTime) || 0, - y: Math.abs(deltaY / deltaTime) || 0 - }; - }, + if (config._d) { + return; + } - /** - * calculate the angle between two coordinates - * @method getAngle - * @param {Touch} touch1 - * @param {Touch} touch2 - * @return {Number} angle - */ - getAngle: function getAngle(touch1, touch2) { - var x = touch2.clientX - touch1.clientX, - y = touch2.clientY - touch1.clientY; + normalizedInput = normalizeObjectUnits(config._i); + config._a = [ + normalizedInput.year, + normalizedInput.month, + normalizedInput.day || normalizedInput.date, + normalizedInput.hour, + normalizedInput.minute, + normalizedInput.second, + normalizedInput.millisecond + ]; - return Math.atan2(y, x) * 180 / Math.PI; - }, + dateFromConfig(config); + } - /** - * do a small comparision to get the direction between two touches. - * @method getDirection - * @param {Touch} touch1 - * @param {Touch} touch2 - * @return {String} direction matches `DIRECTION_LEFT|RIGHT|UP|DOWN` - */ - getDirection: function getDirection(touch1, touch2) { - var x = Math.abs(touch1.clientX - touch2.clientX), - y = Math.abs(touch1.clientY - touch2.clientY); + function currentDateArray(config) { + var now = new Date(); + if (config._useUTC) { + return [ + now.getUTCFullYear(), + now.getUTCMonth(), + now.getUTCDate() + ]; + } else { + return [now.getFullYear(), now.getMonth(), now.getDate()]; + } + } - if(x >= y) { - return touch1.clientX - touch2.clientX > 0 ? DIRECTION_LEFT : DIRECTION_RIGHT; + // date from string and format string + function makeDateFromStringAndFormat(config) { + if (config._f === moment.ISO_8601) { + parseISO(config); + return; } - return touch1.clientY - touch2.clientY > 0 ? DIRECTION_UP : DIRECTION_DOWN; - }, - /** - * calculate the distance between two touches - * @method getDistance - * @param {Touch}touch1 - * @param {Touch} touch2 - * @return {Number} distance - */ - getDistance: function getDistance(touch1, touch2) { - var x = touch2.clientX - touch1.clientX, - y = touch2.clientY - touch1.clientY; + config._a = []; + config._pf.empty = true; - return Math.sqrt((x * x) + (y * y)); - }, + // This array is used to make a Date, either with `new Date` or `Date.UTC` + var string = '' + config._i, + i, parsedInput, tokens, token, skipped, + stringLength = string.length, + totalParsedInputLength = 0; - /** - * calculate the scale factor between two touchLists - * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out - * @method getScale - * @param {Array} start array of touches - * @param {Array} end array of touches - * @return {Number} scale - */ - getScale: function getScale(start, end) { - // need two fingers... - if(start.length >= 2 && end.length >= 2) { - return this.getDistance(end[0], end[1]) / this.getDistance(start[0], start[1]); + tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; + + for (i = 0; i < tokens.length; i++) { + token = tokens[i]; + parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; + if (parsedInput) { + skipped = string.substr(0, string.indexOf(parsedInput)); + if (skipped.length > 0) { + config._pf.unusedInput.push(skipped); + } + string = string.slice(string.indexOf(parsedInput) + parsedInput.length); + totalParsedInputLength += parsedInput.length; + } + // don't parse if it's not a known token + if (formatTokenFunctions[token]) { + if (parsedInput) { + config._pf.empty = false; + } + else { + config._pf.unusedTokens.push(token); + } + addTimeToArrayFromToken(token, parsedInput, config); + } + else if (config._strict && !parsedInput) { + config._pf.unusedTokens.push(token); + } } - return 1; - }, - /** - * calculate the rotation degrees between two touchLists - * @method getRotation - * @param {Array} start array of touches - * @param {Array} end array of touches - * @return {Number} rotation - */ - getRotation: function getRotation(start, end) { - // need two fingers - if(start.length >= 2 && end.length >= 2) { - return this.getAngle(end[1], end[0]) - this.getAngle(start[1], start[0]); + // add remaining unparsed input length to the string + config._pf.charsLeftOver = stringLength - totalParsedInputLength; + if (string.length > 0) { + config._pf.unusedInput.push(string); } - return 0; - }, - /** - * find out if the direction is vertical * - * @method isVertical - * @param {String} direction matches `DIRECTION_UP|DOWN` - * @return {Boolean} is_vertical - */ - isVertical: function isVertical(direction) { - return direction == DIRECTION_UP || direction == DIRECTION_DOWN; - }, + // clear _12h flag if hour is <= 12 + if (config._pf.bigHour === true && config._a[HOUR] <= 12) { + config._pf.bigHour = undefined; + } + // handle meridiem + config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], + config._meridiem); + dateFromConfig(config); + checkOverflow(config); + } - /** - * set css properties with their prefixes - * @param {HTMLElement} element - * @param {String} prop - * @param {String} value - * @param {Boolean} [toggle=true] - * @return {Boolean} - */ - setPrefixedCss: function setPrefixedCss(element, prop, value, toggle) { - var prefixes = ['', 'Webkit', 'Moz', 'O', 'ms']; - prop = Utils.toCamelCase(prop); + function unescapeFormat(s) { + return s.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { + return p1 || p2 || p3 || p4; + }); + } - for(var i = 0; i < prefixes.length; i++) { - var p = prop; - // prefixes - if(prefixes[i]) { - p = prefixes[i] + p.slice(0, 1).toUpperCase() + p.slice(1); + // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript + function regexpEscape(s) { + return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); + } + + // date from string and array of format strings + function makeDateFromStringAndArray(config) { + var tempConfig, + bestMoment, + + scoreToBeat, + i, + currentScore; + + if (config._f.length === 0) { + config._pf.invalidFormat = true; + config._d = new Date(NaN); + return; + } + + for (i = 0; i < config._f.length; i++) { + currentScore = 0; + tempConfig = copyConfig({}, config); + if (config._useUTC != null) { + tempConfig._useUTC = config._useUTC; } + tempConfig._pf = defaultParsingFlags(); + tempConfig._f = config._f[i]; + makeDateFromStringAndFormat(tempConfig); - // test the style - if(p in element.style) { - element.style[p] = (toggle == null || toggle) && value || ''; - break; + if (!isValid(tempConfig)) { + continue; + } + + // if there is any input that was not parsed add a penalty for that format + currentScore += tempConfig._pf.charsLeftOver; + + //or tokens + currentScore += tempConfig._pf.unusedTokens.length * 10; + + tempConfig._pf.score = currentScore; + + if (scoreToBeat == null || currentScore < scoreToBeat) { + scoreToBeat = currentScore; + bestMoment = tempConfig; } } - }, - - /** - * toggle browser default behavior by setting css properties. - * `userSelect='none'` also sets `element.onselectstart` to false - * `userDrag='none'` also sets `element.ondragstart` to false - * - * @method toggleBehavior - * @param {HtmlElement} element - * @param {Object} props - * @param {Boolean} [toggle=true] - */ - toggleBehavior: function toggleBehavior(element, props, toggle) { - if(!props || !element || !element.style) { - return; - } - // set the css properties - Utils.each(props, function(value, prop) { - Utils.setPrefixedCss(element, prop, value, toggle); - }); + extend(config, bestMoment || tempConfig); + } - var falseFn = toggle && function() { - return false; - }; + // date from iso format + function parseISO(config) { + var i, l, + string = config._i, + match = isoRegex.exec(string); - // also the disable onselectstart - if(props.userSelect == 'none') { - element.onselectstart = falseFn; - } - // and disable ondragstart - if(props.userDrag == 'none') { - element.ondragstart = falseFn; + if (match) { + config._pf.iso = true; + for (i = 0, l = isoDates.length; i < l; i++) { + if (isoDates[i][1].exec(string)) { + // match[5] should be 'T' or undefined + config._f = isoDates[i][0] + (match[6] || ' '); + break; + } + } + for (i = 0, l = isoTimes.length; i < l; i++) { + if (isoTimes[i][1].exec(string)) { + config._f += isoTimes[i][0]; + break; + } + } + if (string.match(parseTokenTimezone)) { + config._f += 'Z'; + } + makeDateFromStringAndFormat(config); + } else { + config._isValid = false; } - }, + } - /** - * convert a string with underscores to camelCase - * so prevent_default becomes preventDefault - * @param {String} str - * @return {String} camelCaseStr - */ - toCamelCase: function toCamelCase(str) { - return str.replace(/[_-]([a-z])/g, function(s) { - return s[1].toUpperCase(); - }); + // date from iso format or fallback + function makeDateFromString(config) { + parseISO(config); + if (config._isValid === false) { + delete config._isValid; + moment.createFromInputFallback(config); + } } - }; + function map(arr, fn) { + var res = [], i; + for (i = 0; i < arr.length; ++i) { + res.push(fn(arr[i], i)); + } + return res; + } - /** - * @module hammer - */ - /** - * @class Event - * @static - */ - var Event = Hammer.event = { - /** - * when touch events have been fired, this is true - * this is used to stop mouse events - * @property prevent_mouseevents - * @private - * @type {Boolean} - */ - preventMouseEvents: false, + function makeDateFromInput(config) { + var input = config._i, matched; + if (input === undefined) { + config._d = new Date(); + } else if (isDate(input)) { + config._d = new Date(+input); + } else if ((matched = aspNetJsonRegex.exec(input)) !== null) { + config._d = new Date(+matched[1]); + } else if (typeof input === 'string') { + makeDateFromString(config); + } else if (isArray(input)) { + config._a = map(input.slice(0), function (obj) { + return parseInt(obj, 10); + }); + dateFromConfig(config); + } else if (typeof(input) === 'object') { + dateFromObject(config); + } else if (typeof(input) === 'number') { + // from milliseconds + config._d = new Date(input); + } else { + moment.createFromInputFallback(config); + } + } - /** - * if EVENT_START has been fired - * @property started - * @private - * @type {Boolean} - */ - started: false, + function makeDate(y, m, d, h, M, s, ms) { + //can't just apply() to create a date: + //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply + var date = new Date(y, m, d, h, M, s, ms); - /** - * when the mouse is hold down, this is true - * @property should_detect - * @private - * @type {Boolean} - */ - shouldDetect: false, + //the date constructor doesn't accept years < 1970 + if (y < 1970) { + date.setFullYear(y); + } + return date; + } - /** - * simple event binder with a hook and support for multiple types - * @method on - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - * @param {Function} [hook] - * @param {Object} hook.type - */ - on: function on(element, type, handler, hook) { - var types = type.split(' '); - Utils.each(types, function(type) { - Utils.on(element, type, handler); - hook && hook(type); - }); - }, + function makeUTCDate(y) { + var date = new Date(Date.UTC.apply(null, arguments)); + if (y < 1970) { + date.setUTCFullYear(y); + } + return date; + } - /** - * simple event unbinder with a hook and support for multiple types - * @method off - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - * @param {Function} [hook] - * @param {Object} hook.type - */ - off: function off(element, type, handler, hook) { - var types = type.split(' '); - Utils.each(types, function(type) { - Utils.off(element, type, handler); - hook && hook(type); - }); - }, + function parseWeekday(input, locale) { + if (typeof input === 'string') { + if (!isNaN(input)) { + input = parseInt(input, 10); + } + else { + input = locale.weekdaysParse(input); + if (typeof input !== 'number') { + return null; + } + } + } + return input; + } - /** - * the core touch event handler. - * this finds out if we should to detect gestures - * @method onTouch - * @param {HTMLElement} element - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {Function} handler - * @return onTouchHandler {Function} the core event handler - */ - onTouch: function onTouch(element, eventType, handler) { - var self = this; + /************************************ + Relative Time + ************************************/ - var onTouchHandler = function onTouchHandler(ev) { - var srcType = ev.type.toLowerCase(), - isPointer = Hammer.HAS_POINTEREVENTS, - isMouse = Utils.inStr(srcType, 'mouse'), - triggerType; - // if we are in a mouseevent, but there has been a touchevent triggered in this session - // we want to do nothing. simply break out of the event. - if(isMouse && self.preventMouseEvents) { - return; + // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize + function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { + return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); + } - // mousebutton must be down - } else if(isMouse && eventType == EVENT_START && ev.button === 0) { - self.preventMouseEvents = false; - self.shouldDetect = true; - } else if(isPointer && eventType == EVENT_START) { - self.shouldDetect = (ev.buttons === 1 || PointerEvent.matchType(POINTER_TOUCH, ev)); - // just a valid start event, but no mouse - } else if(!isMouse && eventType == EVENT_START) { - self.preventMouseEvents = true; - self.shouldDetect = true; - } + function relativeTime(posNegDuration, withoutSuffix, locale) { + var duration = moment.duration(posNegDuration).abs(), + seconds = round(duration.as('s')), + minutes = round(duration.as('m')), + hours = round(duration.as('h')), + days = round(duration.as('d')), + months = round(duration.as('M')), + years = round(duration.as('y')), - // update the pointer event before entering the detection - if(isPointer && eventType != EVENT_END) { - PointerEvent.updatePointer(eventType, ev); - } + args = seconds < relativeTimeThresholds.s && ['s', seconds] || + minutes === 1 && ['m'] || + minutes < relativeTimeThresholds.m && ['mm', minutes] || + hours === 1 && ['h'] || + hours < relativeTimeThresholds.h && ['hh', hours] || + days === 1 && ['d'] || + days < relativeTimeThresholds.d && ['dd', days] || + months === 1 && ['M'] || + months < relativeTimeThresholds.M && ['MM', months] || + years === 1 && ['y'] || ['yy', years]; - // we are in a touch/down state, so allowed detection of gestures - if(self.shouldDetect) { - triggerType = self.doDetect.call(self, ev, eventType, element, handler); - } + args[2] = withoutSuffix; + args[3] = +posNegDuration > 0; + args[4] = locale; + return substituteTimeAgo.apply({}, args); + } - // ...and we are done with the detection - // so reset everything to start each detection totally fresh - if(triggerType == EVENT_END) { - self.preventMouseEvents = false; - self.shouldDetect = false; - PointerEvent.reset(); - // update the pointerevent object after the detection - } - if(isPointer && eventType == EVENT_END) { - PointerEvent.updatePointer(eventType, ev); - } - }; + /************************************ + Week of Year + ************************************/ - this.on(element, EVENT_TYPES[eventType], onTouchHandler); - return onTouchHandler; - }, - /** - * the core detection method - * this finds out what hammer-touch-events to trigger - * @method doDetect - * @param {Object} ev - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {HTMLElement} element - * @param {Function} handler - * @return {String} triggerType matches `EVENT_START|MOVE|END` - */ - doDetect: function doDetect(ev, eventType, element, handler) { - var touchList = this.getTouchList(ev, eventType); - var touchListLength = touchList.length; - var triggerType = eventType; - var triggerChange = touchList.trigger; // used by fakeMultitouch plugin - var changedLength = touchListLength; + // firstDayOfWeek 0 = sun, 6 = sat + // the day of the week that starts the week + // (usually sunday or monday) + // firstDayOfWeekOfYear 0 = sun, 6 = sat + // the first week is the week that contains the first + // of this day of the week + // (eg. ISO weeks use thursday (4)) + function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) { + var end = firstDayOfWeekOfYear - firstDayOfWeek, + daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(), + adjustedMoment; - // at each touchstart-like event we want also want to trigger a TOUCH event... - if(eventType == EVENT_START) { - triggerChange = EVENT_TOUCH; - // ...the same for a touchend-like event - } else if(eventType == EVENT_END) { - triggerChange = EVENT_RELEASE; - // keep track of how many touches have been removed - changedLength = touchList.length - ((ev.changedTouches) ? ev.changedTouches.length : 1); + if (daysToDayOfWeek > end) { + daysToDayOfWeek -= 7; } - // after there are still touches on the screen, - // we just want to trigger a MOVE event. so change the START or END to a MOVE - // but only after detection has been started, the first time we actualy want a START - if(changedLength > 0 && this.started) { - triggerType = EVENT_MOVE; + if (daysToDayOfWeek < end - 7) { + daysToDayOfWeek += 7; } - // detection has been started, we keep track of this, see above - this.started = true; + adjustedMoment = moment(mom).add(daysToDayOfWeek, 'd'); + return { + week: Math.ceil(adjustedMoment.dayOfYear() / 7), + year: adjustedMoment.year() + }; + } - // generate some event data, some basic information - var evData = this.collectEventData(element, triggerType, touchList, ev); + //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday + function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) { + var d = makeUTCDate(year, 0, 1).getUTCDay(), daysToAdd, dayOfYear; - // trigger the triggerType event before the change (TOUCH, RELEASE) events - // but the END event should be at last - if(eventType != EVENT_END) { - handler.call(Detection, evData); - } + d = d === 0 ? 7 : d; + weekday = weekday != null ? weekday : firstDayOfWeek; + daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0); + dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1; - // trigger a change (TOUCH, RELEASE) event, this means the length of the touches changed - if(triggerChange) { - evData.changedLength = changedLength; - evData.eventType = triggerChange; + return { + year: dayOfYear > 0 ? year : year - 1, + dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear + }; + } - handler.call(Detection, evData); + /************************************ + Top Level Functions + ************************************/ - evData.eventType = triggerType; - delete evData.changedLength; - } + function makeMoment(config) { + var input = config._i, + format = config._f, + res; - // trigger the END event - if(triggerType == EVENT_END) { - handler.call(Detection, evData); + config._locale = config._locale || moment.localeData(config._l); - // ...and we are done with the detection - // so reset everything to start each detection totally fresh - this.started = false; + if (input === null || (format === undefined && input === '')) { + return moment.invalid({nullInput: true}); } - return triggerType; - }, + if (typeof input === 'string') { + config._i = input = config._locale.preparse(input); + } - /** - * we have different events for each device/browser - * determine what we need and set them in the EVENT_TYPES constant - * the `onTouch` method is bind to these properties. - * @method determineEventTypes - * @return {Object} events - */ - determineEventTypes: function determineEventTypes() { - var types; - if(Hammer.HAS_POINTEREVENTS) { - if(window.PointerEvent) { - types = [ - 'pointerdown', - 'pointermove', - 'pointerup pointercancel lostpointercapture' - ]; + if (moment.isMoment(input)) { + return new Moment(input, true); + } else if (format) { + if (isArray(format)) { + makeDateFromStringAndArray(config); } else { - types = [ - 'MSPointerDown', - 'MSPointerMove', - 'MSPointerUp MSPointerCancel MSLostPointerCapture' - ]; + makeDateFromStringAndFormat(config); } - } else if(Hammer.NO_MOUSEEVENTS) { - types = [ - 'touchstart', - 'touchmove', - 'touchend touchcancel' - ]; } else { - types = [ - 'touchstart mousedown', - 'touchmove mousemove', - 'touchend touchcancel mouseup' - ]; + makeDateFromInput(config); } - EVENT_TYPES[EVENT_START] = types[0]; - EVENT_TYPES[EVENT_MOVE] = types[1]; - EVENT_TYPES[EVENT_END] = types[2]; - return EVENT_TYPES; - }, + res = new Moment(config); + if (res._nextDay) { + // Adding is smart enough around DST + res.add(1, 'd'); + res._nextDay = undefined; + } - /** - * create touchList depending on the event - * @method getTouchList - * @param {Object} ev - * @param {String} eventType - * @return {Array} touches - */ - getTouchList: function getTouchList(ev, eventType) { - // get the fake pointerEvent touchlist - if(Hammer.HAS_POINTEREVENTS) { - return PointerEvent.getTouchList(); + return res; + } + + moment = function (input, format, locale, strict) { + var c; + + if (typeof(locale) === 'boolean') { + strict = locale; + locale = undefined; } + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c = {}; + c._isAMomentObject = true; + c._i = input; + c._f = format; + c._l = locale; + c._strict = strict; + c._isUTC = false; + c._pf = defaultParsingFlags(); - // get the touchlist - if(ev.touches) { - if(eventType == EVENT_MOVE) { - return ev.touches; - } + return makeMoment(c); + }; - var identifiers = []; - var concat = [].concat(Utils.toArray(ev.touches), Utils.toArray(ev.changedTouches)); - var touchList = []; + moment.suppressDeprecationWarnings = false; - Utils.each(concat, function(touch) { - if(Utils.inArray(identifiers, touch.identifier) === false) { - touchList.push(touch); - } - identifiers.push(touch.identifier); - }); + moment.createFromInputFallback = deprecate( + 'moment construction falls back to js Date. This is ' + + 'discouraged and will be removed in upcoming major ' + + 'release. Please refer to ' + + 'https://github.com/moment/moment/issues/1407 for more info.', + function (config) { + config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); + } + ); - return touchList; + // Pick a moment m from moments so that m[fn](other) is true for all + // other. This relies on the function fn to be transitive. + // + // moments should either be an array of moment objects or an array, whose + // first element is an array of moment objects. + function pickBy(fn, moments) { + var res, i; + if (moments.length === 1 && isArray(moments[0])) { + moments = moments[0]; + } + if (!moments.length) { + return moment(); + } + res = moments[0]; + for (i = 1; i < moments.length; ++i) { + if (moments[i][fn](res)) { + res = moments[i]; + } } + return res; + } - // make fake touchList from mouse position - ev.identifier = 1; - return [ev]; - }, + moment.min = function () { + var args = [].slice.call(arguments, 0); - /** - * collect basic event data - * @method collectEventData - * @param {HTMLElement} element - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {Array} touches - * @param {Object} ev - * @return {Object} ev - */ - collectEventData: function collectEventData(element, eventType, touches, ev) { - // find out pointerType - var pointerType = POINTER_TOUCH; - if(Utils.inStr(ev.type, 'mouse') || PointerEvent.matchType(POINTER_MOUSE, ev)) { - pointerType = POINTER_MOUSE; - } else if(PointerEvent.matchType(POINTER_PEN, ev)) { - pointerType = POINTER_PEN; - } + return pickBy('isBefore', args); + }; - return { - center: Utils.getCenter(touches), - timeStamp: Date.now(), - target: ev.target, - touches: touches, - eventType: eventType, - pointerType: pointerType, - srcEvent: ev, + moment.max = function () { + var args = [].slice.call(arguments, 0); - /** - * prevent the browser default actions - * mostly used to disable scrolling of the browser - */ - preventDefault: function() { - var srcEvent = this.srcEvent; - srcEvent.preventManipulation && srcEvent.preventManipulation(); - srcEvent.preventDefault && srcEvent.preventDefault(); - }, + return pickBy('isAfter', args); + }; - /** - * stop bubbling the event up to its parents - */ - stopPropagation: function() { - this.srcEvent.stopPropagation(); - }, + // creating with utc + moment.utc = function (input, format, locale, strict) { + var c; - /** - * immediately stop gesture detection - * might be useful after a swipe was detected - * @return {*} - */ - stopDetect: function() { - return Detection.stopDetect(); - } - }; - } - }; + if (typeof(locale) === 'boolean') { + strict = locale; + locale = undefined; + } + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c = {}; + c._isAMomentObject = true; + c._useUTC = true; + c._isUTC = true; + c._l = locale; + c._i = input; + c._f = format; + c._strict = strict; + c._pf = defaultParsingFlags(); + return makeMoment(c).utc(); + }; - /** - * @module hammer - * - * @class PointerEvent - * @static - */ - var PointerEvent = Hammer.PointerEvent = { - /** - * holds all pointers, by `identifier` - * @property pointers - * @type {Object} - */ - pointers: {}, + // creating with unix timestamp (in seconds) + moment.unix = function (input) { + return moment(input * 1000); + }; - /** - * get the pointers as an array - * @method getTouchList - * @return {Array} touchlist - */ - getTouchList: function getTouchList() { - var touchlist = []; - // we can use forEach since pointerEvents only is in IE10 - Utils.each(this.pointers, function(pointer) { - touchlist.push(pointer); - }); - return touchlist; - }, + // duration + moment.duration = function (input, key) { + var duration = input, + // matching against regexp is expensive, do it on demand + match = null, + sign, + ret, + parseIso, + diffRes; - /** - * update the position of a pointer - * @method updatePointer - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {Object} pointerEvent - */ - updatePointer: function updatePointer(eventType, pointerEvent) { - if(eventType == EVENT_END || (eventType != EVENT_END && pointerEvent.buttons !== 1)) { - delete this.pointers[pointerEvent.pointerId]; - } else { - pointerEvent.identifier = pointerEvent.pointerId; - this.pointers[pointerEvent.pointerId] = pointerEvent; + if (moment.isDuration(input)) { + duration = { + ms: input._milliseconds, + d: input._days, + M: input._months + }; + } else if (typeof input === 'number') { + duration = {}; + if (key) { + duration[key] = input; + } else { + duration.milliseconds = input; + } + } else if (!!(match = aspNetTimeSpanJsonRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + duration = { + y: 0, + d: toInt(match[DATE]) * sign, + h: toInt(match[HOUR]) * sign, + m: toInt(match[MINUTE]) * sign, + s: toInt(match[SECOND]) * sign, + ms: toInt(match[MILLISECOND]) * sign + }; + } else if (!!(match = isoDurationRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + parseIso = function (inp) { + // We'd normally use ~~inp for this, but unfortunately it also + // converts floats to ints. + // inp may be undefined, so careful calling replace on it. + var res = inp && parseFloat(inp.replace(',', '.')); + // apply sign while we're at it + return (isNaN(res) ? 0 : res) * sign; + }; + duration = { + y: parseIso(match[2]), + M: parseIso(match[3]), + d: parseIso(match[4]), + h: parseIso(match[5]), + m: parseIso(match[6]), + s: parseIso(match[7]), + w: parseIso(match[8]) + }; + } else if (duration == null) {// checks for null or undefined + duration = {}; + } else if (typeof duration === 'object' && + ('from' in duration || 'to' in duration)) { + diffRes = momentsDifference(moment(duration.from), moment(duration.to)); + + duration = {}; + duration.ms = diffRes.milliseconds; + duration.M = diffRes.months; } - }, - /** - * check if ev matches pointertype - * @method matchType - * @param {String} pointerType matches `POINTER_MOUSE|TOUCH|PEN` - * @param {PointerEvent} ev - */ - matchType: function matchType(pointerType, ev) { - if(!ev.pointerType) { - return false; + ret = new Duration(duration); + + if (moment.isDuration(input) && hasOwnProp(input, '_locale')) { + ret._locale = input._locale; } - var pt = ev.pointerType, - types = {}; + return ret; + }; - types[POINTER_MOUSE] = (pt === (ev.MSPOINTER_TYPE_MOUSE || POINTER_MOUSE)); - types[POINTER_TOUCH] = (pt === (ev.MSPOINTER_TYPE_TOUCH || POINTER_TOUCH)); - types[POINTER_PEN] = (pt === (ev.MSPOINTER_TYPE_PEN || POINTER_PEN)); - return types[pointerType]; - }, + // version number + moment.version = VERSION; - /** - * reset the stored pointers - * @method reset - */ - reset: function resetList() { - this.pointers = {}; - } - }; + // default format + moment.defaultFormat = isoFormat; + // constant that refers to the ISO standard + moment.ISO_8601 = function () {}; - /** - * @module hammer - * - * @class Detection - * @static - */ - var Detection = Hammer.detection = { - // contains all registred Hammer.gestures in the correct order - gestures: [], + // Plugins that add properties should also add the key here (null value), + // so we can properly clone ourselves. + moment.momentProperties = momentProperties; - // data of the current Hammer.gesture detection session - current: null, + // This function will be called whenever a moment is mutated. + // It is intended to keep the offset in sync with the timezone. + moment.updateOffset = function () {}; - // the previous Hammer.gesture session data - // is a full clone of the previous gesture.current object - previous: null, + // This function allows you to set a threshold for relative time strings + moment.relativeTimeThreshold = function (threshold, limit) { + if (relativeTimeThresholds[threshold] === undefined) { + return false; + } + if (limit === undefined) { + return relativeTimeThresholds[threshold]; + } + relativeTimeThresholds[threshold] = limit; + return true; + }; - // when this becomes true, no gestures are fired - stopped: false, + moment.lang = deprecate( + 'moment.lang is deprecated. Use moment.locale instead.', + function (key, value) { + return moment.locale(key, value); + } + ); - /** - * start Hammer.gesture detection - * @method startDetect - * @param {Hammer.Instance} inst - * @param {Object} eventData - */ - startDetect: function startDetect(inst, eventData) { - // already busy with a Hammer.gesture detection on an element - if(this.current) { - return; + // This function will load locale and then set the global locale. If + // no arguments are passed in, it will simply return the current global + // locale key. + moment.locale = function (key, values) { + var data; + if (key) { + if (typeof(values) !== 'undefined') { + data = moment.defineLocale(key, values); + } + else { + data = moment.localeData(key); + } + + if (data) { + moment.duration._locale = moment._locale = data; + } } - this.stopped = false; + return moment._locale._abbr; + }; - // holds current session - this.current = { - inst: inst, // reference to HammerInstance we're working for - startEvent: Utils.extend({}, eventData), // start eventData for distances, timing etc - lastEvent: false, // last eventData - lastCalcEvent: false, // last eventData for calculations. - futureCalcEvent: false, // last eventData for calculations. - lastCalcData: {}, // last lastCalcData - name: '' // current gesture we're in/detected, can be 'tap', 'hold' etc - }; + moment.defineLocale = function (name, values) { + if (values !== null) { + values.abbr = name; + if (!locales[name]) { + locales[name] = new Locale(); + } + locales[name].set(values); - this.detect(eventData); - }, + // backwards compat for now: also set the locale + moment.locale(name); - /** - * Hammer.gesture detection - * @method detect - * @param {Object} eventData - * @return {any} - */ - detect: function detect(eventData) { - if(!this.current || this.stopped) { - return; + return locales[name]; + } else { + // useful for testing + delete locales[name]; + return null; } + }; - // extend event data with calculations about scale, distance etc - eventData = this.extendEventData(eventData); + moment.langData = deprecate( + 'moment.langData is deprecated. Use moment.localeData instead.', + function (key) { + return moment.localeData(key); + } + ); - // hammer instance and instance options - var inst = this.current.inst, - instOptions = inst.options; + // returns locale data + moment.localeData = function (key) { + var locale; - // call Hammer.gesture handlers - Utils.each(this.gestures, function triggerGesture(gesture) { - // only when the instance options have enabled this gesture - if(!this.stopped && inst.enabled && instOptions[gesture.name]) { - gesture.handler.call(gesture, eventData, inst); - } - }, this); + if (key && key._locale && key._locale._abbr) { + key = key._locale._abbr; + } - // store as previous event event - if(this.current) { - this.current.lastEvent = eventData; + if (!key) { + return moment._locale; } - if(eventData.eventType == EVENT_END) { - this.stopDetect(); + if (!isArray(key)) { + //short-circuit everything else + locale = loadLocale(key); + if (locale) { + return locale; + } + key = [key]; } - return eventData; - }, + return chooseLocale(key); + }; - /** - * clear the Hammer.gesture vars - * this is called on endDetect, but can also be used when a final Hammer.gesture has been detected - * to stop other Hammer.gestures from being fired - * @method stopDetect - */ - stopDetect: function stopDetect() { - // clone current data to the store as the previous gesture - // used for the double tap gesture, since this is an other gesture detect session - this.previous = Utils.extend({}, this.current); + // compare moment object + moment.isMoment = function (obj) { + return obj instanceof Moment || + (obj != null && hasOwnProp(obj, '_isAMomentObject')); + }; - // reset the current - this.current = null; - this.stopped = true; - }, + // for typechecking Duration objects + moment.isDuration = function (obj) { + return obj instanceof Duration; + }; - /** - * calculate velocity, angle and direction - * @method getVelocityData - * @param {Object} ev - * @param {Object} center - * @param {Number} deltaTime - * @param {Number} deltaX - * @param {Number} deltaY - */ - getCalculatedData: function getCalculatedData(ev, center, deltaTime, deltaX, deltaY) { - var cur = this.current, - recalc = false, - calcEv = cur.lastCalcEvent, - calcData = cur.lastCalcData; + for (i = lists.length - 1; i >= 0; --i) { + makeList(lists[i]); + } - if(calcEv && ev.timeStamp - calcEv.timeStamp > Hammer.CALCULATE_INTERVAL) { - center = calcEv.center; - deltaTime = ev.timeStamp - calcEv.timeStamp; - deltaX = ev.center.clientX - calcEv.center.clientX; - deltaY = ev.center.clientY - calcEv.center.clientY; - recalc = true; - } + moment.normalizeUnits = function (units) { + return normalizeUnits(units); + }; - if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { - cur.futureCalcEvent = ev; + moment.invalid = function (flags) { + var m = moment.utc(NaN); + if (flags != null) { + extend(m._pf, flags); } - - if(!cur.lastCalcEvent || recalc) { - calcData.velocity = Utils.getVelocity(deltaTime, deltaX, deltaY); - calcData.angle = Utils.getAngle(center, ev.center); - calcData.direction = Utils.getDirection(center, ev.center); - - cur.lastCalcEvent = cur.futureCalcEvent || ev; - cur.futureCalcEvent = ev; + else { + m._pf.userInvalidated = true; } - ev.velocityX = calcData.velocity.x; - ev.velocityY = calcData.velocity.y; - ev.interimAngle = calcData.angle; - ev.interimDirection = calcData.direction; - }, - - /** - * extend eventData for Hammer.gestures - * @method extendEventData - * @param {Object} ev - * @return {Object} ev - */ - extendEventData: function extendEventData(ev) { - var cur = this.current, - startEv = cur.startEvent, - lastEv = cur.lastEvent || startEv; + return m; + }; - // update the start touchlist to calculate the scale/rotation - if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { - startEv.touches = []; - Utils.each(ev.touches, function(touch) { - startEv.touches.push({ - clientX: touch.clientX, - clientY: touch.clientY - }); - }); - } + moment.parseZone = function () { + return moment.apply(null, arguments).parseZone(); + }; - var deltaTime = ev.timeStamp - startEv.timeStamp, - deltaX = ev.center.clientX - startEv.center.clientX, - deltaY = ev.center.clientY - startEv.center.clientY; + moment.parseTwoDigitYear = function (input) { + return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); + }; - this.getCalculatedData(ev, lastEv.center, deltaTime, deltaX, deltaY); + moment.isDate = isDate; - Utils.extend(ev, { - startEvent: startEv, + /************************************ + Moment Prototype + ************************************/ - deltaTime: deltaTime, - deltaX: deltaX, - deltaY: deltaY, - distance: Utils.getDistance(startEv.center, ev.center), - angle: Utils.getAngle(startEv.center, ev.center), - direction: Utils.getDirection(startEv.center, ev.center), - scale: Utils.getScale(startEv.touches, ev.touches), - rotation: Utils.getRotation(startEv.touches, ev.touches) - }); + extend(moment.fn = Moment.prototype, { - return ev; - }, + clone : function () { + return moment(this); + }, - /** - * register new gesture - * @method register - * @param {Object} gesture object, see `gestures/` for documentation - * @return {Array} gestures - */ - register: function register(gesture) { - // add an enable gesture options if there is no given - var options = gesture.defaults || {}; - if(options[gesture.name] === undefined) { - options[gesture.name] = true; - } + valueOf : function () { + return +this._d - ((this._offset || 0) * 60000); + }, - // extend Hammer default options with the Hammer.gesture options - Utils.extend(Hammer.defaults, options, true); + unix : function () { + return Math.floor(+this / 1000); + }, - // set its index - gesture.index = gesture.index || 1000; + toString : function () { + return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); + }, - // add Hammer.gesture to the list - this.gestures.push(gesture); + toDate : function () { + return this._offset ? new Date(+this) : this._d; + }, - // sort the list by index - this.gestures.sort(function(a, b) { - if(a.index < b.index) { - return -1; - } - if(a.index > b.index) { - return 1; + toISOString : function () { + var m = moment(this).utc(); + if (0 < m.year() && m.year() <= 9999) { + if ('function' === typeof Date.prototype.toISOString) { + // native implementation is ~50x faster, use it when we can + return this.toDate().toISOString(); + } else { + return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + } + } else { + return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); } - return 0; - }); + }, - return this.gestures; - } - }; + toArray : function () { + var m = this; + return [ + m.year(), + m.month(), + m.date(), + m.hours(), + m.minutes(), + m.seconds(), + m.milliseconds() + ]; + }, + isValid : function () { + return isValid(this); + }, - /** - * @module hammer - */ + isDSTShifted : function () { + if (this._a) { + return this.isValid() && compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()) > 0; + } - /** - * create new hammer instance - * all methods should return the instance itself, so it is chainable. - * - * @class Instance - * @constructor - * @param {HTMLElement} element - * @param {Object} [options={}] options are merged with `Hammer.defaults` - * @return {Hammer.Instance} - */ - Hammer.Instance = function(element, options) { - var self = this; + return false; + }, - // setup HammerJS window events and register all gestures - // this also sets up the default options - setup(); + parsingFlags : function () { + return extend({}, this._pf); + }, - /** - * @property element - * @type {HTMLElement} - */ - this.element = element; + invalidAt: function () { + return this._pf.overflow; + }, - /** - * @property enabled - * @type {Boolean} - * @protected - */ - this.enabled = true; + utc : function (keepLocalTime) { + return this.utcOffset(0, keepLocalTime); + }, - /** - * options, merged with the defaults - * options with an _ are converted to camelCase - * @property options - * @type {Object} - */ - Utils.each(options, function(value, name) { - delete options[name]; - options[Utils.toCamelCase(name)] = value; - }); + local : function (keepLocalTime) { + if (this._isUTC) { + this.utcOffset(0, keepLocalTime); + this._isUTC = false; - this.options = Utils.extend(Utils.extend({}, Hammer.defaults), options || {}); + if (keepLocalTime) { + this.subtract(this._dateUtcOffset(), 'm'); + } + } + return this; + }, - // add some css to the element to prevent the browser from doing its native behavoir - if(this.options.behavior) { - Utils.toggleBehavior(this.element, this.options.behavior, true); - } + format : function (inputString) { + var output = formatMoment(this, inputString || moment.defaultFormat); + return this.localeData().postformat(output); + }, - /** - * event start handler on the element to start the detection - * @property eventStartHandler - * @type {Object} - */ - this.eventStartHandler = Event.onTouch(element, EVENT_START, function(ev) { - if(self.enabled && ev.eventType == EVENT_START) { - Detection.startDetect(self, ev); - } else if(ev.eventType == EVENT_TOUCH) { - Detection.detect(ev); - } - }); + add : createAdder(1, 'add'), - /** - * keep a list of user event handlers which needs to be removed when calling 'dispose' - * @property eventHandlers - * @type {Array} - */ - this.eventHandlers = []; - }; + subtract : createAdder(-1, 'subtract'), - Hammer.Instance.prototype = { - /** - * bind events to the instance - * @method on - * @chainable - * @param {String} gestures multiple gestures by splitting with a space - * @param {Function} handler - * @param {Object} handler.ev event object - */ - on: function onEvent(gestures, handler) { - var self = this; - Event.on(self.element, gestures, handler, function(type) { - self.eventHandlers.push({ gesture: type, handler: handler }); - }); - return self; - }, + diff : function (input, units, asFloat) { + var that = makeAs(input, this), + zoneDiff = (that.utcOffset() - this.utcOffset()) * 6e4, + anchor, diff, output, daysAdjust; - /** - * unbind events to the instance - * @method off - * @chainable - * @param {String} gestures - * @param {Function} handler - */ - off: function offEvent(gestures, handler) { - var self = this; + units = normalizeUnits(units); - Event.off(self.element, gestures, handler, function(type) { - var index = Utils.inArray({ gesture: type, handler: handler }); - if(index !== false) { - self.eventHandlers.splice(index, 1); + if (units === 'year' || units === 'month' || units === 'quarter') { + output = monthDiff(this, that); + if (units === 'quarter') { + output = output / 3; + } else if (units === 'year') { + output = output / 12; + } + } else { + diff = this - that; + output = units === 'second' ? diff / 1e3 : // 1000 + units === 'minute' ? diff / 6e4 : // 1000 * 60 + units === 'hour' ? diff / 36e5 : // 1000 * 60 * 60 + units === 'day' ? (diff - zoneDiff) / 864e5 : // 1000 * 60 * 60 * 24, negate dst + units === 'week' ? (diff - zoneDiff) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst + diff; } - }); - return self; - }, + return asFloat ? output : absRound(output); + }, - /** - * trigger gesture event - * @method trigger - * @chainable - * @param {String} gesture - * @param {Object} [eventData] - */ - trigger: function triggerEvent(gesture, eventData) { - // optional - if(!eventData) { - eventData = {}; - } + from : function (time, withoutSuffix) { + return moment.duration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); + }, - // create DOM event - var event = Hammer.DOCUMENT.createEvent('Event'); - event.initEvent(gesture, true, true); - event.gesture = eventData; + fromNow : function (withoutSuffix) { + return this.from(moment(), withoutSuffix); + }, + + calendar : function (time) { + // We want to compare the start of today, vs this. + // Getting start-of-today depends on whether we're locat/utc/offset + // or not. + var now = time || moment(), + sod = makeAs(now, this).startOf('day'), + diff = this.diff(sod, 'days', true), + format = diff < -6 ? 'sameElse' : + diff < -1 ? 'lastWeek' : + diff < 0 ? 'lastDay' : + diff < 1 ? 'sameDay' : + diff < 2 ? 'nextDay' : + diff < 7 ? 'nextWeek' : 'sameElse'; + return this.format(this.localeData().calendar(format, this, moment(now))); + }, + + isLeapYear : function () { + return isLeapYear(this.year()); + }, + + isDST : function () { + return (this.utcOffset() > this.clone().month(0).utcOffset() || + this.utcOffset() > this.clone().month(5).utcOffset()); + }, + + day : function (input) { + var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); + if (input != null) { + input = parseWeekday(input, this.localeData()); + return this.add(input - day, 'd'); + } else { + return day; + } + }, - // trigger on the target if it is in the instance element, - // this is for event delegation tricks - var element = this.element; - if(Utils.hasParent(eventData.target, element)) { - element = eventData.target; - } + month : makeAccessor('Month', true), - element.dispatchEvent(event); - return this; - }, + startOf : function (units) { + units = normalizeUnits(units); + // the following switch intentionally omits break keywords + // to utilize falling through the cases. + switch (units) { + case 'year': + this.month(0); + /* falls through */ + case 'quarter': + case 'month': + this.date(1); + /* falls through */ + case 'week': + case 'isoWeek': + case 'day': + this.hours(0); + /* falls through */ + case 'hour': + this.minutes(0); + /* falls through */ + case 'minute': + this.seconds(0); + /* falls through */ + case 'second': + this.milliseconds(0); + /* falls through */ + } - /** - * enable of disable hammer.js detection - * @method enable - * @chainable - * @param {Boolean} state - */ - enable: function enable(state) { - this.enabled = state; - return this; - }, + // weeks are a special case + if (units === 'week') { + this.weekday(0); + } else if (units === 'isoWeek') { + this.isoWeekday(1); + } - /** - * dispose this hammer instance - * @method dispose - * @return {Null} - */ - dispose: function dispose() { - var i, eh; + // quarters are also special + if (units === 'quarter') { + this.month(Math.floor(this.month() / 3) * 3); + } - // undo all changes made by stop_browser_behavior - Utils.toggleBehavior(this.element, this.options.behavior, false); + return this; + }, - // unbind all custom event handlers - for(i = -1; (eh = this.eventHandlers[++i]);) { - Utils.off(this.element, eh.gesture, eh.handler); - } + endOf: function (units) { + units = normalizeUnits(units); + if (units === undefined || units === 'millisecond') { + return this; + } + return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); + }, - this.eventHandlers = []; + isAfter: function (input, units) { + var inputMs; + units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); + if (units === 'millisecond') { + input = moment.isMoment(input) ? input : moment(input); + return +this > +input; + } else { + inputMs = moment.isMoment(input) ? +input : +moment(input); + return inputMs < +this.clone().startOf(units); + } + }, - // unbind the start event listener - Event.off(this.element, EVENT_TYPES[EVENT_START], this.eventStartHandler); + isBefore: function (input, units) { + var inputMs; + units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); + if (units === 'millisecond') { + input = moment.isMoment(input) ? input : moment(input); + return +this < +input; + } else { + inputMs = moment.isMoment(input) ? +input : +moment(input); + return +this.clone().endOf(units) < inputMs; + } + }, - return null; - } - }; + isBetween: function (from, to, units) { + return this.isAfter(from, units) && this.isBefore(to, units); + }, + isSame: function (input, units) { + var inputMs; + units = normalizeUnits(units || 'millisecond'); + if (units === 'millisecond') { + input = moment.isMoment(input) ? input : moment(input); + return +this === +input; + } else { + inputMs = +moment(input); + return +(this.clone().startOf(units)) <= inputMs && inputMs <= +(this.clone().endOf(units)); + } + }, - /** - * @module gestures - */ - /** - * Move with x fingers (default 1) around on the page. - * Preventing the default browser behavior is a good way to improve feel and working. - * ```` - * hammertime.on("drag", function(ev) { - * console.log(ev); - * ev.gesture.preventDefault(); - * }); - * ```` - * - * @class Drag - * @static - */ - /** - * @event drag - * @param {Object} ev - */ - /** - * @event dragstart - * @param {Object} ev - */ - /** - * @event dragend - * @param {Object} ev - */ - /** - * @event drapleft - * @param {Object} ev - */ - /** - * @event dragright - * @param {Object} ev - */ - /** - * @event dragup - * @param {Object} ev - */ - /** - * @event dragdown - * @param {Object} ev - */ + min: deprecate( + 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548', + function (other) { + other = moment.apply(null, arguments); + return other < this ? this : other; + } + ), - /** - * @param {String} name - */ - (function(name) { - var triggered = false; + max: deprecate( + 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548', + function (other) { + other = moment.apply(null, arguments); + return other > this ? this : other; + } + ), - function dragGesture(ev, inst) { - var cur = Detection.current; + zone : deprecate( + 'moment().zone is deprecated, use moment().utcOffset instead. ' + + 'https://github.com/moment/moment/issues/1779', + function (input, keepLocalTime) { + if (input != null) { + if (typeof input !== 'string') { + input = -input; + } - // max touches - if(inst.options.dragMaxTouches > 0 && - ev.touches.length > inst.options.dragMaxTouches) { - return; - } + this.utcOffset(input, keepLocalTime); - switch(ev.eventType) { - case EVENT_START: - triggered = false; - break; + return this; + } else { + return -this.utcOffset(); + } + } + ), - case EVENT_MOVE: - // when the distance we moved is too small we skip this gesture - // or we can be already in dragging - if(ev.distance < inst.options.dragMinDistance && - cur.name != name) { - return; + // keepLocalTime = true means only change the timezone, without + // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> + // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset + // +0200, so we adjust the time as needed, to be valid. + // + // Keeping the time actually adds/subtracts (one hour) + // from the actual represented time. That is why we call updateOffset + // a second time. In case it wants us to change the offset again + // _changeInProgress == true case, then we have to adjust, because + // there is no such time in the given timezone. + utcOffset : function (input, keepLocalTime) { + var offset = this._offset || 0, + localAdjust; + if (input != null) { + if (typeof input === 'string') { + input = utcOffsetFromString(input); + } + if (Math.abs(input) < 16) { + input = input * 60; + } + if (!this._isUTC && keepLocalTime) { + localAdjust = this._dateUtcOffset(); + } + this._offset = input; + this._isUTC = true; + if (localAdjust != null) { + this.add(localAdjust, 'm'); + } + if (offset !== input) { + if (!keepLocalTime || this._changeInProgress) { + addOrSubtractDurationFromMoment(this, + moment.duration(input - offset, 'm'), 1, false); + } else if (!this._changeInProgress) { + this._changeInProgress = true; + moment.updateOffset(this, true); + this._changeInProgress = null; + } } - var startCenter = cur.startEvent.center; + return this; + } else { + return this._isUTC ? offset : this._dateUtcOffset(); + } + }, - // we are dragging! - if(cur.name != name) { - cur.name = name; - if(inst.options.dragDistanceCorrection && ev.distance > 0) { - // When a drag is triggered, set the event center to dragMinDistance pixels from the original event center. - // Without this correction, the dragged distance would jumpstart at dragMinDistance pixels instead of at 0. - // It might be useful to save the original start point somewhere - var factor = Math.abs(inst.options.dragMinDistance / ev.distance); - startCenter.pageX += ev.deltaX * factor; - startCenter.pageY += ev.deltaY * factor; - startCenter.clientX += ev.deltaX * factor; - startCenter.clientY += ev.deltaY * factor; + isLocal : function () { + return !this._isUTC; + }, - // recalculate event data using new start point - ev = Detection.extendEventData(ev); - } - } + isUtcOffset : function () { + return this._isUTC; + }, - // lock drag to axis? - if(cur.lastEvent.dragLockToAxis || - ( inst.options.dragLockToAxis && - inst.options.dragLockMinDistance <= ev.distance - )) { - ev.dragLockToAxis = true; - } + isUtc : function () { + return this._isUTC && this._offset === 0; + }, - // keep direction on the axis that the drag gesture started on - var lastDirection = cur.lastEvent.direction; - if(ev.dragLockToAxis && lastDirection !== ev.direction) { - if(Utils.isVertical(lastDirection)) { - ev.direction = (ev.deltaY < 0) ? DIRECTION_UP : DIRECTION_DOWN; - } else { - ev.direction = (ev.deltaX < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT; - } - } + zoneAbbr : function () { + return this._isUTC ? 'UTC' : ''; + }, - // first time, trigger dragstart event - if(!triggered) { - inst.trigger(name + 'start', ev); - triggered = true; - } + zoneName : function () { + return this._isUTC ? 'Coordinated Universal Time' : ''; + }, - // trigger events - inst.trigger(name, ev); - inst.trigger(name + ev.direction, ev); + parseZone : function () { + if (this._tzm) { + this.utcOffset(this._tzm); + } else if (typeof this._i === 'string') { + this.utcOffset(utcOffsetFromString(this._i)); + } + return this; + }, - var isVertical = Utils.isVertical(ev.direction); + hasAlignedHourOffset : function (input) { + if (!input) { + input = 0; + } + else { + input = moment(input).utcOffset(); + } - // block the browser events - if((inst.options.dragBlockVertical && isVertical) || - (inst.options.dragBlockHorizontal && !isVertical)) { - ev.preventDefault(); - } - break; + return (this.utcOffset() - input) % 60 === 0; + }, - case EVENT_RELEASE: - if(triggered && ev.changedLength <= inst.options.dragMaxTouches) { - inst.trigger(name + 'end', ev); - triggered = false; - } - break; + daysInMonth : function () { + return daysInMonth(this.year(), this.month()); + }, - case EVENT_END: - triggered = false; - break; - } - } + dayOfYear : function (input) { + var dayOfYear = round((moment(this).startOf('day') - moment(this).startOf('year')) / 864e5) + 1; + return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); + }, - Hammer.gestures.Drag = { - name: name, - index: 50, - handler: dragGesture, - defaults: { - /** - * minimal movement that have to be made before the drag event gets triggered - * @property dragMinDistance - * @type {Number} - * @default 10 - */ - dragMinDistance: 10, + quarter : function (input) { + return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); + }, - /** - * Set dragDistanceCorrection to true to make the starting point of the drag - * be calculated from where the drag was triggered, not from where the touch started. - * Useful to avoid a jerk-starting drag, which can make fine-adjustments - * through dragging difficult, and be visually unappealing. - * @property dragDistanceCorrection - * @type {Boolean} - * @default true - */ - dragDistanceCorrection: true, + weekYear : function (input) { + var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year; + return input == null ? year : this.add((input - year), 'y'); + }, - /** - * set 0 for unlimited, but this can conflict with transform - * @property dragMaxTouches - * @type {Number} - * @default 1 - */ - dragMaxTouches: 1, + isoWeekYear : function (input) { + var year = weekOfYear(this, 1, 4).year; + return input == null ? year : this.add((input - year), 'y'); + }, - /** - * prevent default browser behavior when dragging occurs - * be careful with it, it makes the element a blocking element - * when you are using the drag gesture, it is a good practice to set this true - * @property dragBlockHorizontal - * @type {Boolean} - * @default false - */ - dragBlockHorizontal: false, + week : function (input) { + var week = this.localeData().week(this); + return input == null ? week : this.add((input - week) * 7, 'd'); + }, - /** - * same as `dragBlockHorizontal`, but for vertical movement - * @property dragBlockVertical - * @type {Boolean} - * @default false - */ - dragBlockVertical: false, + isoWeek : function (input) { + var week = weekOfYear(this, 1, 4).week; + return input == null ? week : this.add((input - week) * 7, 'd'); + }, - /** - * dragLockToAxis keeps the drag gesture on the axis that it started on, - * It disallows vertical directions if the initial direction was horizontal, and vice versa. - * @property dragLockToAxis - * @type {Boolean} - * @default false - */ - dragLockToAxis: false, + weekday : function (input) { + var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; + return input == null ? weekday : this.add(input - weekday, 'd'); + }, - /** - * drag lock only kicks in when distance > dragLockMinDistance - * This way, locking occurs only when the distance has become large enough to reliably determine the direction - * @property dragLockMinDistance - * @type {Number} - * @default 25 - */ - dragLockMinDistance: 25 - } - }; - })('drag'); + isoWeekday : function (input) { + // behaves the same as moment#day except + // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) + // as a setter, sunday should belong to the previous week. + return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7); + }, - /** - * @module gestures - */ - /** - * trigger a simple gesture event, so you can do anything in your handler. - * only usable if you know what your doing... - * - * @class Gesture - * @static - */ - /** - * @event gesture - * @param {Object} ev - */ - Hammer.gestures.Gesture = { - name: 'gesture', - index: 1337, - handler: function releaseGesture(ev, inst) { - inst.trigger(this.name, ev); - } - }; + isoWeeksInYear : function () { + return weeksInYear(this.year(), 1, 4); + }, - /** - * @module gestures - */ - /** - * Touch stays at the same place for x time - * - * @class Hold - * @static - */ - /** - * @event hold - * @param {Object} ev - */ + weeksInYear : function () { + var weekInfo = this.localeData()._week; + return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); + }, + + get : function (units) { + units = normalizeUnits(units); + return this[units](); + }, + + set : function (units, value) { + var unit; + if (typeof units === 'object') { + for (unit in units) { + this.set(unit, units[unit]); + } + } + else { + units = normalizeUnits(units); + if (typeof this[units] === 'function') { + this[units](value); + } + } + return this; + }, - /** - * @param {String} name - */ - (function(name) { - var timer; + // If passed a locale key, it will set the locale for this + // instance. Otherwise, it will return the locale configuration + // variables for this instance. + locale : function (key) { + var newLocaleData; - function holdGesture(ev, inst) { - var options = inst.options, - current = Detection.current; + if (key === undefined) { + return this._locale._abbr; + } else { + newLocaleData = moment.localeData(key); + if (newLocaleData != null) { + this._locale = newLocaleData; + } + return this; + } + }, - switch(ev.eventType) { - case EVENT_START: - clearTimeout(timer); + lang : deprecate( + 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', + function (key) { + if (key === undefined) { + return this.localeData(); + } else { + return this.locale(key); + } + } + ), - // set the gesture so we can check in the timeout if it still is - current.name = name; + localeData : function () { + return this._locale; + }, - // set timer and if after the timeout it still is hold, - // we trigger the hold event - timer = setTimeout(function() { - if(current && current.name == name) { - inst.trigger(name, ev); - } - }, options.holdTimeout); - break; + _dateUtcOffset : function () { + // On Firefox.24 Date#getTimezoneOffset returns a floating point. + // https://github.com/moment/moment/pull/1871 + return -Math.round(this._d.getTimezoneOffset() / 15) * 15; + } - case EVENT_MOVE: - if(ev.distance > options.holdThreshold) { - clearTimeout(timer); - } - break; + }); - case EVENT_RELEASE: - clearTimeout(timer); - break; + function rawMonthSetter(mom, value) { + var dayOfMonth; + + // TODO: Move this out of here! + if (typeof value === 'string') { + value = mom.localeData().monthsParse(value); + // TODO: Another silent failure? + if (typeof value !== 'number') { + return mom; + } } - } - Hammer.gestures.Hold = { - name: name, - index: 10, - defaults: { - /** - * @property holdTimeout - * @type {Number} - * @default 500 - */ - holdTimeout: 500, + dayOfMonth = Math.min(mom.date(), + daysInMonth(mom.year(), value)); + mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); + return mom; + } - /** - * movement allowed while holding - * @property holdThreshold - * @type {Number} - * @default 2 - */ - holdThreshold: 2 - }, - handler: holdGesture - }; - })('hold'); + function rawGetter(mom, unit) { + return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit](); + } - /** - * @module gestures - */ - /** - * when a touch is being released from the page - * - * @class Release - * @static - */ - /** - * @event release - * @param {Object} ev - */ - Hammer.gestures.Release = { - name: 'release', - index: Infinity, - handler: function releaseGesture(ev, inst) { - if(ev.eventType == EVENT_RELEASE) { - inst.trigger(this.name, ev); + function rawSetter(mom, unit, value) { + if (unit === 'Month') { + return rawMonthSetter(mom, value); + } else { + return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); } } - }; - /** - * @module gestures - */ - /** - * triggers swipe events when the end velocity is above the threshold - * for best usage, set `preventDefault` (on the drag gesture) to `true` - * ```` - * hammertime.on("dragleft swipeleft", function(ev) { - * console.log(ev); - * ev.gesture.preventDefault(); - * }); - * ```` - * - * @class Swipe - * @static - */ - /** - * @event swipe - * @param {Object} ev - */ - /** - * @event swipeleft - * @param {Object} ev - */ - /** - * @event swiperight - * @param {Object} ev - */ - /** - * @event swipeup - * @param {Object} ev - */ - /** - * @event swipedown - * @param {Object} ev - */ - Hammer.gestures.Swipe = { - name: 'swipe', - index: 40, - defaults: { - /** - * @property swipeMinTouches - * @type {Number} - * @default 1 - */ - swipeMinTouches: 1, + function makeAccessor(unit, keepTime) { + return function (value) { + if (value != null) { + rawSetter(this, unit, value); + moment.updateOffset(this, keepTime); + return this; + } else { + return rawGetter(this, unit); + } + }; + } - /** - * @property swipeMaxTouches - * @type {Number} - * @default 1 - */ - swipeMaxTouches: 1, + moment.fn.millisecond = moment.fn.milliseconds = makeAccessor('Milliseconds', false); + moment.fn.second = moment.fn.seconds = makeAccessor('Seconds', false); + moment.fn.minute = moment.fn.minutes = makeAccessor('Minutes', false); + // Setting the hour should keep the time, because the user explicitly + // specified which hour he wants. So trying to maintain the same hour (in + // a new timezone) makes sense. Adding/subtracting hours does not follow + // this rule. + moment.fn.hour = moment.fn.hours = makeAccessor('Hours', true); + // moment.fn.month is defined separately + moment.fn.date = makeAccessor('Date', true); + moment.fn.dates = deprecate('dates accessor is deprecated. Use date instead.', makeAccessor('Date', true)); + moment.fn.year = makeAccessor('FullYear', true); + moment.fn.years = deprecate('years accessor is deprecated. Use year instead.', makeAccessor('FullYear', true)); - /** - * horizontal swipe velocity - * @property swipeVelocityX - * @type {Number} - * @default 0.6 - */ - swipeVelocityX: 0.6, + // add plural methods + moment.fn.days = moment.fn.day; + moment.fn.months = moment.fn.month; + moment.fn.weeks = moment.fn.week; + moment.fn.isoWeeks = moment.fn.isoWeek; + moment.fn.quarters = moment.fn.quarter; - /** - * vertical swipe velocity - * @property swipeVelocityY - * @type {Number} - * @default 0.6 - */ - swipeVelocityY: 0.6 - }, + // add aliased format methods + moment.fn.toJSON = moment.fn.toISOString; - handler: function swipeGesture(ev, inst) { - if(ev.eventType == EVENT_RELEASE) { - var touches = ev.touches.length, - options = inst.options; + // alias isUtc for dev-friendliness + moment.fn.isUTC = moment.fn.isUtc; - // max touches - if(touches < options.swipeMinTouches || - touches > options.swipeMaxTouches) { - return; - } + /************************************ + Duration Prototype + ************************************/ - // when the distance we moved is too small we skip this gesture - // or we can be already in dragging - if(ev.velocityX > options.swipeVelocityX || - ev.velocityY > options.swipeVelocityY) { - // trigger swipe events - inst.trigger(this.name, ev); - inst.trigger(this.name + ev.direction, ev); - } - } + + function daysToYears (days) { + // 400 years have 146097 days (taking into account leap year rules) + return days * 400 / 146097; } - }; - /** - * @module gestures - */ - /** - * Single tap and a double tap on a place - * - * @class Tap - * @static - */ - /** - * @event tap - * @param {Object} ev - */ - /** - * @event doubletap - * @param {Object} ev - */ + function yearsToDays (years) { + // years * 365 + absRound(years / 4) - + // absRound(years / 100) + absRound(years / 400); + return years * 146097 / 400; + } - /** - * @param {String} name - */ - (function(name) { - var hasMoved = false; + extend(moment.duration.fn = Duration.prototype, { - function tapGesture(ev, inst) { - var options = inst.options, - current = Detection.current, - prev = Detection.previous, - sincePrev, - didDoubleTap; + _bubble : function () { + var milliseconds = this._milliseconds, + days = this._days, + months = this._months, + data = this._data, + seconds, minutes, hours, years = 0; - switch(ev.eventType) { - case EVENT_START: - hasMoved = false; - break; + // The following code bubbles up values, see the tests for + // examples of what that means. + data.milliseconds = milliseconds % 1000; - case EVENT_MOVE: - hasMoved = hasMoved || (ev.distance > options.tapMaxDistance); - break; + seconds = absRound(milliseconds / 1000); + data.seconds = seconds % 60; - case EVENT_END: - if(!Utils.inStr(ev.srcEvent.type, 'cancel') && ev.deltaTime < options.tapMaxTime && !hasMoved) { - // previous gesture, for the double tap since these are two different gesture detections - sincePrev = prev && prev.lastEvent && ev.timeStamp - prev.lastEvent.timeStamp; - didDoubleTap = false; + minutes = absRound(seconds / 60); + data.minutes = minutes % 60; - // check if double tap - if(prev && prev.name == name && - (sincePrev && sincePrev < options.doubleTapInterval) && - ev.distance < options.doubleTapDistance) { - inst.trigger('doubletap', ev); - didDoubleTap = true; - } + hours = absRound(minutes / 60); + data.hours = hours % 24; - // do a single tap - if(!didDoubleTap || options.tapAlways) { - current.name = name; - inst.trigger(current.name, ev); - } - } - break; - } - } + days += absRound(hours / 24); - Hammer.gestures.Tap = { - name: name, - index: 100, - handler: tapGesture, - defaults: { - /** - * max time of a tap, this is for the slow tappers - * @property tapMaxTime - * @type {Number} - * @default 250 - */ - tapMaxTime: 250, + // Accurately convert days to years, assume start from year 0. + years = absRound(daysToYears(days)); + days -= absRound(yearsToDays(years)); - /** - * max distance of movement of a tap, this is for the slow tappers - * @property tapMaxDistance - * @type {Number} - * @default 10 - */ - tapMaxDistance: 10, + // 30 days to a month + // TODO (iskren): Use anchor date (like 1st Jan) to compute this. + months += absRound(days / 30); + days %= 30; - /** - * always trigger the `tap` event, even while double-tapping - * @property tapAlways - * @type {Boolean} - * @default true - */ - tapAlways: true, + // 12 months -> 1 year + years += absRound(months / 12); + months %= 12; - /** - * max distance between two taps - * @property doubleTapDistance - * @type {Number} - * @default 20 - */ - doubleTapDistance: 20, + data.days = days; + data.months = months; + data.years = years; + }, - /** - * max time between two taps - * @property doubleTapInterval - * @type {Number} - * @default 300 - */ - doubleTapInterval: 300 - } - }; - })('tap'); + abs : function () { + this._milliseconds = Math.abs(this._milliseconds); + this._days = Math.abs(this._days); + this._months = Math.abs(this._months); - /** - * @module gestures - */ - /** - * when a touch is being touched at the page - * - * @class Touch - * @static - */ - /** - * @event touch - * @param {Object} ev - */ - Hammer.gestures.Touch = { - name: 'touch', - index: -Infinity, - defaults: { - /** - * call preventDefault at touchstart, and makes the element blocking by disabling the scrolling of the page, - * but it improves gestures like transforming and dragging. - * be careful with using this, it can be very annoying for users to be stuck on the page - * @property preventDefault - * @type {Boolean} - * @default false - */ - preventDefault: false, + this._data.milliseconds = Math.abs(this._data.milliseconds); + this._data.seconds = Math.abs(this._data.seconds); + this._data.minutes = Math.abs(this._data.minutes); + this._data.hours = Math.abs(this._data.hours); + this._data.months = Math.abs(this._data.months); + this._data.years = Math.abs(this._data.years); - /** - * disable mouse events, so only touch (or pen!) input triggers events - * @property preventMouse - * @type {Boolean} - * @default false - */ - preventMouse: false - }, - handler: function touchGesture(ev, inst) { - if(inst.options.preventMouse && ev.pointerType == POINTER_MOUSE) { - ev.stopDetect(); - return; - } + return this; + }, - if(inst.options.preventDefault) { - ev.preventDefault(); - } + weeks : function () { + return absRound(this.days() / 7); + }, - if(ev.eventType == EVENT_TOUCH) { - inst.trigger('touch', ev); - } - } - }; + valueOf : function () { + return this._milliseconds + + this._days * 864e5 + + (this._months % 12) * 2592e6 + + toInt(this._months / 12) * 31536e6; + }, - /** - * @module gestures - */ - /** - * User want to scale or rotate with 2 fingers - * Preventing the default browser behavior is a good way to improve feel and working. This can be done with the - * `preventDefault` option. - * - * @class Transform - * @static - */ - /** - * @event transform - * @param {Object} ev - */ - /** - * @event transformstart - * @param {Object} ev - */ - /** - * @event transformend - * @param {Object} ev - */ - /** - * @event pinchin - * @param {Object} ev - */ - /** - * @event pinchout - * @param {Object} ev - */ - /** - * @event rotate - * @param {Object} ev - */ + humanize : function (withSuffix) { + var output = relativeTime(this, !withSuffix, this.localeData()); + + if (withSuffix) { + output = this.localeData().pastFuture(+this, output); + } + + return this.localeData().postformat(output); + }, + + add : function (input, val) { + // supports only 2.0-style add(1, 's') or add(moment) + var dur = moment.duration(input, val); + + this._milliseconds += dur._milliseconds; + this._days += dur._days; + this._months += dur._months; - /** - * @param {String} name - */ - (function(name) { - var triggered = false; + this._bubble(); - function transformGesture(ev, inst) { - switch(ev.eventType) { - case EVENT_START: - triggered = false; - break; + return this; + }, - case EVENT_MOVE: - // at least multitouch - if(ev.touches.length < 2) { - return; - } + subtract : function (input, val) { + var dur = moment.duration(input, val); - var scaleThreshold = Math.abs(1 - ev.scale); - var rotationThreshold = Math.abs(ev.rotation); + this._milliseconds -= dur._milliseconds; + this._days -= dur._days; + this._months -= dur._months; - // when the distance we moved is too small we skip this gesture - // or we can be already in dragging - if(scaleThreshold < inst.options.transformMinScale && - rotationThreshold < inst.options.transformMinRotation) { - return; - } + this._bubble(); - // we are transforming! - Detection.current.name = name; + return this; + }, - // first time, trigger dragstart event - if(!triggered) { - inst.trigger(name + 'start', ev); - triggered = true; - } + get : function (units) { + units = normalizeUnits(units); + return this[units.toLowerCase() + 's'](); + }, - inst.trigger(name, ev); // basic transform event + as : function (units) { + var days, months; + units = normalizeUnits(units); - // trigger rotate event - if(rotationThreshold > inst.options.transformMinRotation) { - inst.trigger('rotate', ev); + if (units === 'month' || units === 'year') { + days = this._days + this._milliseconds / 864e5; + months = this._months + daysToYears(days) * 12; + return units === 'month' ? months : months / 12; + } else { + // handle milliseconds separately because of floating point math errors (issue #1867) + days = this._days + Math.round(yearsToDays(this._months / 12)); + switch (units) { + case 'week': return days / 7 + this._milliseconds / 6048e5; + case 'day': return days + this._milliseconds / 864e5; + case 'hour': return days * 24 + this._milliseconds / 36e5; + case 'minute': return days * 24 * 60 + this._milliseconds / 6e4; + case 'second': return days * 24 * 60 * 60 + this._milliseconds / 1000; + // Math.floor prevents floating point math errors here + case 'millisecond': return Math.floor(days * 24 * 60 * 60 * 1000) + this._milliseconds; + default: throw new Error('Unknown unit ' + units); } + } + }, - // trigger pinch event - if(scaleThreshold > inst.options.transformMinScale) { - inst.trigger('pinch', ev); - inst.trigger('pinch' + (ev.scale < 1 ? 'in' : 'out'), ev); - } - break; + lang : moment.fn.lang, + locale : moment.fn.locale, - case EVENT_RELEASE: - if(triggered && ev.changedLength < 2) { - inst.trigger(name + 'end', ev); - triggered = false; - } - break; - } - } + toIsoString : deprecate( + 'toIsoString() is deprecated. Please use toISOString() instead ' + + '(notice the capitals)', + function () { + return this.toISOString(); + } + ), - Hammer.gestures.Transform = { - name: name, - index: 45, - defaults: { - /** - * minimal scale factor, no scale is 1, zoomin is to 0 and zoomout until higher then 1 - * @property transformMinScale - * @type {Number} - * @default 0.01 - */ - transformMinScale: 0.01, + toISOString : function () { + // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js + var years = Math.abs(this.years()), + months = Math.abs(this.months()), + days = Math.abs(this.days()), + hours = Math.abs(this.hours()), + minutes = Math.abs(this.minutes()), + seconds = Math.abs(this.seconds() + this.milliseconds() / 1000); - /** - * rotation in degrees - * @property transformMinRotation - * @type {Number} - * @default 1 - */ - transformMinRotation: 1 + if (!this.asSeconds()) { + // this is the same as C#'s (Noda) and python (isodate)... + // but not other JS (goog.date) + return 'P0D'; + } + + return (this.asSeconds() < 0 ? '-' : '') + + 'P' + + (years ? years + 'Y' : '') + + (months ? months + 'M' : '') + + (days ? days + 'D' : '') + + ((hours || minutes || seconds) ? 'T' : '') + + (hours ? hours + 'H' : '') + + (minutes ? minutes + 'M' : '') + + (seconds ? seconds + 'S' : ''); }, - handler: transformGesture + localeData : function () { + return this._locale; + }, + + toJSON : function () { + return this.toISOString(); + } + }); + + moment.duration.fn.toString = moment.duration.fn.toISOString; + + function makeDurationGetter(name) { + moment.duration.fn[name] = function () { + return this._data[name]; + }; + } + + for (i in unitMillisecondFactors) { + if (hasOwnProp(unitMillisecondFactors, i)) { + makeDurationGetter(i.toLowerCase()); + } + } + + moment.duration.fn.asMilliseconds = function () { + return this.as('ms'); + }; + moment.duration.fn.asSeconds = function () { + return this.as('s'); + }; + moment.duration.fn.asMinutes = function () { + return this.as('m'); + }; + moment.duration.fn.asHours = function () { + return this.as('h'); + }; + moment.duration.fn.asDays = function () { + return this.as('d'); + }; + moment.duration.fn.asWeeks = function () { + return this.as('weeks'); + }; + moment.duration.fn.asMonths = function () { + return this.as('M'); + }; + moment.duration.fn.asYears = function () { + return this.as('y'); }; - })('transform'); - /** - * @module hammer - */ + /************************************ + Default Locale + ************************************/ - // AMD export - if(true) { - !(__WEBPACK_AMD_DEFINE_RESULT__ = function() { - return Hammer; - }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - // commonjs export - } else if(typeof module !== 'undefined' && module.exports) { - module.exports = Hammer; - // browser export - } else { - window.Hammer = Hammer; - } - })(window); + // Set default locale, other locale will inherit from English. + moment.locale('en', { + ordinalParse: /\d{1,2}(th|st|nd|rd)/, + ordinal : function (number) { + var b = number % 10, + output = (toInt(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + } + }); + + /* EMBED_LOCALES */ + + /************************************ + Exposing Moment + ************************************/ + + function makeGlobal(shouldDeprecate) { + /*global ender:false */ + if (typeof ender !== 'undefined') { + return; + } + oldGlobalMoment = globalScope.moment; + if (shouldDeprecate) { + globalScope.moment = deprecate( + 'Accessing Moment through the global scope is ' + + 'deprecated, and will be removed in an upcoming ' + + 'release.', + moment); + } else { + globalScope.moment = moment; + } + } + + // CommonJS module is defined + if (hasModule) { + module.exports = moment; + } else if (true) { + !(__WEBPACK_AMD_DEFINE_RESULT__ = function (require, exports, module) { + if (module.config && module.config() && module.config().noGlobal === true) { + // release the global variable + globalScope.moment = oldGlobalMoment; + } + + return moment; + }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + makeGlobal(true); + } else { + makeGlobal(); + } + }).call(this); + + /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(71)(module))) /***/ }, /* 60 */ diff --git a/dist/vis.map b/dist/vis.map index 5f0c0c22..9e803a99 100644 --- a/dist/vis.map +++ b/dist/vis.map @@ -1 +1 @@ -{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DateUtil","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","BackgroundGroup","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","giveRange","min","max","total","value","scale","Math","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","floor","random","toString","extend","a","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","b","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","hexToRGB","hex","shorthandRegex","replace","r","g","result","parseInt","overrideOpacity","color","opacity","rgb","substr","RGBToHex","red","green","blue","slice","parseColor","isValidRGB","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","d","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","f","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearchCustom","orderedItems","searchFunction","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easeInOutQuad","start","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","labelObj","point","drawPoints","setAttributeNS","size","label","xOffset","yOffset","content","textContent","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","setOptions","prototype","queue","_queue","destroy","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","getIds","getDataSet","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","refresh","newIds","added","removed","viewOptions","getArguments","defaultFilter","dataSet","updated","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","args","fn","context","entry","clearTimeout","setTimeout","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","getMouseX","clientX","targetTouches","getMouseY","clientY","Emitter","_setScale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","obj","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","startMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","boundingRect","mouseX","mouseY","tooltipTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","log","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","getScale","timeAxis","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","timeAxis2","currentTime","customTime","itemSet","itemsData","groupsData","setGroups","setItems","_redraw","Core","markDirty","refreshItems","newDataSet","initialLoad","dataRange","_getDataRange","setWindow","animate","fit","setSelection","focus","getSelection","itemData","e","getItemRange","dataset","minItem","maxStartItem","maxEndItem","linegraph","getLegend","groupId","isGroupVisible","visibility","convertHiddenOptions","repeat","dateItem","updateHiddenDates","centerContainer","totalRange","pixelTime","startDate","endDate","_d","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","console","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","hidden","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","newValue","switchedYear","switchedMonth","switchedDay","time","conversion","getHiddenDurationBetween","correctTimeForHidden","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","alignZeros","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","decimals","exp","cnt","isMajor","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","pageX","pageY","hammerUtil","byUser","_cancelAnimation","initStart","initEnd","initTime","anyChanged","dragging","done","changed","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","gesture","deltaX","deltaY","diffRange","safeStart","safeEnd","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","centerDate","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","subgroups","newTop","subgroup","format","FORMAT","minorLabels","millisecond","second","minute","hour","weekday","majorLabels","setFormat","defaultFormat","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","snap","getLabelMinor","getLabelMajor","getClassName","even","today","isSame","currentWeek","currentMonth","currentYear","locale","lang","toLowerCase","parent","selected","displayed","dirty","Hammer","select","unselect","setParent","hide","show","isVisible","repositionX","repositionY","_repaintDeleteButton","anchor","editable","deleteButton","title","removeFromDataSet","stopPropagation","_updateContents","template","Element","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","emptyContent","baseClassName","box","getComputedStyle","onTop","itemSubgroup","subgroupIndex","foreground","align","itemSetHeight","marginLeft","maxWidth","_repaintDragLeft","_repaintDragRight","contentLeft","parentWidth","boxWidth","updateTime","dragLeft","dragLeftItem","dragRight","dragRightItem","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","backgroundVertical","toUpperCase","substring","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","drag","prevent_default","setCustomTime","getCustomTime","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","zeroCrossing","lineOffset","master","svgElements","iconsRemoved","amountOfGroups","lineContainer","scrollTop","addGroup","graphOptions","updateGroup","removeGroup","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","_cleanupIcons","backgroundHorizontal","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","_redrawTitle","amountOfSteps","stepDifference","zeroStepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","textTitle","measureCharTitle","titleCharWidth","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","Line","Bar","Points","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","getYRange","groupData","draw","framework","subgroupOrderer","subgroupOrder","visibleItems","byStart","byEnd","checkRangedItems","inner","marker","getLabelWidth","restack","_updateVisibleItems","markerHeight","lastMarkerHeight","_calculateHeight","offsetTop","offsetLeft","ii","resetSubgroups","labelSet","orderSubgroups","_checkIfVisible","sortArray","sortField","removeItem","startArray","endArray","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","initialPos","breakCondition","groupOrder","selectable","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","BACKGROUND","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","Function","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","_removeItem","groupOptions","oldGroupId","oldGroup","_constructByEndArray","itemFromTarget","initialX","itemProps","newProps","initial","groupFromTarget","_updateItemProps","_moveToGroup","changes","ctrlKey","srcEvent","shiftKey","oldSelection","newSelection","xAbs","newItem","_getItemRange","_item","itemSetFromTarget","side","iconSize","iconSpacing","textArea","scrollableHeight","drawLegendIcons","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","lastStart","COUNTER","BarGraphFunctions","yAxisLeft","yAxisRight","legendLeft","legendRight","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","forceGraphUpdate","_updateGraph","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","MAX_CYCLES","_convertYcoordinates","dataContainer","guess","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedDataLeft","barCombinedDataRight","getStackedBarYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","axisUsed","datapoints","xValue","yValue","extractedData","svgHeight","labelValue","majorTexts","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","cur","prevLine","xPrev","xFirstMajorLabel","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_determineBrowserMethod","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","physicsTime","runDoubleSpeed","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","customScalingFunction","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","fontDrawThreshold","scaleFontWithValue","fontSizeMin","fontSizeMax","fontSizeMaxVisible","level","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","labelAlignment","arrowScaleFactor","dash","gap","altLength","inheritColor","useGradients","configurePhysics","physics","barnesHut","thetaInverted","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","clusterByZoom","navigation","keyboard","speed","bindToWindow","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","maxVelocity","minVelocity","stabilize","stabilizationIterations","zoomExtentOnStabilize","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","useDefaultGroups","constants","pixelRatio","hoverObj","controlNodesActive","navigationHammers","manipulationHammers","animationSpeed","animationEasingFunction","animating","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","redrawRequested","images","setOnloadCallback","_requestRedraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulationEnabled","cachedFunctions","startedStabilization","stabilized","draggingNodes","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","keycharm","MixinLoader","Activator","browserType","requiresTimeout","_getScriptPath","scripts","getElementsByTagName","src","_getRange","specificNodes","node","minY","maxY","minX","maxX","boundingBox","nodeId","_findCenter","initialZoom","disableStart","zoomLevel","positionDefined","predefinedPosition","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","_unselectAll","_createManipulatorBar","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","_bindHammer","_markAllEdgesAsDirty","tabIndex","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","dispose","pinch","_onTap","_onDoubleTap","_onMouseMoveTitle","hammerFrame","_onRelease","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_deleteSelected","_cleanupPhysicsConfiguration","_recursiveDOMDelete","DOMobject","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupVisible","popup","_checkHidePopup","setPosition","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","previousPopupObjId","popupObj","nodeUnderCursor","popupType","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","edge","connected","popupTargetType","popupTargetId","setText","pointerObj","stillOnObj","overNode","emitEvent","oldWidth","oldHeight","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","setProperties","properties","colorDirty","_removeFromSelection","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","valueTotal","setValueRange","requestAnimationFrame","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_revertPhysicsState","revertPosition","_revertPhysicsTick","_doInAllActiveSectors","_doInSupportSector","mainMovingStatus","supportMovingStatus","mainMoving","_animationStep","_handleNavigation","startTime","renderStartTime","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","iterations","freezeSimulation","freeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getCenterCoordinates","getBoundingBox","getConnectedNodes","nodeList","nodeObj","toId","fromId","getEdgesFromNode","edgesList","generateColorObject","networkConstants","widthSelected","labelDimensions","yLine","dirtyLabel","fromBackup","toBackup","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","widthDiff","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","fromColor","toColor","grd","createLinearGradient","addColorStop","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","pi","originalAngle","atan2","myAngle","quadraticCurveTo","lineCount","measureText","_rotateForLabelAlignment","_drawLabelRect","_drawLabelText","angleInDegrees","rotate","lineMargin","fillRect","lineJoin","strokeText","setLineDash","pattern","lineDashOffset","lineCap","dashedLine","percentage","arrow","_pointOnBezier","_findBorderPosition","distanceToBorder","distanceToNodes","difference","threshold","arrowPos","guidePos","edgeSegmentLength","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodeFromPosition","getControlNodeToPosition","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","controlnodeFromPos","fromBorderDist","fromBorderPoint","controlnodeToPos","defaultIndex","groupsArray","groupIndex","DEFAULT","groupName","imageBroken","load","url","brokenUrl","img","Image","onload","onerror","error","imagelist","grouplist","reroutedEdges","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","previousState","resetCluster","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawCircularImage","_resizeCircularImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_drawIcon","_resizeIcon","_reset","clearSizeCache","_setForce","_addForce","storeState","isFixed","velocity","getDistance","radiusDiff","fontDiff","_drawImageAtPosition","globalAlpha","drawImage","_drawImageLabel","getTextSize","_swapToImageResizeWhenImageLoaded","diameter","centerX","centerY","_drawRawCircle","circle","clip","textSize","clusterLineWidth","selectionLineWidth","roundRect","database","defaultSize","ellipse","_drawShape","radiusMultiplier","_icon","iconTextSpacing","relativeIconSize","iconFontFace","iconColor","baseline","labelUnderNode","relativeFontSize","strokecolor","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","fontFamily","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","graphData","dotNode","graphNode","convertEdge","dotEdge","graphEdge","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","_redrawTimer","listeners","events","scrollTopMin","redrawCount","_initAutoResize","component","_stopAutoResize","barId","addCustomTime","numIds","customBarId","ts","customBarIds","removeCustomTime","what","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","MAX_REDRAWS","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","custom","_catmullRom","_linear","dFill","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","Bargraph","barCombinedData","coreDistance","drawData","combinedData","intersections","barPoints","_getDataIntersections","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","accumulated","groupLabel","_getStackedBarYRange","xpos","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","code","down","handleEvent","up","keyCode","bound","bindAll","getKey","newBindings","global","dfl","hasOwnProp","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","printMsg","msg","suppressDeprecationWarnings","warn","deprecate","firstTime","deprecateSimple","deprecations","padToken","func","leftZeroFill","ordinalizeToken","period","localeData","ordinal","monthDiff","anchor2","adjust","wholeMonthDiff","meridiemFixWrap","meridiem","isPm","meridiemHour","isPM","Locale","Moment","config","skipOverflow","checkOverflow","copyConfig","updateInProgress","updateOffset","Duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","weeks","week","days","_milliseconds","_days","_months","_locale","_bubble","val","_isAMomentObject","_i","_f","_l","_strict","_tzm","_isUTC","_offset","_pf","momentProperties","absRound","number","targetLength","forceSign","output","positiveMomentsDifference","base","res","isAfter","momentsDifference","makeAs","isBefore","createAdder","dur","tmp","addOrSubtractDurationFromMoment","mom","isAdding","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","isValid","_isValid","getTime","bigHour","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","hasModule","model","local","removeFormattingTokens","makeFormatFunction","formattingTokens","formatTokenFunctions","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","getParseRegexForToken","parseTokenOneDigit","parseTokenThreeDigits","parseTokenFourDigits","parseTokenOneToFourDigits","parseTokenSignedNumber","parseTokenSixDigits","parseTokenOneToSixDigits","parseTokenTwoDigits","parseTokenOneToThreeDigits","parseTokenWord","_meridiemParse","parseTokenOffsetMs","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","_ordinalParse","_ordinalParseLenient","RegExp","regexpEscape","unescapeFormat","utcOffsetFromString","string","possibleTzMatches","tzChunk","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_meridiem","_useUTC","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","_nextDay","makeDate","setUTCMinutes","getUTCMinutes","dateFromObject","getUTCFullYear","makeDateFromStringAndFormat","ISO_8601","parseISO","parsedInput","tokens","skipped","stringLength","totalParsedInputLength","matched","p4","makeDateFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","NaN","score","l","isoRegex","isoDates","isoTimes","makeDateFromString","createFromInputFallback","makeDateFromInput","aspNetJsonRegex","ms","setUTCFullYear","parseWeekday","substituteTimeAgo","withoutSuffix","isFuture","relativeTime","posNegDuration","relativeTimeThresholds","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","daysToAdd","getUTCDay","makeMoment","invalid","preparse","pickBy","moments","dayOfMonth","unit","makeAccessor","keepTime","daysToYears","yearsToDays","makeDurationGetter","makeGlobal","shouldDeprecate","ender","oldGlobalMoment","globalScope","VERSION","aspNetTimeSpanJsonRegex","isoDurationRegex","isoFormat","unitMillisecondFactors","Milliseconds","Seconds","Minutes","Hours","Days","Months","Years","D","Q","DDD","dayofyear","isoweekday","isoweek","weekyear","isoweekyear","ordinalizeTokens","paddedTokens","MMM","monthsShort","MMMM","dd","weekdaysMin","ddd","weekdaysShort","dddd","weekdays","isoWeek","YY","YYYY","YYYYY","YYYYYY","gggg","ggggg","isoWeekYear","GGGG","GGGGG","isoWeekday","SS","SSS","SSSS","Z","utcOffset","ZZ","zoneAbbr","zz","zoneName","unix","lists","DDDD","_monthsShort","monthName","regex","_monthsParse","_longMonthsParse","_shortMonthsParse","_weekdays","_weekdaysShort","_weekdaysMin","weekdayName","_weekdaysParse","_longDateFormat","LTS","LT","L","LL","LLL","LLLL","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","firstDayOfYear","_invalidDate","ret","parseIso","diffRes","isDuration","inp","version","relativeTimeThreshold","limit","defineLocale","_abbr","abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","keepLocalTime","_dateUtcOffset","inputString","asFloat","that","zoneDiff","humanize","fromNow","sod","startOf","isDST","getDay","endOf","inputMs","isBetween","zone","localAdjust","_changeInProgress","isLocal","isUtcOffset","isUtc","hasAlignedHourOffset","isoWeeksInYear","weekInfo","newLocaleData","getTimezoneOffset","isoWeeks","toJSON","isUTC","withSuffix","toIsoString","asSeconds","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","ordinalParse","require","noGlobal","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","defaults","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","inStr","find","inArray","hasParent","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","trigger","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","graphToggleSmoothCurves","graph_toggleSmooth","getElementById","graphRepositionNodes","showValueOfRange","repositionNodes","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","_restoreNodes","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","clusterToFit","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodes","supportNodeId","gravity","gravityForce","_sector","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","maxGravitational","maxSpring","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","dynamicSmoothCurves","nameArray","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_addSector","decreaseClusterLevel","_expandClusterNode","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","detectedZoomingIn","detectedZoomingOut","_collapseSector","_formClusters","_openClusters","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","_openClustersBySize","openAll","containedNodeId","childNode","_expelChildFromParent","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","children","childrenIds","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","overrideSelectable","DOM","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","selectNodes","RangeError","selectEdges","_clearManipulatorBar","manipulationDOM","_cleanManipulatorHammers","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","_bindHammerToDiv","boundFunction","edgeBeingEdited","selectedControlNode","domElement","funct","_createAddNodeToolbar","_addNode","_createAddEdgeToolbar","_handleConnect","_finishConnect","_createEditEdgeToolbar","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","_editNode","selectedNodes","selectedEdges","navigationDOM","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","firstNode","_setLevelDirected","parentId","parentLevel","nodeMoved","webpackContext","req","resolve","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackPolyfill","paths"],"mappings":"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QF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,W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"} \ No newline at end of file +{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DateUtil","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","BackgroundGroup","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","giveRange","min","max","total","value","scale","Math","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","floor","random","toString","extend","a","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","b","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","hexToRGB","hex","shorthandRegex","replace","r","g","result","parseInt","overrideOpacity","color","opacity","rgb","substr","RGBToHex","red","green","blue","slice","parseColor","isValidRGB","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","d","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","f","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearchCustom","orderedItems","searchFunction","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easeInOutQuad","start","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","labelObj","point","drawPoints","setAttributeNS","size","label","xOffset","yOffset","content","textContent","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","setOptions","prototype","queue","_queue","destroy","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","getIds","getDataSet","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","refresh","newIds","added","removed","viewOptions","getArguments","defaultFilter","dataSet","updated","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","args","fn","context","entry","clearTimeout","setTimeout","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","getMouseX","clientX","targetTouches","getMouseY","clientY","Emitter","_setScale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","obj","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","startMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","boundingRect","mouseX","mouseY","tooltipTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","log","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","getScale","timeAxis","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","timeAxis2","currentTime","customTime","itemSet","itemsData","groupsData","setGroups","setItems","_redraw","Core","markDirty","refreshItems","newDataSet","initialLoad","dataRange","_getDataRange","setWindow","animate","fit","setSelection","focus","getSelection","itemData","e","getItemRange","dataset","minItem","maxStartItem","maxEndItem","linegraph","getLegend","groupId","isGroupVisible","visibility","convertHiddenOptions","repeat","dateItem","updateHiddenDates","centerContainer","totalRange","pixelTime","startDate","endDate","_d","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","console","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","hidden","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","newValue","switchedYear","switchedMonth","switchedDay","time","conversion","getHiddenDurationBetween","correctTimeForHidden","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","alignZeros","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","decimals","exp","cnt","isMajor","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","pageX","pageY","hammerUtil","byUser","_cancelAnimation","initStart","initEnd","initTime","anyChanged","dragging","done","changed","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","gesture","deltaX","deltaY","diffRange","safeStart","safeEnd","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","centerDate","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","subgroups","newTop","subgroup","format","FORMAT","minorLabels","millisecond","second","minute","hour","weekday","majorLabels","setFormat","defaultFormat","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","snap","getLabelMinor","getLabelMajor","getClassName","even","today","isSame","currentWeek","currentMonth","currentYear","locale","lang","toLowerCase","parent","selected","displayed","dirty","Hammer","select","unselect","setParent","hide","show","isVisible","repositionX","repositionY","_repaintDeleteButton","anchor","editable","deleteButton","title","removeFromDataSet","stopPropagation","_updateContents","template","Element","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","emptyContent","baseClassName","box","getComputedStyle","onTop","itemSubgroup","subgroupIndex","foreground","align","itemSetHeight","marginLeft","maxWidth","_repaintDragLeft","_repaintDragRight","contentLeft","parentWidth","boxWidth","updateTime","dragLeft","dragLeftItem","dragRight","dragRightItem","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","backgroundVertical","toUpperCase","substring","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","drag","prevent_default","setCustomTime","getCustomTime","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","zeroCrossing","lineOffset","master","svgElements","iconsRemoved","amountOfGroups","lineContainer","scrollTop","addGroup","graphOptions","updateGroup","removeGroup","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","_cleanupIcons","backgroundHorizontal","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","_redrawTitle","amountOfSteps","stepDifference","zeroStepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","textTitle","measureCharTitle","titleCharWidth","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","Line","Bar","Points","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","getYRange","groupData","draw","framework","subgroupOrderer","subgroupOrder","visibleItems","byStart","byEnd","checkRangedItems","inner","marker","getLabelWidth","restack","_updateVisibleItems","markerHeight","lastMarkerHeight","_calculateHeight","offsetTop","offsetLeft","ii","resetSubgroups","labelSet","orderSubgroups","_checkIfVisible","sortArray","sortField","removeItem","startArray","endArray","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","initialPos","breakCondition","groupOrder","selectable","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","BACKGROUND","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","Function","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","_removeItem","groupOptions","oldGroupId","oldGroup","_constructByEndArray","itemFromTarget","initialX","itemProps","srcEvent","ctrlKey","_onDragStartAddItem","xAbs","groupFromTarget","newItem","newProps","initial","_updateItemProps","_moveToGroup","changes","shiftKey","oldSelection","newSelection","_getItemRange","_item","itemSetFromTarget","side","iconSize","iconSpacing","textArea","scrollableHeight","drawLegendIcons","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","lastStart","COUNTER","BarGraphFunctions","yAxisLeft","yAxisRight","legendLeft","legendRight","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","forceGraphUpdate","_updateGraph","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","MAX_CYCLES","_convertYcoordinates","dataContainer","guess","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedDataLeft","barCombinedDataRight","getStackedBarYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","axisUsed","datapoints","xValue","yValue","extractedData","svgHeight","labelValue","majorTexts","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","cur","prevLine","xPrev","xFirstMajorLabel","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_determineBrowserMethod","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","physicsTime","runDoubleSpeed","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","customScalingFunction","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","fontDrawThreshold","scaleFontWithValue","fontSizeMin","fontSizeMax","fontSizeMaxVisible","level","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","labelAlignment","arrowScaleFactor","dash","gap","altLength","inheritColor","useGradients","configurePhysics","physics","barnesHut","thetaInverted","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","clusterByZoom","navigation","keyboard","speed","bindToWindow","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","maxVelocity","minVelocity","stabilize","stabilizationIterations","zoomExtentOnStabilize","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","useDefaultGroups","constants","pixelRatio","hoverObj","controlNodesActive","navigationHammers","manipulationHammers","animationSpeed","animationEasingFunction","animating","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","redrawRequested","images","setOnloadCallback","_requestRedraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulationEnabled","cachedFunctions","startedStabilization","stabilized","draggingNodes","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","keycharm","MixinLoader","Activator","browserType","requiresTimeout","_getScriptPath","scripts","getElementsByTagName","src","_getRange","specificNodes","node","minY","maxY","minX","maxX","boundingBox","nodeId","_findCenter","initialZoom","disableStart","zoomLevel","positionDefined","predefinedPosition","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","_unselectAll","_createManipulatorBar","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","_bindHammer","_markAllEdgesAsDirty","tabIndex","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","dispose","pinch","_onTap","_onDoubleTap","_onMouseMoveTitle","hammerFrame","_onRelease","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_deleteSelected","_cleanupPhysicsConfiguration","_recursiveDOMDelete","DOMobject","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupVisible","popup","_checkHidePopup","setPosition","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","previousPopupObjId","popupObj","nodeUnderCursor","popupType","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","edge","connected","popupTargetType","popupTargetId","setText","pointerObj","stillOnObj","overNode","emitEvent","oldWidth","oldHeight","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","setProperties","properties","colorDirty","_removeFromSelection","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","valueTotal","setValueRange","requestAnimationFrame","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_revertPhysicsState","revertPosition","_revertPhysicsTick","_doInAllActiveSectors","_doInSupportSector","mainMovingStatus","supportMovingStatus","mainMoving","_animationStep","_handleNavigation","startTime","renderStartTime","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","iterations","freezeSimulation","freeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getCenterCoordinates","getBoundingBox","getConnectedNodes","nodeList","nodeObj","toId","fromId","getEdgesFromNode","edgesList","generateColorObject","networkConstants","widthSelected","labelDimensions","yLine","dirtyLabel","fromBackup","toBackup","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","widthDiff","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","fromColor","toColor","grd","createLinearGradient","addColorStop","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","pi","originalAngle","atan2","myAngle","quadraticCurveTo","lineCount","measureText","_rotateForLabelAlignment","_drawLabelRect","_drawLabelText","angleInDegrees","rotate","lineMargin","fillRect","lineJoin","strokeText","setLineDash","pattern","lineDashOffset","lineCap","dashedLine","percentage","arrow","_pointOnBezier","_findBorderPosition","distanceToBorder","distanceToNodes","difference","threshold","arrowPos","guidePos","edgeSegmentLength","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodeFromPosition","getControlNodeToPosition","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","controlnodeFromPos","fromBorderDist","fromBorderPoint","controlnodeToPos","defaultIndex","groupsArray","groupIndex","DEFAULT","groupName","imageBroken","load","url","brokenUrl","img","Image","onload","onerror","error","imagelist","grouplist","reroutedEdges","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","previousState","resetCluster","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawCircularImage","_resizeCircularImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_drawIcon","_resizeIcon","_reset","clearSizeCache","_setForce","_addForce","storeState","isFixed","velocity","getDistance","radiusDiff","fontDiff","_drawImageAtPosition","globalAlpha","drawImage","_drawImageLabel","getTextSize","_swapToImageResizeWhenImageLoaded","diameter","centerX","centerY","_drawRawCircle","circle","clip","textSize","clusterLineWidth","selectionLineWidth","roundRect","database","defaultSize","ellipse","_drawShape","radiusMultiplier","_icon","iconTextSpacing","relativeIconSize","iconFontFace","iconColor","baseline","labelUnderNode","relativeFontSize","strokecolor","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","fontFamily","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","graphData","dotNode","graphNode","convertEdge","dotEdge","graphEdge","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","_redrawTimer","listeners","events","scrollTopMin","redrawCount","_initAutoResize","component","_stopAutoResize","barId","addCustomTime","numIds","customBarId","ts","customBarIds","removeCustomTime","what","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","MAX_REDRAWS","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","custom","_catmullRom","_linear","dFill","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","Bargraph","barCombinedData","coreDistance","drawData","combinedData","intersections","barPoints","_getDataIntersections","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","accumulated","groupLabel","_getStackedBarYRange","xpos","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","code","down","handleEvent","up","keyCode","bound","bindAll","getKey","newBindings","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","VERSION","defaults","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","inStr","find","inArray","hasParent","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","trigger","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","global","dfl","hasOwnProp","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","printMsg","msg","suppressDeprecationWarnings","warn","deprecate","firstTime","deprecateSimple","deprecations","padToken","func","leftZeroFill","ordinalizeToken","period","localeData","ordinal","monthDiff","anchor2","adjust","wholeMonthDiff","meridiemFixWrap","meridiem","isPm","meridiemHour","isPM","Locale","Moment","config","skipOverflow","checkOverflow","copyConfig","updateInProgress","updateOffset","Duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","weeks","week","days","_milliseconds","_days","_months","_locale","_bubble","val","_isAMomentObject","_i","_f","_l","_strict","_tzm","_isUTC","_offset","_pf","momentProperties","absRound","number","targetLength","forceSign","output","positiveMomentsDifference","base","res","isAfter","momentsDifference","makeAs","isBefore","createAdder","dur","tmp","addOrSubtractDurationFromMoment","mom","isAdding","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","isValid","_isValid","getTime","bigHour","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","hasModule","model","local","removeFormattingTokens","makeFormatFunction","formattingTokens","formatTokenFunctions","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","getParseRegexForToken","parseTokenOneDigit","parseTokenThreeDigits","parseTokenFourDigits","parseTokenOneToFourDigits","parseTokenSignedNumber","parseTokenSixDigits","parseTokenOneToSixDigits","parseTokenTwoDigits","parseTokenOneToThreeDigits","parseTokenWord","_meridiemParse","parseTokenOffsetMs","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","_ordinalParse","_ordinalParseLenient","RegExp","regexpEscape","unescapeFormat","utcOffsetFromString","string","possibleTzMatches","tzChunk","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_meridiem","_useUTC","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","_nextDay","makeDate","setUTCMinutes","getUTCMinutes","dateFromObject","getUTCFullYear","makeDateFromStringAndFormat","ISO_8601","parseISO","parsedInput","tokens","skipped","stringLength","totalParsedInputLength","matched","p4","makeDateFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","NaN","score","l","isoRegex","isoDates","isoTimes","makeDateFromString","createFromInputFallback","makeDateFromInput","aspNetJsonRegex","ms","setUTCFullYear","parseWeekday","substituteTimeAgo","withoutSuffix","isFuture","relativeTime","posNegDuration","relativeTimeThresholds","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","daysToAdd","getUTCDay","makeMoment","invalid","preparse","pickBy","moments","dayOfMonth","unit","makeAccessor","keepTime","daysToYears","yearsToDays","makeDurationGetter","makeGlobal","shouldDeprecate","ender","oldGlobalMoment","globalScope","aspNetTimeSpanJsonRegex","isoDurationRegex","isoFormat","unitMillisecondFactors","Milliseconds","Seconds","Minutes","Hours","Days","Months","Years","D","Q","DDD","dayofyear","isoweekday","isoweek","weekyear","isoweekyear","ordinalizeTokens","paddedTokens","MMM","monthsShort","MMMM","dd","weekdaysMin","ddd","weekdaysShort","dddd","weekdays","isoWeek","YY","YYYY","YYYYY","YYYYYY","gggg","ggggg","isoWeekYear","GGGG","GGGGG","isoWeekday","SS","SSS","SSSS","Z","utcOffset","ZZ","zoneAbbr","zz","zoneName","unix","lists","DDDD","_monthsShort","monthName","regex","_monthsParse","_longMonthsParse","_shortMonthsParse","_weekdays","_weekdaysShort","_weekdaysMin","weekdayName","_weekdaysParse","_longDateFormat","LTS","LT","L","LL","LLL","LLLL","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","firstDayOfYear","_invalidDate","ret","parseIso","diffRes","isDuration","inp","version","relativeTimeThreshold","limit","defineLocale","_abbr","abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","keepLocalTime","_dateUtcOffset","inputString","asFloat","that","zoneDiff","humanize","fromNow","sod","startOf","isDST","getDay","endOf","inputMs","isBetween","zone","localAdjust","_changeInProgress","isLocal","isUtcOffset","isUtc","hasAlignedHourOffset","isoWeeksInYear","weekInfo","newLocaleData","getTimezoneOffset","isoWeeks","toJSON","isUTC","withSuffix","toIsoString","asSeconds","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","ordinalParse","require","noGlobal","graphToggleSmoothCurves","graph_toggleSmooth","getElementById","graphRepositionNodes","showValueOfRange","repositionNodes","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","_restoreNodes","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","clusterToFit","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodes","supportNodeId","gravity","gravityForce","_sector","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","maxGravitational","maxSpring","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","dynamicSmoothCurves","nameArray","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_addSector","decreaseClusterLevel","_expandClusterNode","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","detectedZoomingIn","detectedZoomingOut","_collapseSector","_formClusters","_openClusters","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","_openClustersBySize","openAll","containedNodeId","childNode","_expelChildFromParent","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","children","childrenIds","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","overrideSelectable","DOM","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","selectNodes","RangeError","selectEdges","_clearManipulatorBar","manipulationDOM","_cleanManipulatorHammers","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","_bindHammerToDiv","boundFunction","edgeBeingEdited","selectedControlNode","domElement","funct","_createAddNodeToolbar","_addNode","_createAddEdgeToolbar","_handleConnect","_finishConnect","_createEditEdgeToolbar","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","_editNode","selectedNodes","selectedEdges","navigationDOM","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","firstNode","_setLevelDirected","parentId","parentLevel","nodeMoved","webpackContext","req","resolve","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackPolyfill","paths"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAyBA,cAEA,SAA2CA,EAAMC,GAC1B,gBAAZC,UAA0C,gBAAXC,QACxCA,OAAOD,QAAUD,IACQ,kBAAXG,SAAyBA,OAAOC,IAC9CD,OAAOH,GACmB,gBAAZC,SACdA,QAAa,IAAID,IAEjBD,EAAU,IAAIC,KACbK,KAAM,WACT,MAAgB,UAAUC,GAKhB,QAASC,GAAoBC,GAG5B,GAAGC,EAAiBD,GACnB,MAAOC,GAAiBD,GAAUP,OAGnC,IAAIC,GAASO,EAAiBD,IAC7BP,WACAS,GAAIF,EACJG,QAAQ,EAUT,OANAL,GAAQE,GAAUI,KAAKV,EAAOD,QAASC,EAAQA,EAAOD,QAASM,GAG/DL,EAAOS,QAAS,EAGTT,EAAOD,QAvBf,GAAIQ,KAqCJ,OATAF,GAAoBM,EAAIP,EAGxBC,EAAoBO,EAAIL,EAGxBF,EAAoBQ,EAAI,GAGjBR,EAAoB,KAK/B,SAASL,EAAQD,EAASM,GAG9BN,EAAQe,KAAOT,EAAoB,GACnCN,EAAQgB,QAAUV,EAAoB,GAGtCN,EAAQiB,QAAUX,EAAoB,GACtCN,EAAQkB,SAAWZ,EAAoB,GACvCN,EAAQmB,MAAQb,EAAoB,GAGpCN,EAAQoB,QAAUd,EAAoB,GACtCN,EAAQqB,SACNC,OAAQhB,EAAoB,GAC5BiB,OAAQjB,EAAoB,GAC5BkB,QAASlB,EAAoB,GAC7BmB,QAASnB,EAAoB,IAC7BoB,OAAQpB,EAAoB,IAC5BqB,WAAYrB,EAAoB,KAIlCN,EAAQ4B,SAAWtB,EAAoB,IACvCN,EAAQ6B,QAAUvB,EAAoB,IACtCN,EAAQ8B,UACNC,SAAUzB,EAAoB,IAC9B0B,SAAU1B,EAAoB,IAC9B2B,MAAO3B,EAAoB,IAC3B4B,MAAO5B,EAAoB,IAC3B6B,SAAU7B,EAAoB,IAE9B8B,YACEC,OACEC,KAAMhC,EAAoB,IAC1BiC,eAAgBjC,EAAoB,IACpCkC,QAASlC,EAAoB,IAC7BmC,UAAWnC,EAAoB,IAC/BoC,UAAWpC,EAAoB,KAGjCqC,UAAWrC,EAAoB,IAC/BsC,YAAatC,EAAoB,IACjCuC,WAAYvC,EAAoB,IAChCwC,SAAUxC,EAAoB,IAC9ByC,WAAYzC,EAAoB,IAChC0C,MAAO1C,EAAoB,IAC3B2C,gBAAiB3C,EAAoB,IACrC4C,QAAS5C,EAAoB,IAC7B6C,OAAQ7C,EAAoB,IAC5B8C,UAAW9C,EAAoB,IAC/B+C,SAAU/C,EAAoB,MAKlCN,EAAQsD,QAAUhD,EAAoB,IACtCN,EAAQuD,SACNC,KAAMlD,EAAoB,IAC1BmD,OAAQnD,EAAoB,IAC5BoD,OAAQpD,EAAoB,IAC5BqD,KAAMrD,EAAoB,IAC1BsD,MAAOtD,EAAoB,IAC3BuD,UAAWvD,EAAoB,IAC/BwD,YAAaxD,EAAoB,KAInCN,EAAQ+D,MAAQ,WACd,KAAM,IAAIC,OAAM,+EAIlBhE,EAAQiE,OAAS3D,EAAoB,IACrCN,EAAQkE,OAAS5D,EAAoB,KAKjC,SAASL,EAAQD,EAASM,GAM9B,GAAI2D,GAAS3D,EAAoB,GAOjCN,GAAQmE,SAAW,SAASC,GAC1B,MAAQA,aAAkBC,SAA2B,gBAAVD,IAa7CpE,EAAQsE,UAAY,SAASC,EAAIC,EAAIC,EAAMC,GACzC,GAAIF,GAAOD,EACT,MAAO,EAGP,IAAII,GAAQ,GAAKH,EAAMD,EACvB,OAAOK,MAAKJ,IAAI,GAAGE,EAAQH,GAAKI,IASpC3E,EAAQ6E,SAAW,SAAST,GAC1B,MAAQA,aAAkBU,SAA2B,gBAAVV,IAQ7CpE,EAAQ+E,OAAS,SAASX,GACxB,GAAIA,YAAkBY,MACpB,OAAO,CAEJ,IAAIhF,EAAQ6E,SAAST,GAAS,CAEjC,GAAIa,GAAQC,EAAaC,KAAKf,EAC9B,IAAIa,EACF,OAAO,CAEJ,KAAKG,MAAMJ,KAAKK,MAAMjB,IACzB,OAAO,EAIX,OAAO,GAQTpE,EAAQsF,YAAc,SAASlB,GAC7B,MAA4B,mBAAb,SACVmB,OAAoB,eACpBA,OAAOC,cAAuB,WAC9BpB,YAAkBmB,QAAOC,cAAcC,WAQ9CzF,EAAQ0F,WAAa,WACnB,GAAIC,GAAK,WACP,MAAOf,MAAKgB,MACQ,MAAhBhB,KAAKiB,UACPC,SAAS,IAGb,OACIH,KAAOA,IAAO,IACVA,IAAO,IACPA,IAAO,IACPA,IAAO,IACPA,IAAOA,IAAOA,KAWxB3F,EAAQ+F,OAAS,SAAUC,GACzB,IAAK,GAAIC,GAAI,EAAGC,EAAMC,UAAUC,OAAYF,EAAJD,EAASA,IAAK,CACpD,GAAII,GAAQF,UAAUF,EACtB,KAAK,GAAIK,KAAQD,GACXA,EAAME,eAAeD,KACvBN,EAAEM,GAAQD,EAAMC,IAKtB,MAAON,IAWThG,EAAQwG,gBAAkB,SAAUC,EAAOT,GACzC,IAAKU,MAAMC,QAAQF,GACjB,KAAM,IAAIzC,OAAM,uDAGlB,KAAK,GAAIiC,GAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAGpC,IAAK,GAFDI,GAAQF,UAAUF,GAEbnF,EAAI,EAAGA,EAAI2F,EAAML,OAAQtF,IAAK,CACrC,GAAIwF,GAAOG,EAAM3F,EACbuF,GAAME,eAAeD,KACvBN,EAAEM,GAAQD,EAAMC,IAItB,MAAON,IAWThG,EAAQ4G,oBAAsB,SAAUH,EAAOT,EAAGa,GAEhD,GAAIH,MAAMC,QAAQE,GAChB,KAAM,IAAIC,WAAU,yCAEtB,KAAK,GAAIb,GAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAEpC,IAAK,GADDI,GAAQF,UAAUF,GACbnF,EAAI,EAAGA,EAAI2F,EAAML,OAAQtF,IAAK,CACrC,GAAIwF,GAAOG,EAAM3F,EACjB,IAAIuF,EAAME,eAAeD,GACvB,GAAIO,EAAEP,IAASO,EAAEP,GAAMS,cAAgBC,OACrBC,SAAZjB,EAAEM,KACJN,EAAEM,OAEAN,EAAEM,GAAMS,cAAgBC,OAC1BhH,EAAQkH,WAAWlB,EAAEM,GAAOO,EAAEP,IAG9BN,EAAEM,GAAQO,EAAEP,OAET,CAAA,GAAII,MAAMC,QAAQE,EAAEP,IACzB,KAAM,IAAIQ,WAAU,yCAEpBd,GAAEM,GAAQO,EAAEP,IAMpB,MAAON,IAWThG,EAAQmH,uBAAyB,SAAUV,EAAOT,EAAGa,GAEnD,GAAIH,MAAMC,QAAQE,GAChB,KAAM,IAAIC,WAAU,yCAEtB,KAAK,GAAIR,KAAQO,GACf,GAAIA,EAAEN,eAAeD,IACQ,IAAvBG,EAAMW,QAAQd,GAChB,GAAIO,EAAEP,IAASO,EAAEP,GAAMS,cAAgBC,OACrBC,SAAZjB,EAAEM,KACJN,EAAEM,OAEAN,EAAEM,GAAMS,cAAgBC,OAC1BhH,EAAQkH,WAAWlB,EAAEM,GAAOO,EAAEP,IAG9BN,EAAEM,GAAQO,EAAEP,OAET,CAAA,GAAII,MAAMC,QAAQE,EAAEP,IACzB,KAAM,IAAIQ,WAAU,yCAEpBd,GAAEM,GAAQO,EAAEP,GAKpB,MAAON,IASThG,EAAQkH,WAAa,SAASlB,EAAGa,GAE/B,GAAIH,MAAMC,QAAQE,GAChB,KAAM,IAAIC,WAAU,yCAGtB,KAAK,GAAIR,KAAQO,GACf,GAAIA,EAAEN,eAAeD,GACnB,GAAIO,EAAEP,IAASO,EAAEP,GAAMS,cAAgBC,OACrBC,SAAZjB,EAAEM,KACJN,EAAEM,OAEAN,EAAEM,GAAMS,cAAgBC,OAC1BhH,EAAQkH,WAAWlB,EAAEM,GAAOO,EAAEP,IAG9BN,EAAEM,GAAQO,EAAEP,OAET,CAAA,GAAII,MAAMC,QAAQE,EAAEP,IACzB,KAAM,IAAIQ,WAAU,yCAEpBd,GAAEM,GAAQO,EAAEP,GAIlB,MAAON,IAUThG,EAAQqH,WAAa,SAAUrB,EAAGa,GAChC,GAAIb,EAAEI,QAAUS,EAAET,OAAQ,OAAO,CAEjC,KAAK,GAAIH,GAAI,EAAGC,EAAMF,EAAEI,OAAYF,EAAJD,EAASA,IACvC,GAAID,EAAEC,IAAMY,EAAEZ,GAAI,OAAO,CAG3B,QAAO,GAYTjG,EAAQsH,QAAU,SAASlD,EAAQmD,GACjC,GAAItC,EAEJ,IAAegC,SAAX7C,EACF,MAAO6C,OAET,IAAe,OAAX7C,EACF,MAAO,KAGT,KAAKmD,EACH,MAAOnD,EAET,IAAsB,gBAATmD,MAAwBA,YAAgBzC,SACnD,KAAM,IAAId,OAAM,wBAIlB,QAAQuD,GACN,IAAK,UACL,IAAK,UACH,MAAOC,SAAQpD,EAEjB,KAAK,SACL,IAAK,SACH,MAAOC,QAAOD,EAAOqD,UAEvB,KAAK,SACL,IAAK,SACH,MAAO3C,QAAOV,EAEhB,KAAK,OACH,GAAIpE,EAAQmE,SAASC,GACnB,MAAO,IAAIY,MAAKZ,EAElB,IAAIA,YAAkBY,MACpB,MAAO,IAAIA,MAAKZ,EAAOqD,UAEpB,IAAIxD,EAAOyD,SAAStD,GACvB,MAAO,IAAIY,MAAKZ,EAAOqD,UAEzB,IAAIzH,EAAQ6E,SAAST,GAEnB,MADAa,GAAQC,EAAaC,KAAKf,GACtBa,EAEK,GAAID,MAAKX,OAAOY,EAAM,KAGtBhB,EAAOG,GAAQuD,QAIxB,MAAM,IAAI3D,OACN,iCAAmChE,EAAQ4H,QAAQxD,GAC/C,gBAGZ,KAAK,SACH,GAAIpE,EAAQmE,SAASC,GACnB,MAAOH,GAAOG,EAEhB,IAAIA,YAAkBY,MACpB,MAAOf,GAAOG,EAAOqD,UAElB,IAAIxD,EAAOyD,SAAStD,GACvB,MAAOH,GAAOG,EAEhB,IAAIpE,EAAQ6E,SAAST,GAEnB,MADAa,GAAQC,EAAaC,KAAKf,GAGjBH,EAFLgB,EAEYZ,OAAOY,EAAM,IAGbb,EAIhB,MAAM,IAAIJ,OACN,iCAAmChE,EAAQ4H,QAAQxD,GAC/C,gBAGZ,KAAK,UACH,GAAIpE,EAAQmE,SAASC,GACnB,MAAO,IAAIY,MAAKZ,EAEb,IAAIA,YAAkBY,MACzB,MAAOZ,GAAOyD,aAEX,IAAI5D,EAAOyD,SAAStD,GACvB,MAAOA,GAAOuD,SAASE,aAEpB,IAAI7H,EAAQ6E,SAAST,GAExB,MADAa,GAAQC,EAAaC,KAAKf,GACtBa,EAEK,GAAID,MAAKX,OAAOY,EAAM,KAAK4C,cAG3B,GAAI7C,MAAKZ,GAAQyD,aAI1B,MAAM,IAAI7D,OACN,iCAAmChE,EAAQ4H,QAAQxD,GAC/C,mBAGZ,KAAK,UACH,GAAIpE,EAAQmE,SAASC,GACnB,MAAO,SAAWA,EAAS,IAExB,IAAIA,YAAkBY,MACzB,MAAO,SAAWZ,EAAOqD,UAAY,IAElC,IAAIzH,EAAQ6E,SAAST,GAAS,CACjCa,EAAQC,EAAaC,KAAKf,EAC1B,IAAIM,EAQJ,OALEA,GAFEO,EAEM,GAAID,MAAKX,OAAOY,EAAM,KAAKwC,UAG3B,GAAIzC,MAAKZ,GAAQqD,UAEpB,SAAW/C,EAAQ,KAG1B,KAAM,IAAIV,OACN,iCAAmChE,EAAQ4H,QAAQxD,GAC/C,mBAGZ,SACE,KAAM,IAAIJ,OAAM,iBAAmBuD,EAAO,MAOhD,IAAIrC,GAAe,qBAOnBlF,GAAQ4H,QAAU,SAASxD,GACzB,GAAImD,SAAcnD,EAElB,OAAY,UAARmD,EACY,MAAVnD,EACK,OAELA,YAAkBoD,SACb,UAELpD,YAAkBC,QACb,SAELD,YAAkBU,QACb,SAEL4B,MAAMC,QAAQvC,GACT,QAELA,YAAkBY,MACb,OAEF,SAEQ,UAARuC,EACA,SAEQ,WAARA,EACA,UAEQ,UAARA,EACA,SAGFA,GASTvH,EAAQ8H,gBAAkB,SAASC,GACjC,MAAOA,GAAKC,wBAAwBC,KAAOC,OAAOC,aASpDnI,EAAQoI,eAAiB,SAASL,GAChC,MAAOA,GAAKC,wBAAwBK,IAAMH,OAAOI,aAQnDtI,EAAQuI,aAAe,SAASR,EAAMS,GACpC,GAAIC,GAAUV,EAAKS,UAAUE,MAAM,IACD,KAA9BD,EAAQrB,QAAQoB,KAClBC,EAAQE,KAAKH,GACbT,EAAKS,UAAYC,EAAQG,KAAK,OASlC5I,EAAQ6I,gBAAkB,SAASd,EAAMS,GACvC,GAAIC,GAAUV,EAAKS,UAAUE,MAAM,KAC/BI,EAAQL,EAAQrB,QAAQoB,EACf,KAATM,IACFL,EAAQM,OAAOD,EAAO,GACtBf,EAAKS,UAAYC,EAAQG,KAAK,OAalC5I,EAAQgJ,QAAU,SAAS5E,EAAQ6E,GACjC,GAAIhD,GACAC,CACJ,IAAIQ,MAAMC,QAAQvC,GAEhB,IAAK6B,EAAI,EAAGC,EAAM9B,EAAOgC,OAAYF,EAAJD,EAASA,IACxCgD,EAAS7E,EAAO6B,GAAIA,EAAG7B,OAKzB,KAAK6B,IAAK7B,GACJA,EAAOmC,eAAeN,IACxBgD,EAAS7E,EAAO6B,GAAIA,EAAG7B,IAY/BpE,EAAQkJ,QAAU,SAAS9E,GACzB,GAAI+E,KAEJ,KAAK,GAAI7C,KAAQlC,GACXA,EAAOmC,eAAeD,IAAO6C,EAAMR,KAAKvE,EAAOkC,GAGrD,OAAO6C,IAUTnJ,EAAQoJ,eAAiB,SAAShF,EAAQiF,EAAK3E,GAC7C,MAAIN,GAAOiF,KAAS3E,GAClBN,EAAOiF,GAAO3E,GACP,IAGA,GAYX1E,EAAQsJ,iBAAmB,SAASC,EAASC,EAAQC,EAAUC,GACzDH,EAAQD,kBACSrC,SAAfyC,IACFA,GAAa,GAEA,eAAXF,GAA2BG,UAAUC,UAAUxC,QAAQ,YAAc,IACvEoC,EAAS,kBAGXD,EAAQD,iBAAiBE,EAAQC,EAAUC,IAE3CH,EAAQM,YAAY,KAAOL,EAAQC,IAWvCzJ,EAAQ8J,oBAAsB,SAASP,EAASC,EAAQC,EAAUC,GAC5DH,EAAQO,qBAES7C,SAAfyC,IACFA,GAAa,GAEA,eAAXF,GAA2BG,UAAUC,UAAUxC,QAAQ,YAAc,IACvEoC,EAAS,kBAGXD,EAAQO,oBAAoBN,EAAQC,EAAUC,IAG9CH,EAAQQ,YAAY,KAAOP,EAAQC,IAOvCzJ,EAAQgK,eAAiB,SAAUC,GAC5BA,IACHA,EAAQ/B,OAAO+B,OAEbA,EAAMD,eACRC,EAAMD,iBAGNC,EAAMC,aAAc,GASxBlK,EAAQmK,UAAY,SAASF,GAEtBA,IACHA,EAAQ/B,OAAO+B,MAGjB,IAAIG,EAcJ,OAZIH,GAAMG,OACRA,EAASH,EAAMG,OAERH,EAAMI,aACbD,EAASH,EAAMI,YAGMpD,QAAnBmD,EAAOE,UAA4C,GAAnBF,EAAOE,WAEzCF,EAASA,EAAOG,YAGXH,GAGTpK,EAAQwK,UAQRxK,EAAQwK,OAAOC,UAAY,SAAU/F,EAAOgG,GAK1C,MAJoB,kBAAThG,KACTA,EAAQA,KAGG,MAATA,EACe,GAATA,EAGHgG,GAAgB,MASzB1K,EAAQwK,OAAOG,SAAW,SAAUjG,EAAOgG,GAKzC,MAJoB,kBAAThG,KACTA,EAAQA,KAGG,MAATA,EACKL,OAAOK,IAAUgG,GAAgB,KAGnCA,GAAgB,MASzB1K,EAAQwK,OAAOI,SAAW,SAAUlG,EAAOgG,GAKzC,MAJoB,kBAAThG,KACTA,EAAQA,KAGG,MAATA,EACKI,OAAOJ,GAGTgG,GAAgB,MASzB1K,EAAQwK,OAAOK,OAAS,SAAUnG,EAAOgG,GAKvC,MAJoB,kBAAThG,KACTA,EAAQA,KAGN1E,EAAQ6E,SAASH,GACZA,EAEA1E,EAAQmE,SAASO,GACjBA,EAAQ,KAGRgG,GAAgB,MAU3B1K,EAAQwK,OAAOM,UAAY,SAAUpG,EAAOgG,GAK1C,MAJoB,kBAAThG,KACTA,EAAQA,KAGHA,GAASgG,GAAgB,MASlC1K,EAAQ+K,SAAW,SAASC,GAE1B,GAAIC,GAAiB,kCACrBD,GAAMA,EAAIE,QAAQD,EAAgB,SAASrK,EAAGuK,EAAGC,EAAGvE,GAChD,MAAOsE,GAAIA,EAAIC,EAAIA,EAAIvE,EAAIA,GAE/B,IAAIwE,GAAS,4CAA4ClG,KAAK6F,EAC9D,OAAOK,IACHF,EAAGG,SAASD,EAAO,GAAI,IACvBD,EAAGE,SAASD,EAAO,GAAI,IACvBxE,EAAGyE,SAASD,EAAO,GAAI,KACvB,MASNrL,EAAQuL,gBAAkB,SAASC,EAAMC,GACvC,GAA4B,IAAxBD,EAAMpE,QAAQ,OAAc,CAC9B,GAAIsE,GAAMF,EAAMG,OAAOH,EAAMpE,QAAQ,KAAK,GAAG8D,QAAQ,IAAI,IAAIxC,MAAM,IACnE,OAAO,QAAUgD,EAAI,GAAK,IAAMA,EAAI,GAAK,IAAMA,EAAI,GAAK,IAAMD,EAAU,IAGxE,GAAIC,GAAM1L,EAAQ+K,SAASS,EAC3B,OAAW,OAAPE,EACKF,EAGA,QAAUE,EAAIP,EAAI,IAAMO,EAAIN,EAAI,IAAMM,EAAI7E,EAAI,IAAM4E,EAAU,KAa3EzL,EAAQ4L,SAAW,SAASC,EAAIC,EAAMC,GACpC,MAAO,MAAQ,GAAK,KAAOF,GAAO,KAAOC,GAAS,GAAKC,GAAMjG,SAAS,IAAIkG,MAAM,IASlFhM,EAAQiM,WAAa,SAAST,GAC5B,GAAI3K,EACJ,IAAIb,EAAQ6E,SAAS2G,GAAQ,CAC3B,GAAIxL,EAAQkM,WAAWV,GAAQ,CAC7B,GAAIE,GAAMF,EAAMG,OAAO,GAAGA,OAAO,EAAEH,EAAMpF,OAAO,GAAGsC,MAAM,IACzD8C,GAAQxL,EAAQ4L,SAASF,EAAI,GAAGA,EAAI,GAAGA,EAAI,IAE7C,GAAI1L,EAAQmM,WAAWX,GAAQ,CAC7B,GAAIY,GAAMpM,EAAQqM,SAASb,GACvBc,GAAmBC,EAAEH,EAAIG,EAAEC,EAAU,IAARJ,EAAII,EAASC,EAAE7H,KAAKL,IAAI,EAAU,KAAR6H,EAAIK,IAC3DC,GAAmBH,EAAEH,EAAIG,EAAEC,EAAE5H,KAAKL,IAAI,EAAU,KAAR6H,EAAIK,GAAUA,EAAQ,GAANL,EAAIK,GAC5DE,EAAkB3M,EAAQ4M,SAASF,EAAeH,EAAGG,EAAeH,EAAGG,EAAeD,GACtFI,EAAkB7M,EAAQ4M,SAASN,EAAgBC,EAAED,EAAgBE,EAAEF,EAAgBG,EAE3F5L,IACEiM,WAAYtB,EACZuB,OAAOJ,EACPK,WACEF,WAAWD,EACXE,OAAOJ,GAETM,OACEH,WAAWD,EACXE,OAAOJ,QAKX9L,IACEiM,WAAWtB,EACXuB,OAAOvB,EACPwB,WACEF,WAAWtB,EACXuB,OAAOvB,GAETyB,OACEH,WAAWtB,EACXuB,OAAOvB,QAMb3K,MACAA,EAAEiM,WAAatB,EAAMsB,YAAc,QACnCjM,EAAEkM,OAASvB,EAAMuB,QAAUlM,EAAEiM,WAEzB9M,EAAQ6E,SAAS2G,EAAMwB,WACzBnM,EAAEmM,WACAD,OAAQvB,EAAMwB,UACdF,WAAYtB,EAAMwB,YAIpBnM,EAAEmM,aACFnM,EAAEmM,UAAUF,WAAatB,EAAMwB,WAAaxB,EAAMwB,UAAUF,YAAcjM,EAAEiM,WAC5EjM,EAAEmM,UAAUD,OAASvB,EAAMwB,WAAaxB,EAAMwB,UAAUD,QAAUlM,EAAEkM,QAGlE/M,EAAQ6E,SAAS2G,EAAMyB,OACzBpM,EAAEoM,OACAF,OAAQvB,EAAMyB,MACdH,WAAYtB,EAAMyB,QAIpBpM,EAAEoM,SACFpM,EAAEoM,MAAMH,WAAatB,EAAMyB,OAASzB,EAAMyB,MAAMH,YAAcjM,EAAEiM,WAChEjM,EAAEoM,MAAMF,OAASvB,EAAMyB,OAASzB,EAAMyB,MAAMF,QAAUlM,EAAEkM,OAI5D,OAAOlM,IAYTb,EAAQkN,SAAW,SAASrB,EAAIC,EAAMC,GACpCF,GAAQ,IAAKC,GAAY,IAAKC,GAAU,GACxC,IAAIoB,GAASvI,KAAKL,IAAIsH,EAAIjH,KAAKL,IAAIuH,EAAMC,IACrCqB,EAASxI,KAAKJ,IAAIqH,EAAIjH,KAAKJ,IAAIsH,EAAMC,GAGzC,IAAIoB,GAAUC,EACZ,OAAQb,EAAE,EAAEC,EAAE,EAAEC,EAAEU,EAIpB,IAAIE,GAAKxB,GAAKsB,EAAUrB,EAAMC,EAASA,GAAMoB,EAAUtB,EAAIC,EAAQC,EAAKF,EACpEU,EAAKV,GAAKsB,EAAU,EAAMpB,GAAMoB,EAAU,EAAI,EAC9CG,EAAM,IAAIf,EAAIc,GAAGD,EAASD,IAAS,IACnCI,GAAcH,EAASD,GAAQC,EAC/B1I,EAAQ0I,CACZ,QAAQb,EAAEe,EAAId,EAAEe,EAAWd,EAAE/H,GAG/B,IAAI8I,IAEF9E,MAAO,SAAU+E,GACf,GAAIC,KAWJ,OATAD,GAAQ/E,MAAM,KAAKM,QAAQ,SAAU2E,GACnC,GAAoB,IAAhBA,EAAMC,OAAc,CACtB,GAAIC,GAAQF,EAAMjF,MAAM,KACpBW,EAAMwE,EAAM,GAAGD,OACflJ,EAAQmJ,EAAM,GAAGD,MACrBF,GAAOrE,GAAO3E,KAIXgJ,GAIT9E,KAAM,SAAU8E,GACd,MAAO1G,QAAO8G,KAAKJ,GACdK,IAAI,SAAU1E,GACb,MAAOA,GAAM,KAAOqE,EAAOrE,KAE5BT,KAAK,OASd5I,GAAQgO,WAAa,SAAUzE,EAASkE,GACtC,GAAIQ,GAAgBT,EAAQ9E,MAAMa,EAAQoE,MAAMF,SAC5CS,EAAYV,EAAQ9E,MAAM+E,GAC1BC,EAAS1N,EAAQ+F,OAAOkI,EAAeC,EAE3C3E,GAAQoE,MAAMF,QAAUD,EAAQ5E,KAAK8E,IAQvC1N,EAAQmO,cAAgB,SAAU5E,EAASkE,GACzC,GAAIC,GAASF,EAAQ9E,MAAMa,EAAQoE,MAAMF,SACrCW,EAAeZ,EAAQ9E,MAAM+E,EAEjC,KAAK,GAAIpE,KAAO+E,GACVA,EAAa7H,eAAe8C,UACvBqE,GAAOrE,EAIlBE,GAAQoE,MAAMF,QAAUD,EAAQ5E,KAAK8E,IAWvC1N,EAAQqO,SAAW,SAAS9B,EAAGC,EAAGC,GAChC,GAAItB,GAAGC,EAAGvE,EAENZ,EAAIrB,KAAKgB,MAAU,EAAJ2G,GACf+B,EAAQ,EAAJ/B,EAAQtG,EACZnF,EAAI2L,GAAK,EAAID,GACb+B,EAAI9B,GAAK,EAAI6B,EAAI9B,GACjBgC,EAAI/B,GAAK,GAAK,EAAI6B,GAAK9B,EAE3B,QAAQvG,EAAI,GACV,IAAK,GAAGkF,EAAIsB,EAAGrB,EAAIoD,EAAG3H,EAAI/F,CAAG,MAC7B,KAAK,GAAGqK,EAAIoD,EAAGnD,EAAIqB,EAAG5F,EAAI/F,CAAG,MAC7B,KAAK,GAAGqK,EAAIrK,EAAGsK,EAAIqB,EAAG5F,EAAI2H,CAAG,MAC7B,KAAK,GAAGrD,EAAIrK,EAAGsK,EAAImD,EAAG1H,EAAI4F,CAAG,MAC7B,KAAK,GAAGtB,EAAIqD,EAAGpD,EAAItK,EAAG+F,EAAI4F,CAAG,MAC7B,KAAK,GAAGtB,EAAIsB,EAAGrB,EAAItK,EAAG+F,EAAI0H,EAG5B,OAAQpD,EAAEvG,KAAKgB,MAAU,IAAJuF,GAAUC,EAAExG,KAAKgB,MAAU,IAAJwF,GAAUvE,EAAEjC,KAAKgB,MAAU,IAAJiB,KAGrE7G,EAAQ4M,SAAW,SAASL,EAAGC,EAAGC,GAChC,GAAIf,GAAM1L,EAAQqO,SAAS9B,EAAGC,EAAGC,EACjC,OAAOzM,GAAQ4L,SAASF,EAAIP,EAAGO,EAAIN,EAAGM,EAAI7E,IAG5C7G,EAAQqM,SAAW,SAASrB,GAC1B,GAAIU,GAAM1L,EAAQ+K,SAASC,EAC3B,OAAOhL,GAAQkN,SAASxB,EAAIP,EAAGO,EAAIN,EAAGM,EAAI7E,IAG5C7G,EAAQmM,WAAa,SAASnB,GAC5B,GAAIyD,GAAO,qCAAqCC,KAAK1D,EACrD,OAAOyD,IAGTzO,EAAQkM,WAAa,SAASR,GAC5BA,EAAMA,EAAIR,QAAQ,IAAI,GACtB,IAAIuD,GAAO,wCAAwCC,KAAKhD,EACxD,OAAO+C,IAUTzO,EAAQ2O,sBAAwB,SAASC,EAAQC,GAC/C,GAA8B,gBAAnBA,GAA6B,CAEtC,IAAK,GADDC,GAAW9H,OAAO+H,OAAOF,GACpB5I,EAAI,EAAGA,EAAI2I,EAAOxI,OAAQH,IAC7B4I,EAAgBtI,eAAeqI,EAAO3I,KACC,gBAA9B4I,GAAgBD,EAAO3I,MAChC6I,EAASF,EAAO3I,IAAMjG,EAAQgP,aAAaH,EAAgBD,EAAO3I,KAIxE,OAAO6I,GAGP,MAAO,OAWX9O,EAAQgP,aAAe,SAASH,GAC9B,GAA8B,gBAAnBA,GAA6B,CACtC,GAAIC,GAAW9H,OAAO+H,OAAOF,EAC7B,KAAK,GAAI5I,KAAK4I,GACRA,EAAgBtI,eAAeN,IACA,gBAAtB4I,GAAgB5I,KACzB6I,EAAS7I,GAAKjG,EAAQgP,aAAaH,EAAgB5I,IAIzD,OAAO6I,GAGP,MAAO,OAcX9O,EAAQiP,aAAe,SAAUC,EAAaC,EAAS3E,GACrD,GAAwBvD,SAApBkI,EAAQ3E,GACV,GAA8B,iBAAnB2E,GAAQ3E,GACjB0E,EAAY1E,GAAQ4E,QAAUD,EAAQ3E,OAEnC,CACH0E,EAAY1E,GAAQ4E,SAAU,CAC9B,KAAK,GAAI9I,KAAQ6I,GAAQ3E,GACnB2E,EAAQ3E,GAAQjE,eAAeD,KACjC4I,EAAY1E,GAAQlE,GAAQ6I,EAAQ3E,GAAQlE,MAmBtDtG,EAAQqP,mBAAqB,SAASC,EAAcC,EAAgBC,EAAOC,GAMzE,IALA,GAAIC,GAAgB,IAChBC,EAAY,EACZC,EAAM,EACNC,EAAOP,EAAalJ,OAAS,EAEnByJ,GAAPD,GAA2BF,EAAZC,GAA2B,CAC/C,GAAIG,GAASlL,KAAKgB,OAAOgK,EAAMC,GAAQ,GAEnCE,EAAOT,EAAaQ,GACpBpL,EAAoBuC,SAAXwI,EAAwBM,EAAKP,GAASO,EAAKP,GAAOC,GAE3DO,EAAeT,EAAe7K,EAClC,IAAoB,GAAhBsL,EACF,MAAOF,EAEgB,KAAhBE,EACPJ,EAAME,EAAS,EAGfD,EAAOC,EAAS,EAGlBH,IAGF,MAAO,IAeT3P,EAAQiQ,kBAAoB,SAASX,EAAclF,EAAQoF,EAAOU,GAOhE,IANA,GAIIC,GAAWzL,EAAO0L,EAAWN,EAJ7BJ,EAAgB,IAChBC,EAAY,EACZC,EAAM,EACNC,EAAOP,EAAalJ,OAAS,EAGnByJ,GAAPD,GAA2BF,EAAZC,GAA2B,CAO/C,GALAG,EAASlL,KAAKgB,MAAM,IAAKiK,EAAKD,IAC9BO,EAAYb,EAAa1K,KAAKJ,IAAI,EAAEsL,EAAS,IAAIN,GACjD9K,EAAY4K,EAAaQ,GAAQN,GACjCY,EAAYd,EAAa1K,KAAKL,IAAI+K,EAAalJ,OAAO,EAAE0J,EAAS,IAAIN,GAEjE9K,GAAS0F,EACX,MAAO0F,EAEJ,IAAgB1F,EAAZ+F,GAAsBzL,EAAQ0F,EACrC,MAAyB,UAAlB8F,EAA6BtL,KAAKJ,IAAI,EAAEsL,EAAS,GAAKA,CAE1D,IAAY1F,EAAR1F,GAAkB0L,EAAYhG,EACrC,MAAyB,UAAlB8F,EAA6BJ,EAASlL,KAAKL,IAAI+K,EAAalJ,OAAO,EAAE0J,EAAS,EAGzE1F,GAAR1F,EACFkL,EAAME,EAAS,EAGfD,EAAOC,EAAS,EAGpBH,IAIF,MAAO,IAYT3P,EAAQqQ,cAAgB,SAAU7B,EAAG8B,EAAOC,EAAKC,GAC/C,GAAIC,GAASF,EAAMD,CAEnB,OADA9B,IAAKgC,EAAS,EACN,EAAJhC,EAAciC,EAAO,EAAEjC,EAAEA,EAAI8B,GACjC9B,KACQiC,EAAO,GAAKjC,GAAGA,EAAE,GAAK,GAAK8B,IAUrCtQ,EAAQ0Q,iBAENC,OAAQ,SAAUnC,GAChB,MAAOA,IAGToC,WAAY,SAAUpC,GACpB,MAAOA,GAAIA,GAGbqC,YAAa,SAAUrC,GACrB,MAAOA,IAAK,EAAIA,IAGlB6B,cAAe,SAAU7B,GACvB,MAAW,GAAJA,EAAS,EAAIA,EAAIA,EAAI,IAAM,EAAI,EAAIA,GAAKA,GAGjDsC,YAAa,SAAUtC,GACrB,MAAOA,GAAIA,EAAIA,GAGjBuC,aAAc,SAAUvC,GACtB,QAAUA,EAAKA,EAAIA,EAAI,GAGzBwC,eAAgB,SAAUxC,GACxB,MAAW,GAAJA,EAAS,EAAIA,EAAIA,EAAIA,GAAKA,EAAI,IAAM,EAAIA,EAAI,IAAM,EAAIA,EAAI,GAAK,GAGxEyC,YAAa,SAAUzC,GACrB,MAAOA,GAAIA,EAAIA,EAAIA,GAGrB0C,aAAc,SAAU1C,GACtB,MAAO,MAAOA,EAAKA,EAAIA,EAAIA,GAG7B2C,eAAgB,SAAU3C,GACxB,MAAW,GAAJA,EAAS,EAAIA,EAAIA,EAAIA,EAAIA,EAAI,EAAI,IAAOA,EAAKA,EAAIA,EAAIA,GAG9D4C,YAAa,SAAU5C,GACrB,MAAOA,GAAIA,EAAIA,EAAIA,EAAIA,GAGzB6C,aAAc,SAAU7C,GACtB,MAAO,KAAOA,EAAKA,EAAIA,EAAIA,EAAIA,GAGjC8C,eAAgB,SAAU9C,GACxB,MAAW,GAAJA,EAAS,GAAKA,EAAIA,EAAIA,EAAIA,EAAIA,EAAI,EAAI,KAAQA,EAAKA,EAAIA,EAAIA,EAAIA,KAMtE,SAASvO,EAAQD,GASrBA,EAAQuR,gBAAkB,SAASC,GAEjC,IAAK,GAAIC,KAAeD,GAClBA,EAAcjL,eAAekL,KAC/BD,EAAcC,GAAaC,UAAYF,EAAcC,GAAaE,KAClEH,EAAcC,GAAaE,UAYjC3R,EAAQ4R,gBAAkB,SAASJ,GAEjC,IAAK,GAAIC,KAAeD,GACtB,GAAIA,EAAcjL,eAAekL,IAC3BD,EAAcC,GAAaC,UAAW,CACxC,IAAK,GAAIzL,GAAI,EAAGA,EAAIuL,EAAcC,GAAaC,UAAUtL,OAAQH,IAC/DuL,EAAcC,GAAaC,UAAUzL,GAAGsE,WAAWsH,YAAYL,EAAcC,GAAaC,UAAUzL,GAEtGuL,GAAcC,GAAaC,eAgBnC1R,EAAQ8R,cAAgB,SAAUL,EAAaD,EAAeO,GAC5D,GAAIxI,EAqBJ,OAnBIiI,GAAcjL,eAAekL,GAE3BD,EAAcC,GAAaC,UAAUtL,OAAS,GAChDmD,EAAUiI,EAAcC,GAAaC,UAAU,GAC/CF,EAAcC,GAAaC,UAAUM,UAIrCzI,EAAU0I,SAASC,gBAAgB,6BAA8BT,GACjEM,EAAaI,YAAY5I,KAK3BA,EAAU0I,SAASC,gBAAgB,6BAA8BT,GACjED,EAAcC,IAAgBE,QAAUD,cACxCK,EAAaI,YAAY5I,IAE3BiI,EAAcC,GAAaE,KAAKhJ,KAAKY,GAC9BA,GAcTvJ,EAAQoS,cAAgB,SAAUX,EAAaD,EAAea,EAAcC,GAC1E,GAAI/I,EA+BJ,OA7BIiI,GAAcjL,eAAekL,GAE3BD,EAAcC,GAAaC,UAAUtL,OAAS,GAChDmD,EAAUiI,EAAcC,GAAaC,UAAU,GAC/CF,EAAcC,GAAaC,UAAUM,UAIrCzI,EAAU0I,SAASM,cAAcd,GACZxK,SAAjBqL,EACFD,EAAaC,aAAa/I,EAAS+I,GAGnCD,EAAaF,YAAY5I,KAM7BA,EAAU0I,SAASM,cAAcd,GACjCD,EAAcC,IAAgBE,QAAUD,cACnBzK,SAAjBqL,EACFD,EAAaC,aAAa/I,EAAS+I,GAGnCD,EAAaF,YAAY5I,IAG7BiI,EAAcC,GAAaE,KAAKhJ,KAAKY,GAC9BA,GAmBTvJ,EAAQwS,UAAY,SAASC,EAAGC,EAAGC,EAAOnB,EAAeO,EAAca,GACrE,GAAIC,EACkC,WAAlCF,EAAMxD,QAAQ2D,WAAWnF,OAC3BkF,EAAQ7S,EAAQ8R,cAAc,SAASN,EAAcO,GACrDc,EAAME,eAAe,KAAM,KAAMN,GACjCI,EAAME,eAAe,KAAM,KAAML,GACjCG,EAAME,eAAe,KAAM,IAAK,GAAMJ,EAAMxD,QAAQ2D,WAAWE,QAG/DH,EAAQ7S,EAAQ8R,cAAc,OAAON,EAAcO,GACnDc,EAAME,eAAe,KAAM,IAAKN,EAAI,GAAIE,EAAMxD,QAAQ2D,WAAWE,MACjEH,EAAME,eAAe,KAAM,IAAKL,EAAI,GAAIC,EAAMxD,QAAQ2D,WAAWE,MACjEH,EAAME,eAAe,KAAM,QAASJ,EAAMxD,QAAQ2D,WAAWE,MAC7DH,EAAME,eAAe,KAAM,SAAUJ,EAAMxD,QAAQ2D,WAAWE,OAGzB/L,SAApC0L,EAAMxD,QAAQ2D,WAAWpF,QAC1BmF,EAAME,eAAe,KAAM,QAASJ,EAAMA,MAAMxD,QAAQ2D,WAAWpF,QAErEmF,EAAME,eAAe,KAAM,QAASJ,EAAMnK,UAAY,SAEtD,IAAIyK,GAAQjT,EAAQ8R,cAAc,OAAON,EAAcO,EAqBvD,OApBIa,KACIA,EAASM,UACXT,GAAQG,EAASM,SAGfN,EAASO,UACXT,GAAQE,EAASO,SAEfP,EAASQ,UACXH,EAAMI,YAAcT,EAASQ,SAG3BR,EAASpK,WACXyK,EAAMF,eAAe,KAAM,QAASH,EAASpK,UAAa,WAKhEyK,EAAMF,eAAe,KAAM,IAAKN,GAChCQ,EAAMF,eAAe,KAAM,IAAKL,GACzBG,GAUT7S,EAAQsT,QAAU,SAAUb,EAAGC,EAAGa,EAAOC,EAAQhL,EAAWgJ,EAAeO,GACzE,GAAc,GAAVyB,EAAa,CACF,EAATA,IACFA,GAAU,GACVd,GAAKc,EAEP,IAAIC,GAAOzT,EAAQ8R,cAAc,OAAON,EAAeO,EACvD0B,GAAKV,eAAe,KAAM,IAAKN,EAAI,GAAMc,GACzCE,EAAKV,eAAe,KAAM,IAAKL,GAC/Be,EAAKV,eAAe,KAAM,QAASQ,GACnCE,EAAKV,eAAe,KAAM,SAAUS,GACpCC,EAAKV,eAAe,KAAM,QAASvK,MAMnC,SAASvI,EAAQD,EAASM,GAgD9B,QAASW,GAASyS,EAAMvE,GAetB,IAbIuE,GAAShN,MAAMC,QAAQ+M,IAAU3S,EAAKuE,YAAYoO,KACpDvE,EAAUuE,EACVA,EAAO,MAGTtT,KAAKuT,SAAWxE,MAChB/O,KAAKwT,SACLxT,KAAKgG,OAAS,EACdhG,KAAKyT,SAAWzT,KAAKuT,SAASG,SAAW,KACzC1T,KAAK2T,SAID3T,KAAKuT,SAASpM,KAChB,IAAK,GAAIiI,KAASpP,MAAKuT,SAASpM,KAC9B,GAAInH,KAAKuT,SAASpM,KAAKhB,eAAeiJ,GAAQ,CAC5C,GAAI9K,GAAQtE,KAAKuT,SAASpM,KAAKiI,EAE7BpP,MAAK2T,MAAMvE,GADA,QAAT9K,GAA4B,WAATA,GAA+B,WAATA,EACvB,OAGAA,EAO5B,GAAItE,KAAKuT,SAASrM,QAChB,KAAM,IAAItD,OAAM,sDAGlB5D,MAAK4T,gBAGDN,GACFtT,KAAK6T,IAAIP,GAGXtT,KAAK8T,WAAW/E,GAvFlB,GAAIpO,GAAOT,EAAoB,GAC3Ba,EAAQb,EAAoB,EAkGhCW,GAAQkT,UAAUD,WAAa,SAAS/E,GAClCA,GAA6BlI,SAAlBkI,EAAQiF,QACjBjF,EAAQiF,SAAU,EAEhBhU,KAAKiU,SACPjU,KAAKiU,OAAOC,gBACLlU,MAAKiU,SAKTjU,KAAKiU,SACRjU,KAAKiU,OAASlT,EAAM4E,OAAO3F,MACzB8K,SAAU,MAAO,SAAU,aAIF,gBAAlBiE,GAAQiF,OACjBhU,KAAKiU,OAAOH,WAAW/E,EAAQiF,UAevCnT,EAAQkT,UAAUI,GAAK,SAAStK,EAAOhB,GACrC,GAAIuL,GAAcpU,KAAK4T,aAAa/J,EAC/BuK,KACHA,KACApU,KAAK4T,aAAa/J,GAASuK,GAG7BA,EAAY7L,MACVM,SAAUA,KAKdhI,EAAQkT,UAAUM,UAAYxT,EAAQkT,UAAUI,GAOhDtT,EAAQkT,UAAUO,IAAM,SAASzK,EAAOhB,GACtC,GAAIuL,GAAcpU,KAAK4T,aAAa/J,EAChCuK,KACFpU,KAAK4T,aAAa/J,GAASuK,EAAYG,OAAO,SAAUlL,GACtD,MAAQA,GAASR,UAAYA,MAMnChI,EAAQkT,UAAUS,YAAc3T,EAAQkT,UAAUO,IASlDzT,EAAQkT,UAAUU,SAAW,SAAU5K,EAAO6K,EAAQC,GACpD,GAAa,KAAT9K,EACF,KAAM,IAAIjG,OAAM,yBAGlB,IAAIwQ,KACAvK,KAAS7J,MAAK4T,eAChBQ,EAAcA,EAAYQ,OAAO5U,KAAK4T,aAAa/J,KAEjD,KAAO7J,MAAK4T,eACdQ,EAAcA,EAAYQ,OAAO5U,KAAK4T,aAAa,MAGrD,KAAK,GAAI/N,GAAI,EAAGA,EAAIuO,EAAYpO,OAAQH,IAAK,CAC3C,GAAIgP,GAAaT,EAAYvO,EACzBgP,GAAWhM,UACbgM,EAAWhM,SAASgB,EAAO6K,EAAQC,GAAY,QAYrD9T,EAAQkT,UAAUF,IAAM,SAAUP,EAAMqB,GACtC,GACItU,GADAyU,KAEAC,EAAK/U,IAET,IAAIsG,MAAMC,QAAQ+M,GAEhB,IAAK,GAAIzN,GAAI,EAAGC,EAAMwN,EAAKtN,OAAYF,EAAJD,EAASA,IAC1CxF,EAAK0U,EAAGC,SAAS1B,EAAKzN,IACtBiP,EAASvM,KAAKlI,OAGb,IAAIM,EAAKuE,YAAYoO,GAGxB,IAAK,GADD2B,GAAUjV,KAAKkV,gBAAgB5B,GAC1B6B,EAAM,EAAGC,EAAO9B,EAAK+B,kBAAyBD,EAAND,EAAYA,IAAO,CAElE,IAAK,GADDxF,MACK2F,EAAM,EAAGC,EAAON,EAAQjP,OAAcuP,EAAND,EAAYA,IAAO,CAC1D,GAAIlG,GAAQ6F,EAAQK,EACpB3F,GAAKP,GAASkE,EAAKkC,SAASL,EAAKG,GAGnCjV,EAAK0U,EAAGC,SAASrF,GACjBmF,EAASvM,KAAKlI,OAGb,CAAA,KAAIiT,YAAgB1M,SAMvB,KAAM,IAAIhD,OAAM,mBAJhBvD,GAAK0U,EAAGC,SAAS1B,GACjBwB,EAASvM,KAAKlI,GAUhB,MAJIyU,GAAS9O,QACXhG,KAAKyU,SAAS,OAAQxS,MAAO6S,GAAWH,GAGnCG,GASTjU,EAAQkT,UAAU0B,OAAS,SAAUnC,EAAMqB,GACzC,GAAIG,MACAY,KACAC,KACAZ,EAAK/U,KACL0T,EAAUqB,EAAGtB,SAEbmC,EAAc,SAAUjG,GAC1B,GAAItP,GAAKsP,EAAK+D,EACVqB,GAAGvB,MAAMnT,IAEXA,EAAK0U,EAAGc,YAAYlG,GACpB+F,EAAWnN,KAAKlI,GAChBsV,EAAYpN,KAAKoH,KAIjBtP,EAAK0U,EAAGC,SAASrF,GACjBmF,EAASvM,KAAKlI,IAIlB,IAAIiG,MAAMC,QAAQ+M,GAEhB,IAAK,GAAIzN,GAAI,EAAGC,EAAMwN,EAAKtN,OAAYF,EAAJD,EAASA,IAC1C+P,EAAYtC,EAAKzN,QAGhB,IAAIlF,EAAKuE,YAAYoO,GAGxB,IAAK,GADD2B,GAAUjV,KAAKkV,gBAAgB5B,GAC1B6B,EAAM,EAAGC,EAAO9B,EAAK+B,kBAAyBD,EAAND,EAAYA,IAAO,CAElE,IAAK,GADDxF,MACK2F,EAAM,EAAGC,EAAON,EAAQjP,OAAcuP,EAAND,EAAYA,IAAO,CAC1D,GAAIlG,GAAQ6F,EAAQK,EACpB3F,GAAKP,GAASkE,EAAKkC,SAASL,EAAKG,GAGnCM,EAAYjG,OAGX,CAAA,KAAI2D,YAAgB1M,SAKvB,KAAM,IAAIhD,OAAM,mBAHhBgS,GAAYtC,GAad,MAPIwB,GAAS9O,QACXhG,KAAKyU,SAAS,OAAQxS,MAAO6S,GAAWH,GAEtCe,EAAW1P,QACbhG,KAAKyU,SAAS,UAAWxS,MAAOyT,EAAYpC,KAAMqC,GAAchB,GAG3DG,EAASF,OAAOc,IAsCzB7U,EAAQkT,UAAU+B,IAAM,WACtB,GAGIzV,GAAI0V,EAAKhH,EAASuE,EAHlByB,EAAK/U,KAILgW,EAAYrV,EAAK6G,QAAQzB,UAAU,GACtB,WAAbiQ,GAAsC,UAAbA,GAE3B3V,EAAK0F,UAAU,GACfgJ,EAAUhJ,UAAU,GACpBuN,EAAOvN,UAAU,IAEG,SAAbiQ,GAEPD,EAAMhQ,UAAU,GAChBgJ,EAAUhJ,UAAU,GACpBuN,EAAOvN,UAAU,KAIjBgJ,EAAUhJ,UAAU,GACpBuN,EAAOvN,UAAU,GAInB,IAAIkQ,EACJ,IAAIlH,GAAWA,EAAQkH,WAAY,CACjC,GAAIC,IAAiB,YAAa,QAAS,SAG3C,IAFAD,EAA0D,IAA7CC,EAAclP,QAAQ+H,EAAQkH,YAAoB,QAAUlH,EAAQkH,WAE7E3C,GAAS2C,GAActV,EAAK6G,QAAQ8L,GACtC,KAAM,IAAI1P,OAAM,6BAA+BjD,EAAK6G,QAAQ8L,GAAQ,sDACVvE,EAAQ5H,KAAO,IAE3E,IAAkB,aAAd8O,IAA8BtV,EAAKuE,YAAYoO,GACjD,KAAM,IAAI1P,OAAM,6EAKlBqS,GADO3C,GAC6B,aAAtB3S,EAAK6G,QAAQ8L,GAAwB,YAGtC,OAIf,IAEgB3D,GAAMwG,EAAQtQ,EAAGC,EAF7BqB,EAAO4H,GAAWA,EAAQ5H,MAAQnH,KAAKuT,SAASpM,KAChDoN,EAASxF,GAAWA,EAAQwF,OAC5BtS,IAGJ,IAAU4E,QAANxG,EAEFsP,EAAOoF,EAAGqB,SAAS/V,EAAI8G,GACnBoN,IAAWA,EAAO5E,KACpBA,EAAO,UAGN,IAAW9I,QAAPkP,EAEP,IAAKlQ,EAAI,EAAGC,EAAMiQ,EAAI/P,OAAYF,EAAJD,EAASA,IACrC8J,EAAOoF,EAAGqB,SAASL,EAAIlQ,GAAIsB,KACtBoN,GAAUA,EAAO5E,KACpB1N,EAAMsG,KAAKoH,OAMf,KAAKwG,IAAUnW,MAAKwT,MACdxT,KAAKwT,MAAMrN,eAAegQ,KAC5BxG,EAAOoF,EAAGqB,SAASD,EAAQhP,KACtBoN,GAAUA,EAAO5E,KACpB1N,EAAMsG,KAAKoH,GAYnB,IALIZ,GAAWA,EAAQsH,OAAexP,QAANxG,GAC9BL,KAAKsW,MAAMrU,EAAO8M,EAAQsH,OAIxBtH,GAAWA,EAAQP,OAAQ,CAC7B,GAAIA,GAASO,EAAQP,MACrB,IAAU3H,QAANxG,EACFsP,EAAO3P,KAAKuW,cAAc5G,EAAMnB,OAGhC,KAAK3I,EAAI,EAAGC,EAAM7D,EAAM+D,OAAYF,EAAJD,EAASA,IACvC5D,EAAM4D,GAAK7F,KAAKuW,cAActU,EAAM4D,GAAI2I,GAM9C,GAAkB,aAAdyH,EAA2B,CAC7B,GAAIhB,GAAUjV,KAAKkV,gBAAgB5B,EACnC,IAAUzM,QAANxG,EAEF0U,EAAGyB,WAAWlD,EAAM2B,EAAStF,OAI7B,KAAK9J,EAAI,EAAGA,EAAI5D,EAAM+D,OAAQH,IAC5BkP,EAAGyB,WAAWlD,EAAM2B,EAAShT,EAAM4D,GAGvC,OAAOyN,GAEJ,GAAkB,UAAd2C,EAAwB,CAC/B,GAAIhL,KACJ,KAAKpF,EAAI,EAAGA,EAAI5D,EAAM+D,OAAQH,IAC5BoF,EAAOhJ,EAAM4D,GAAGxF,IAAM4B,EAAM4D,EAE9B,OAAOoF,GAIP,GAAUpE,QAANxG,EAEF,MAAOsP,EAIP,IAAI2D,EAAM,CAER,IAAKzN,EAAI,EAAGC,EAAM7D,EAAM+D,OAAYF,EAAJD,EAASA,IACvCyN,EAAK/K,KAAKtG,EAAM4D,GAElB,OAAOyN,GAIP,MAAOrR,IAcfpB,EAAQkT,UAAU0C,OAAS,SAAU1H,GACnC,GAIIlJ,GACAC,EACAzF,EACAsP,EACA1N,EARAqR,EAAOtT,KAAKwT,MACZe,EAASxF,GAAWA,EAAQwF,OAC5B8B,EAAQtH,GAAWA,EAAQsH,MAC3BlP,EAAO4H,GAAWA,EAAQ5H,MAAQnH,KAAKuT,SAASpM,KAMhD4O,IAEJ,IAAIxB,EAEF,GAAI8B,EAAO,CAETpU,IACA,KAAK5B,IAAMiT,GACLA,EAAKnN,eAAe9F,KACtBsP,EAAO3P,KAAKoW,SAAS/V,EAAI8G,GACrBoN,EAAO5E,IACT1N,EAAMsG,KAAKoH,GAOjB,KAFA3P,KAAKsW,MAAMrU,EAAOoU,GAEbxQ,EAAI,EAAGC,EAAM7D,EAAM+D,OAAYF,EAAJD,EAASA,IACvCkQ,EAAIlQ,GAAK5D,EAAM4D,GAAG7F,KAAKyT,cAKzB,KAAKpT,IAAMiT,GACLA,EAAKnN,eAAe9F,KACtBsP,EAAO3P,KAAKoW,SAAS/V,EAAI8G,GACrBoN,EAAO5E,IACToG,EAAIxN,KAAKoH,EAAK3P,KAAKyT,gBAQ3B,IAAI4C,EAAO,CAETpU,IACA,KAAK5B,IAAMiT,GACLA,EAAKnN,eAAe9F,IACtB4B,EAAMsG,KAAK+K,EAAKjT,GAMpB,KAFAL,KAAKsW,MAAMrU,EAAOoU,GAEbxQ,EAAI,EAAGC,EAAM7D,EAAM+D,OAAYF,EAAJD,EAASA,IACvCkQ,EAAIlQ,GAAK5D,EAAM4D,GAAG7F,KAAKyT,cAKzB,KAAKpT,IAAMiT,GACLA,EAAKnN,eAAe9F,KACtBsP,EAAO2D,EAAKjT,GACZ0V,EAAIxN,KAAKoH,EAAK3P,KAAKyT,WAM3B,OAAOsC,IAOTlV,EAAQkT,UAAU2C,WAAa,WAC7B,MAAO1W,OAaTa,EAAQkT,UAAUnL,QAAU,SAAUC,EAAUkG,GAC9C,GAGIY,GACAtP,EAJAkU,EAASxF,GAAWA,EAAQwF,OAC5BpN,EAAO4H,GAAWA,EAAQ5H,MAAQnH,KAAKuT,SAASpM,KAChDmM,EAAOtT,KAAKwT,KAIhB,IAAIzE,GAAWA,EAAQsH,MAIrB,IAAK,GAFDpU,GAAQjC,KAAK8V,IAAI/G,GAEZlJ,EAAI,EAAGC,EAAM7D,EAAM+D,OAAYF,EAAJD,EAASA,IAC3C8J,EAAO1N,EAAM4D,GACbxF,EAAKsP,EAAK3P,KAAKyT,UACf5K,EAAS8G,EAAMtP,OAKjB,KAAKA,IAAMiT,GACLA,EAAKnN,eAAe9F,KACtBsP,EAAO3P,KAAKoW,SAAS/V,EAAI8G,KACpBoN,GAAUA,EAAO5E,KACpB9G,EAAS8G,EAAMtP,KAkBzBQ,EAAQkT,UAAUpG,IAAM,SAAU9E,EAAUkG,GAC1C,GAIIY,GAJA4E,EAASxF,GAAWA,EAAQwF,OAC5BpN,EAAO4H,GAAWA,EAAQ5H,MAAQnH,KAAKuT,SAASpM,KAChDwP,KACArD,EAAOtT,KAAKwT,KAIhB,KAAK,GAAInT,KAAMiT,GACTA,EAAKnN,eAAe9F,KACtBsP,EAAO3P,KAAKoW,SAAS/V,EAAI8G,KACpBoN,GAAUA,EAAO5E,KACpBgH,EAAYpO,KAAKM,EAAS8G,EAAMtP,IAUtC,OAJI0O,IAAWA,EAAQsH,OACrBrW,KAAKsW,MAAMK,EAAa5H,EAAQsH,OAG3BM,GAUT9V,EAAQkT,UAAUwC,cAAgB,SAAU5G,EAAMnB,GAChD,IAAKmB,EACH,MAAOA,EAGT,IAAIiH,KAEJ,KAAK,GAAIxH,KAASO,GACZA,EAAKxJ,eAAeiJ,IAAoC,IAAzBZ,EAAOxH,QAAQoI,KAChDwH,EAAaxH,GAASO,EAAKP,GAI/B,OAAOwH,IAST/V,EAAQkT,UAAUuC,MAAQ,SAAUrU,EAAOoU,GACzC,GAAI1V,EAAK8D,SAAS4R,GAAQ,CAExB,GAAIQ,GAAOR,CACXpU,GAAM6U,KAAK,SAAUlR,EAAGa,GACtB,GAAIsQ,GAAKnR,EAAEiR,GACPG,EAAKvQ,EAAEoQ,EACX,OAAQE,GAAKC,EAAM,EAAWA,EAALD,EAAW,GAAK,QAGxC,CAAA,GAAqB,kBAAVV,GAOd,KAAM,IAAI3P,WAAU,uCALpBzE,GAAM6U,KAAKT,KAgBfxV,EAAQkT,UAAUkD,OAAS,SAAU5W,EAAIsU,GACvC,GACI9O,GAAGC,EAAKoR,EADRC,IAGJ,IAAI7Q,MAAMC,QAAQlG,GAChB,IAAKwF,EAAI,EAAGC,EAAMzF,EAAG2F,OAAYF,EAAJD,EAASA,IACpCqR,EAAYlX,KAAKoX,QAAQ/W,EAAGwF,IACX,MAAbqR,GACFC,EAAW5O,KAAK2O,OAKpBA,GAAYlX,KAAKoX,QAAQ/W,GACR,MAAb6W,GACFC,EAAW5O,KAAK2O,EAQpB,OAJIC,GAAWnR,QACbhG,KAAKyU,SAAS,UAAWxS,MAAOkV,GAAaxC,GAGxCwC,GASTtW,EAAQkT,UAAUqD,QAAU,SAAU/W,GACpC,GAAIM,EAAKoD,SAAS1D,IAAOM,EAAK8D,SAASpE,IACrC,GAAIL,KAAKwT,MAAMnT,GAGb,aAFOL,MAAKwT,MAAMnT,GAClBL,KAAKgG,SACE3F,MAGN,IAAIA,YAAcuG,QAAQ,CAC7B,GAAIuP,GAAS9V,EAAGL,KAAKyT,SACrB,IAAI0C,GAAUnW,KAAKwT,MAAM2C,GAGvB,aAFOnW,MAAKwT,MAAM2C,GAClBnW,KAAKgG,SACEmQ,EAGX,MAAO,OAQTtV,EAAQkT,UAAUsD,MAAQ,SAAU1C,GAClC,GAAIoB,GAAMnP,OAAO8G,KAAK1N,KAAKwT,MAO3B,OALAxT,MAAKwT,SACLxT,KAAKgG,OAAS,EAEdhG,KAAKyU,SAAS,UAAWxS,MAAO8T,GAAMpB,GAE/BoB,GAQTlV,EAAQkT,UAAU3P,IAAM,SAAUgL,GAChC,GAAIkE,GAAOtT,KAAKwT,MACZpP,EAAM,KACNkT,EAAW,IAEf,KAAK,GAAIjX,KAAMiT,GACb,GAAIA,EAAKnN,eAAe9F,GAAK,CAC3B,GAAIsP,GAAO2D,EAAKjT,GACZkX,EAAY5H,EAAKP,EACJ,OAAbmI,KAAuBnT,GAAOmT,EAAYD,KAC5ClT,EAAMuL,EACN2H,EAAWC,GAKjB,MAAOnT,IAQTvD,EAAQkT,UAAU5P,IAAM,SAAUiL,GAChC,GAAIkE,GAAOtT,KAAKwT,MACZrP,EAAM,KACNqT,EAAW,IAEf,KAAK,GAAInX,KAAMiT,GACb,GAAIA,EAAKnN,eAAe9F,GAAK,CAC3B,GAAIsP,GAAO2D,EAAKjT,GACZkX,EAAY5H,EAAKP,EACJ,OAAbmI,KAAuBpT,GAAmBqT,EAAZD,KAChCpT,EAAMwL,EACN6H,EAAWD,GAKjB,MAAOpT,IAUTtD,EAAQkT,UAAU0D,SAAW,SAAUrI,GACrC,GAIIvJ,GAJAyN,EAAOtT,KAAKwT,MACZkE,KACAC,EAAY3X,KAAKuT,SAASpM,MAAQnH,KAAKuT,SAASpM,KAAKiI,IAAU,KAC/DwI,EAAQ,CAGZ,KAAK,GAAI1R,KAAQoN,GACf,GAAIA,EAAKnN,eAAeD,GAAO,CAC7B,GAAIyJ,GAAO2D,EAAKpN,GACZ5B,EAAQqL,EAAKP,GACbyI,GAAS,CACb,KAAKhS,EAAI,EAAO+R,EAAJ/R,EAAWA,IACrB,GAAI6R,EAAO7R,IAAMvB,EAAO,CACtBuT,GAAS,CACT,OAGCA,GAAqBhR,SAAVvC,IACdoT,EAAOE,GAAStT,EAChBsT,KAKN,GAAID,EACF,IAAK9R,EAAI,EAAGA,EAAI6R,EAAO1R,OAAQH,IAC7B6R,EAAO7R,GAAKlF,EAAKuG,QAAQwQ,EAAO7R,GAAI8R,EAIxC,OAAOD,IAST7W,EAAQkT,UAAUiB,SAAW,SAAUrF,GACrC,GAAItP,GAAKsP,EAAK3P,KAAKyT,SAEnB,IAAU5M,QAANxG,GAEF,GAAIL,KAAKwT,MAAMnT,GAEb,KAAM,IAAIuD,OAAM,iCAAmCvD,EAAK,uBAK1DA,GAAKM,EAAK2E,aACVqK,EAAK3P,KAAKyT,UAAYpT,CAGxB,IAAI4M,KACJ,KAAK,GAAImC,KAASO,GAChB,GAAIA,EAAKxJ,eAAeiJ,GAAQ,CAC9B,GAAIuI,GAAY3X,KAAK2T,MAAMvE,EAC3BnC,GAAEmC,GAASzO,EAAKuG,QAAQyI,EAAKP,GAAQuI,GAMzC,MAHA3X,MAAKwT,MAAMnT,GAAM4M,EACjBjN,KAAKgG,SAEE3F,GAUTQ,EAAQkT,UAAUqC,SAAW,SAAU/V,EAAIyX,GACzC,GAAI1I,GAAO9K,EAGPyT,EAAM/X,KAAKwT,MAAMnT,EACrB,KAAK0X,EACH,MAAO,KAIT,IAAIC,KACJ,IAAIF,EACF,IAAK1I,IAAS2I,GACRA,EAAI5R,eAAeiJ,KACrB9K,EAAQyT,EAAI3I,GACZ4I,EAAU5I,GAASzO,EAAKuG,QAAQ5C,EAAOwT,EAAM1I,SAMjD,KAAKA,IAAS2I,GACRA,EAAI5R,eAAeiJ,KACrB9K,EAAQyT,EAAI3I,GACZ4I,EAAU5I,GAAS9K,EAIzB,OAAO0T,IAWTnX,EAAQkT,UAAU8B,YAAc,SAAUlG,GACxC,GAAItP,GAAKsP,EAAK3P,KAAKyT,SACnB,IAAU5M,QAANxG,EACF,KAAM,IAAIuD,OAAM,6CAA+CqU,KAAKC,UAAUvI,GAAQ,IAExF,IAAI1C,GAAIjN,KAAKwT,MAAMnT,EACnB,KAAK4M,EAEH,KAAM,IAAIrJ,OAAM,uCAAyCvD,EAAK,SAIhE,KAAK,GAAI+O,KAASO,GAChB,GAAIA,EAAKxJ,eAAeiJ,GAAQ,CAC9B,GAAIuI,GAAY3X,KAAK2T,MAAMvE,EAC3BnC,GAAEmC,GAASzO,EAAKuG,QAAQyI,EAAKP,GAAQuI,GAIzC,MAAOtX,IASTQ,EAAQkT,UAAUmB,gBAAkB,SAAUiD,GAE5C,IAAK,GADDlD,MACKK,EAAM,EAAGC,EAAO4C,EAAUC,qBAA4B7C,EAAND,EAAYA,IACnEL,EAAQK,GAAO6C,EAAUE,YAAY/C,IAAQ6C,EAAUG,eAAehD,EAExE,OAAOL,IAUTpU,EAAQkT,UAAUyC,WAAa,SAAU2B,EAAWlD,EAAStF,GAG3D,IAAK,GAFDwF,GAAMgD,EAAUI,SAEXjD,EAAM,EAAGC,EAAON,EAAQjP,OAAcuP,EAAND,EAAYA,IAAO,CAC1D,GAAIlG,GAAQ6F,EAAQK,EACpB6C,GAAUK,SAASrD,EAAKG,EAAK3F,EAAKP,MAItCvP,EAAOD,QAAUiB,GAKb,SAAShB,EAAQD,EAASM,GAe9B,QAASY,GAAUwS,EAAMvE,GACvB/O,KAAKwT,MAAQ,KACbxT,KAAKyY,QACLzY,KAAKgG,OAAS,EACdhG,KAAKuT,SAAWxE,MAChB/O,KAAKyT,SAAW,KAChBzT,KAAK4T,eAEL,IAAImB,GAAK/U,IACTA,MAAKqJ,SAAW,WACd0L,EAAG2D,SAASC,MAAM5D,EAAIhP,YAGxB/F,KAAK4Y,QAAQtF,GA1Bf,GAAI3S,GAAOT,EAAoB,GAC3BW,EAAUX,EAAoB,EAmClCY,GAASiT,UAAU6E,QAAU,SAAUtF,GACrC,GAAIyC,GAAKlQ,EAAGC,CAEZ,IAAI9F,KAAKwT,MAAO,CAEVxT,KAAKwT,MAAMgB,aACbxU,KAAKwT,MAAMgB,YAAY,IAAKxU,KAAKqJ,UAInC0M,IACA,KAAK,GAAI1V,KAAML,MAAKyY,KACdzY,KAAKyY,KAAKtS,eAAe9F,IAC3B0V,EAAIxN,KAAKlI,EAGbL,MAAKyY,QACLzY,KAAKgG,OAAS,EACdhG,KAAKyU,SAAS,UAAWxS,MAAO8T,IAKlC,GAFA/V,KAAKwT,MAAQF,EAETtT,KAAKwT,MAAO,CAQd,IANAxT,KAAKyT,SAAWzT,KAAKuT,SAASG,SACzB1T,KAAKwT,OAASxT,KAAKwT,MAAMzE,SAAW/O,KAAKwT,MAAMzE,QAAQ2E,SACxD,KAGJqC,EAAM/V,KAAKwT,MAAMiD,QAAQlC,OAAQvU,KAAKuT,UAAYvT,KAAKuT,SAASgB,SAC3D1O,EAAI,EAAGC,EAAMiQ,EAAI/P,OAAYF,EAAJD,EAASA,IACrCxF,EAAK0V,EAAIlQ,GACT7F,KAAKyY,KAAKpY,IAAM,CAElBL,MAAKgG,OAAS+P,EAAI/P,OAClBhG,KAAKyU,SAAS,OAAQxS,MAAO8T,IAGzB/V,KAAKwT,MAAMW,IACbnU,KAAKwT,MAAMW,GAAG,IAAKnU,KAAKqJ,YAS9BvI,EAASiT,UAAU8E,QAAU,WAQ3B,IAAK,GAPDxY,GACA0V,EAAM/V,KAAKwT,MAAMiD,QAAQlC,OAAQvU,KAAKuT,UAAYvT,KAAKuT,SAASgB,SAChEuE,KACAC,KACAC,KAGKnT,EAAI,EAAGA,EAAIkQ,EAAI/P,OAAQH,IAC9BxF,EAAK0V,EAAIlQ,GACTiT,EAAOzY,IAAM,EACRL,KAAKyY,KAAKpY,KACb0Y,EAAMxQ,KAAKlI,GACXL,KAAKyY,KAAKpY,IAAM,EAChBL,KAAKgG,SAKT,KAAK3F,IAAML,MAAKyY,KACVzY,KAAKyY,KAAKtS,eAAe9F,KACtByY,EAAOzY,KACV2Y,EAAQzQ,KAAKlI,SACNL,MAAKyY,KAAKpY,GACjBL,KAAKgG,UAMP+S,GAAM/S,QACRhG,KAAKyU,SAAS,OAAQxS,MAAO8W,IAE3BC,EAAQhT,QACVhG,KAAKyU,SAAS,UAAWxS,MAAO+W,KAsCpClY,EAASiT,UAAU+B,IAAM,WACvB,GAGIC,GAAKhH,EAASuE,EAHdyB,EAAK/U,KAILgW,EAAYrV,EAAK6G,QAAQzB,UAAU,GACtB,WAAbiQ,GAAsC,UAAbA,GAAsC,SAAbA,GAEpDD,EAAMhQ,UAAU,GAChBgJ,EAAUhJ,UAAU,GACpBuN,EAAOvN,UAAU,KAIjBgJ,EAAUhJ,UAAU,GACpBuN,EAAOvN,UAAU,GAInB,IAAIkT,GAActY,EAAKgF,UAAW3F,KAAKuT,SAAUxE,EAG7C/O,MAAKuT,SAASgB,QAAUxF,GAAWA,EAAQwF,SAC7C0E,EAAY1E,OAAS,SAAU5E,GAC7B,MAAOoF,GAAGxB,SAASgB,OAAO5E,IAASZ,EAAQwF,OAAO5E,IAKtD,IAAIuJ,KAOJ,OANWrS,SAAPkP,GACFmD,EAAa3Q,KAAKwN,GAEpBmD,EAAa3Q,KAAK0Q,GAClBC,EAAa3Q,KAAK+K,GAEXtT,KAAKwT,OAASxT,KAAKwT,MAAMsC,IAAI6C,MAAM3Y,KAAKwT,MAAO0F,IAWxDpY,EAASiT,UAAU0C,OAAS,SAAU1H,GACpC,GAAIgH,EAEJ,IAAI/V,KAAKwT,MAAO,CACd,GACIe,GADA4E,EAAgBnZ,KAAKuT,SAASgB,MAK9BA,GAFAxF,GAAWA,EAAQwF,OACjB4E,EACO,SAAUxJ,GACjB,MAAOwJ,GAAcxJ,IAASZ,EAAQwF,OAAO5E,IAItCZ,EAAQwF,OAIV4E,EAGXpD,EAAM/V,KAAKwT,MAAMiD,QACflC,OAAQA,EACR8B,MAAOtH,GAAWA,EAAQsH,YAI5BN,KAGF,OAAOA,IAQTjV,EAASiT,UAAU2C,WAAa,WAE9B,IADA,GAAI0C,GAAUpZ,KACPoZ,YAAmBtY,IACxBsY,EAAUA,EAAQ5F,KAEpB,OAAO4F,IAAW,MAYpBtY,EAASiT,UAAU2E,SAAW,SAAU7O,EAAO6K,EAAQC,GACrD,GAAI9O,GAAGC,EAAKzF,EAAIsP,EACZoG,EAAMrB,GAAUA,EAAOzS,MACvBqR,EAAOtT,KAAKwT,MACZmC,KACAoD,KACAM,KACAL,IAEJ,IAAIjD,GAAOzC,EAAM,CACf,OAAQzJ,GACN,IAAK,MAEH,IAAKhE,EAAI,EAAGC,EAAMiQ,EAAI/P,OAAYF,EAAJD,EAASA,IACrCxF,EAAK0V,EAAIlQ,GACT8J,EAAO3P,KAAK8V,IAAIzV,GACZsP,IACF3P,KAAKyY,KAAKpY,IAAM,EAChB0Y,EAAMxQ,KAAKlI,GAIf,MAEF,KAAK,SAGH,IAAKwF,EAAI,EAAGC,EAAMiQ,EAAI/P,OAAYF,EAAJD,EAASA,IACrCxF,EAAK0V,EAAIlQ,GACT8J,EAAO3P,KAAK8V,IAAIzV,GAEZsP,EACE3P,KAAKyY,KAAKpY,IACZgZ,EAAQ9Q,KAAKlI,GACbsV,EAAYpN,KAAKmM,EAAOpB,KAAKzN,MAG7B7F,KAAKyY,KAAKpY,IAAM,EAChB0Y,EAAMxQ,KAAKlI,IAITL,KAAKyY,KAAKpY,WACLL,MAAKyY,KAAKpY,GACjB2Y,EAAQzQ,KAAKlI,GAQnB,MAEF,KAAK,SAEH,IAAKwF,EAAI,EAAGC,EAAMiQ,EAAI/P,OAAYF,EAAJD,EAASA,IACrCxF,EAAK0V,EAAIlQ,GACL7F,KAAKyY,KAAKpY,WACLL,MAAKyY,KAAKpY,GACjB2Y,EAAQzQ,KAAKlI,IAOrBL,KAAKgG,QAAU+S,EAAM/S,OAASgT,EAAQhT,OAElC+S,EAAM/S,QACRhG,KAAKyU,SAAS,OAAQxS,MAAO8W,GAAQpE,GAEnC0E,EAAQrT,QACVhG,KAAKyU,SAAS,UAAWxS,MAAOoX,EAAS/F,KAAMqC,GAAchB,GAE3DqE,EAAQhT,QACVhG,KAAKyU,SAAS,UAAWxS,MAAO+W,GAAUrE,KAMhD7T,EAASiT,UAAUI,GAAKtT,EAAQkT,UAAUI,GAC1CrT,EAASiT,UAAUO,IAAMzT,EAAQkT,UAAUO,IAC3CxT,EAASiT,UAAUU,SAAW5T,EAAQkT,UAAUU,SAGhD3T,EAASiT,UAAUM,UAAYvT,EAASiT,UAAUI,GAClDrT,EAASiT,UAAUS,YAAc1T,EAASiT,UAAUO,IAEpDzU,EAAOD,QAAUkB,GAIb,SAASjB,GAeb,QAASkB,GAAMgO,GAEb/O,KAAKsZ,MAAQ,KACbtZ,KAAKoE,IAAMmV,IAGXvZ,KAAKiU,UACLjU,KAAKwZ,SAAW,KAChBxZ,KAAKyZ,UAAY,KAEjBzZ,KAAK8T,WAAW/E,GAgBlBhO,EAAMgT,UAAUD,WAAa,SAAU/E,GACjCA,GAAoC,mBAAlBA,GAAQuK,QAC5BtZ,KAAKsZ,MAAQvK,EAAQuK,OAEnBvK,GAAkC,mBAAhBA,GAAQ3K,MAC5BpE,KAAKoE,IAAM2K,EAAQ3K,KAGrBpE,KAAK0Z,kBAsBP3Y,EAAM4E,OAAS,SAAU3B,EAAQ+K,GAC/B,GAAIiF,GAAQ,GAAIjT,GAAMgO,EAEtB,IAAqBlI,SAAjB7C,EAAO2V,MACT,KAAM,IAAI/V,OAAM,6CAElBI,GAAO2V,MAAQ,WACb3F,EAAM2F,QAGR,IAAIC,KACF/C,KAAM,QACNgD,SAAUhT,QAGZ,IAAIkI,GAAWA,EAAQjE,QACrB,IAAK,GAAIjF,GAAI,EAAGA,EAAIkJ,EAAQjE,QAAQ9E,OAAQH,IAAK,CAC/C,GAAIgR,GAAO9H,EAAQjE,QAAQjF,EAC3B+T,GAAQrR,MACNsO,KAAMA,EACNgD,SAAU7V,EAAO6S,KAEnB7C,EAAMlJ,QAAQ9G,EAAQ6S,GAS1B,MALA7C,GAAMyF,WACJzV,OAAQA,EACR4V,QAASA,GAGJ5F,GAOTjT,EAAMgT,UAAUG,QAAU,WAGxB,GAFAlU,KAAK2Z,QAED3Z,KAAKyZ,UAAW,CAGlB,IAAK,GAFDzV,GAAShE,KAAKyZ,UAAUzV,OACxB4V,EAAU5Z,KAAKyZ,UAAUG,QACpB/T,EAAI,EAAGA,EAAI+T,EAAQ5T,OAAQH,IAAK,CACvC,GAAIiU,GAASF,EAAQ/T,EACjBiU,GAAOD,SACT7V,EAAO8V,EAAOjD,MAAQiD,EAAOD,eAGtB7V,GAAO8V,EAAOjD,MAGzB7W,KAAKyZ,UAAY,OASrB1Y,EAAMgT,UAAUjJ,QAAU,SAAS9G,EAAQ8V,GACzC,GAAI/E,GAAK/U,KACL6Z,EAAW7V,EAAO8V,EACtB,KAAKD,EACH,KAAM,IAAIjW,OAAM,UAAYkW,EAAS,aAGvC9V,GAAO8V,GAAU,WAGf,IAAK,GADDC,MACKlU,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,IACpCkU,EAAKlU,GAAKE,UAAUF,EAItBkP,GAAGf,OACD+F,KAAMA,EACNC,GAAIH,EACJI,QAASja,SASfe,EAAMgT,UAAUC,MAAQ,SAASkG,GAE7Bla,KAAKiU,OAAO1L,KADO,kBAAV2R,IACSF,GAAIE,GAGLA,GAGnBla,KAAK0Z,kBAOP3Y,EAAMgT,UAAU2F,eAAiB,WAQ/B,GANI1Z,KAAKiU,OAAOjO,OAAShG,KAAKoE,KAC5BpE,KAAK2Z,QAIPQ,aAAana,KAAKwZ,UACdxZ,KAAKgU,MAAMhO,OAAS,GAA2B,gBAAfhG,MAAKsZ,MAAoB,CAC3D,GAAIvE,GAAK/U,IACTA,MAAKwZ,SAAWY,WAAW,WACzBrF,EAAG4E,SACF3Z,KAAKsZ,SAOZvY,EAAMgT,UAAU4F,MAAQ,WACtB,KAAO3Z,KAAKiU,OAAOjO,OAAS,GAAG,CAC7B,GAAIkU,GAAQla,KAAKiU,OAAOrC,OACxBsI,GAAMF,GAAGrB,MAAMuB,EAAMD,SAAWC,EAAMF,GAAIE,EAAMH,YAIpDla,EAAOD,QAAUmB,GAKb,SAASlB,EAAQD,EAASM,GAwB9B,QAASc,GAAQqZ,EAAW/G,EAAMvE,GAChC,KAAM/O,eAAgBgB,IACpB,KAAM,IAAIsZ,aAAY,mDAIxBta,MAAKua,iBAAmBF,EACxBra,KAAKmT,MAAQ,QACbnT,KAAKoT,OAAS,QACdpT,KAAKwa,OAAS,GACdxa,KAAKya,eAAiB,MACtBza,KAAK0a,eAAiB,MAEtB1a,KAAK2a,OAAS,IACd3a,KAAK4a,OAAS,IACd5a,KAAK6a,OAAS,GAEd,IAAIC,GAAc,SAASzO,GAAK,MAAOA,GACvCrM,MAAK+a,YAAcD,EACnB9a,KAAKgb,YAAcF,EACnB9a,KAAKib,YAAcH,EAEnB9a,KAAKkb,YAAc,OACnBlb,KAAKmb,YAAc,QAEnBnb,KAAKuN,MAAQvM,EAAQoa,MAAMC,IAC3Brb,KAAKsb,iBAAkB,EACvBtb,KAAKub,UAAW,EAChBvb,KAAKwb,iBAAkB,EACvBxb,KAAKyb,YAAa,EAClBzb,KAAK0b,gBAAiB,EACtB1b,KAAK2b,aAAc,EACnB3b,KAAK4b,cAAgB,GAErB5b,KAAK6b,kBAAoB,IACzB7b,KAAK8b,kBAAmB,EAExB9b,KAAK+b,OAAS,GAAI7a,GAClBlB,KAAKgc,IAAM,GAAI3a,GAAQ,EAAG,EAAG,IAE7BrB,KAAKmY,UAAY,KACjBnY,KAAKic,WAAa,KAGlBjc,KAAKkc,KAAOrV,OACZ7G,KAAKmc,KAAOtV,OACZ7G,KAAKoc,KAAOvV,OACZ7G,KAAKqc,SAAWxV,OAChB7G,KAAKsc,UAAYzV,OAEjB7G,KAAKuc,KAAO,EACZvc,KAAKwc,MAAQ3V,OACb7G,KAAKyc,KAAO,EACZzc,KAAK0c,KAAO,EACZ1c,KAAK2c,MAAQ9V,OACb7G,KAAK4c,KAAO,EACZ5c,KAAK6c,KAAO,EACZ7c,KAAK8c,MAAQjW,OACb7G,KAAK+c,KAAO,EACZ/c,KAAKgd,SAAW,EAChBhd,KAAKid,SAAW,EAChBjd,KAAKkd,UAAY,EACjBld,KAAKmd,UAAY,EAIjBnd,KAAKod,UAAY,UACjBpd,KAAKqd,UAAY,UACjBrd,KAAKsd,SAAW,UAChBtd,KAAKud,eAAiB,UAGtBvd,KAAK2O,SAGL3O,KAAK8T,WAAW/E,GAGZuE,GACFtT,KAAK4Y,QAAQtF,GAknEjB,QAASkK,GAAW3T,GAClB,MAAI,WAAaA,GAAcA,EAAM4T,QAC9B5T,EAAM6T,cAAc,IAAM7T,EAAM6T,cAAc,GAAGD,SAAW,EAQrE,QAASE,GAAW9T,GAClB,MAAI,WAAaA,GAAcA,EAAM+T,QAC9B/T,EAAM6T,cAAc,IAAM7T,EAAM6T,cAAc,GAAGE,SAAW,EAnuErE,GAAIC,GAAU3d,EAAoB,IAC9BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/BS,EAAOT,EAAoB,GAC3BmB,EAAUnB,EAAoB,IAC9BkB,EAAUlB,EAAoB,GAC9BgB,EAAShB,EAAoB,GAC7BiB,EAASjB,EAAoB,GAC7BoB,EAASpB,EAAoB,IAC7BqB,EAAarB,EAAoB,GAiGrC2d,GAAQ7c,EAAQ+S,WAKhB/S,EAAQ+S,UAAU+J,UAAY,WAC5B9d,KAAKuE,MAAQ,GAAIlD,GAAQ,GAAKrB,KAAKyc,KAAOzc,KAAKuc,MAC7C,GAAKvc,KAAK4c,KAAO5c,KAAK0c,MACtB,GAAK1c,KAAK+c,KAAO/c,KAAK6c,OAGpB7c,KAAKwb,kBACHxb,KAAKuE,MAAM8N,EAAIrS,KAAKuE,MAAM+N,EAE5BtS,KAAKuE,MAAM+N,EAAItS,KAAKuE,MAAM8N,EAI1BrS,KAAKuE,MAAM8N,EAAIrS,KAAKuE,MAAM+N,GAK9BtS,KAAKuE,MAAMwZ,GAAK/d,KAAK4b,cAIrB5b,KAAKuE,MAAMD,MAAQ,GAAKtE,KAAKid,SAAWjd,KAAKgd,SAG7C,IAAIgB,IAAWhe,KAAKyc,KAAOzc,KAAKuc,MAAQ,EAAIvc,KAAKuE,MAAM8N,EACnD4L,GAAWje,KAAK4c,KAAO5c,KAAK0c,MAAQ,EAAI1c,KAAKuE,MAAM+N,EACnD4L,GAAWle,KAAK+c,KAAO/c,KAAK6c,MAAQ,EAAI7c,KAAKuE,MAAMwZ,CACvD/d,MAAK+b,OAAOoC,eAAeH,EAASC,EAASC,IAU/Cld,EAAQ+S,UAAUqK,eAAiB,SAASC,GAC1C,GAAIC,GAActe,KAAKue,2BAA2BF,EAClD,OAAOre,MAAKwe,4BAA4BF,IAW1Ctd,EAAQ+S,UAAUwK,2BAA6B,SAASF,GACtD,GAAII,GAAKJ,EAAQhM,EAAIrS,KAAKuE,MAAM8N,EAC9BqM,EAAKL,EAAQ/L,EAAItS,KAAKuE,MAAM+N,EAC5BqM,EAAKN,EAAQN,EAAI/d,KAAKuE,MAAMwZ,EAE5Ba,EAAK5e,KAAK+b,OAAO8C,oBAAoBxM,EACrCyM,EAAK9e,KAAK+b,OAAO8C,oBAAoBvM,EACrCyM,EAAK/e,KAAK+b,OAAO8C,oBAAoBd,EAGrCiB,EAAQxa,KAAKya,IAAIjf,KAAK+b,OAAOmD,oBAAoB7M,GACjD8M,EAAQ3a,KAAK4a,IAAIpf,KAAK+b,OAAOmD,oBAAoB7M,GACjDgN,EAAQ7a,KAAKya,IAAIjf,KAAK+b,OAAOmD,oBAAoB5M,GACjDgN,EAAQ9a,KAAK4a,IAAIpf,KAAK+b,OAAOmD,oBAAoB5M,GACjDiN,EAAQ/a,KAAKya,IAAIjf,KAAK+b,OAAOmD,oBAAoBnB,GACjDyB,EAAQhb,KAAK4a,IAAIpf,KAAK+b,OAAOmD,oBAAoBnB,GAGjD0B,EAAKH,GAASC,GAASb,EAAKI,GAAMU,GAASf,EAAKG,IAAOS,GAASV,EAAKI,GACrEW,EAAKV,GAASM,GAASX,EAAKI,GAAMM,GAASE,GAASb,EAAKI,GAAMU,GAASf,EAAKG,KAAQO,GAASK,GAASd,EAAKI,GAAMS,GAASd,EAAGG,IAC9He,EAAKR,GAASG,GAASX,EAAKI,GAAMM,GAASE,GAASb,EAAKI,GAAMU,GAASf,EAAKG,KAAQI,GAASQ,GAASd,EAAKI,GAAMS,GAASd,EAAGG,GAEhI,OAAO,IAAIvd,GAAQoe,EAAIC,EAAIC,IAU7B3e,EAAQ+S,UAAUyK,4BAA8B,SAASF,GACvD,GAQIsB,GACAC,EATAC,EAAK9f,KAAKgc,IAAI3J,EAChB0N,EAAK/f,KAAKgc,IAAI1J,EACd0N,EAAKhgB,KAAKgc,IAAI+B,EACd0B,EAAKnB,EAAYjM,EACjBqN,EAAKpB,EAAYhM,EACjBqN,EAAKrB,EAAYP,CAgBnB,OAXI/d,MAAKsb,iBACPsE,GAAMH,EAAKK,IAAOE,EAAKL,GACvBE,GAAMH,EAAKK,IAAOC,EAAKL,KAGvBC,EAAKH,IAAOO,EAAKhgB,KAAK+b,OAAOkE,gBAC7BJ,EAAKH,IAAOM,EAAKhgB,KAAK+b,OAAOkE,iBAKxB,GAAI7e,GACTpB,KAAKkgB,QAAUN,EAAK5f,KAAKmgB,MAAMC,OAAOC,YACtCrgB,KAAKsgB,QAAUT,EAAK7f,KAAKmgB,MAAMC,OAAOC,cAO1Crf,EAAQ+S,UAAUwM,oBAAsB,SAASC,GAC/C,GAAIC,GAAO,QACPC,EAAS,OACTC,EAAc,CAElB,IAAgC,gBAAtB,GACRF,EAAOD,EACPE,EAAS,OACTC,EAAc,MAEX,IAAgC,gBAAtB,GACgB9Z,SAAzB2Z,EAAgBC,OAAuBA,EAAOD,EAAgBC,MACnC5Z,SAA3B2Z,EAAgBE,SAAyBA,EAASF,EAAgBE,QAClC7Z,SAAhC2Z,EAAgBG,cAA2BA,EAAcH,EAAgBG,iBAE1E,IAAyB9Z,SAApB2Z,EAIR,KAAM,qCAGRxgB,MAAKmgB,MAAM5S,MAAMiT,gBAAkBC,EACnCzgB,KAAKmgB,MAAM5S,MAAMqT,YAAcF,EAC/B1gB,KAAKmgB,MAAM5S,MAAMsT,YAAcF,EAAc,KAC7C3gB,KAAKmgB,MAAM5S,MAAMuT,YAAc,SAKjC9f,EAAQoa,OACN2F,IAAK,EACLC,SAAU,EACVC,QAAS,EACT5F,IAAM,EACN6F,QAAU,EACVC,SAAU,EACVC,QAAS,EACTC,KAAO,EACPC,KAAM,EACNC,QAAU,GASZvgB,EAAQ+S,UAAUyN,gBAAkB,SAASC,GAC3C,OAAQA,GACN,IAAK,MAAW,MAAOzgB,GAAQoa,MAAMC,GACrC,KAAK,WAAa,MAAOra,GAAQoa,MAAM8F,OACvC,KAAK,YAAe,MAAOlgB,GAAQoa,MAAM+F,QACzC,KAAK,WAAa,MAAOngB,GAAQoa,MAAMgG,OACvC,KAAK,OAAW,MAAOpgB,GAAQoa,MAAMkG,IACrC,KAAK,OAAW,MAAOtgB,GAAQoa,MAAMiG,IACrC,KAAK,UAAa,MAAOrgB,GAAQoa,MAAMmG,OACvC,KAAK,MAAW,MAAOvgB,GAAQoa,MAAM2F,GACrC,KAAK,YAAe,MAAO/f,GAAQoa,MAAM4F,QACzC,KAAK,WAAa,MAAOhgB,GAAQoa,MAAM6F,QAGzC,MAAO,IAQTjgB,EAAQ+S,UAAU2N,wBAA0B,SAASpO,GACnD,GAAItT,KAAKuN,QAAUvM,EAAQoa,MAAMC,KAC/Brb,KAAKuN,QAAUvM,EAAQoa,MAAM8F,SAC7BlhB,KAAKuN,QAAUvM,EAAQoa,MAAMkG,MAC7BthB,KAAKuN,QAAUvM,EAAQoa,MAAMiG,MAC7BrhB,KAAKuN,QAAUvM,EAAQoa,MAAMmG,SAC7BvhB,KAAKuN,QAAUvM,EAAQoa,MAAM2F,IAE7B/gB,KAAKkc,KAAO,EACZlc,KAAKmc,KAAO,EACZnc,KAAKoc,KAAO,EACZpc,KAAKqc,SAAWxV,OAEZyM,EAAK8E,qBAAuB,IAC9BpY,KAAKsc,UAAY,OAGhB,CAAA,GAAItc,KAAKuN,QAAUvM,EAAQoa,MAAM+F,UACpCnhB,KAAKuN,QAAUvM,EAAQoa,MAAMgG,SAC7BphB,KAAKuN,QAAUvM,EAAQoa,MAAM4F,UAC7BhhB,KAAKuN,QAAUvM,EAAQoa,MAAM6F,QAY7B,KAAM,kBAAoBjhB,KAAKuN,MAAQ,GAVvCvN,MAAKkc,KAAO,EACZlc,KAAKmc,KAAO,EACZnc,KAAKoc,KAAO,EACZpc,KAAKqc,SAAW,EAEZ/I,EAAK8E,qBAAuB,IAC9BpY,KAAKsc,UAAY,KAQvBtb,EAAQ+S,UAAUsB,gBAAkB,SAAS/B,GAC3C,MAAOA,GAAKtN,QAIdhF,EAAQ+S,UAAUqE,mBAAqB,SAAS9E,GAC9C,GAAIqO,GAAU,CACd,KAAK,GAAIC,KAAUtO,GAAK,GAClBA,EAAK,GAAGnN,eAAeyb,IACzBD,GAGJ,OAAOA,IAIT3gB,EAAQ+S,UAAU8N,kBAAoB,SAASvO,EAAMsO,GAEnD,IAAK,GADDE,MACKjc,EAAI,EAAGA,EAAIyN,EAAKtN,OAAQH,IACgB,IAA3Cic,EAAe9a,QAAQsM,EAAKzN,GAAG+b,KACjCE,EAAevZ,KAAK+K,EAAKzN,GAAG+b,GAGhC,OAAOE,IAIT9gB,EAAQ+S,UAAUgO,eAAiB,SAASzO,EAAKsO,GAE/C,IAAK,GADDI,IAAU7d,IAAImP,EAAK,GAAGsO,GAAQxd,IAAIkP,EAAK,GAAGsO,IACrC/b,EAAI,EAAGA,EAAIyN,EAAKtN,OAAQH,IAC3Bmc,EAAO7d,IAAMmP,EAAKzN,GAAG+b,KAAWI,EAAO7d,IAAMmP,EAAKzN,GAAG+b,IACrDI,EAAO5d,IAAMkP,EAAKzN,GAAG+b,KAAWI,EAAO5d,IAAMkP,EAAKzN,GAAG+b,GAE3D,OAAOI,IASThhB,EAAQ+S,UAAUkO,gBAAkB,SAAUC,GAC5C,GAAInN,GAAK/U,IAOT,IAJIA,KAAKoZ,SACPpZ,KAAKoZ,QAAQ9E,IAAI,IAAKtU,KAAKmiB,WAGbtb,SAAZqb,EAAJ,CAGI5b,MAAMC,QAAQ2b,KAChBA,EAAU,GAAIrhB,GAAQqhB,GAGxB,IAAI5O,EACJ,MAAI4O,YAAmBrhB,IAAWqhB,YAAmBphB,IAInD,KAAM,IAAI8C,OAAM,uCAGlB;GANE0P,EAAO4O,EAAQpM,MAME,GAAfxC,EAAKtN,OAAT,CAGAhG,KAAKoZ,QAAU8I,EACfliB,KAAKmY,UAAY7E,EAGjBtT,KAAKmiB,UAAY,WACfpN,EAAG6D,QAAQ7D,EAAGqE,UAEhBpZ,KAAKoZ,QAAQjF,GAAG,IAAKnU,KAAKmiB,WAS1BniB,KAAKkc,KAAO,IACZlc,KAAKmc,KAAO,IACZnc,KAAKoc,KAAO,IACZpc,KAAKqc,SAAW,QAChBrc,KAAKsc,UAAY,SAKbhJ,EAAK,GAAGnN,eAAe,WACDU,SAApB7G,KAAKoiB,aACPpiB,KAAKoiB,WAAa,GAAIjhB,GAAO+gB,EAASliB,KAAKsc,UAAWtc,MACtDA,KAAKoiB,WAAWC,kBAAkB,WAAYtN,EAAGuN,WAKrD,IAAIC,GAAWviB,KAAKuN,OAASvM,EAAQoa,MAAM2F,KACzC/gB,KAAKuN,OAASvM,EAAQoa,MAAM4F,UAC5BhhB,KAAKuN,OAASvM,EAAQoa,MAAM6F,OAG9B,IAAIsB,EAAU,CACZ,GAA8B1b,SAA1B7G,KAAKwiB,iBACPxiB,KAAKkd,UAAYld,KAAKwiB,qBAEnB,CACH,GAAIC,GAAQziB,KAAK6hB,kBAAkBvO,EAAKtT,KAAKkc,KAC7Clc,MAAKkd,UAAauF,EAAM,GAAKA,EAAM,IAAO,EAG5C,GAA8B5b,SAA1B7G,KAAK0iB,iBACP1iB,KAAKmd,UAAYnd,KAAK0iB,qBAEnB,CACH,GAAIC,GAAQ3iB,KAAK6hB,kBAAkBvO,EAAKtT,KAAKmc,KAC7Cnc,MAAKmd,UAAawF,EAAM,GAAKA,EAAM,IAAO,GAK9C,GAAIC,GAAS5iB,KAAK+hB,eAAezO,EAAKtT,KAAKkc,KACvCqG,KACFK,EAAOze,KAAOnE,KAAKkd,UAAY,EAC/B0F,EAAOxe,KAAOpE,KAAKkd,UAAY,GAEjCld,KAAKuc,KAA6B1V,SAArB7G,KAAK6iB,YAA6B7iB,KAAK6iB,YAAcD,EAAOze,IACzEnE,KAAKyc,KAA6B5V,SAArB7G,KAAK8iB,YAA6B9iB,KAAK8iB,YAAcF,EAAOxe,IACrEpE,KAAKyc,MAAQzc,KAAKuc,OAAMvc,KAAKyc,KAAOzc,KAAKuc,KAAO,GACpDvc,KAAKwc,MAA+B3V,SAAtB7G,KAAK+iB,aAA8B/iB,KAAK+iB,cAAgB/iB,KAAKyc,KAAKzc,KAAKuc,MAAM,CAE3F,IAAIyG,GAAShjB,KAAK+hB,eAAezO,EAAKtT,KAAKmc,KACvCoG,KACFS,EAAO7e,KAAOnE,KAAKmd,UAAY,EAC/B6F,EAAO5e,KAAOpE,KAAKmd,UAAY,GAEjCnd,KAAK0c,KAA6B7V,SAArB7G,KAAKijB,YAA6BjjB,KAAKijB,YAAcD,EAAO7e,IACzEnE,KAAK4c,KAA6B/V,SAArB7G,KAAKkjB,YAA6BljB,KAAKkjB,YAAcF,EAAO5e,IACrEpE,KAAK4c,MAAQ5c,KAAK0c,OAAM1c,KAAK4c,KAAO5c,KAAK0c,KAAO,GACpD1c,KAAK2c,MAA+B9V,SAAtB7G,KAAKmjB,aAA8BnjB,KAAKmjB,cAAgBnjB,KAAK4c,KAAK5c,KAAK0c,MAAM,CAE3F,IAAI0G,GAASpjB,KAAK+hB,eAAezO,EAAKtT,KAAKoc,KAM3C,IALApc,KAAK6c,KAA6BhW,SAArB7G,KAAKqjB,YAA6BrjB,KAAKqjB,YAAcD,EAAOjf,IACzEnE,KAAK+c,KAA6BlW,SAArB7G,KAAKsjB,YAA6BtjB,KAAKsjB,YAAcF,EAAOhf,IACrEpE,KAAK+c,MAAQ/c,KAAK6c,OAAM7c,KAAK+c,KAAO/c,KAAK6c,KAAO,GACpD7c,KAAK8c,MAA+BjW,SAAtB7G,KAAKujB,aAA8BvjB,KAAKujB,cAAgBvjB,KAAK+c,KAAK/c,KAAK6c,MAAM,EAErEhW,SAAlB7G,KAAKqc,SAAwB,CAC/B,GAAImH,GAAaxjB,KAAK+hB,eAAezO,EAAKtT,KAAKqc,SAC/Crc,MAAKgd,SAAqCnW,SAAzB7G,KAAKyjB,gBAAiCzjB,KAAKyjB,gBAAkBD,EAAWrf,IACzFnE,KAAKid,SAAqCpW,SAAzB7G,KAAK0jB,gBAAiC1jB,KAAK0jB,gBAAkBF,EAAWpf,IACrFpE,KAAKid,UAAYjd,KAAKgd,WAAUhd,KAAKid,SAAWjd,KAAKgd,SAAW,GAItEhd,KAAK8d,eAUP9c,EAAQ+S,UAAU4P,eAAiB,SAAUrQ,GAE3C,GAAIjB,GAAGC,EAAGzM,EAAGkY,EAAG6F,EAAKnR,EAEjBwJ,IAEJ,IAAIjc,KAAKuN,QAAUvM,EAAQoa,MAAMiG,MAC/BrhB,KAAKuN,QAAUvM,EAAQoa,MAAMmG,QAAS,CAKtC,GAAIkB,MACAE,IACJ,KAAK9c,EAAI,EAAGA,EAAI7F,KAAKqV,gBAAgB/B,GAAOzN,IAC1CwM,EAAIiB,EAAKzN,GAAG7F,KAAKkc,OAAS,EAC1B5J,EAAIgB,EAAKzN,GAAG7F,KAAKmc,OAAS,EAED,KAArBsG,EAAMzb,QAAQqL,IAChBoQ,EAAMla,KAAK8J,GAEY,KAArBsQ,EAAM3b,QAAQsL,IAChBqQ,EAAMpa,KAAK+J,EAIf,IAAIuR,GAAa,SAAUje,EAAGa,GAC5B,MAAOb,GAAIa,EAEbgc,GAAM3L,KAAK+M,GACXlB,EAAM7L,KAAK+M,EAGX,IAAIC,KACJ,KAAKje,EAAI,EAAGA,EAAIyN,EAAKtN,OAAQH,IAAK,CAChCwM,EAAIiB,EAAKzN,GAAG7F,KAAKkc,OAAS,EAC1B5J,EAAIgB,EAAKzN,GAAG7F,KAAKmc,OAAS,EAC1B4B,EAAIzK,EAAKzN,GAAG7F,KAAKoc,OAAS,CAE1B,IAAI2H,GAAStB,EAAMzb,QAAQqL,GACvB2R,EAASrB,EAAM3b,QAAQsL,EAEAzL,UAAvBid,EAAWC,KACbD,EAAWC,MAGb,IAAI1F,GAAU,GAAIhd,EAClBgd,GAAQhM,EAAIA,EACZgM,EAAQ/L,EAAIA,EACZ+L,EAAQN,EAAIA,EAEZ6F,KACAA,EAAInR,MAAQ4L,EACZuF,EAAIK,MAAQpd,OACZ+c,EAAIM,OAASrd,OACb+c,EAAIO,OAAS,GAAI9iB,GAAQgR,EAAGC,EAAGtS,KAAK6c,MAEpCiH,EAAWC,GAAQC,GAAUJ,EAE7B3H,EAAW1T,KAAKqb,GAIlB,IAAKvR,EAAI,EAAGA,EAAIyR,EAAW9d,OAAQqM,IACjC,IAAKC,EAAI,EAAGA,EAAIwR,EAAWzR,GAAGrM,OAAQsM,IAChCwR,EAAWzR,GAAGC,KAChBwR,EAAWzR,GAAGC,GAAG8R,WAAc/R,EAAIyR,EAAW9d,OAAO,EAAK8d,EAAWzR,EAAE,GAAGC,GAAKzL,OAC/Eid,EAAWzR,GAAGC,GAAG+R,SAAc/R,EAAIwR,EAAWzR,GAAGrM,OAAO,EAAK8d,EAAWzR,GAAGC,EAAE,GAAKzL,OAClFid,EAAWzR,GAAGC,GAAGgS,WACdjS,EAAIyR,EAAW9d,OAAO,GAAKsM,EAAIwR,EAAWzR,GAAGrM,OAAO,EACnD8d,EAAWzR,EAAE,GAAGC,EAAE,GAClBzL,YAOV,KAAKhB,EAAI,EAAGA,EAAIyN,EAAKtN,OAAQH,IAC3B4M,EAAQ,GAAIpR,GACZoR,EAAMJ,EAAIiB,EAAKzN,GAAG7F,KAAKkc,OAAS,EAChCzJ,EAAMH,EAAIgB,EAAKzN,GAAG7F,KAAKmc,OAAS,EAChC1J,EAAMsL,EAAIzK,EAAKzN,GAAG7F,KAAKoc,OAAS,EAEVvV,SAAlB7G,KAAKqc,WACP5J,EAAMnO,MAAQgP,EAAKzN,GAAG7F,KAAKqc,WAAa,GAG1CuH,KACAA,EAAInR,MAAQA,EACZmR,EAAIO,OAAS,GAAI9iB,GAAQoR,EAAMJ,EAAGI,EAAMH,EAAGtS,KAAK6c,MAChD+G,EAAIK,MAAQpd,OACZ+c,EAAIM,OAASrd,OAEboV,EAAW1T,KAAKqb,EAIpB,OAAO3H,IASTjb,EAAQ+S,UAAUpF,OAAS,WAEzB,KAAO3O,KAAKua,iBAAiBgK,iBAC3BvkB,KAAKua,iBAAiB9I,YAAYzR,KAAKua,iBAAiBiK,WAG1DxkB,MAAKmgB,MAAQtO,SAASM,cAAc,OACpCnS,KAAKmgB,MAAM5S,MAAMkX,SAAW,WAC5BzkB,KAAKmgB,MAAM5S,MAAMmX,SAAW,SAG5B1kB,KAAKmgB,MAAMC,OAASvO,SAASM,cAAe,UAC5CnS,KAAKmgB,MAAMC,OAAO7S,MAAMkX,SAAW,WACnCzkB,KAAKmgB,MAAMpO,YAAY/R,KAAKmgB,MAAMC,OAGhC,IAAIuE,GAAW9S,SAASM,cAAe,MACvCwS,GAASpX,MAAMnC,MAAQ,MACvBuZ,EAASpX,MAAMqX,WAAc,OAC7BD,EAASpX,MAAMsX,QAAW,OAC1BF,EAASG,UAAa,mDACtB9kB,KAAKmgB,MAAMC,OAAOrO,YAAY4S,GAGhC3kB,KAAKmgB,MAAM5L,OAAS1C,SAASM,cAAe,OAC5CnS,KAAKmgB,MAAM5L,OAAOhH,MAAMkX,SAAW,WACnCzkB,KAAKmgB,MAAM5L,OAAOhH,MAAM4W,OAAS,MACjCnkB,KAAKmgB,MAAM5L,OAAOhH,MAAM1F,KAAO,MAC/B7H,KAAKmgB,MAAM5L,OAAOhH,MAAM4F,MAAQ,OAChCnT,KAAKmgB,MAAMpO,YAAY/R,KAAKmgB,MAAM5L,OAGlC,IAAIQ,GAAK/U,KACL+kB,EAAc,SAAUlb,GAAQkL,EAAGiQ,aAAanb,IAChDob,EAAe,SAAUpb,GAAQkL,EAAGmQ,cAAcrb,IAClDsb,EAAe,SAAUtb,GAAQkL,EAAGqQ,SAASvb,IAC7Cwb,EAAY,SAAUxb,GAAQkL,EAAGuQ,WAAWzb,GAGhDlJ,GAAKuI,iBAAiBlJ,KAAKmgB,MAAMC,OAAQ,UAAWmF,WACpD5kB,EAAKuI,iBAAiBlJ,KAAKmgB,MAAMC,OAAQ,YAAa2E,GACtDpkB,EAAKuI,iBAAiBlJ,KAAKmgB,MAAMC,OAAQ,aAAc6E,GACvDtkB,EAAKuI,iBAAiBlJ,KAAKmgB,MAAMC,OAAQ,aAAc+E,GACvDxkB,EAAKuI,iBAAiBlJ,KAAKmgB,MAAMC,OAAQ,YAAaiF,GAGtDrlB,KAAKua,iBAAiBxI,YAAY/R,KAAKmgB,QAWzCnf,EAAQ+S,UAAUyR,QAAU,SAASrS,EAAOC,GAC1CpT,KAAKmgB,MAAM5S,MAAM4F,MAAQA,EACzBnT,KAAKmgB,MAAM5S,MAAM6F,OAASA,EAE1BpT,KAAKylB,iBAMPzkB,EAAQ+S,UAAU0R,cAAgB,WAChCzlB,KAAKmgB,MAAMC,OAAO7S,MAAM4F,MAAQ,OAChCnT,KAAKmgB,MAAMC,OAAO7S,MAAM6F,OAAS,OAEjCpT,KAAKmgB,MAAMC,OAAOjN,MAAQnT,KAAKmgB,MAAMC,OAAOC,YAC5CrgB,KAAKmgB,MAAMC,OAAOhN,OAASpT,KAAKmgB,MAAMC,OAAOsF,aAG7C1lB,KAAKmgB,MAAM5L,OAAOhH,MAAM4F,MAASnT,KAAKmgB,MAAMC,OAAOC,YAAc,GAAU,MAM7Erf,EAAQ+S,UAAU4R,eAAiB,WACjC,IAAK3lB,KAAKmgB,MAAM5L,SAAWvU,KAAKmgB,MAAM5L,OAAOqR,OAC3C,KAAM,wBAER5lB,MAAKmgB,MAAM5L,OAAOqR,OAAOC,QAO3B7kB,EAAQ+S,UAAU+R,cAAgB,WAC3B9lB,KAAKmgB,MAAM5L,QAAWvU,KAAKmgB,MAAM5L,OAAOqR,QAE7C5lB,KAAKmgB,MAAM5L,OAAOqR,OAAOG,QAU3B/kB,EAAQ+S,UAAUiS,cAAgB,WAG9BhmB,KAAKkgB,QAD0D,MAA7DlgB,KAAKya,eAAewL,OAAOjmB,KAAKya,eAAezU,OAAO,GAEtDkgB,WAAWlmB,KAAKya,gBAAkB,IAChCza,KAAKmgB,MAAMC,OAAOC,YAGP6F,WAAWlmB,KAAKya,gBAK/Bza,KAAKsgB,QAD0D,MAA7DtgB,KAAK0a,eAAeuL,OAAOjmB,KAAK0a,eAAe1U,OAAO,GAEtDkgB,WAAWlmB,KAAK0a,gBAAkB,KAC/B1a,KAAKmgB,MAAMC,OAAOsF,aAAe1lB,KAAKmgB,MAAM5L,OAAOmR,cAGzCQ,WAAWlmB,KAAK0a,iBAoBnC1Z,EAAQ+S,UAAUoS,kBAAoB,SAASC,GACjCvf,SAARuf,IAImBvf,SAAnBuf,EAAIC,YAA6Cxf,SAAjBuf,EAAIE,UACtCtmB,KAAK+b,OAAOwK,eAAeH,EAAIC,WAAYD,EAAIE,UAG5Bzf,SAAjBuf,EAAII,UACNxmB,KAAK+b,OAAO0K,aAAaL,EAAII,UAG/BxmB,KAAKsiB,WASPthB,EAAQ+S,UAAU2S,kBAAoB,WACpC,GAAIN,GAAMpmB,KAAK+b,OAAO4K,gBAEtB,OADAP,GAAII,SAAWxmB,KAAK+b,OAAOkE,eACpBmG,GAMTplB,EAAQ+S,UAAU6S,UAAY,SAAStT,GAErCtT,KAAKiiB,gBAAgB3O,EAAMtT,KAAKuN,OAK9BvN,KAAKic,WAFHjc,KAAKoiB,WAEWpiB,KAAKoiB,WAAWuB,iBAIhB3jB,KAAK2jB,eAAe3jB,KAAKmY,WAI7CnY,KAAK6mB,iBAOP7lB,EAAQ+S,UAAU6E,QAAU,SAAUtF,GACpCtT,KAAK4mB,UAAUtT,GACftT,KAAKsiB,SAGDtiB,KAAK8mB,oBAAsB9mB,KAAKoiB,YAClCpiB,KAAK2lB,kBAQT3kB,EAAQ+S,UAAUD,WAAa,SAAU/E,GACvC,GAAIgY,GAAiBlgB,MAIrB,IAFA7G,KAAK8lB,gBAEWjf,SAAZkI,EAAuB,CAkBzB,GAhBsBlI,SAAlBkI,EAAQoE,QAA2BnT,KAAKmT,MAAQpE,EAAQoE,OACrCtM,SAAnBkI,EAAQqE,SAA2BpT,KAAKoT,OAASrE,EAAQqE,QAErCvM,SAApBkI,EAAQiP,UAA2Bhe,KAAKya,eAAiB1L,EAAQiP,SAC7CnX,SAApBkI,EAAQkP,UAA2Bje,KAAK0a,eAAiB3L,EAAQkP,SAEzCpX,SAAxBkI,EAAQmM,cAA+Blb,KAAKkb,YAAcnM,EAAQmM,aAC1CrU,SAAxBkI,EAAQoM,cAA+Bnb,KAAKmb,YAAcpM,EAAQoM,aAC/CtU,SAAnBkI,EAAQ4L,SAA0B3a,KAAK2a,OAAS5L,EAAQ4L,QACrC9T,SAAnBkI,EAAQ6L,SAA0B5a,KAAK4a,OAAS7L,EAAQ6L,QACrC/T,SAAnBkI,EAAQ8L,SAA0B7a,KAAK6a,OAAS9L,EAAQ8L,QAEhChU,SAAxBkI,EAAQgM,cAA+B/a,KAAK+a,YAAchM,EAAQgM,aAC1ClU,SAAxBkI,EAAQiM,cAA+Bhb,KAAKgb,YAAcjM,EAAQiM,aAC1CnU,SAAxBkI,EAAQkM,cAA+Bjb,KAAKib,YAAclM,EAAQkM,aAEhDpU,SAAlBkI,EAAQxB,MAAqB,CAC/B,GAAIyZ,GAAchnB,KAAKwhB,gBAAgBzS,EAAQxB,MAC3B,MAAhByZ,IACFhnB,KAAKuN,MAAQyZ,GAGQngB,SAArBkI,EAAQwM,WAA6Bvb,KAAKub,SAAWxM,EAAQwM,UACjC1U,SAA5BkI,EAAQuM,kBAAiCtb,KAAKsb,gBAAkBvM,EAAQuM,iBACjDzU,SAAvBkI,EAAQ0M,aAA6Bzb,KAAKyb,WAAa1M,EAAQ0M,YAC3C5U,SAApBkI,EAAQkY,UAA6BjnB,KAAK2b,YAAc5M,EAAQkY,SAC9BpgB,SAAlCkI,EAAQmY,wBAAqClnB,KAAKknB,sBAAwBnY,EAAQmY,uBACtDrgB,SAA5BkI,EAAQyM,kBAAiCxb,KAAKwb,gBAAkBzM,EAAQyM,iBAC9C3U,SAA1BkI,EAAQ6M,gBAA+B5b,KAAK4b,cAAgB7M,EAAQ6M,eAEtC/U,SAA9BkI,EAAQ8M,oBAAiC7b,KAAK6b,kBAAoB9M,EAAQ8M,mBAC7ChV,SAA7BkI,EAAQ+M,mBAAiC9b,KAAK8b,iBAAmB/M,EAAQ+M,kBAC1CjV,SAA/BkI,EAAQ+X,qBAAiC9mB,KAAK8mB,mBAAqB/X,EAAQ+X,oBAErDjgB,SAAtBkI,EAAQmO,YAAyBld,KAAKwiB,iBAAmBzT,EAAQmO,WAC3CrW,SAAtBkI,EAAQoO,YAAyBnd,KAAK0iB,iBAAmB3T,EAAQoO,WAEhDtW,SAAjBkI,EAAQwN,OAAoBvc,KAAK6iB,YAAc9T,EAAQwN,MACrC1V,SAAlBkI,EAAQyN,QAAqBxc,KAAK+iB,aAAehU,EAAQyN,OACxC3V,SAAjBkI,EAAQ0N,OAAoBzc,KAAK8iB,YAAc/T,EAAQ0N,MACtC5V,SAAjBkI,EAAQ2N,OAAoB1c,KAAKijB,YAAclU,EAAQ2N,MACrC7V,SAAlBkI,EAAQ4N,QAAqB3c,KAAKmjB,aAAepU,EAAQ4N,OACxC9V,SAAjBkI,EAAQ6N,OAAoB5c,KAAKkjB,YAAcnU,EAAQ6N,MACtC/V,SAAjBkI,EAAQ8N,OAAoB7c,KAAKqjB,YAActU,EAAQ8N,MACrChW,SAAlBkI,EAAQ+N,QAAqB9c,KAAKujB,aAAexU,EAAQ+N,OACxCjW,SAAjBkI,EAAQgO,OAAoB/c,KAAKsjB,YAAcvU,EAAQgO,MAClClW,SAArBkI,EAAQiO,WAAwBhd,KAAKyjB,gBAAkB1U,EAAQiO,UAC1CnW,SAArBkI,EAAQkO,WAAwBjd,KAAK0jB,gBAAkB3U,EAAQkO,UAEpCpW,SAA3BkI,EAAQgY,iBAA8BA,EAAiBhY,EAAQgY,gBAE5ClgB,SAAnBkgB,GACF/mB,KAAK+b,OAAOwK,eAAeQ,EAAeV,WAAYU,EAAeT,UACrEtmB,KAAK+b,OAAO0K,aAAaM,EAAeP,YAGxCxmB,KAAK+b,OAAOwK,eAAe,EAAK,IAChCvmB,KAAK+b,OAAO0K,aAAa,MAI7BzmB,KAAKugB,oBAAoBxR,GAAWA,EAAQyR,iBAE5CxgB,KAAKwlB,QAAQxlB,KAAKmT,MAAOnT,KAAKoT,QAG1BpT,KAAKmY,WACPnY,KAAK4Y,QAAQ5Y,KAAKmY,WAIhBnY,KAAK8mB,oBAAsB9mB,KAAKoiB,YAClCpiB,KAAK2lB,kBAOT3kB,EAAQ+S,UAAUuO,OAAS,WACzB,GAAwBzb,SAApB7G,KAAKic,WACP,KAAM,mCAGRjc,MAAKylB,gBACLzlB,KAAKgmB,gBACLhmB,KAAKmnB,gBACLnnB,KAAKonB,eACLpnB,KAAKqnB,cAEDrnB,KAAKuN,QAAUvM,EAAQoa,MAAMiG,MAC/BrhB,KAAKuN,QAAUvM,EAAQoa,MAAMmG,QAC7BvhB,KAAKsnB,kBAEEtnB,KAAKuN,QAAUvM,EAAQoa,MAAMkG,KACpCthB,KAAKunB,kBAEEvnB,KAAKuN,QAAUvM,EAAQoa,MAAM2F,KACpC/gB,KAAKuN,QAAUvM,EAAQoa,MAAM4F,UAC7BhhB,KAAKuN,QAAUvM,EAAQoa,MAAM6F,QAC7BjhB,KAAKwnB,iBAILxnB,KAAKynB,iBAGPznB,KAAK0nB,cACL1nB,KAAK2nB,iBAMP3mB,EAAQ+S,UAAUqT,aAAe,WAC/B,GAAIhH,GAASpgB,KAAKmgB,MAAMC,OACpBwH,EAAMxH,EAAOyH,WAAW,KAE5BD,GAAIE,UAAU,EAAG,EAAG1H,EAAOjN,MAAOiN,EAAOhN,SAO3CpS,EAAQ+S,UAAU4T,cAAgB,WAChC,GAAIrV,EAEJ,IAAItS,KAAKuN,QAAUvM,EAAQoa,MAAM+F,UAC/BnhB,KAAKuN,QAAUvM,EAAQoa,MAAMgG,QAAS,CAEtC,GAEI2G,GAAUC,EAFVC,EAAmC,IAAzBjoB,KAAKmgB,MAAME,WAGrBrgB,MAAKuN,QAAUvM,EAAQoa,MAAMgG,SAC/B2G,EAAWE,EAAU,EACrBD,EAAWC,EAAU,EAAc,EAAVA,IAGzBF,EAAW,GACXC,EAAW,GAGb,IAAI5U,GAAS5O,KAAKJ,IAA8B,IAA1BpE,KAAKmgB,MAAMuF,aAAqB,KAClDzd,EAAMjI,KAAKwa,OACX0N,EAAQloB,KAAKmgB,MAAME,YAAcrgB,KAAKwa,OACtC3S,EAAOqgB,EAAQF,EACf7D,EAASlc,EAAMmL,EAGrB,GAAIgN,GAASpgB,KAAKmgB,MAAMC,OACpBwH,EAAMxH,EAAOyH,WAAW,KAI5B,IAHAD,EAAIO,UAAY,EAChBP,EAAIQ,KAAO,aAEPpoB,KAAKuN,QAAUvM,EAAQoa,MAAM+F,SAAU,CAEzC,GAAIkH,GAAO,EACPC,EAAOlV,CACX,KAAKd,EAAI+V,EAAUC,EAAJhW,EAAUA,IAAK,CAC5B,GAAIpE,IAAKoE,EAAI+V,IAASC,EAAOD,GAGzBnb,EAAU,IAAJgB,EACN9C,EAAQpL,KAAKuoB,SAASrb,EAAK,EAAG,EAElC0a,GAAIY,YAAcpd,EAClBwc,EAAIa,YACJb,EAAIc,OAAO7gB,EAAMI,EAAMqK,GACvBsV,EAAIe,OAAOT,EAAOjgB,EAAMqK,GACxBsV,EAAIlH,SAGNkH,EAAIY,YAAexoB,KAAKod,UACxBwK,EAAIgB,WAAW/gB,EAAMI,EAAK+f,EAAU5U,GAiBtC,GAdIpT,KAAKuN,QAAUvM,EAAQoa,MAAMgG,UAE/BwG,EAAIY,YAAexoB,KAAKod,UACxBwK,EAAIiB,UAAa7oB,KAAKsd,SACtBsK,EAAIa,YACJb,EAAIc,OAAO7gB,EAAMI,GACjB2f,EAAIe,OAAOT,EAAOjgB,GAClB2f,EAAIe,OAAOT,EAAQF,EAAWD,EAAU5D,GACxCyD,EAAIe,OAAO9gB,EAAMsc,GACjByD,EAAIkB,YACJlB,EAAInH,OACJmH,EAAIlH,UAGF1gB,KAAKuN,QAAUvM,EAAQoa,MAAM+F,UAC/BnhB,KAAKuN,QAAUvM,EAAQoa,MAAMgG,QAAS,CAEtC,GAAI2H,GAAc,EACdC,EAAO,GAAIznB,GAAWvB,KAAKgd,SAAUhd,KAAKid,UAAWjd,KAAKid,SAASjd,KAAKgd,UAAU,GAAG,EAKzF,KAJAgM,EAAK9Y,QACD8Y,EAAKC,aAAejpB,KAAKgd,UAC3BgM,EAAKE,QAECF,EAAK7Y,OACXmC,EAAI6R,GAAU6E,EAAKC,aAAejpB,KAAKgd,WAAahd,KAAKid,SAAWjd,KAAKgd,UAAY5J,EAErFwU,EAAIa,YACJb,EAAIc,OAAO7gB,EAAOkhB,EAAazW,GAC/BsV,EAAIe,OAAO9gB,EAAMyK,GACjBsV,EAAIlH,SAEJkH,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,SACnBxB,EAAIiB,UAAY7oB,KAAKod,UACrBwK,EAAIyB,SAASL,EAAKC,aAAcphB,EAAO,EAAIkhB,EAAazW,GAExD0W,EAAKE,MAGPtB,GAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,KACnB,IAAIvW,GAAQ7S,KAAKmb,WACjByM,GAAIyB,SAASxW,EAAOqV,EAAO/D,EAASnkB,KAAKwa,UAO7CxZ,EAAQ+S,UAAU8S,cAAgB,WAGhC,GAFA7mB,KAAKmgB,MAAM5L,OAAOuQ,UAAY,GAE1B9kB,KAAKoiB,WAAY,CACnB,GAAIrT,IACFua,QAAWtpB,KAAKknB,uBAEdtB,EAAS,GAAItkB,GAAOtB,KAAKmgB,MAAM5L,OAAQxF,EAC3C/O,MAAKmgB,MAAM5L,OAAOqR,OAASA,EAG3B5lB,KAAKmgB,MAAM5L,OAAOhH,MAAMsX,QAAU,OAGlCe,EAAO2D,UAAUvpB,KAAKoiB,WAAW1K,QACjCkO,EAAO4D,gBAAgBxpB,KAAK6b,kBAG5B,IAAI9G,GAAK/U,KACLypB,EAAW,WACb,GAAI/gB,GAAQkd,EAAO8D,UAEnB3U,GAAGqN,WAAWuH,YAAYjhB,GAC1BqM,EAAGkH,WAAalH,EAAGqN,WAAWuB,iBAE9B5O,EAAGuN,SAELsD,GAAOgE,oBAAoBH,OAG3BzpB,MAAKmgB,MAAM5L,OAAOqR,OAAS/e,QAO/B7F,EAAQ+S,UAAUoT,cAAgB,WACEtgB,SAA7B7G,KAAKmgB,MAAM5L,OAAOqR,QACrB5lB,KAAKmgB,MAAM5L,OAAOqR,OAAOtD,UAQ7BthB,EAAQ+S,UAAU2T,YAAc,WAC9B,GAAI1nB,KAAKoiB,WAAY,CACnB,GAAIhC,GAASpgB,KAAKmgB,MAAMC,OACpBwH,EAAMxH,EAAOyH,WAAW,KAE5BD,GAAIQ,KAAO,aACXR,EAAIiC,UAAY,OAChBjC,EAAIiB,UAAY,OAChBjB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,KAEnB,IAAI/W,GAAIrS,KAAKwa,OACTlI,EAAItS,KAAKwa,MACboN,GAAIyB,SAASrpB,KAAKoiB,WAAW0H,WAAa,KAAO9pB,KAAKoiB,WAAW2H,mBAAoB1X,EAAGC,KAQ5FtR,EAAQ+S,UAAUsT,YAAc,WAC9B,GAEE2C,GAAMC,EAAIjB,EAAMkB,EAChBC,EAAMC,EAAOC,EAAOC,EACpBC,EAAQzX,EAASC,EACjByX,EAAQC,EALNrK,EAASpgB,KAAKmgB,MAAMC,OACtBwH,EAAMxH,EAAOyH,WAAW,KAQ1BD,GAAIQ,KAAO,GAAKpoB,KAAK+b,OAAOkE,eAAiB,UAG7C,IAAIyK,GAAW,KAAQ1qB,KAAKuE,MAAM8N,EAC9BsY,EAAW,KAAQ3qB,KAAKuE,MAAM+N,EAC9BsY,EAAa,EAAI5qB,KAAK+b,OAAOkE,eAC7B4K,EAAW7qB,KAAK+b,OAAO4K,iBAAiBN,UAU5C,KAPAuB,EAAIO,UAAY,EAChB+B,EAAoCrjB,SAAtB7G,KAAK+iB,aACnBiG,EAAO,GAAIznB,GAAWvB,KAAKuc,KAAMvc,KAAKyc,KAAMzc,KAAKwc,MAAO0N,GACxDlB,EAAK9Y,QACD8Y,EAAKC,aAAejpB,KAAKuc,MAC3ByM,EAAKE,QAECF,EAAK7Y,OAAO,CAClB,GAAIkC,GAAI2W,EAAKC,YAETjpB,MAAKub,UACPyO,EAAOhqB,KAAKoe,eAAe,GAAI/c,GAAQgR,EAAGrS,KAAK0c,KAAM1c,KAAK6c,OAC1DoN,EAAKjqB,KAAKoe,eAAe,GAAI/c,GAAQgR,EAAGrS,KAAK4c,KAAM5c,KAAK6c,OACxD+K,EAAIY,YAAcxoB,KAAKqd,UACvBuK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,WAGJsJ,EAAOhqB,KAAKoe,eAAe,GAAI/c,GAAQgR,EAAGrS,KAAK0c,KAAM1c,KAAK6c,OAC1DoN,EAAKjqB,KAAKoe,eAAe,GAAI/c,GAAQgR,EAAGrS,KAAK0c,KAAKgO,EAAU1qB,KAAK6c,OACjE+K,EAAIY,YAAcxoB,KAAKod,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,SAEJsJ,EAAOhqB,KAAKoe,eAAe,GAAI/c,GAAQgR,EAAGrS,KAAK4c,KAAM5c,KAAK6c,OAC1DoN,EAAKjqB,KAAKoe,eAAe,GAAI/c,GAAQgR,EAAGrS,KAAK4c,KAAK8N,EAAU1qB,KAAK6c,OACjE+K,EAAIY,YAAcxoB,KAAKod,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,UAGN2J,EAAS7lB,KAAK4a,IAAIyL,GAAY,EAAK7qB,KAAK0c,KAAO1c,KAAK4c,KACpDuN,EAAOnqB,KAAKoe,eAAe,GAAI/c,GAAQgR,EAAGgY,EAAOrqB,KAAK6c,OAClDrY,KAAK4a,IAAe,EAAXyL,GAAgB,GAC3BjD,EAAIuB,UAAY,SAChBvB,EAAIwB,aAAe,MACnBe,EAAK7X,GAAKsY,GAEHpmB,KAAKya,IAAe,EAAX4L,GAAgB,GAChCjD,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,WAGnBxB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,UAErBxB,EAAIiB,UAAY7oB,KAAKod,UACrBwK,EAAIyB,SAAS,KAAOrpB,KAAK+a,YAAYiO,EAAKC,cAAgB,KAAMkB,EAAK9X,EAAG8X,EAAK7X,GAE7E0W,EAAKE,OAWP,IAPAtB,EAAIO,UAAY,EAChB+B,EAAoCrjB,SAAtB7G,KAAKmjB,aACnB6F,EAAO,GAAIznB,GAAWvB,KAAK0c,KAAM1c,KAAK4c,KAAM5c,KAAK2c,MAAOuN,GACxDlB,EAAK9Y,QACD8Y,EAAKC,aAAejpB,KAAK0c,MAC3BsM,EAAKE,QAECF,EAAK7Y,OACPnQ,KAAKub,UACPyO,EAAOhqB,KAAKoe,eAAe,GAAI/c,GAAQrB,KAAKuc,KAAMyM,EAAKC,aAAcjpB,KAAK6c,OAC1EoN,EAAKjqB,KAAKoe,eAAe,GAAI/c,GAAQrB,KAAKyc,KAAMuM,EAAKC,aAAcjpB,KAAK6c,OACxE+K,EAAIY,YAAcxoB,KAAKqd,UACvBuK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,WAGJsJ,EAAOhqB,KAAKoe,eAAe,GAAI/c,GAAQrB,KAAKuc,KAAMyM,EAAKC,aAAcjpB,KAAK6c,OAC1EoN,EAAKjqB,KAAKoe,eAAe,GAAI/c,GAAQrB,KAAKuc,KAAKoO,EAAU3B,EAAKC,aAAcjpB,KAAK6c,OACjF+K,EAAIY,YAAcxoB,KAAKod,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,SAEJsJ,EAAOhqB,KAAKoe,eAAe,GAAI/c,GAAQrB,KAAKyc,KAAMuM,EAAKC,aAAcjpB,KAAK6c,OAC1EoN,EAAKjqB,KAAKoe,eAAe,GAAI/c,GAAQrB,KAAKyc,KAAKkO,EAAU3B,EAAKC,aAAcjpB,KAAK6c,OACjF+K,EAAIY,YAAcxoB,KAAKod,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,UAGN0J,EAAS5lB,KAAKya,IAAI4L,GAAa,EAAK7qB,KAAKuc,KAAOvc,KAAKyc,KACrD0N,EAAOnqB,KAAKoe,eAAe,GAAI/c,GAAQ+oB,EAAOpB,EAAKC,aAAcjpB,KAAK6c,OAClErY,KAAK4a,IAAe,EAAXyL,GAAgB,GAC3BjD,EAAIuB,UAAY,SAChBvB,EAAIwB,aAAe,MACnBe,EAAK7X,GAAKsY,GAEHpmB,KAAKya,IAAe,EAAX4L,GAAgB,GAChCjD,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,WAGnBxB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,UAErBxB,EAAIiB,UAAY7oB,KAAKod,UACrBwK,EAAIyB,SAAS,KAAOrpB,KAAKgb,YAAYgO,EAAKC,cAAgB,KAAMkB,EAAK9X,EAAG8X,EAAK7X,GAE7E0W,EAAKE,MAaP,KATAtB,EAAIO,UAAY,EAChB+B,EAAoCrjB,SAAtB7G,KAAKujB,aACnByF,EAAO,GAAIznB,GAAWvB,KAAK6c,KAAM7c,KAAK+c,KAAM/c,KAAK8c,MAAOoN,GACxDlB,EAAK9Y,QACD8Y,EAAKC,aAAejpB,KAAK6c,MAC3BmM,EAAKE,OAEPkB,EAAS5lB,KAAK4a,IAAIyL,GAAa,EAAK7qB,KAAKuc,KAAOvc,KAAKyc,KACrD4N,EAAS7lB,KAAKya,IAAI4L,GAAa,EAAK7qB,KAAK0c,KAAO1c,KAAK4c,MAC7CoM,EAAK7Y,OAEX6Z,EAAOhqB,KAAKoe,eAAe,GAAI/c,GAAQ+oB,EAAOC,EAAOrB,EAAKC,eAC1DrB,EAAIY,YAAcxoB,KAAKod,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOqB,EAAK3X,EAAIuY,EAAYZ,EAAK1X,GACrCsV,EAAIlH,SAEJkH,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,SACnBxB,EAAIiB,UAAY7oB,KAAKod,UACrBwK,EAAIyB,SAASrpB,KAAKib,YAAY+N,EAAKC,cAAgB,IAAKe,EAAK3X,EAAI,EAAG2X,EAAK1X,GAEzE0W,EAAKE,MAEPtB,GAAIO,UAAY,EAChB6B,EAAOhqB,KAAKoe,eAAe,GAAI/c,GAAQ+oB,EAAOC,EAAOrqB,KAAK6c,OAC1DoN,EAAKjqB,KAAKoe,eAAe,GAAI/c,GAAQ+oB,EAAOC,EAAOrqB,KAAK+c,OACxD6K,EAAIY,YAAcxoB,KAAKod,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,SAGJkH,EAAIO,UAAY,EAEhBqC,EAASxqB,KAAKoe,eAAe,GAAI/c,GAAQrB,KAAKuc,KAAMvc,KAAK0c,KAAM1c,KAAK6c,OACpE4N,EAASzqB,KAAKoe,eAAe,GAAI/c,GAAQrB,KAAKyc,KAAMzc,KAAK0c,KAAM1c,KAAK6c,OACpE+K,EAAIY,YAAcxoB,KAAKod,UACvBwK,EAAIa,YACJb,EAAIc,OAAO8B,EAAOnY,EAAGmY,EAAOlY,GAC5BsV,EAAIe,OAAO8B,EAAOpY,EAAGoY,EAAOnY,GAC5BsV,EAAIlH,SAEJ8J,EAASxqB,KAAKoe,eAAe,GAAI/c,GAAQrB,KAAKuc,KAAMvc,KAAK4c,KAAM5c,KAAK6c,OACpE4N,EAASzqB,KAAKoe,eAAe,GAAI/c,GAAQrB,KAAKyc,KAAMzc,KAAK4c,KAAM5c,KAAK6c,OACpE+K,EAAIY,YAAcxoB,KAAKod,UACvBwK,EAAIa,YACJb,EAAIc,OAAO8B,EAAOnY,EAAGmY,EAAOlY,GAC5BsV,EAAIe,OAAO8B,EAAOpY,EAAGoY,EAAOnY,GAC5BsV,EAAIlH,SAGJkH,EAAIO,UAAY,EAEhB6B,EAAOhqB,KAAKoe,eAAe,GAAI/c,GAAQrB,KAAKuc,KAAMvc,KAAK0c,KAAM1c,KAAK6c,OAClEoN,EAAKjqB,KAAKoe,eAAe,GAAI/c,GAAQrB,KAAKuc,KAAMvc,KAAK4c,KAAM5c,KAAK6c,OAChE+K,EAAIY,YAAcxoB,KAAKod,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,SAEJsJ,EAAOhqB,KAAKoe,eAAe,GAAI/c,GAAQrB,KAAKyc,KAAMzc,KAAK0c,KAAM1c,KAAK6c,OAClEoN,EAAKjqB,KAAKoe,eAAe,GAAI/c,GAAQrB,KAAKyc,KAAMzc,KAAK4c,KAAM5c,KAAK6c,OAChE+K,EAAIY,YAAcxoB,KAAKod,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,QAGJ,IAAI/F,GAAS3a,KAAK2a,MACdA,GAAO3U,OAAS,IAClB+M,EAAU,GAAM/S,KAAKuE,MAAM+N,EAC3B8X,GAASpqB,KAAKuc,KAAOvc,KAAKyc,MAAQ,EAClC4N,EAAS7lB,KAAK4a,IAAIyL,GAAY,EAAK7qB,KAAK0c,KAAO3J,EAAS/S,KAAK4c,KAAO7J,EACpEoX,EAAOnqB,KAAKoe,eAAe,GAAI/c,GAAQ+oB,EAAOC,EAAOrqB,KAAK6c,OACtDrY,KAAK4a,IAAe,EAAXyL,GAAgB,GAC3BjD,EAAIuB,UAAY,SAChBvB,EAAIwB,aAAe,OAEZ5kB,KAAKya,IAAe,EAAX4L,GAAgB,GAChCjD,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,WAGnBxB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,UAErBxB,EAAIiB,UAAY7oB,KAAKod,UACrBwK,EAAIyB,SAAS1O,EAAQwP,EAAK9X,EAAG8X,EAAK7X,GAIpC,IAAIsI,GAAS5a,KAAK4a,MACdA,GAAO5U,OAAS,IAClB8M,EAAU,GAAM9S,KAAKuE,MAAM8N,EAC3B+X,EAAS5lB,KAAKya,IAAI4L,GAAa,EAAK7qB,KAAKuc,KAAOzJ,EAAU9S,KAAKyc,KAAO3J,EACtEuX,GAASrqB,KAAK0c,KAAO1c,KAAK4c,MAAQ,EAClCuN,EAAOnqB,KAAKoe,eAAe,GAAI/c,GAAQ+oB,EAAOC,EAAOrqB,KAAK6c,OACtDrY,KAAK4a,IAAe,EAAXyL,GAAgB,GAC3BjD,EAAIuB,UAAY,SAChBvB,EAAIwB,aAAe,OAEZ5kB,KAAKya,IAAe,EAAX4L,GAAgB,GAChCjD,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,WAGnBxB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,UAErBxB,EAAIiB,UAAY7oB,KAAKod,UACrBwK,EAAIyB,SAASzO,EAAQuP,EAAK9X,EAAG8X,EAAK7X,GAIpC,IAAIuI,GAAS7a,KAAK6a,MACdA,GAAO7U,OAAS,IAClBukB,EAAS,GACTH,EAAS5lB,KAAK4a,IAAIyL,GAAa,EAAK7qB,KAAKuc,KAAOvc,KAAKyc,KACrD4N,EAAS7lB,KAAKya,IAAI4L,GAAa,EAAK7qB,KAAK0c,KAAO1c,KAAK4c,KACrD0N,GAAStqB,KAAK6c,KAAO7c,KAAK+c,MAAQ,EAClCoN,EAAOnqB,KAAKoe,eAAe,GAAI/c,GAAQ+oB,EAAOC,EAAOC,IACrD1C,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,SACnBxB,EAAIiB,UAAY7oB,KAAKod,UACrBwK,EAAIyB,SAASxO,EAAQsP,EAAK9X,EAAIkY,EAAQJ,EAAK7X,KAU/CtR,EAAQ+S,UAAUwU,SAAW,SAASuC,EAAGC,EAAGC,GAC1C,GAAIC,GAAGC,EAAGC,EAAGC,EAAGC,EAAIC,CAMpB,QAJAF,EAAIJ,EAAID,EACRM,EAAK7mB,KAAKgB,MAAMslB,EAAE,IAClBQ,EAAIF,GAAK,EAAI5mB,KAAK+mB,IAAMT,EAAE,GAAM,EAAK,IAE7BO,GACN,IAAK,GAAGJ,EAAIG,EAAGF,EAAII,EAAGH,EAAI,CAAG,MAC7B,KAAK,GAAGF,EAAIK,EAAGJ,EAAIE,EAAGD,EAAI,CAAG,MAC7B,KAAK,GAAGF,EAAI,EAAGC,EAAIE,EAAGD,EAAIG,CAAG,MAC7B,KAAK,GAAGL,EAAI,EAAGC,EAAII,EAAGH,EAAIC,CAAG,MAC7B,KAAK,GAAGH,EAAIK,EAAGJ,EAAI,EAAGC,EAAIC,CAAG,MAC7B,KAAK,GAAGH,EAAIG,EAAGF,EAAI,EAAGC,EAAIG,CAAG,MAE7B,SAASL,EAAI,EAAGC,EAAI,EAAGC,EAAI,EAG7B,MAAO,OAASjgB,SAAW,IAAF+f,GAAS,IAAM/f,SAAW,IAAFggB,GAAS,IAAMhgB,SAAW,IAAFigB,GAAS,KAQpFnqB,EAAQ+S,UAAUuT,gBAAkB,WAClC,GAEE7U,GAAOyV,EAAOjgB,EAAKujB,EACnB3lB,EACA4lB,EAAgB5C,EAAWL,EAAaL,EACxChc,EAAGC,EAAGC,EAAGqf,EALPtL,EAASpgB,KAAKmgB,MAAMC,OACtBwH,EAAMxH,EAAOyH,WAAW,KAO1B,MAAwBhhB,SAApB7G,KAAKic,YAA4Bjc,KAAKic,WAAWjW,QAAU,GAA/D,CAIA,IAAKH,EAAI,EAAGA,EAAI7F,KAAKic,WAAWjW,OAAQH,IAAK,CAC3C,GAAIoe,GAAQjkB,KAAKue,2BAA2Bve,KAAKic,WAAWpW,GAAG4M,OAC3DyR,EAASlkB,KAAKwe,4BAA4ByF,EAE9CjkB,MAAKic,WAAWpW,GAAGoe,MAAQA,EAC3BjkB,KAAKic,WAAWpW,GAAGqe,OAASA,CAG5B,IAAIyH,GAAc3rB,KAAKue,2BAA2Bve,KAAKic,WAAWpW,GAAGse,OACrEnkB,MAAKic,WAAWpW,GAAG+lB,KAAO5rB,KAAKsb,gBAAkBqQ,EAAY3lB,UAAY2lB,EAAY5N,EAIvF,GAAI8N,GAAY,SAAUjmB,EAAGa,GAC3B,MAAOA,GAAEmlB,KAAOhmB,EAAEgmB,KAIpB,IAFA5rB,KAAKic,WAAWnF,KAAK+U,GAEjB7rB,KAAKuN,QAAUvM,EAAQoa,MAAMmG,SAC/B,IAAK1b,EAAI,EAAGA,EAAI7F,KAAKic,WAAWjW,OAAQH,IAMtC,GALA4M,EAAQzS,KAAKic,WAAWpW,GACxBqiB,EAAQloB,KAAKic,WAAWpW,GAAGue,WAC3Bnc,EAAQjI,KAAKic,WAAWpW,GAAGwe,SAC3BmH,EAAQxrB,KAAKic,WAAWpW,GAAGye,WAEbzd,SAAV4L,GAAiC5L,SAAVqhB,GAA+BrhB,SAARoB,GAA+BpB,SAAV2kB,EAAqB,CAE1F,GAAIxrB,KAAK0b,gBAAkB1b,KAAKyb,WAAY,CAK1C,GAAIqQ,GAAQzqB,EAAQ0qB,SAASP,EAAMvH,MAAOxR,EAAMwR,OAC5C+H,EAAQ3qB,EAAQ0qB,SAAS9jB,EAAIgc,MAAOiE,EAAMjE,OAC1CgI,EAAe5qB,EAAQ6qB,aAAaJ,EAAOE,GAC3ClmB,EAAMmmB,EAAajmB,QAGvBylB,GAAkBQ,EAAalO,EAAI,MAGnC0N,IAAiB,CAGfA,IAEFC,GAAQjZ,EAAMA,MAAMsL,EAAImK,EAAMzV,MAAMsL,EAAI9V,EAAIwK,MAAMsL,EAAIyN,EAAM/Y,MAAMsL,GAAK,EACvE5R,EAAoE,KAA/D,GAAKuf,EAAO1rB,KAAK6c,MAAQ7c,KAAKuE,MAAMwZ,EAAK/d,KAAK4b,eACnDxP,EAAI,EAEApM,KAAKyb,YACPpP,EAAI7H,KAAKL,IAAI,EAAK8nB,EAAa5Z,EAAIvM,EAAO,EAAG,GAC7C+iB,EAAY7oB,KAAKuoB,SAASpc,EAAGC,EAAGC,GAChCmc,EAAcK,IAGdxc,EAAI,EACJwc,EAAY7oB,KAAKuoB,SAASpc,EAAGC,EAAGC,GAChCmc,EAAcxoB,KAAKod,aAIrByL,EAAY,OACZL,EAAcxoB,KAAKod,WAErB+K,EAAY,GAEZP,EAAIO,UAAYA,EAChBP,EAAIiB,UAAYA,EAChBjB,EAAIY,YAAcA,EAClBZ,EAAIa,YACJb,EAAIc,OAAOjW,EAAMyR,OAAO7R,EAAGI,EAAMyR,OAAO5R,GACxCsV,EAAIe,OAAOT,EAAMhE,OAAO7R,EAAG6V,EAAMhE,OAAO5R,GACxCsV,EAAIe,OAAO6C,EAAMtH,OAAO7R,EAAGmZ,EAAMtH,OAAO5R,GACxCsV,EAAIe,OAAO1gB,EAAIic,OAAO7R,EAAGpK,EAAIic,OAAO5R,GACpCsV,EAAIkB,YACJlB,EAAInH,OACJmH,EAAIlH,cAKR,KAAK7a,EAAI,EAAGA,EAAI7F,KAAKic,WAAWjW,OAAQH,IACtC4M,EAAQzS,KAAKic,WAAWpW,GACxBqiB,EAAQloB,KAAKic,WAAWpW,GAAGue,WAC3Bnc,EAAQjI,KAAKic,WAAWpW,GAAGwe,SAEbxd,SAAV4L,IAEA0V,EADEnoB,KAAKsb,gBACK,GAAK7I,EAAMwR,MAAMlG,EAGjB,IAAM/d,KAAKgc,IAAI+B,EAAI/d,KAAK+b,OAAOkE,iBAIjCpZ,SAAV4L,GAAiC5L,SAAVqhB,IAEzBwD,GAAQjZ,EAAMA,MAAMsL,EAAImK,EAAMzV,MAAMsL,GAAK,EACzC5R,EAAoE,KAA/D,GAAKuf,EAAO1rB,KAAK6c,MAAQ7c,KAAKuE,MAAMwZ,EAAK/d,KAAK4b,eAEnDgM,EAAIO,UAAYA,EAChBP,EAAIY,YAAcxoB,KAAKuoB,SAASpc,EAAG,EAAG,GACtCyb,EAAIa,YACJb,EAAIc,OAAOjW,EAAMyR,OAAO7R,EAAGI,EAAMyR,OAAO5R,GACxCsV,EAAIe,OAAOT,EAAMhE,OAAO7R,EAAG6V,EAAMhE,OAAO5R,GACxCsV,EAAIlH,UAGQ7Z,SAAV4L,GAA+B5L,SAARoB,IAEzByjB,GAAQjZ,EAAMA,MAAMsL,EAAI9V,EAAIwK,MAAMsL,GAAK,EACvC5R,EAAoE,KAA/D,GAAKuf,EAAO1rB,KAAK6c,MAAQ7c,KAAKuE,MAAMwZ,EAAK/d,KAAK4b,eAEnDgM,EAAIO,UAAYA,EAChBP,EAAIY,YAAcxoB,KAAKuoB,SAASpc,EAAG,EAAG,GACtCyb,EAAIa,YACJb,EAAIc,OAAOjW,EAAMyR,OAAO7R,EAAGI,EAAMyR,OAAO5R,GACxCsV,EAAIe,OAAO1gB,EAAIic,OAAO7R,EAAGpK,EAAIic,OAAO5R,GACpCsV,EAAIlH,YAWZ1f,EAAQ+S,UAAU0T,eAAiB,WACjC,GAEI5hB,GAFAua,EAASpgB,KAAKmgB,MAAMC,OACpBwH,EAAMxH,EAAOyH,WAAW,KAG5B,MAAwBhhB,SAApB7G,KAAKic,YAA4Bjc,KAAKic,WAAWjW,QAAU,GAA/D,CAIA,IAAKH,EAAI,EAAGA,EAAI7F,KAAKic,WAAWjW,OAAQH,IAAK,CAC3C,GAAIoe,GAAQjkB,KAAKue,2BAA2Bve,KAAKic,WAAWpW,GAAG4M,OAC3DyR,EAASlkB,KAAKwe,4BAA4ByF,EAC9CjkB,MAAKic,WAAWpW,GAAGoe,MAAQA,EAC3BjkB,KAAKic,WAAWpW,GAAGqe,OAASA,CAG5B,IAAIyH,GAAc3rB,KAAKue,2BAA2Bve,KAAKic,WAAWpW,GAAGse,OACrEnkB,MAAKic,WAAWpW,GAAG+lB,KAAO5rB,KAAKsb,gBAAkBqQ,EAAY3lB,UAAY2lB,EAAY5N,EAIvF,GAAI8N,GAAY,SAAUjmB,EAAGa,GAC3B,MAAOA,GAAEmlB,KAAOhmB,EAAEgmB,KAEpB5rB,MAAKic,WAAWnF,KAAK+U,EAGrB,IAAI5D,GAAmC,IAAzBjoB,KAAKmgB,MAAME,WACzB,KAAKxa,EAAI,EAAGA,EAAI7F,KAAKic,WAAWjW,OAAQH,IAAK,CAC3C,GAAI4M,GAAQzS,KAAKic,WAAWpW,EAE5B,IAAI7F,KAAKuN,QAAUvM,EAAQoa,MAAM8F,QAAS,CAGxC,GAAI8I,GAAOhqB,KAAKoe,eAAe3L,EAAM0R,OACrCyD,GAAIO,UAAY,EAChBP,EAAIY,YAAcxoB,KAAKqd,UACvBuK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOlW,EAAMyR,OAAO7R,EAAGI,EAAMyR,OAAO5R,GACxCsV,EAAIlH,SAIN,GAAI9N,EAEFA,GADE5S,KAAKuN,QAAUvM,EAAQoa,MAAMgG,QACxB6G,EAAQ,EAAI,EAAEA,GAAWxV,EAAMA,MAAMnO,MAAQtE,KAAKgd,WAAahd,KAAKid,SAAWjd,KAAKgd,UAGpFiL,CAGT,IAAIkE,EAEFA,GADEnsB,KAAKsb,gBACE1I,GAAQH,EAAMwR,MAAMlG,EAGpBnL,IAAS5S,KAAKgc,IAAI+B,EAAI/d,KAAK+b,OAAOkE,gBAEhC,EAATkM,IACFA,EAAS,EAGX,IAAIjf,GAAK9B,EAAOwV,CACZ5gB,MAAKuN,QAAUvM,EAAQoa,MAAM+F,UAE/BjU,EAAqE,KAA9D,GAAKuF,EAAMA,MAAMnO,MAAQtE,KAAKgd,UAAYhd,KAAKuE,MAAMD,OAC5D8G,EAAQpL,KAAKuoB,SAASrb,EAAK,EAAG,GAC9B0T,EAAc5gB,KAAKuoB,SAASrb,EAAK,EAAG,KAE7BlN,KAAKuN,QAAUvM,EAAQoa,MAAMgG,SACpChW,EAAQpL,KAAKsd,SACbsD,EAAc5gB,KAAKud,iBAInBrQ,EAA+E,KAAxE,GAAKuF,EAAMA,MAAMsL,EAAI/d,KAAK6c,MAAQ7c,KAAKuE,MAAMwZ,EAAK/d,KAAK4b,eAC9DxQ,EAAQpL,KAAKuoB,SAASrb,EAAK,EAAG,GAC9B0T,EAAc5gB,KAAKuoB,SAASrb,EAAK,EAAG,KAItC0a,EAAIO,UAAY,EAChBP,EAAIY,YAAc5H,EAClBgH,EAAIiB,UAAYzd,EAChBwc,EAAIa,YACJb,EAAIwE,IAAI3Z,EAAMyR,OAAO7R,EAAGI,EAAMyR,OAAO5R,EAAG6Z,EAAQ,EAAW,EAAR3nB,KAAK6nB,IAAM,GAC9DzE,EAAInH,OACJmH,EAAIlH,YAQR1f,EAAQ+S,UAAUyT,eAAiB,WACjC,GAEI3hB,GAAGymB,EAAGC,EAASC,EAFfpM,EAASpgB,KAAKmgB,MAAMC,OACpBwH,EAAMxH,EAAOyH,WAAW,KAG5B,MAAwBhhB,SAApB7G,KAAKic,YAA4Bjc,KAAKic,WAAWjW,QAAU,GAA/D,CAIA,IAAKH,EAAI,EAAGA,EAAI7F,KAAKic,WAAWjW,OAAQH,IAAK,CAC3C,GAAIoe,GAAQjkB,KAAKue,2BAA2Bve,KAAKic,WAAWpW,GAAG4M,OAC3DyR,EAASlkB,KAAKwe,4BAA4ByF,EAC9CjkB,MAAKic,WAAWpW,GAAGoe,MAAQA,EAC3BjkB,KAAKic,WAAWpW,GAAGqe,OAASA,CAG5B,IAAIyH,GAAc3rB,KAAKue,2BAA2Bve,KAAKic,WAAWpW,GAAGse,OACrEnkB,MAAKic,WAAWpW,GAAG+lB,KAAO5rB,KAAKsb,gBAAkBqQ,EAAY3lB,UAAY2lB,EAAY5N,EAIvF,GAAI8N,GAAY,SAAUjmB,EAAGa,GAC3B,MAAOA,GAAEmlB,KAAOhmB,EAAEgmB,KAEpB5rB,MAAKic,WAAWnF,KAAK+U,EAGrB,IAAIY,GAASzsB,KAAKkd,UAAY,EAC1BwP,EAAS1sB,KAAKmd,UAAY,CAC9B,KAAKtX,EAAI,EAAGA,EAAI7F,KAAKic,WAAWjW,OAAQH,IAAK,CAC3C,GAGIqH,GAAK9B,EAAOwV,EAHZnO,EAAQzS,KAAKic,WAAWpW,EAIxB7F,MAAKuN,QAAUvM,EAAQoa,MAAM4F,UAE/B9T,EAAqE,KAA9D,GAAKuF,EAAMA,MAAMnO,MAAQtE,KAAKgd,UAAYhd,KAAKuE,MAAMD,OAC5D8G,EAAQpL,KAAKuoB,SAASrb,EAAK,EAAG,GAC9B0T,EAAc5gB,KAAKuoB,SAASrb,EAAK,EAAG,KAE7BlN,KAAKuN,QAAUvM,EAAQoa,MAAM6F,SACpC7V,EAAQpL,KAAKsd,SACbsD,EAAc5gB,KAAKud,iBAInBrQ,EAA+E,KAAxE,GAAKuF,EAAMA,MAAMsL,EAAI/d,KAAK6c,MAAQ7c,KAAKuE,MAAMwZ,EAAK/d,KAAK4b,eAC9DxQ,EAAQpL,KAAKuoB,SAASrb,EAAK,EAAG,GAC9B0T,EAAc5gB,KAAKuoB,SAASrb,EAAK,EAAG,KAIlClN,KAAKuN,QAAUvM,EAAQoa,MAAM6F,UAC/BwL,EAAUzsB,KAAKkd,UAAY,IAAOzK,EAAMA,MAAMnO,MAAQtE,KAAKgd,WAAahd,KAAKid,SAAWjd,KAAKgd,UAAY,GAAM,IAC/G0P,EAAU1sB,KAAKmd,UAAY,IAAO1K,EAAMA,MAAMnO,MAAQtE,KAAKgd,WAAahd,KAAKid,SAAWjd,KAAKgd,UAAY,GAAM,IAIjH,IAAIjI,GAAK/U,KACLqe,EAAU5L,EAAMA,MAChBxK,IACDwK,MAAO,GAAIpR,GAAQgd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQrO,EAAQN,KACnEtL,MAAO,GAAIpR,GAAQgd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQrO,EAAQN,KACnEtL,MAAO,GAAIpR,GAAQgd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQrO,EAAQN,KACnEtL,MAAO,GAAIpR,GAAQgd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQrO,EAAQN,KAElEoG,IACD1R,MAAO,GAAIpR,GAAQgd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQ1sB,KAAK6c,QAChEpK,MAAO,GAAIpR,GAAQgd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQ1sB,KAAK6c,QAChEpK,MAAO,GAAIpR,GAAQgd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQ1sB,KAAK6c,QAChEpK,MAAO,GAAIpR,GAAQgd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQ1sB,KAAK6c,OAInE5U,GAAIW,QAAQ,SAAUgb,GACpBA,EAAIM,OAASnP,EAAGqJ,eAAewF,EAAInR,SAErC0R,EAAOvb,QAAQ,SAAUgb,GACvBA,EAAIM,OAASnP,EAAGqJ,eAAewF,EAAInR,QAIrC,IAAIka,KACDH,QAASvkB,EAAK2kB,OAAQvrB,EAAQwrB,IAAI1I,EAAO,GAAG1R,MAAO0R,EAAO,GAAG1R,SAC7D+Z,SAAUvkB,EAAI,GAAIA,EAAI,GAAIkc,EAAO,GAAIA,EAAO,IAAKyI,OAAQvrB,EAAQwrB,IAAI1I,EAAO,GAAG1R,MAAO0R,EAAO,GAAG1R,SAChG+Z,SAAUvkB,EAAI,GAAIA,EAAI,GAAIkc,EAAO,GAAIA,EAAO,IAAKyI,OAAQvrB,EAAQwrB,IAAI1I,EAAO,GAAG1R,MAAO0R,EAAO,GAAG1R,SAChG+Z,SAAUvkB,EAAI,GAAIA,EAAI,GAAIkc,EAAO,GAAIA,EAAO,IAAKyI,OAAQvrB,EAAQwrB,IAAI1I,EAAO,GAAG1R,MAAO0R,EAAO,GAAG1R,SAChG+Z,SAAUvkB,EAAI,GAAIA,EAAI,GAAIkc,EAAO,GAAIA,EAAO,IAAKyI,OAAQvrB,EAAQwrB,IAAI1I,EAAO,GAAG1R,MAAO0R,EAAO,GAAG1R,QAKnG,KAHAA,EAAMka,SAAWA,EAGZL,EAAI,EAAGA,EAAIK,EAAS3mB,OAAQsmB,IAAK,CACpCC,EAAUI,EAASL,EACnB,IAAIQ,GAAc9sB,KAAKue,2BAA2BgO,EAAQK,OAC1DL,GAAQX,KAAO5rB,KAAKsb,gBAAkBwR,EAAY9mB,UAAY8mB,EAAY/O,EAwB5E,IAjBA4O,EAAS7V,KAAK,SAAUlR,EAAGa,GACzB,GAAIsmB,GAAOtmB,EAAEmlB,KAAOhmB,EAAEgmB,IACtB,OAAImB,GAAaA,EAGbnnB,EAAE4mB,UAAYvkB,EAAY,EAC1BxB,EAAE+lB,UAAYvkB,EAAY,GAGvB,IAIT2f,EAAIO,UAAY,EAChBP,EAAIY,YAAc5H,EAClBgH,EAAIiB,UAAYzd,EAEXkhB,EAAI,EAAGA,EAAIK,EAAS3mB,OAAQsmB,IAC/BC,EAAUI,EAASL,GACnBE,EAAUD,EAAQC,QAClB5E,EAAIa,YACJb,EAAIc,OAAO8D,EAAQ,GAAGtI,OAAO7R,EAAGma,EAAQ,GAAGtI,OAAO5R,GAClDsV,EAAIe,OAAO6D,EAAQ,GAAGtI,OAAO7R,EAAGma,EAAQ,GAAGtI,OAAO5R,GAClDsV,EAAIe,OAAO6D,EAAQ,GAAGtI,OAAO7R,EAAGma,EAAQ,GAAGtI,OAAO5R,GAClDsV,EAAIe,OAAO6D,EAAQ,GAAGtI,OAAO7R,EAAGma,EAAQ,GAAGtI,OAAO5R,GAClDsV,EAAIe,OAAO6D,EAAQ,GAAGtI,OAAO7R,EAAGma,EAAQ,GAAGtI,OAAO5R,GAClDsV,EAAInH,OACJmH,EAAIlH,YAUV1f,EAAQ+S,UAAUwT,gBAAkB,WAClC,GAEE9U,GAAO5M,EAFLua,EAASpgB,KAAKmgB,MAAMC,OACtBwH,EAAMxH,EAAOyH,WAAW,KAG1B,MAAwBhhB,SAApB7G,KAAKic,YAA4Bjc,KAAKic,WAAWjW,QAAU,GAA/D,CAIA,IAAKH,EAAI,EAAGA,EAAI7F,KAAKic,WAAWjW,OAAQH,IAAK,CAC3C,GAAIoe,GAAQjkB,KAAKue,2BAA2Bve,KAAKic,WAAWpW,GAAG4M,OAC3DyR,EAASlkB,KAAKwe,4BAA4ByF,EAE9CjkB,MAAKic,WAAWpW,GAAGoe,MAAQA,EAC3BjkB,KAAKic,WAAWpW,GAAGqe,OAASA,EAc9B,IAVIlkB,KAAKic,WAAWjW,OAAS,IAC3ByM,EAAQzS,KAAKic,WAAW,GAExB2L,EAAIO,UAAY,EAChBP,EAAIY,YAAc,OAClBZ,EAAIa,YACJb,EAAIc,OAAOjW,EAAMyR,OAAO7R,EAAGI,EAAMyR,OAAO5R,IAIrCzM,EAAI,EAAGA,EAAI7F,KAAKic,WAAWjW,OAAQH,IACtC4M,EAAQzS,KAAKic,WAAWpW,GACxB+hB,EAAIe,OAAOlW,EAAMyR,OAAO7R,EAAGI,EAAMyR,OAAO5R,EAItCtS,MAAKic,WAAWjW,OAAS,GAC3B4hB,EAAIlH,WASR1f,EAAQ+S,UAAUiR,aAAe,SAASnb,GAWxC,GAVAA,EAAQA,GAAS/B,OAAO+B,MAIpB7J,KAAKgtB,gBACPhtB,KAAKitB,WAAWpjB,GAIlB7J,KAAKgtB,eAAiBnjB,EAAMqjB,MAAyB,IAAhBrjB,EAAMqjB,MAAiC,IAAjBrjB,EAAMsjB,OAC5DntB,KAAKgtB,gBAAmBhtB,KAAKotB,UAAlC,CAGAptB,KAAKqtB,YAAc7P,EAAU3T,GAC7B7J,KAAKstB,YAAc3P,EAAU9T,GAE7B7J,KAAKutB,WAAa,GAAI3oB,MAAK5E,KAAKkQ,OAChClQ,KAAKwtB,SAAW,GAAI5oB,MAAK5E,KAAKmQ,KAC9BnQ,KAAKytB,iBAAmBztB,KAAK+b,OAAO4K,iBAEpC3mB,KAAKmgB,MAAM5S,MAAMmgB,OAAS,MAK1B,IAAI3Y,GAAK/U,IACTA,MAAK2tB,YAAc,SAAU9jB,GAAQkL,EAAG6Y,aAAa/jB,IACrD7J,KAAK6tB,UAAc,SAAUhkB,GAAQkL,EAAGkY,WAAWpjB,IACnDlJ,EAAKuI,iBAAiB2I,SAAU,YAAakD,EAAG4Y,aAChDhtB,EAAKuI,iBAAiB2I,SAAU,UAAWkD,EAAG8Y,WAC9CltB,EAAKiJ,eAAeC,KAStB7I,EAAQ+S,UAAU6Z,aAAe,SAAU/jB,GACzCA,EAAQA,GAAS/B,OAAO+B,KAGxB,IAAIikB,GAAQ5H,WAAW1I,EAAU3T,IAAU7J,KAAKqtB,YAC5CU,EAAQ7H,WAAWvI,EAAU9T,IAAU7J,KAAKstB,YAE5CU,EAAgBhuB,KAAKytB,iBAAiBpH,WAAayH,EAAQ,IAC3DG,EAAcjuB,KAAKytB,iBAAiBnH,SAAWyH,EAAQ,IAEvDG,EAAY,EACZC,EAAY3pB,KAAKya,IAAIiP,EAAY,IAAM,EAAI1pB,KAAK6nB,GAIhD7nB,MAAK+mB,IAAI/mB,KAAKya,IAAI+O,IAAkBG,IACtCH,EAAgBxpB,KAAK4pB,MAAOJ,EAAgBxpB,KAAK6nB,IAAO7nB,KAAK6nB,GAAK,MAEhE7nB,KAAK+mB,IAAI/mB,KAAK4a,IAAI4O,IAAkBG,IACtCH,GAAiBxpB,KAAK4pB,MAAOJ,EAAexpB,KAAK6nB,GAAK,IAAQ,IAAO7nB,KAAK6nB,GAAK,MAI7E7nB,KAAK+mB,IAAI/mB,KAAKya,IAAIgP,IAAgBE,IACpCF,EAAczpB,KAAK4pB,MAAOH,EAAczpB,KAAK6nB,IAAO7nB,KAAK6nB,IAEvD7nB,KAAK+mB,IAAI/mB,KAAK4a,IAAI6O,IAAgBE,IACpCF,GAAezpB,KAAK4pB,MAAOH,EAAazpB,KAAK6nB,GAAK,IAAQ,IAAO7nB,KAAK6nB,IAGxErsB,KAAK+b,OAAOwK,eAAeyH,EAAeC,GAC1CjuB,KAAKsiB,QAGL,IAAI+L,GAAaruB,KAAK0mB,mBACtB1mB,MAAKsuB,KAAK,uBAAwBD,GAElC1tB,EAAKiJ,eAAeC,IAStB7I,EAAQ+S,UAAUkZ,WAAa,SAAUpjB,GACvC7J,KAAKmgB,MAAM5S,MAAMmgB,OAAS,OAC1B1tB,KAAKgtB,gBAAiB,EAGtBrsB,EAAK+I,oBAAoBmI,SAAU,YAAa7R,KAAK2tB,aACrDhtB,EAAK+I,oBAAoBmI,SAAU,UAAa7R,KAAK6tB,WACrDltB,EAAKiJ,eAAeC,IAOtB7I,EAAQ+S,UAAUuR,WAAa,SAAUzb,GACvC,GAAIyP,GAAQ,IACRiV,EAAevuB,KAAKmgB,MAAMvY,wBAC1B4mB,EAAShR,EAAU3T,GAAS0kB,EAAa1mB,KACzC4mB,EAAS9Q,EAAU9T,GAAS0kB,EAAatmB,GAE7C,IAAKjI,KAAK2b,YAAV,CASA,GALI3b,KAAK0uB,gBACPvU,aAAana,KAAK0uB,gBAIhB1uB,KAAKgtB,eAEP,WADAhtB,MAAK2uB,cAIP,IAAI3uB,KAAKinB,SAAWjnB,KAAKinB,QAAQ2H,UAAW,CAE1C,GAAIA,GAAY5uB,KAAK6uB,iBAAiBL,EAAQC,EAC1CG,KAAc5uB,KAAKinB,QAAQ2H,YAEzBA,EACF5uB,KAAK8uB,aAAaF,GAGlB5uB,KAAK2uB,oBAIN,CAEH,GAAI5Z,GAAK/U,IACTA,MAAK0uB,eAAiBtU,WAAW,WAC/BrF,EAAG2Z,eAAiB,IAGpB,IAAIE,GAAY7Z,EAAG8Z,iBAAiBL,EAAQC,EACxCG,IACF7Z,EAAG+Z,aAAaF,IAEjBtV,MAOPtY,EAAQ+S,UAAUmR,cAAgB,SAASrb,GACzC7J,KAAKotB,WAAY,CAEjB,IAAIrY,GAAK/U,IACTA,MAAK+uB,YAAc,SAAUllB,GAAQkL,EAAGia,aAAanlB,IACrD7J,KAAKivB,WAAc,SAAUplB,GAAQkL,EAAGma,YAAYrlB,IACpDlJ,EAAKuI,iBAAiB2I,SAAU,YAAakD,EAAGga,aAChDpuB,EAAKuI,iBAAiB2I,SAAU,WAAYkD,EAAGka,YAE/CjvB,KAAKglB,aAAanb,IAMpB7I,EAAQ+S,UAAUib,aAAe,SAASnlB,GACxC7J,KAAK4tB,aAAa/jB,IAMpB7I,EAAQ+S,UAAUmb,YAAc,SAASrlB,GACvC7J,KAAKotB,WAAY,EAEjBzsB,EAAK+I,oBAAoBmI,SAAU,YAAa7R,KAAK+uB,aACrDpuB,EAAK+I,oBAAoBmI,SAAU,WAAc7R,KAAKivB,YAEtDjvB,KAAKitB,WAAWpjB,IASlB7I,EAAQ+S,UAAUqR,SAAW,SAASvb,GAC/BA,IACHA,EAAQ/B,OAAO+B,MAGjB,IAAIslB,GAAQ,CAYZ,IAXItlB,EAAMulB,WACRD,EAAQtlB,EAAMulB,WAAW,IAChBvlB,EAAMwlB,SAGfF,GAAStlB,EAAMwlB,OAAO,GAMpBF,EAAO,CACT,GAAIG,GAAYtvB,KAAK+b,OAAOkE,eACxBsP,EAAYD,GAAa,EAAIH,EAAQ,GAEzCnvB,MAAK+b,OAAO0K,aAAa8I,GACzBvvB,KAAKsiB,SAELtiB,KAAK2uB,eAIP,GAAIN,GAAaruB,KAAK0mB,mBACtB1mB,MAAKsuB,KAAK,uBAAwBD,GAKlC1tB,EAAKiJ,eAAeC,IAUtB7I,EAAQ+S,UAAUyb,gBAAkB,SAAU/c,EAAOgd,GAKnD,QAASC,GAAMrd,GACb,MAAOA,GAAI,EAAI,EAAQ,EAAJA,EAAQ,GAAK,EALlC,GAAIzM,GAAI6pB,EAAS,GACfhpB,EAAIgpB,EAAS,GACbhvB,EAAIgvB,EAAS,GAMXE,EAAKD,GAAMjpB,EAAE4L,EAAIzM,EAAEyM,IAAMI,EAAMH,EAAI1M,EAAE0M,IAAM7L,EAAE6L,EAAI1M,EAAE0M,IAAMG,EAAMJ,EAAIzM,EAAEyM,IACrEud,EAAKF,GAAMjvB,EAAE4R,EAAI5L,EAAE4L,IAAMI,EAAMH,EAAI7L,EAAE6L,IAAM7R,EAAE6R,EAAI7L,EAAE6L,IAAMG,EAAMJ,EAAI5L,EAAE4L,IACrEwd,EAAKH,GAAM9pB,EAAEyM,EAAI5R,EAAE4R,IAAMI,EAAMH,EAAI7R,EAAE6R,IAAM1M,EAAE0M,EAAI7R,EAAE6R,IAAMG,EAAMJ,EAAI5R,EAAE4R,GAGzE,SAAc,GAANsd,GAAiB,GAANC,GAAWD,GAAMC,GAC3B,GAANA,GAAiB,GAANC,GAAWD,GAAMC,GACtB,GAANF,GAAiB,GAANE,GAAWF,GAAME,IAUjC7uB,EAAQ+S,UAAU8a,iBAAmB,SAAUxc,EAAGC,GAChD,GAAIzM,GACFiqB,EAAU,IACVlB,EAAY,KACZmB,EAAmB,KACnBC,EAAc,KACdpD,EAAS,GAAIxrB,GAAQiR,EAAGC,EAE1B,IAAItS,KAAKuN,QAAUvM,EAAQoa,MAAM2F,KAC/B/gB,KAAKuN,QAAUvM,EAAQoa,MAAM4F,UAC7BhhB,KAAKuN,QAAUvM,EAAQoa,MAAM6F,QAE7B,IAAKpb,EAAI7F,KAAKic,WAAWjW,OAAS,EAAGH,GAAK,EAAGA,IAAK,CAChD+oB,EAAY5uB,KAAKic,WAAWpW,EAC5B,IAAI8mB,GAAYiC,EAAUjC,QAC1B,IAAIA,EACF,IAAK,GAAIvgB,GAAIugB,EAAS3mB,OAAS,EAAGoG,GAAK,EAAGA,IAAK,CAE7C,GAAImgB,GAAUI,EAASvgB,GACnBogB,EAAUD,EAAQC,QAClByD,GAAazD,EAAQ,GAAGtI,OAAQsI,EAAQ,GAAGtI,OAAQsI,EAAQ,GAAGtI,QAC9DgM,GAAa1D,EAAQ,GAAGtI,OAAQsI,EAAQ,GAAGtI,OAAQsI,EAAQ,GAAGtI,OAClE,IAAIlkB,KAAKwvB,gBAAgB5C,EAAQqD,IAC/BjwB,KAAKwvB,gBAAgB5C,EAAQsD,GAE7B,MAAOtB,QAQf,KAAK/oB,EAAI,EAAGA,EAAI7F,KAAKic,WAAWjW,OAAQH,IAAK,CAC3C+oB,EAAY5uB,KAAKic,WAAWpW,EAC5B,IAAI4M,GAAQmc,EAAU1K,MACtB,IAAIzR,EAAO,CACT,GAAI0d,GAAQ3rB,KAAK+mB,IAAIlZ,EAAII,EAAMJ,GAC3B+d,EAAQ5rB,KAAK+mB,IAAIjZ,EAAIG,EAAMH,GAC3BsZ,EAAQpnB,KAAK6rB,KAAKF,EAAQA,EAAQC,EAAQA,IAEzB,OAAhBJ,GAA+BA,EAAPpE,IAA8BkE,EAAPlE,IAClDoE,EAAcpE,EACdmE,EAAmBnB,IAO3B,MAAOmB,IAQT/uB,EAAQ+S,UAAU+a,aAAe,SAAUF,GACzC,GAAI5b,GAASsd,EAAMC,CAEdvwB,MAAKinB,SAiCRjU,EAAUhT,KAAKinB,QAAQuJ,IAAIxd,QAC3Bsd,EAAQtwB,KAAKinB,QAAQuJ,IAAIF,KACzBC,EAAQvwB,KAAKinB,QAAQuJ,IAAID,MAlCzBvd,EAAUnB,SAASM,cAAc,OACjCa,EAAQzF,MAAMkX,SAAW,WACzBzR,EAAQzF,MAAMsX,QAAU,OACxB7R,EAAQzF,MAAMZ,OAAS,oBACvBqG,EAAQzF,MAAMnC,MAAQ,UACtB4H,EAAQzF,MAAMb,WAAa,wBAC3BsG,EAAQzF,MAAMkjB,aAAe,MAC7Bzd,EAAQzF,MAAMmjB,UAAY,qCAE1BJ,EAAOze,SAASM,cAAc,OAC9Bme,EAAK/iB,MAAMkX,SAAW,WACtB6L,EAAK/iB,MAAM6F,OAAS,OACpBkd,EAAK/iB,MAAM4F,MAAQ,IACnBmd,EAAK/iB,MAAMojB,WAAa,oBAExBJ,EAAM1e,SAASM,cAAc,OAC7Boe,EAAIhjB,MAAMkX,SAAW,WACrB8L,EAAIhjB,MAAM6F,OAAS,IACnBmd,EAAIhjB,MAAM4F,MAAQ,IAClBod,EAAIhjB,MAAMZ,OAAS,oBACnB4jB,EAAIhjB,MAAMkjB,aAAe,MAEzBzwB,KAAKinB,SACH2H,UAAW,KACX4B,KACExd,QAASA,EACTsd,KAAMA,EACNC,IAAKA,KAUXvwB,KAAK2uB,eAEL3uB,KAAKinB,QAAQ2H,UAAYA,EAEvB5b,EAAQ8R,UADsB,kBAArB9kB,MAAK2b,YACM3b,KAAK2b,YAAYiT,EAAUnc,OAG3B,6BACMmc,EAAUnc,MAAMJ,EAAI,gCACpBuc,EAAUnc,MAAMH,EAAI,gCACpBsc,EAAUnc,MAAMsL,EAAI,qBAIhD/K,EAAQzF,MAAM1F,KAAQ,IACtBmL,EAAQzF,MAAMtF,IAAQ,IACtBjI,KAAKmgB,MAAMpO,YAAYiB,GACvBhT,KAAKmgB,MAAMpO,YAAYue,GACvBtwB,KAAKmgB,MAAMpO,YAAYwe,EAGvB,IAAIK,GAAgB5d,EAAQ6d,YACxBC,EAAkB9d,EAAQ+d,aAC1BC,EAAgBV,EAAKS,aACrBE,EAAcV,EAAIM,YAClBK,EAAgBX,EAAIQ,aAEpBlpB,EAAO+mB,EAAU1K,OAAO7R,EAAIue,EAAe,CAC/C/oB,GAAOrD,KAAKL,IAAIK,KAAKJ,IAAIyD,EAAM,IAAK7H,KAAKmgB,MAAME,YAAc,GAAKuQ,GAElEN,EAAK/iB,MAAM1F,KAAS+mB,EAAU1K,OAAO7R,EAAI,KACzCie,EAAK/iB,MAAMtF,IAAU2mB,EAAU1K,OAAO5R,EAAI0e,EAAc,KACxDhe,EAAQzF,MAAM1F,KAAQA,EAAO,KAC7BmL,EAAQzF,MAAMtF,IAAS2mB,EAAU1K,OAAO5R,EAAI0e,EAAaF,EAAiB,KAC1EP,EAAIhjB,MAAM1F,KAAW+mB,EAAU1K,OAAO7R,EAAI4e,EAAW,EAAK,KAC1DV,EAAIhjB,MAAMtF,IAAW2mB,EAAU1K,OAAO5R,EAAI4e,EAAY,EAAK,MAO7DlwB,EAAQ+S,UAAU4a,aAAe,WAC/B,GAAI3uB,KAAKinB,QAAS,CAChBjnB,KAAKinB,QAAQ2H,UAAY,IAEzB,KAAK,GAAI1oB,KAAQlG,MAAKinB,QAAQuJ,IAC5B,GAAIxwB,KAAKinB,QAAQuJ,IAAIrqB,eAAeD,GAAO,CACzC,GAAIyB,GAAO3H,KAAKinB,QAAQuJ,IAAItqB,EACxByB,IAAQA,EAAKwC,YACfxC,EAAKwC,WAAWsH,YAAY9J,MA8BtC9H,EAAOD,QAAUoB,GAKb,SAASnB,EAAQD,EAASM,GAc9B,QAASgB,KACPlB,KAAKmxB,YAAc,GAAI9vB,GACvBrB,KAAKoxB,eACLpxB,KAAKoxB,YAAY/K,WAAa,EAC9BrmB,KAAKoxB,YAAY9K,SAAW,EAC5BtmB,KAAKqxB,UAAY,IAEjBrxB,KAAKsxB,eAAiB,GAAIjwB,GAC1BrB,KAAKuxB,eAAkB,GAAIlwB,GAAQ,GAAImD,KAAK6nB,GAAI,EAAG,GAEnDrsB,KAAKwxB,6BAtBP,GAAInwB,GAAUnB,EAAoB,GA+BlCgB,GAAO6S,UAAUoK,eAAiB,SAAS9L,EAAGC,EAAGyL,GAC/C/d,KAAKmxB,YAAY9e,EAAIA,EACrBrS,KAAKmxB,YAAY7e,EAAIA,EACrBtS,KAAKmxB,YAAYpT,EAAIA,EAErB/d,KAAKwxB,8BAWPtwB,EAAO6S,UAAUwS,eAAiB,SAASF,EAAYC,GAClCzf,SAAfwf,IACFrmB,KAAKoxB,YAAY/K,WAAaA,GAGfxf,SAAbyf,IACFtmB,KAAKoxB,YAAY9K,SAAWA,EACxBtmB,KAAKoxB,YAAY9K,SAAW,IAAGtmB,KAAKoxB,YAAY9K,SAAW,GAC3DtmB,KAAKoxB,YAAY9K,SAAW,GAAI9hB,KAAK6nB,KAAIrsB,KAAKoxB,YAAY9K,SAAW,GAAI9hB,KAAK6nB,MAGjExlB,SAAfwf,GAAyCxf,SAAbyf,IAC9BtmB,KAAKwxB,8BAQTtwB,EAAO6S,UAAU4S,eAAiB,WAChC,GAAI8K,KAIJ,OAHAA,GAAIpL,WAAarmB,KAAKoxB,YAAY/K,WAClCoL,EAAInL,SAAWtmB,KAAKoxB,YAAY9K,SAEzBmL,GAOTvwB,EAAO6S,UAAU0S,aAAe,SAASzgB,GACxBa,SAAXb,IAGJhG,KAAKqxB,UAAYrrB,EAKbhG,KAAKqxB,UAAY,MAAMrxB,KAAKqxB,UAAY,KACxCrxB,KAAKqxB,UAAY,IAAKrxB,KAAKqxB,UAAY,GAE3CrxB,KAAKwxB,+BAOPtwB,EAAO6S,UAAUkM,aAAe,WAC9B,MAAOjgB,MAAKqxB,WAOdnwB,EAAO6S,UAAU8K,kBAAoB,WACnC,MAAO7e,MAAKsxB,gBAOdpwB,EAAO6S,UAAUmL,kBAAoB,WACnC,MAAOlf,MAAKuxB,gBAOdrwB,EAAO6S,UAAUyd,2BAA6B,WAE5CxxB,KAAKsxB,eAAejf,EAAIrS,KAAKmxB,YAAY9e,EAAIrS,KAAKqxB,UAAY7sB,KAAKya,IAAIjf,KAAKoxB,YAAY/K,YAAc7hB,KAAK4a,IAAIpf,KAAKoxB,YAAY9K,UAChItmB,KAAKsxB,eAAehf,EAAItS,KAAKmxB,YAAY7e,EAAItS,KAAKqxB,UAAY7sB,KAAK4a,IAAIpf,KAAKoxB,YAAY/K,YAAc7hB,KAAK4a,IAAIpf,KAAKoxB,YAAY9K,UAChItmB,KAAKsxB,eAAevT,EAAI/d,KAAKmxB,YAAYpT,EAAI/d,KAAKqxB,UAAY7sB,KAAKya,IAAIjf,KAAKoxB,YAAY9K,UAGxFtmB,KAAKuxB,eAAelf,EAAI7N,KAAK6nB,GAAG,EAAIrsB,KAAKoxB,YAAY9K,SACrDtmB,KAAKuxB,eAAejf,EAAI,EACxBtS,KAAKuxB,eAAexT,GAAK/d,KAAKoxB,YAAY/K,YAG5CxmB,EAAOD,QAAUsB,GAIb,SAASrB,EAAQD,EAASM,GAW9B,QAASiB,GAAQmS,EAAMsO,EAAQ8P,GAC7B1xB,KAAKsT,KAAOA,EACZtT,KAAK4hB,OAASA,EACd5hB,KAAK0xB,MAAQA,EAEb1xB,KAAK0I,MAAQ7B,OACb7G,KAAKsE,MAAQuC,OAGb7G,KAAK0X,OAASga,EAAM7P,kBAAkBvO,EAAKwC,MAAO9V,KAAK4hB,QAGvD5hB,KAAK0X,OAAOZ,KAAK,SAAUlR,EAAGa,GAC5B,MAAOb,GAAIa,EAAI,EAAQA,EAAJb,EAAQ,GAAK,IAG9B5F,KAAK0X,OAAO1R,OAAS,GACvBhG,KAAK2pB,YAAY,GAInB3pB,KAAKic,cAELjc,KAAKM,QAAS,EACdN,KAAK2xB,eAAiB9qB,OAElB6qB,EAAM5V,kBACR9b,KAAKM,QAAS,EACdN,KAAK4xB,oBAGL5xB,KAAKM,QAAS,EAxClB,GAAIQ,GAAWZ,EAAoB,EAiDnCiB,GAAO4S,UAAU8d,SAAW,WAC1B,MAAO7xB,MAAKM,QAQda,EAAO4S,UAAU+d,kBAAoB,WAInC,IAHA,GAAIhsB,GAAM9F,KAAK0X,OAAO1R,OAElBH,EAAI,EACD7F,KAAKic,WAAWpW,IACrBA,GAGF,OAAOrB,MAAK4pB,MAAMvoB,EAAIC,EAAM,MAQ9B3E,EAAO4S,UAAU+V,SAAW,WAC1B,MAAO9pB,MAAK0xB,MAAMxW,aAQpB/Z,EAAO4S,UAAUge,UAAY,WAC3B,MAAO/xB,MAAK4hB,QAOdzgB,EAAO4S,UAAUgW,iBAAmB,WAClC,MAAmBljB,UAAf7G,KAAK0I,MACA7B,OAEF7G,KAAK0X,OAAO1X,KAAK0I,QAO1BvH,EAAO4S,UAAUie,UAAY,WAC3B,MAAOhyB,MAAK0X,QAQdvW,EAAO4S,UAAUyB,SAAW,SAAS9M,GACnC,GAAIA,GAAS1I,KAAK0X,OAAO1R,OACvB,KAAM,2BAER,OAAOhG,MAAK0X,OAAOhP,IASrBvH,EAAO4S,UAAU4P,eAAiB,SAASjb,GAIzC,GAHc7B,SAAV6B,IACFA,EAAQ1I,KAAK0I,OAED7B,SAAV6B,EACF,QAEF;GAAIuT,EACJ,IAAIjc,KAAKic,WAAWvT,GAClBuT,EAAajc,KAAKic,WAAWvT,OAE1B,CACH,GAAIwF,KACJA,GAAE0T,OAAS5hB,KAAK4hB,OAChB1T,EAAE5J,MAAQtE,KAAK0X,OAAOhP,EAEtB,IAAIupB,GAAW,GAAInxB,GAASd,KAAKsT,MAAMiB,OAAQ,SAAU5E,GAAO,MAAQA,GAAKzB,EAAE0T,SAAW1T,EAAE5J,SAAWwR,KACvGmG,GAAajc,KAAK0xB,MAAM/N,eAAesO,GAEvCjyB,KAAKic,WAAWvT,GAASuT,EAG3B,MAAOA,IAQT9a,EAAO4S,UAAUsO,kBAAoB,SAASxZ,GAC5C7I,KAAK2xB,eAAiB9oB,GASxB1H,EAAO4S,UAAU4V,YAAc,SAASjhB,GACtC,GAAIA,GAAS1I,KAAK0X,OAAO1R,OACvB,KAAM,2BAERhG,MAAK0I,MAAQA,EACb1I,KAAKsE,MAAQtE,KAAK0X,OAAOhP,IAO3BvH,EAAO4S,UAAU6d,iBAAmB,SAASlpB,GAC7B7B,SAAV6B,IACFA,EAAQ,EAEV,IAAIyX,GAAQngB,KAAK0xB,MAAMvR,KAEvB,IAAIzX,EAAQ1I,KAAK0X,OAAO1R,OAAQ,CAC9B,CAAqBhG,KAAK2jB,eAAejb,GAIlB7B,SAAnBsZ,EAAM+R,WACR/R,EAAM+R,SAAWrgB,SAASM,cAAc,OACxCgO,EAAM+R,SAAS3kB,MAAMkX,SAAW,WAChCtE,EAAM+R,SAAS3kB,MAAMnC,MAAQ,OAC7B+U,EAAMpO,YAAYoO,EAAM+R,UAE1B,IAAIA,GAAWlyB,KAAK8xB,mBACpB3R,GAAM+R,SAASpN,UAAY,wBAA0BoN,EAAW,IAEhE/R,EAAM+R,SAAS3kB,MAAM4W,OAAS,OAC9BhE,EAAM+R,SAAS3kB,MAAM1F,KAAO,MAE5B,IAAIkN,GAAK/U,IACToa,YAAW,WAAYrF,EAAG6c,iBAAiBlpB,EAAM,IAAM,IACvD1I,KAAKM,QAAS,MAGdN,MAAKM,QAAS,EAGSuG,SAAnBsZ,EAAM+R,WACR/R,EAAM1O,YAAY0O,EAAM+R,UACxB/R,EAAM+R,SAAWrrB,QAGf7G,KAAK2xB,gBACP3xB,KAAK2xB,kBAIX9xB,EAAOD,QAAUuB,GAKb,SAAStB,GAOb,QAASuB,GAASiR,EAAGC,GACnBtS,KAAKqS,EAAUxL,SAANwL,EAAkBA,EAAI,EAC/BrS,KAAKsS,EAAUzL,SAANyL,EAAkBA,EAAI,EAGjCzS,EAAOD,QAAUwB,GAKb,SAASvB,GAQb,QAASwB,GAAQgR,EAAGC,EAAGyL,GACrB/d,KAAKqS,EAAUxL,SAANwL,EAAkBA,EAAI,EAC/BrS,KAAKsS,EAAUzL,SAANyL,EAAkBA,EAAI,EAC/BtS,KAAK+d,EAAUlX,SAANkX,EAAkBA,EAAI,EASjC1c,EAAQ0qB,SAAW,SAASnmB,EAAGa,GAC7B,GAAI0rB,GAAM,GAAI9wB,EAId,OAHA8wB,GAAI9f,EAAIzM,EAAEyM,EAAI5L,EAAE4L,EAChB8f,EAAI7f,EAAI1M,EAAE0M,EAAI7L,EAAE6L,EAChB6f,EAAIpU,EAAInY,EAAEmY,EAAItX,EAAEsX,EACToU,GAST9wB,EAAQwS,IAAM,SAASjO,EAAGa,GACxB,GAAI2rB,GAAM,GAAI/wB,EAId,OAHA+wB,GAAI/f,EAAIzM,EAAEyM,EAAI5L,EAAE4L,EAChB+f,EAAI9f,EAAI1M,EAAE0M,EAAI7L,EAAE6L,EAChB8f,EAAIrU,EAAInY,EAAEmY,EAAItX,EAAEsX,EACTqU,GAST/wB,EAAQwrB,IAAM,SAASjnB,EAAGa,GACxB,MAAO,IAAIpF,IACFuE,EAAEyM,EAAI5L,EAAE4L,GAAK,GACbzM,EAAE0M,EAAI7L,EAAE6L,GAAK,GACb1M,EAAEmY,EAAItX,EAAEsX,GAAK,IAWxB1c,EAAQ6qB,aAAe,SAAStmB,EAAGa,GACjC,GAAIwlB,GAAe,GAAI5qB,EAMvB,OAJA4qB,GAAa5Z,EAAIzM,EAAE0M,EAAI7L,EAAEsX,EAAInY,EAAEmY,EAAItX,EAAE6L,EACrC2Z,EAAa3Z,EAAI1M,EAAEmY,EAAItX,EAAE4L,EAAIzM,EAAEyM,EAAI5L,EAAEsX,EACrCkO,EAAalO,EAAInY,EAAEyM,EAAI5L,EAAE6L,EAAI1M,EAAE0M,EAAI7L,EAAE4L,EAE9B4Z,GAQT5qB,EAAQ0S,UAAU/N,OAAS,WACzB,MAAOxB,MAAK6rB,KACJrwB,KAAKqS,EAAIrS,KAAKqS,EACdrS,KAAKsS,EAAItS,KAAKsS,EACdtS,KAAK+d,EAAI/d,KAAK+d,IAIxBle,EAAOD,QAAUyB,GAKb,SAASxB,EAAQD,EAASM,GAa9B,QAASoB,GAAO+Y,EAAWtL,GACzB,GAAkBlI,SAAdwT,EACF,KAAM,qCAKR,IAHAra,KAAKqa,UAAYA,EACjBra,KAAKspB,QAAWva,GAA8BlI,QAAnBkI,EAAQua,QAAwBva,EAAQua,SAAU,EAEzEtpB,KAAKspB,QAAS,CAChBtpB,KAAKmgB,MAAQtO,SAASM,cAAc,OAEpCnS,KAAKmgB,MAAM5S,MAAM4F,MAAQ,OACzBnT,KAAKmgB,MAAM5S,MAAMkX,SAAW,WAC5BzkB,KAAKqa,UAAUtI,YAAY/R,KAAKmgB,OAEhCngB,KAAKmgB,MAAMkS,KAAOxgB,SAASM,cAAc,SACzCnS,KAAKmgB,MAAMkS,KAAKlrB,KAAO,SACvBnH,KAAKmgB,MAAMkS,KAAK/tB,MAAQ,OACxBtE,KAAKmgB,MAAMpO,YAAY/R,KAAKmgB,MAAMkS,MAElCryB,KAAKmgB,MAAM0F,KAAOhU,SAASM,cAAc,SACzCnS,KAAKmgB,MAAM0F,KAAK1e,KAAO,SACvBnH,KAAKmgB,MAAM0F,KAAKvhB,MAAQ,OACxBtE,KAAKmgB,MAAMpO,YAAY/R,KAAKmgB,MAAM0F,MAElC7lB,KAAKmgB,MAAM+I,KAAOrX,SAASM,cAAc,SACzCnS,KAAKmgB,MAAM+I,KAAK/hB,KAAO,SACvBnH,KAAKmgB,MAAM+I,KAAK5kB,MAAQ,OACxBtE,KAAKmgB,MAAMpO,YAAY/R,KAAKmgB,MAAM+I,MAElClpB,KAAKmgB,MAAMmS,IAAMzgB,SAASM,cAAc,SACxCnS,KAAKmgB,MAAMmS,IAAInrB,KAAO,SACtBnH,KAAKmgB,MAAMmS,IAAI/kB,MAAMkX,SAAW,WAChCzkB,KAAKmgB,MAAMmS,IAAI/kB,MAAMZ,OAAS,gBAC9B3M,KAAKmgB,MAAMmS,IAAI/kB,MAAM4F,MAAQ,QAC7BnT,KAAKmgB,MAAMmS,IAAI/kB,MAAM6F,OAAS,MAC9BpT,KAAKmgB,MAAMmS,IAAI/kB,MAAMkjB,aAAe,MACpCzwB,KAAKmgB,MAAMmS,IAAI/kB,MAAMglB,gBAAkB,MACvCvyB,KAAKmgB,MAAMmS,IAAI/kB,MAAMZ,OAAS,oBAC9B3M,KAAKmgB,MAAMmS,IAAI/kB,MAAMiT,gBAAkB,UACvCxgB,KAAKmgB,MAAMpO,YAAY/R,KAAKmgB,MAAMmS,KAElCtyB,KAAKmgB,MAAMqS,MAAQ3gB,SAASM,cAAc,SAC1CnS,KAAKmgB,MAAMqS,MAAMrrB,KAAO,SACxBnH,KAAKmgB,MAAMqS,MAAMjlB,MAAMiN,OAAS,MAChCxa,KAAKmgB,MAAMqS,MAAMluB,MAAQ,IACzBtE,KAAKmgB,MAAMqS,MAAMjlB,MAAMkX,SAAW,WAClCzkB,KAAKmgB,MAAMqS,MAAMjlB,MAAM1F,KAAO,SAC9B7H,KAAKmgB,MAAMpO,YAAY/R,KAAKmgB,MAAMqS,MAGlC,IAAIzd,GAAK/U,IACTA,MAAKmgB,MAAMqS,MAAMzN,YAAc,SAAUlb,GAAQkL,EAAGiQ,aAAanb,IACjE7J,KAAKmgB,MAAMkS,KAAKI,QAAU,SAAU5oB,GAAQkL,EAAGsd,KAAKxoB,IACpD7J,KAAKmgB,MAAM0F,KAAK4M,QAAU,SAAU5oB,GAAQkL,EAAG2d,WAAW7oB,IAC1D7J,KAAKmgB,MAAM+I,KAAKuJ,QAAU,SAAU5oB,GAAQkL,EAAGmU,KAAKrf,IAGtD7J,KAAK2yB,iBAAmB9rB,OAExB7G,KAAK0X,UACL1X,KAAK0I,MAAQ7B,OAEb7G,KAAK4yB,YAAc/rB,OACnB7G,KAAK6yB,aAAe,IACpB7yB,KAAK8yB,UAAW,EA3ElB,GAAInyB,GAAOT,EAAoB,EAiF/BoB,GAAOyS,UAAUse,KAAO,WACtB,GAAI3pB,GAAQ1I,KAAK0pB,UACbhhB,GAAQ,IACVA,IACA1I,KAAK+yB,SAASrqB,KAOlBpH,EAAOyS,UAAUmV,KAAO,WACtB,GAAIxgB,GAAQ1I,KAAK0pB,UACbhhB,GAAQ1I,KAAK0X,OAAO1R,OAAS,IAC/B0C,IACA1I,KAAK+yB,SAASrqB,KAOlBpH,EAAOyS,UAAUif,SAAW,WAC1B,GAAI9iB,GAAQ,GAAItL,MAEZ8D,EAAQ1I,KAAK0pB,UACbhhB,GAAQ1I,KAAK0X,OAAO1R,OAAS,GAC/B0C,IACA1I,KAAK+yB,SAASrqB,IAEP1I,KAAK8yB,WAEZpqB,EAAQ,EACR1I,KAAK+yB,SAASrqB,GAGhB,IAAIyH,GAAM,GAAIvL,MACVmoB,EAAQ5c,EAAMD,EAId+iB,EAAWzuB,KAAKJ,IAAIpE,KAAK6yB,aAAe9F,EAAM,GAG9ChY,EAAK/U,IACTA,MAAK4yB,YAAcxY,WAAW,WAAYrF,EAAGie,YAAcC,IAM7D3xB,EAAOyS,UAAU2e,WAAa,WACH7rB,SAArB7G,KAAK4yB,YACP5yB,KAAK6lB,OAEL7lB,KAAK+lB,QAOTzkB,EAAOyS,UAAU8R,KAAO,WAElB7lB,KAAK4yB,cAET5yB,KAAKgzB,WAEDhzB,KAAKmgB,QACPngB,KAAKmgB,MAAM0F,KAAKvhB,MAAQ,UAO5BhD,EAAOyS,UAAUgS,KAAO,WACtBmN,cAAclzB,KAAK4yB,aACnB5yB,KAAK4yB,YAAc/rB,OAEf7G,KAAKmgB,QACPngB,KAAKmgB,MAAM0F,KAAKvhB,MAAQ,SAQ5BhD,EAAOyS,UAAU6V,oBAAsB,SAAS/gB,GAC9C7I,KAAK2yB,iBAAmB9pB,GAO1BvH,EAAOyS,UAAUyV,gBAAkB,SAASyJ,GAC1CjzB,KAAK6yB,aAAeI,GAOtB3xB,EAAOyS,UAAUof,gBAAkB,WACjC,MAAOnzB,MAAK6yB,cASdvxB,EAAOyS,UAAUqf,YAAc,SAASC,GACtCrzB,KAAK8yB,SAAWO,GAOlB/xB,EAAOyS,UAAUuf,SAAW,WACIzsB,SAA1B7G,KAAK2yB,kBACP3yB,KAAK2yB,oBAOTrxB,EAAOyS,UAAUuO,OAAS,WACxB,GAAItiB,KAAKmgB,MAAO,CAEdngB,KAAKmgB,MAAMmS,IAAI/kB,MAAMtF,IAAOjI,KAAKmgB,MAAMuF,aAAa,EAChD1lB,KAAKmgB,MAAMmS,IAAIvB,aAAa,EAAK,KACrC/wB,KAAKmgB,MAAMmS,IAAI/kB,MAAM4F,MAASnT,KAAKmgB,MAAME,YACrCrgB,KAAKmgB,MAAMkS,KAAKhS,YAChBrgB,KAAKmgB,MAAM0F,KAAKxF,YAChBrgB,KAAKmgB,MAAM+I,KAAK7I,YAAc,GAAO,IAGzC,IAAIxY,GAAO7H,KAAKuzB,YAAYvzB,KAAK0I,MACjC1I,MAAKmgB,MAAMqS,MAAMjlB,MAAM1F,KAAO,EAAS,OAS3CvG,EAAOyS,UAAUwV,UAAY,SAAS7R,GACpC1X,KAAK0X,OAASA,EAEV1X,KAAK0X,OAAO1R,OAAS,EACvBhG,KAAK+yB,SAAS,GAEd/yB,KAAK0I,MAAQ7B,QAOjBvF,EAAOyS,UAAUgf,SAAW,SAASrqB,GACnC,KAAIA,EAAQ1I,KAAK0X,OAAO1R,QAOtB,KAAM,2BANNhG,MAAK0I,MAAQA,EAEb1I,KAAKsiB,SACLtiB,KAAKszB,YAWThyB,EAAOyS,UAAU2V,SAAW,WAC1B,MAAO1pB,MAAK0I,OAQdpH,EAAOyS,UAAU+B,IAAM,WACrB,MAAO9V,MAAK0X,OAAO1X,KAAK0I,QAI1BpH,EAAOyS,UAAUiR,aAAe,SAASnb,GAEvC,GAAImjB,GAAiBnjB,EAAMqjB,MAAyB,IAAhBrjB,EAAMqjB,MAAiC,IAAjBrjB,EAAMsjB,MAChE,IAAKH,EAAL,CAEAhtB,KAAKwzB,aAAe3pB,EAAM4T,QAC1Bzd,KAAKyzB,YAAcvN,WAAWlmB,KAAKmgB,MAAMqS,MAAMjlB,MAAM1F,MAErD7H,KAAKmgB,MAAM5S,MAAMmgB,OAAS,MAK1B,IAAI3Y,GAAK/U,IACTA,MAAK2tB,YAAc,SAAU9jB,GAAQkL,EAAG6Y,aAAa/jB,IACrD7J,KAAK6tB,UAAc,SAAUhkB,GAAQkL,EAAGkY,WAAWpjB,IACnDlJ,EAAKuI,iBAAiB2I,SAAU,YAAa7R,KAAK2tB,aAClDhtB,EAAKuI,iBAAiB2I,SAAU,UAAa7R,KAAK6tB,WAClDltB,EAAKiJ,eAAeC,KAItBvI,EAAOyS,UAAU2f,YAAc,SAAU7rB,GACvC,GAAIsL,GAAQ+S,WAAWlmB,KAAKmgB,MAAMmS,IAAI/kB,MAAM4F,OACxCnT,KAAKmgB,MAAMqS,MAAMnS,YAAc,GAC/BhO,EAAIxK,EAAO,EAEXa,EAAQlE,KAAK4pB,MAAM/b,EAAIc,GAASnT,KAAK0X,OAAO1R,OAAO,GAIvD,OAHY,GAAR0C,IAAWA,EAAQ,GACnBA,EAAQ1I,KAAK0X,OAAO1R,OAAO,IAAG0C,EAAQ1I,KAAK0X,OAAO1R,OAAO,GAEtD0C,GAGTpH,EAAOyS,UAAUwf,YAAc,SAAU7qB,GACvC,GAAIyK,GAAQ+S,WAAWlmB,KAAKmgB,MAAMmS,IAAI/kB,MAAM4F,OACxCnT,KAAKmgB,MAAMqS,MAAMnS,YAAc,GAE/BhO,EAAI3J,GAAS1I,KAAK0X,OAAO1R,OAAO,GAAKmN,EACrCtL,EAAOwK,EAAI,CAEf,OAAOxK,IAKTvG,EAAOyS,UAAU6Z,aAAe,SAAU/jB,GACxC,GAAIkjB,GAAOljB,EAAM4T,QAAUzd,KAAKwzB,aAC5BnhB,EAAIrS,KAAKyzB,YAAc1G,EAEvBrkB,EAAQ1I,KAAK0zB,YAAYrhB,EAE7BrS,MAAK+yB,SAASrqB,GAEd/H,EAAKiJ,kBAIPtI,EAAOyS,UAAUkZ,WAAa,WAC5BjtB,KAAKmgB,MAAM5S,MAAMmgB,OAAS,OAG1B/sB,EAAK+I,oBAAoBmI,SAAU,YAAa7R,KAAK2tB,aACrDhtB,EAAK+I,oBAAoBmI,SAAU,UAAW7R,KAAK6tB,WAEnDltB,EAAKiJ,kBAGP/J,EAAOD,QAAU0B,GAKb,SAASzB,GA2Bb,QAAS0B,GAAW2O,EAAOC,EAAK6Y,EAAMkB,GAEpClqB,KAAK2zB,OAAS,EACd3zB,KAAK4zB,KAAO,EACZ5zB,KAAK6zB,MAAQ,EACb7zB,KAAKkqB,YAAa,EAClBlqB,KAAK8zB,UAAY,EAEjB9zB,KAAK+zB,SAAW,EAChB/zB,KAAKg0B,SAAS9jB,EAAOC,EAAK6Y,EAAMkB,GAYlC3oB,EAAWwS,UAAUigB,SAAW,SAAS9jB,EAAOC,EAAK6Y,EAAMkB,GACzDlqB,KAAK2zB,OAASzjB,EAAQA,EAAQ,EAC9BlQ,KAAK4zB,KAAOzjB,EAAMA,EAAM,EAExBnQ,KAAKi0B,QAAQjL,EAAMkB,IASrB3oB,EAAWwS,UAAUkgB,QAAU,SAASjL,EAAMkB,GAC/BrjB,SAATmiB,GAA8B,GAARA,IAGPniB,SAAfqjB,IACFlqB,KAAKkqB,WAAaA,GAGlBlqB,KAAK6zB,MADH7zB,KAAKkqB,cAAe,EACT3oB,EAAW2yB,oBAAoBlL,GAE/BA,IAUjBznB,EAAW2yB,oBAAsB,SAAUlL,GACzC,GAAImL,GAAQ,SAAU9hB,GAAI,MAAO7N,MAAK4vB,IAAI/hB,GAAK7N,KAAK6vB,MAGhDC,EAAQ9vB,KAAK+vB,IAAI,GAAI/vB,KAAK4pB,MAAM+F,EAAMnL,KACtCwL,EAAQ,EAAIhwB,KAAK+vB,IAAI,GAAI/vB,KAAK4pB,MAAM+F,EAAMnL,EAAO,KACjDyL,EAAQ,EAAIjwB,KAAK+vB,IAAI,GAAI/vB,KAAK4pB,MAAM+F,EAAMnL,EAAO,KAGjDkB,EAAaoK,CASjB,OARI9vB,MAAK+mB,IAAIiJ,EAAQxL,IAASxkB,KAAK+mB,IAAIrB,EAAalB,KAAOkB,EAAasK,GACpEhwB,KAAK+mB,IAAIkJ,EAAQzL,IAASxkB,KAAK+mB,IAAIrB,EAAalB,KAAOkB,EAAauK,GAGtD,GAAdvK,IACFA,EAAa,GAGRA,GAOT3oB,EAAWwS,UAAUkV,WAAa,WAChC,MAAO/C,YAAWlmB,KAAK+zB,SAASW,YAAY10B,KAAK8zB,aAOnDvyB,EAAWwS,UAAU4gB,QAAU,WAC7B,MAAO30B,MAAK6zB,OAOdtyB,EAAWwS,UAAU7D,MAAQ,WAC3BlQ,KAAK+zB,SAAW/zB,KAAK2zB,OAAS3zB,KAAK2zB,OAAS3zB,KAAK6zB,OAMnDtyB,EAAWwS,UAAUmV,KAAO,WAC1BlpB,KAAK+zB,UAAY/zB,KAAK6zB,OAOxBtyB,EAAWwS,UAAU5D,IAAM,WACzB,MAAQnQ,MAAK+zB,SAAW/zB,KAAK4zB,MAG/B/zB,EAAOD,QAAU2B,GAKb,SAAS1B,EAAQD,EAASM,GAuB9B,QAASsB,GAAU6Y,EAAWpY,EAAO2yB,EAAQ7lB,GAC3C,KAAM/O,eAAgBwB,IACpB,KAAM,IAAI8Y,aAAY,mDAIxB,MAAMhU,MAAMC,QAAQquB,IAAWA,YAAkB/zB,IAAW+zB,YAAkB9zB,KAAa8zB,YAAkBhuB,QAAQ,CACnH,GAAIiuB,GAAgB9lB,CACpBA,GAAU6lB,EACVA,EAASC,EAGX,GAAI9f,GAAK/U,IACTA,MAAK80B,gBACH5kB,MAAO,KACPC,IAAO,KAEP4kB,YAAY,EAEZC,YAAa,SACb7hB,MAAO,KACPC,OAAQ,KACR6hB,UAAW,KACXC,UAAW,MAEbl1B,KAAK+O,QAAUpO,EAAKmG,cAAe9G,KAAK80B,gBAGxC90B,KAAKm1B,QAAQ9a,GAGbra,KAAKgC,cAELhC,KAAKo1B,MACH5E,IAAKxwB,KAAKwwB,IACV6E,SAAUr1B,KAAKqG,MACfivB,SACEnhB,GAAInU,KAAKmU,GAAGohB,KAAKv1B,MACjBsU,IAAKtU,KAAKsU,IAAIihB,KAAKv1B,MACnBsuB,KAAMtuB,KAAKsuB,KAAKiH,KAAKv1B,OAEvBw1B,eACA70B,MACE80B,SAAU,WACR,MAAO1gB,GAAG2gB,SAAS1M,KAAKzkB,OAE1BowB,QAAS,WACP,MAAO5f,GAAG2gB,SAAS1M,KAAKA,MAG1B2M,SAAU5gB,EAAG6gB,UAAUL,KAAKxgB,GAC5B8gB,eAAgB9gB,EAAG+gB,gBAAgBP,KAAKxgB,GACxCghB,OAAQhhB,EAAGihB,QAAQT,KAAKxgB,GACxBkhB,aAAelhB,EAAGmhB,cAAcX,KAAKxgB,KAKzC/U,KAAKm2B,MAAQ,GAAIt0B,GAAM7B,KAAKo1B,MAC5Bp1B,KAAKgC,WAAWuG,KAAKvI,KAAKm2B,OAC1Bn2B,KAAKo1B,KAAKe,MAAQn2B,KAAKm2B,MAGvBn2B,KAAK01B,SAAW,GAAIzyB,GAASjD,KAAKo1B,MAClCp1B,KAAKo2B,UAAY,KACjBp2B,KAAKgC,WAAWuG,KAAKvI,KAAK01B,UAG1B11B,KAAKq2B,YAAc,GAAI7zB,GAAYxC,KAAKo1B,MACxCp1B,KAAKgC,WAAWuG,KAAKvI,KAAKq2B,aAI1Br2B,KAAKs2B,WAAa,GAAI7zB,GAAWzC,KAAKo1B,MACtCp1B,KAAKgC,WAAWuG,KAAKvI,KAAKs2B,YAG1Bt2B,KAAKu2B,QAAU,GAAIzzB,GAAQ9C,KAAKo1B,MAChCp1B,KAAKgC,WAAWuG,KAAKvI,KAAKu2B,SAE1Bv2B,KAAKw2B,UAAY,KACjBx2B,KAAKy2B,WAAa,KAGd1nB,GACF/O,KAAK8T,WAAW/E,GAId6lB,GACF50B,KAAK02B,UAAU9B,GAIb3yB,EACFjC,KAAK22B,SAAS10B,GAGdjC,KAAK42B,UAvHT,GAEIj2B,IAFUT,EAAoB,IACrBA,EAAoB,IACtBA,EAAoB,IAC3BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/B2B,EAAQ3B,EAAoB,IAC5B22B,EAAO32B,EAAoB,IAC3B+C,EAAW/C,EAAoB,IAC/BsC,EAActC,EAAoB,IAClCuC,EAAavC,EAAoB,IACjC4C,EAAU5C,EAAoB,GAkHlCsB,GAASuS,UAAY,GAAI8iB,GAOzBr1B,EAASuS,UAAUuO,OAAS,WAC1BtiB,KAAKu2B,SAAWv2B,KAAKu2B,QAAQO,WAAWC,cAAc,IACtD/2B,KAAK42B,WAOPp1B,EAASuS,UAAU4iB,SAAW,SAAS10B,GACrC,GAGI+0B,GAHAC,EAAiC,MAAlBj3B,KAAKw2B,SAwBxB,IAhBEQ,EAJG/0B,EAGIA,YAAiBpB,IAAWoB,YAAiBnB,GACvCmB,EAIA,GAAIpB,GAAQoB,GACvBkF,MACE+I,MAAO,OACPC,IAAK,UAVI,KAgBfnQ,KAAKw2B,UAAYQ,EACjBh3B,KAAKu2B,SAAWv2B,KAAKu2B,QAAQI,SAASK,GAElCC,EACF,GAA0BpwB,QAAtB7G,KAAK+O,QAAQmB,OAA0CrJ,QAApB7G,KAAK+O,QAAQoB,IAAkB,CACpE,GAA0BtJ,QAAtB7G,KAAK+O,QAAQmB,OAA0CrJ,QAApB7G,KAAK+O,QAAQoB,IAClD,GAAI+mB,GAAYl3B,KAAKm3B,eAGvB,IAAIjnB,GAA8BrJ,QAAtB7G,KAAK+O,QAAQmB,MAAqBlQ,KAAK+O,QAAQmB,MAAQgnB,EAAUhnB,MACzEC,EAA4BtJ,QAApB7G,KAAK+O,QAAQoB,IAAqBnQ,KAAK+O,QAAQoB,IAAQ+mB,EAAU/mB,GAE7EnQ,MAAKo3B,UAAUlnB,EAAOC,GAAMknB,SAAS,QAGrCr3B,MAAKs3B,KAAKD,SAAS,KASzB71B,EAASuS,UAAU2iB,UAAY,SAAS9B,GAEtC,GAAIoC,EAKFA,GAJGpC,EAGIA,YAAkB/zB,IAAW+zB,YAAkB9zB,GACzC8zB,EAIA,GAAI/zB,GAAQ+zB,GAPZ,KAUf50B,KAAKy2B,WAAaO,EAClBh3B,KAAKu2B,QAAQG,UAAUM,IAmBzBx1B,EAASuS,UAAUwjB,aAAe,SAASxhB,EAAKhH,GAC9C/O,KAAKu2B,SAAWv2B,KAAKu2B,QAAQgB,aAAaxhB,GAEtChH,GAAWA,EAAQyoB,OACrBx3B,KAAKw3B,MAAMzhB,EAAKhH,IAQpBvN,EAASuS,UAAU0jB,aAAe,WAChC,MAAOz3B,MAAKu2B,SAAWv2B,KAAKu2B,QAAQkB,oBAetCj2B,EAASuS,UAAUyjB,MAAQ,SAASn3B,EAAI0O,GACtC,GAAK/O,KAAKw2B,WAAmB3vB,QAANxG,EAAvB,CAEA,GAAI0V,GAAMzP,MAAMC,QAAQlG,GAAMA,GAAMA,GAGhCm2B,EAAYx2B,KAAKw2B,UAAU9f,aAAaZ,IAAIC,GAC9C5O,MACE+I,MAAO,OACPC,IAAK,UAKLD,EAAQ,KACRC,EAAM,IAcV,IAbAqmB,EAAU5tB,QAAQ,SAAU8uB,GAC1B,GAAItrB,GAAIsrB,EAASxnB,MAAM7I,UACnBswB,EAAI,OAASD,GAAWA,EAASvnB,IAAI9I,UAAYqwB,EAASxnB,MAAM7I,WAEtD,OAAV6I,GAAsBA,EAAJ9D,KACpB8D,EAAQ9D,IAGE,OAAR+D,GAAgBwnB,EAAIxnB,KACtBA,EAAMwnB,KAII,OAAVznB,GAA0B,OAARC,EAAc,CAElC,GAAIT,IAAUQ,EAAQC,GAAO,EACzB8iB,EAAWzuB,KAAKJ,IAAKpE,KAAKm2B,MAAMhmB,IAAMnQ,KAAKm2B,MAAMjmB,MAAwB,KAAfC,EAAMD,IAEhEmnB,EAAWtoB,GAA+BlI,SAApBkI,EAAQsoB,QAAyBtoB,EAAQsoB,SAAU,CAC7Er3B,MAAKm2B,MAAMnC,SAAStkB,EAASujB,EAAW,EAAGvjB,EAASujB,EAAW,EAAGoE,MAUtE71B,EAASuS,UAAU6jB,aAAe,WAEhC,GAAIC,GAAU73B,KAAKw2B,UAAU9f,aAC3BvS,EAAM,KACNC,EAAM,IAER,IAAIyzB,EAAS,CAEX,GAAIC,GAAUD,EAAQ1zB,IAAI,QAC1BA,GAAM2zB,EAAUn3B,EAAKuG,QAAQ4wB,EAAQ5nB,MAAO,QAAQ7I,UAAY,IAKhE,IAAI0wB,GAAeF,EAAQzzB,IAAI,QAC3B2zB,KACF3zB,EAAMzD,EAAKuG,QAAQ6wB,EAAa7nB,MAAO,QAAQ7I,UAEjD,IAAI2wB,GAAaH,EAAQzzB,IAAI,MACzB4zB,KAEA5zB,EADS,MAAPA,EACIzD,EAAKuG,QAAQ8wB,EAAW7nB,IAAK,QAAQ9I,UAGrC7C,KAAKJ,IAAIA,EAAKzD,EAAKuG,QAAQ8wB,EAAW7nB,IAAK,QAAQ9I,YAK/D,OACElD,IAAa,MAAPA,EAAe,GAAIS,MAAKT,GAAO,KACrCC,IAAa,MAAPA,EAAe,GAAIQ,MAAKR,GAAO,OAKzCvE,EAAOD,QAAU4B,GAKb,SAAS3B,EAAQD,EAASM,GAsB9B,QAASuB,GAAS4Y,EAAWpY,EAAO2yB,EAAQ7lB,GAE1C,KAAMzI,MAAMC,QAAQquB,IAAWA,YAAkB/zB,KAAY+zB,YAAkBhuB,QAAQ,CACrF,GAAIiuB,GAAgB9lB,CACpBA,GAAU6lB,EACVA,EAASC,EAGX,GAAI9f,GAAK/U,IACTA,MAAK80B,gBACH5kB,MAAO,KACPC,IAAO,KAEP4kB,YAAY,EAEZC,YAAa,SACb7hB,MAAO,KACPC,OAAQ,KACR6hB,UAAW,KACXC,UAAW,MAEbl1B,KAAK+O,QAAUpO,EAAKmG,cAAe9G,KAAK80B,gBAGxC90B,KAAKm1B,QAAQ9a,GAGbra,KAAKgC,cAELhC,KAAKo1B,MACH5E,IAAKxwB,KAAKwwB,IACV6E,SAAUr1B,KAAKqG,MACfivB,SACEnhB,GAAInU,KAAKmU,GAAGohB,KAAKv1B,MACjBsU,IAAKtU,KAAKsU,IAAIihB,KAAKv1B,MACnBsuB,KAAMtuB,KAAKsuB,KAAKiH,KAAKv1B,OAEvBw1B,eACA70B,MACEg1B,SAAU5gB,EAAG6gB,UAAUL,KAAKxgB,GAC5B8gB,eAAgB9gB,EAAG+gB,gBAAgBP,KAAKxgB,GACxCghB,OAAQhhB,EAAGihB,QAAQT,KAAKxgB,GACxBkhB,aAAelhB,EAAGmhB,cAAcX,KAAKxgB,KAKzC/U,KAAKm2B,MAAQ,GAAIt0B,GAAM7B,KAAKo1B,MAC5Bp1B,KAAKgC,WAAWuG,KAAKvI,KAAKm2B,OAC1Bn2B,KAAKo1B,KAAKe,MAAQn2B,KAAKm2B,MAGvBn2B,KAAK01B,SAAW,GAAIzyB,GAASjD,KAAKo1B,MAClCp1B,KAAKgC,WAAWuG,KAAKvI,KAAK01B,UAI1B11B,KAAKq2B,YAAc,GAAI7zB,GAAYxC,KAAKo1B,MACxCp1B,KAAKgC,WAAWuG,KAAKvI,KAAKq2B,aAI1Br2B,KAAKs2B,WAAa,GAAI7zB,GAAWzC,KAAKo1B,MACtCp1B,KAAKgC,WAAWuG,KAAKvI,KAAKs2B,YAG1Bt2B,KAAKi4B,UAAY,GAAIj1B,GAAUhD,KAAKo1B,MACpCp1B,KAAKgC,WAAWuG,KAAKvI,KAAKi4B,WAE1Bj4B,KAAKw2B,UAAY,KACjBx2B,KAAKy2B,WAAa,KAGd1nB,GACF/O,KAAK8T,WAAW/E,GAId6lB,GACF50B,KAAK02B,UAAU9B,GAIb3yB,EACFjC,KAAK22B,SAAS10B,GAGdjC,KAAK42B,UA3GT,GAEIj2B,IAFUT,EAAoB,IACrBA,EAAoB,IACtBA,EAAoB,IAC3BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/B2B,EAAQ3B,EAAoB,IAC5B22B,EAAO32B,EAAoB,IAC3B+C,EAAW/C,EAAoB,IAC/BsC,EAActC,EAAoB,IAClCuC,EAAavC,EAAoB,IACjC8C,EAAY9C,EAAoB,GAsGpCuB,GAAQsS,UAAY,GAAI8iB,GAMxBp1B,EAAQsS,UAAU4iB,SAAW,SAAS10B,GACpC,GAGI+0B,GAHAC,EAAiC,MAAlBj3B,KAAKw2B,SAwBxB,IAhBEQ,EAJG/0B,EAGIA,YAAiBpB,IAAWoB,YAAiBnB,GACvCmB,EAIA,GAAIpB,GAAQoB,GACvBkF,MACE+I,MAAO,OACPC,IAAK,UAVI,KAgBfnQ,KAAKw2B,UAAYQ,EACjBh3B,KAAKi4B,WAAaj4B,KAAKi4B,UAAUtB,SAASK,GAEtCC,EACF,GAA0BpwB,QAAtB7G,KAAK+O,QAAQmB,OAA0CrJ,QAApB7G,KAAK+O,QAAQoB,IAAkB,CACpE,GAAID,GAA8BrJ,QAAtB7G,KAAK+O,QAAQmB,MAAqBlQ,KAAK+O,QAAQmB,MAAQ,KAC/DC,EAA4BtJ,QAApB7G,KAAK+O,QAAQoB,IAAqBnQ,KAAK+O,QAAQoB,IAAM,IAEjEnQ,MAAKo3B,UAAUlnB,EAAOC,GAAMknB,SAAS,QAGrCr3B,MAAKs3B,KAAKD,SAAS,KASzB51B,EAAQsS,UAAU2iB,UAAY,SAAS9B,GAErC,GAAIoC,EAKFA,GAJGpC,EAGIA,YAAkB/zB,IAAW+zB,YAAkB9zB,GACzC8zB,EAIA,GAAI/zB,GAAQ+zB,GAPZ,KAUf50B,KAAKy2B,WAAaO,EAClBh3B,KAAKi4B,UAAUvB,UAAUM,IAS3Bv1B,EAAQsS,UAAUmkB,UAAY,SAASC,EAAShlB,EAAOC,GAGrD,MAFevM,UAAXsM,IAAuBA,EAAS,IACrBtM,SAAXuM,IAAuBA,EAAS,IACGvM,SAAnC7G,KAAKi4B,UAAUrD,OAAOuD,GACjBn4B,KAAKi4B,UAAUrD,OAAOuD,GAASD,UAAU/kB,EAAMC,GAG/C,qBAAwB+kB,GASnC12B,EAAQsS,UAAUqkB,eAAiB,SAASD,GAC1C,MAAuCtxB,UAAnC7G,KAAKi4B,UAAUrD,OAAOuD,GAChBn4B,KAAKi4B,UAAUrD,OAAOuD,GAAS7O,UAAkEziB,SAAtD7G,KAAKi4B,UAAUlpB,QAAQ6lB,OAAOyD,WAAWF,IAA+E,GAArDn4B,KAAKi4B,UAAUlpB,QAAQ6lB,OAAOyD,WAAWF,KAGxJ,GAWX12B,EAAQsS,UAAU6jB,aAAe,WAC/B,GAAIzzB,GAAM,KACNC,EAAM,IAGV,KAAK,GAAI+zB,KAAWn4B,MAAKi4B,UAAUrD,OACjC,GAAI50B,KAAKi4B,UAAUrD,OAAOzuB,eAAegyB,IACO,GAA1Cn4B,KAAKi4B,UAAUrD,OAAOuD,GAAS7O,QACjC,IAAK,GAAIzjB,GAAI,EAAGA,EAAI7F,KAAKi4B,UAAUrD,OAAOuD,GAAS3B,UAAUxwB,OAAQH,IAAK,CACxE,GAAI8J,GAAO3P,KAAKi4B,UAAUrD,OAAOuD,GAAS3B,UAAU3wB,GAChDvB,EAAQ3D,EAAKuG,QAAQyI,EAAK0C,EAAG,QAAQhL,SACzClD,GAAa,MAAPA,EAAcG,EAAQH,EAAMG,EAAQA,EAAQH,EAClDC,EAAa,MAAPA,EAAcE,EAAcA,EAANF,EAAcE,EAAQF,EAM1D,OACED,IAAa,MAAPA,EAAe,GAAIS,MAAKT,GAAO,KACrCC,IAAa,MAAPA,EAAe,GAAIQ,MAAKR,GAAO,OAMzCvE,EAAOD,QAAU6B,GAKb,SAAS5B,EAAQD,EAASM,GAK9B,GAAI2D,GAAS3D,EAAoB,GAQjCN,GAAQ04B,qBAAuB,SAASlD,EAAMI,GAE5C,GADAJ,EAAKI,eACDA,GACgC,GAA9BlvB,MAAMC,QAAQivB,GAAsB,CACtC,IAAK,GAAI3vB,GAAI,EAAGA,EAAI2vB,EAAYxvB,OAAQH,IACtC,GAA8BgB,SAA1B2uB,EAAY3vB,GAAG0yB,OAAsB,CACvC,GAAIC,KACJA,GAAStoB,MAAQrM,EAAO2xB,EAAY3vB,GAAGqK,OAAO3I,SAASF,UACvDmxB,EAASroB,IAAMtM,EAAO2xB,EAAY3vB,GAAGsK,KAAK5I,SAASF,UACnD+tB,EAAKI,YAAYjtB,KAAKiwB,GAG1BpD,EAAKI,YAAY1e,KAAK,SAAUlR,EAAGa,GACjC,MAAOb,GAAEsK,MAAQzJ,EAAEyJ,UAY3BtQ,EAAQ64B,kBAAoB,SAAUrD,EAAMI,GAC1C,GAAIA,GAAuD3uB,SAAxCuuB,EAAKC,SAASqD,gBAAgBvlB,MAAqB,CACpEvT,EAAQ04B,qBAAqBlD,EAAMI,EAQnC,KAAK,GANDtlB,GAAQrM,EAAOuxB,EAAKe,MAAMjmB,OAC1BC,EAAMtM,EAAOuxB,EAAKe,MAAMhmB,KAExBwoB,EAAcvD,EAAKe,MAAMhmB,IAAMilB,EAAKe,MAAMjmB,MAC1C0oB,EAAYD,EAAavD,EAAKC,SAASqD,gBAAgBvlB,MAElDtN,EAAI,EAAGA,EAAI2vB,EAAYxvB,OAAQH,IACtC,GAA8BgB,SAA1B2uB,EAAY3vB,GAAG0yB,OAAsB,CACvC,GAAIM,GAAYh1B,EAAO2xB,EAAY3vB,GAAGqK,OAClC4oB,EAAUj1B,EAAO2xB,EAAY3vB,GAAGsK,IAEpC,IAAoB,gBAAhB0oB,EAAUE,GACZ,KAAM,IAAIn1B,OAAM,qCAAuC4xB,EAAY3vB,GAAGqK,MAExE,IAAkB,gBAAd4oB,EAAQC,GACV,KAAM,IAAIn1B,OAAM,mCAAqC4xB,EAAY3vB,GAAGsK,IAGtE,IAAIC,GAAW0oB,EAAUD,CACzB,IAAIzoB,GAAY,EAAIwoB,EAAW,CAE7B,GAAIrO,GAAS,EACTyO,EAAW7oB,EAAI8oB,OACnB,QAAQzD,EAAY3vB,GAAG0yB,QACrB,IAAK,QACCM,EAAUK,OAASJ,EAAQI,QAC7B3O,EAAS,GAEXsO,EAAUM,UAAUjpB,EAAMipB,aAC1BN,EAAUO,KAAKlpB,EAAMkpB,QACrBP,EAAU9M,SAAS,EAAE,QAErB+M,EAAQK,UAAUjpB,EAAMipB,aACxBL,EAAQM,KAAKlpB,EAAMkpB,QACnBN,EAAQ/M,SAAS,EAAIxB,EAAO,QAE5ByO,EAASnlB,IAAI,EAAG,QAChB,MACF,KAAK,SACH,GAAIwlB,GAAYP,EAAQ/L,KAAK8L,EAAU,QACnCK,EAAML,EAAUK,KAGpBL,GAAUS,KAAKppB,EAAMopB,QACrBT,EAAUU,MAAMrpB,EAAMqpB,SACtBV,EAAUO,KAAKlpB,EAAMkpB,QACrBN,EAAUD,EAAUI,QAGpBJ,EAAUK,IAAIA,GACdJ,EAAQI,IAAIA,GACZJ,EAAQjlB,IAAIwlB,EAAU,QAEtBR,EAAU9M,SAAS,EAAE,SACrB+M,EAAQ/M,SAAS,EAAE,SAEnBiN,EAASnlB,IAAI,EAAG,QAChB,MACF,KAAK,UACCglB,EAAUU,SAAWT,EAAQS,UAC/BhP,EAAS,GAEXsO,EAAUU,MAAMrpB,EAAMqpB,SACtBV,EAAUO,KAAKlpB,EAAMkpB,QACrBP,EAAU9M,SAAS,EAAE,UAErB+M,EAAQS,MAAMrpB,EAAMqpB,SACpBT,EAAQM,KAAKlpB,EAAMkpB,QACnBN,EAAQ/M,SAAS,EAAE,UACnB+M,EAAQjlB,IAAI0W,EAAO,UAEnByO,EAASnlB,IAAI,EAAG,SAChB,MACF,KAAK,SACCglB,EAAUO,QAAUN,EAAQM,SAC9B7O,EAAS,GAEXsO,EAAUO,KAAKlpB,EAAMkpB,QACrBP,EAAU9M,SAAS,EAAE,SACrB+M,EAAQM,KAAKlpB,EAAMkpB,QACnBN,EAAQ/M,SAAS,EAAE,SACnB+M,EAAQjlB,IAAI0W,EAAO,SAEnByO,EAASnlB,IAAI,EAAG,QAChB,MACF,SAEE,WADA2lB,SAAQpF,IAAI,2EAA4EoB,EAAY3vB,GAAG0yB,QAG3G,KAAmBS,EAAZH,GAEL,OADAzD,EAAKI,YAAYjtB,MAAM2H,MAAO2oB,EAAUxxB,UAAW8I,IAAK2oB,EAAQzxB,YACxDmuB,EAAY3vB,GAAG0yB,QACrB,IAAK,QACHM,EAAUhlB,IAAI,EAAG,QACjBilB,EAAQjlB,IAAI,EAAG,OACf,MACF,KAAK,SACHglB,EAAUhlB,IAAI,EAAG,SACjBilB,EAAQjlB,IAAI,EAAG,QACf,MACF,KAAK,UACHglB,EAAUhlB,IAAI,EAAG,UACjBilB,EAAQjlB,IAAI,EAAG,SACf,MACF,KAAK,SACHglB,EAAUhlB,IAAI,EAAG,KACjBilB,EAAQjlB,IAAI,EAAG,IACf,MACF,SAEE,WADA2lB,SAAQpF,IAAI,2EAA4EoB,EAAY3vB,GAAG0yB,QAI7GnD,EAAKI,YAAYjtB,MAAM2H,MAAO2oB,EAAUxxB,UAAW8I,IAAK2oB,EAAQzxB,aAKtEzH,EAAQ65B,iBAAiBrE,EAEzB,IAAIsE,GAAc95B,EAAQ+5B,SAASvE,EAAKe,MAAMjmB,MAAOklB,EAAKI,aACtDoE,EAAYh6B,EAAQ+5B,SAASvE,EAAKe,MAAMhmB,IAAIilB,EAAKI,aACjDqE,EAAazE,EAAKe,MAAMjmB,MACxB4pB,EAAW1E,EAAKe,MAAMhmB,GACA,IAAtBupB,EAAYK,SAAiBF,EAAwC,GAA3BzE,EAAKe,MAAM6D,aAAuBN,EAAYb,UAAY,EAAIa,EAAYZ,QAAU,GAC1G,GAApBc,EAAUG,SAAmBD,EAAsC,GAAzB1E,EAAKe,MAAM8D,WAAuBL,EAAUf,UAAY,EAAMe,EAAUd,QAAU,IACtG,GAAtBY,EAAYK,QAAsC,GAApBH,EAAUG,SAC1C3E,EAAKe,MAAM+D,YAAYL,EAAYC,KAYzCl6B,EAAQ65B,iBAAmB,SAASrE,GAGlC,IAAK,GAFDI,GAAcJ,EAAKI,YACnB2E,KACKt0B,EAAI,EAAGA,EAAI2vB,EAAYxvB,OAAQH,IACtC,IAAK,GAAIymB,GAAI,EAAGA,EAAIkJ,EAAYxvB,OAAQsmB,IAClCzmB,GAAKymB,GAA8B,GAAzBkJ,EAAYlJ,GAAGrV,QAA2C,GAAzBue,EAAY3vB,GAAGoR,SAExDue,EAAYlJ,GAAGpc,OAASslB,EAAY3vB,GAAGqK,OAASslB,EAAYlJ,GAAGnc,KAAOqlB,EAAY3vB,GAAGsK,IACvFqlB,EAAYlJ,GAAGrV,QAAS,EAGjBue,EAAYlJ,GAAGpc,OAASslB,EAAY3vB,GAAGqK,OAASslB,EAAYlJ,GAAGpc,OAASslB,EAAY3vB,GAAGsK,KAC9FqlB,EAAY3vB,GAAGsK,IAAMqlB,EAAYlJ,GAAGnc,IACpCqlB,EAAYlJ,GAAGrV,QAAS,GAGjBue,EAAYlJ,GAAGnc,KAAOqlB,EAAY3vB,GAAGqK,OAASslB,EAAYlJ,GAAGnc,KAAOqlB,EAAY3vB,GAAGsK,MAC1FqlB,EAAY3vB,GAAGqK,MAAQslB,EAAYlJ,GAAGpc,MACtCslB,EAAYlJ,GAAGrV,QAAS,GAMhC,KAAK,GAAIpR,GAAI,EAAGA,EAAI2vB,EAAYxvB,OAAQH,IAClC2vB,EAAY3vB,GAAGoR,UAAW,GAC5BkjB,EAAU5xB,KAAKitB,EAAY3vB,GAI/BuvB,GAAKI,YAAc2E,EACnB/E,EAAKI,YAAY1e,KAAK,SAAUlR,EAAGa,GACjC,MAAOb,GAAEsK,MAAQzJ,EAAEyJ,SAIvBtQ,EAAQw6B,WAAa,SAASC,GAC5B,IAAK,GAAIx0B,GAAG,EAAGA,EAAIw0B,EAAMr0B,OAAQH,IAC/B2zB,QAAQpF,IAAIvuB,EAAG,GAAIjB,MAAKy1B,EAAMx0B,GAAGqK,OAAO,GAAItL,MAAKy1B,EAAMx0B,GAAGsK,KAAMkqB,EAAMx0B,GAAGqK,MAAOmqB,EAAMx0B,GAAGsK,IAAKkqB,EAAMx0B,GAAGoR,SAS3GrX,EAAQ06B,oBAAsB,SAASC,EAAUC,GAG/C,IAAK,GAFDC,IAAe,EACfC,EAAeH,EAASI,QAAQtzB,UAC3BxB,EAAI,EAAGA,EAAI00B,EAAS/E,YAAYxvB,OAAQH,IAAK,CACpD,GAAIgzB,GAAY0B,EAAS/E,YAAY3vB,GAAGqK,MACpC4oB,EAAUyB,EAAS/E,YAAY3vB,GAAGsK,GACtC,IAAIuqB,GAAgB7B,GAA4BC,EAAf4B,EAAwB,CACvDD,GAAe,CACf,QAIJ,GAAoB,GAAhBA,GAAwBC,EAAeH,EAAS3G,KAAKvsB,WAAaqzB,GAAgBF,EAAc,CAClG,GAAIzqB,GAAYlM,EAAO22B,GACnBI,EAAW/2B,EAAOi1B,EAElB/oB,GAAUqpB,QAAUwB,EAASxB,OAASmB,EAASM,cAAe,EACzD9qB,EAAUwpB,SAAWqB,EAASrB,QAAUgB,EAASO,eAAgB,EACjE/qB,EAAUopB,aAAeyB,EAASzB,cAAcoB,EAASQ,aAAc,GAEhFR,EAASI,QAAUC,EAASrzB,WAmChC3H,EAAQ+1B,SAAW,SAASkB,EAAMmE,EAAM7nB,GACtC,GAAoC,GAAhC0jB,EAAKzB,KAAKI,YAAYxvB,OAAa,CACrC,GAAIi1B,GAAapE,EAAKV,MAAM8E,WAAW9nB,EACvC,QAAQ6nB,EAAK3zB,UAAY4zB,EAAW1Q,QAAU0Q,EAAW12B,MAGzD,GAAIw1B,GAASn6B,EAAQ+5B,SAASqB,EAAMnE,EAAKzB,KAAKI,YACzB,IAAjBuE,EAAOA,SACTiB,EAAOjB,EAAOlB,UAGhB,IAAIzoB,GAAWxQ,EAAQs7B,yBAAyBrE,EAAKzB,KAAKI,YAAaqB,EAAKV,MAAMjmB,MAAO2mB,EAAKV,MAAMhmB,IACpG6qB,GAAOp7B,EAAQu7B,qBAAqBtE,EAAKzB,KAAKI,YAAaqB,EAAKV,MAAO6E,EAEvE,IAAIC,GAAapE,EAAKV,MAAM8E,WAAW9nB,EAAO/C,EAC9C,QAAQ4qB,EAAK3zB,UAAY4zB,EAAW1Q,QAAU0Q,EAAW12B,OAa7D3E,EAAQm2B,OAAS,SAASc,EAAMxkB,EAAGc,GACjC,GAAoC,GAAhC0jB,EAAKzB,KAAKI,YAAYxvB,OAAa,CACrC,GAAIi1B,GAAapE,EAAKV,MAAM8E,WAAW9nB,EACvC,OAAO,IAAIvO,MAAKyN,EAAI4oB,EAAW12B,MAAQ02B,EAAW1Q,QAGlD,GAAI6Q,GAAiBx7B,EAAQs7B,yBAAyBrE,EAAKzB,KAAKI,YAAaqB,EAAKV,MAAMjmB,MAAO2mB,EAAKV,MAAMhmB,KACtGkrB,EAAgBxE,EAAKV,MAAMhmB,IAAM0mB,EAAKV,MAAMjmB,MAAQkrB,EACpDE,EAAkBD,EAAgBhpB,EAAIc,EACtCooB,EAA4B37B,EAAQ47B,6BAA6B3E,EAAKzB,KAAKI,YAAaqB,EAAKV,MAAOmF,GAEpGG,EAAU,GAAI72B,MAAK22B,EAA4BD,EAAkBzE,EAAKV,MAAMjmB,MAChF,OAAOurB,IAYX77B,EAAQs7B,yBAA2B,SAAS1F,EAAatlB,EAAOC,GAE9D,IAAK,GADDC,GAAW,EACNvK,EAAI,EAAGA,EAAI2vB,EAAYxvB,OAAQH,IAAK,CAC3C,GAAIgzB,GAAYrD,EAAY3vB,GAAGqK,MAC3B4oB,EAAUtD,EAAY3vB,GAAGsK,GAEzB0oB,IAAa3oB,GAAmBC,EAAV2oB,IACxB1oB,GAAY0oB,EAAUD,GAG1B,MAAOzoB,IAWTxQ,EAAQu7B,qBAAuB,SAAS3F,EAAaW,EAAO6E,GAG1D,MAFAA,GAAOn3B,EAAOm3B,GAAMzzB,SAASF,UAC7B2zB,GAAQp7B,EAAQ87B,wBAAwBlG,EAAYW,EAAM6E,IAI5Dp7B,EAAQ87B,wBAA0B,SAASlG,EAAaW,EAAO6E,GAC7D,GAAIW,GAAa,CACjBX,GAAOn3B,EAAOm3B,GAAMzzB,SAASF,SAE7B,KAAK,GAAIxB,GAAI,EAAGA,EAAI2vB,EAAYxvB,OAAQH,IAAK,CAC3C,GAAIgzB,GAAYrD,EAAY3vB,GAAGqK,MAC3B4oB,EAAUtD,EAAY3vB,GAAGsK,GAEzB0oB,IAAa1C,EAAMjmB,OAAS4oB,EAAU3C,EAAMhmB,KAC1C6qB,GAAQlC,IACV6C,GAAe7C,EAAUD,GAI/B,MAAO8C,IAWT/7B,EAAQ47B,6BAA+B,SAAShG,EAAaW,EAAOyF,GAKlE,IAAK,GAJDR,GAAiB,EACjBhrB,EAAW,EACXyrB,EAAgB1F,EAAMjmB,MAEjBrK,EAAI,EAAGA,EAAI2vB,EAAYxvB,OAAQH,IAAK,CAC3C,GAAIgzB,GAAYrD,EAAY3vB,GAAGqK,MAC3B4oB,EAAUtD,EAAY3vB,GAAGsK,GAE7B,IAAI0oB,GAAa1C,EAAMjmB,OAAS4oB,EAAU3C,EAAMhmB,IAAK,CAGnD,GAFAC,GAAYyoB,EAAYgD,EACxBA,EAAgB/C,EACZ1oB,GAAYwrB,EACd,KAGAR,IAAkBtC,EAAUD,GAKlC,MAAOuC,IAaTx7B,EAAQk8B,mBAAqB,SAAStG,EAAawF,EAAMe,EAAWC,GAClE,GAAIrC,GAAW/5B,EAAQ+5B,SAASqB,EAAMxF,EACtC,OAAuB,IAAnBmE,EAASI,OACK,EAAZgC,EACuB,GAArBC,EACKrC,EAASd,WAAac,EAASb,QAAUkC,GAAQ,EAGjDrB,EAASd,UAAY,EAIL,GAArBmD,EACKrC,EAASb,SAAWkC,EAAOrB,EAASd,WAAa,EAGjDc,EAASb,QAAU,EAKvBkC,GAaXp7B,EAAQ+5B,SAAW,SAASqB,EAAMxF,GAChC,IAAK,GAAI3vB,GAAI,EAAGA,EAAI2vB,EAAYxvB,OAAQH,IAAK,CAC3C,GAAIgzB,GAAYrD,EAAY3vB,GAAGqK,MAC3B4oB,EAAUtD,EAAY3vB,GAAGsK,GAE7B,IAAI6qB,GAAQnC,GAAoBC,EAAPkC,EACvB,OAAQjB,QAAQ,EAAMlB,UAAWA,EAAWC,QAASA,GAIzD,OAAQiB,QAAQ,EAAOlB,UAAWA,EAAWC,QAASA,KAKpD,SAASj5B,GA4Bb,QAAS+B,GAASsO,EAAOC,EAAK8rB,EAAaC,EAAiBC,EAAaC,GAEvEp8B,KAAK26B,QAAU,EAEf36B,KAAKq8B,WAAY,EACjBr8B,KAAKs8B,UAAY,EACjBt8B,KAAKgpB,KAAO,EACZhpB,KAAKuE,MAAQ,EAEbvE,KAAKu8B,YACLv8B,KAAKw8B,UACLx8B,KAAKy8B,UAAY,EAEjBz8B,KAAK08B,YAAc,EAAO,EAAM,EAAI,IACpC18B,KAAK28B,YAAc,IAAO,GAAM,EAAI,GAEpC38B,KAAKo8B,WAAaA,EAElBp8B,KAAKg0B,SAAS9jB,EAAOC,EAAK8rB,EAAaC,EAAiBC,GAe1Dv6B,EAASmS,UAAUigB,SAAW,SAAS9jB,EAAOC,EAAK8rB,EAAaC,EAAiBC,GAC/En8B,KAAK2zB,OAA6B9sB,SAApBs1B,EAAYh4B,IAAoB+L,EAAQisB,EAAYh4B,IAClEnE,KAAK4zB,KAA2B/sB,SAApBs1B,EAAY/3B,IAAoB+L,EAAMgsB,EAAY/3B,IAE1DpE,KAAK2zB,QAAU3zB,KAAK4zB,OACtB5zB,KAAK2zB,QAAU,IACf3zB,KAAK4zB,MAAQ,GAGO,GAAlB5zB,KAAKq8B,WACPr8B,KAAK48B,eAAeX,EAAaC,GAGnCl8B,KAAK68B,SAASV,IAOhBv6B,EAASmS,UAAU6oB,eAAiB,SAASX,EAAaC,GAExD,GAAItpB,GAAO5S,KAAK4zB,KAAO5zB,KAAK2zB,OACxBmJ,EAAkB,IAAPlqB,EACXmqB,EAAmBd,GAAea,EAAWZ,GAC7Cc,EAAmBx4B,KAAK4pB,MAAM5pB,KAAK4vB,IAAI0I,GAAUt4B,KAAK6vB,MAEtD4I,EAAe,GACfC,EAAkB14B,KAAK+vB,IAAI,GAAGyI,GAE9B9sB,EAAQ,CACW,GAAnB8sB,IACF9sB,EAAQ8sB,EAIV,KAAK,GADDG,IAAgB,EACXt3B,EAAIqK,EAAO1L,KAAK+mB,IAAI1lB,IAAMrB,KAAK+mB,IAAIyR,GAAmBn3B,IAAK,CAClEq3B,EAAkB14B,KAAK+vB,IAAI,GAAG1uB,EAC9B,KAAK,GAAIymB,GAAI,EAAGA,EAAItsB,KAAK28B,WAAW32B,OAAQsmB,IAAK,CAC/C,GAAI8Q,GAAWF,EAAkBl9B,KAAK28B,WAAWrQ,EACjD,IAAI8Q,GAAYL,EAAkB,CAChCI,GAAgB,EAChBF,EAAe3Q,CACf,QAGJ,GAAqB,GAAjB6Q,EACF,MAGJn9B,KAAKs8B,UAAYW,EACjBj9B,KAAKuE,MAAQ24B,EACbl9B,KAAKgpB,KAAOkU,EAAkBl9B,KAAK28B,WAAWM,IAShDr7B,EAASmS,UAAU8oB,SAAW,SAASV,GACjBt1B,SAAhBs1B,IACFA,KAGF,IAAIkB,GAAgCx2B,SAApBs1B,EAAYh4B,IAAoBnE,KAAK2zB,OAAuB,EAAb3zB,KAAKuE,MAAYvE,KAAK28B,WAAW38B,KAAKs8B,WAAcH,EAAYh4B,IAC3Hm5B,EAA8Bz2B,SAApBs1B,EAAY/3B,IAAoBpE,KAAK4zB,KAAQ5zB,KAAKuE,MAAQvE,KAAK28B,WAAW38B,KAAKs8B,WAAcH,EAAY/3B,GAEvHpE,MAAKw8B,UAAgC31B,SAApBs1B,EAAY/3B,IAAoBpE,KAAKu9B,aAAaD,GAAWnB,EAAY/3B,IAC1FpE,KAAKu8B,YAAkC11B,SAApBs1B,EAAYh4B,IAAoBnE,KAAKu9B,aAAaF,GAAalB,EAAYh4B,IAGvE,GAAnBnE,KAAKo8B,aAAuBp8B,KAAKw8B,UAAYx8B,KAAKu8B,aAAev8B,KAAKgpB,MAAQ,IAChFhpB,KAAKw8B,WAAax8B,KAAKw8B,UAAYx8B,KAAKgpB,MAG1ChpB,KAAKy8B,UAAYz8B,KAAKu9B,aAAaD,GAAWA,EAAUt9B,KAAKu9B,aAAaF,GAAaA,EACvFr9B,KAAKw9B,YAAcx9B,KAAKw8B,UAAYx8B,KAAKu8B,YAGzCv8B,KAAK26B,QAAU36B,KAAKw8B,WAGtB56B,EAASmS,UAAUwpB,aAAe,SAASj5B,GACzC,GAAIm5B,GAAUn5B,EAASA,GAAStE,KAAKuE,MAAQvE,KAAK28B,WAAW38B,KAAKs8B,WAClE,OAAIh4B,IAAStE,KAAKuE,MAAQvE,KAAK28B,WAAW38B,KAAKs8B,YAAc,GAAOt8B,KAAKuE,MAAQvE,KAAK28B,WAAW38B,KAAKs8B,WAC7FmB,EAAWz9B,KAAKuE,MAAQvE,KAAK28B,WAAW38B,KAAKs8B,WAG7CmB,GASX77B,EAASmS,UAAU2pB,QAAU,WAC3B,MAAQ19B,MAAK26B,SAAW36B,KAAKu8B,aAM/B36B,EAASmS,UAAUmV,KAAO,WACxB,GAAImJ,GAAOryB,KAAK26B,OAChB36B,MAAK26B,SAAW36B,KAAKgpB,KAGjBhpB,KAAK26B,SAAWtI,IAClBryB,KAAK26B,QAAU36B,KAAK4zB,OAOxBhyB,EAASmS,UAAU4pB,SAAW,WAC5B39B,KAAK26B,SAAW36B,KAAKgpB,KACrBhpB,KAAKw8B,WAAax8B,KAAKgpB,KACvBhpB,KAAKw9B,YAAcx9B,KAAKw8B,UAAYx8B,KAAKu8B,aAS3C36B,EAASmS,UAAUkV,WAAa,SAAS2U,GAEvC,GAAIjD,GAAWn2B,KAAK+mB,IAAIvrB,KAAK26B,SAAW36B,KAAKgpB,KAAO,EAAK,EAAIhpB,KAAK26B,QAC9DjG,EAAc,GAAKzwB,OAAO02B,GAASjG,YAAY,EAGnD,IAAgB7tB,SAAb+2B,GAA2B54B,MAAMf,OAAO25B,KAqCzC,GAAgC,IAA5BlJ,EAAY1tB,QAAQ,MAA0C,IAA5B0tB,EAAY1tB,QAAQ,KAExD,IAAK,GAAInB,GAAI6uB,EAAY1uB,OAAS,EAAGH,EAAI,EAAGA,IAAK,CAC/C,GAAsB,KAAlB6uB,EAAY7uB,GAGX,CAAA,GAAsB,KAAlB6uB,EAAY7uB,IAA+B,KAAlB6uB,EAAY7uB,GAAW,CACvD6uB,EAAcA,EAAY9oB,MAAM,EAAG/F,EACnC,OAGA,MAPA6uB,EAAcA,EAAY9oB,MAAM,EAAG/F,QAzCY,CAErD,GAAIg4B,GAAM,GACNn1B,EAAQgsB,EAAY1tB,QAAQ,IAoBhC,IAnBY,IAAT0B,IAEDm1B,EAAMnJ,EAAY9oB,MAAMlD,GAExBgsB,EAAcA,EAAY9oB,MAAM,EAAGlD,IAErCA,EAAQlE,KAAKJ,IAAIswB,EAAY1tB,QAAQ,KAAM0tB,EAAY1tB,QAAQ,MAClD,KAAV0B,GAEe,IAAbk1B,IACDlJ,GAAe,KAGjBhsB,EAAQgsB,EAAY1uB,OAAS43B,GAEV,IAAbA,IAENl1B,GAASk1B,EAAW,GAEnBl1B,EAAQgsB,EAAY1uB,OAErB,IAAI,GAAI83B,GAAMp1B,EAAQgsB,EAAY1uB,OAAQ83B,EAAM,EAAGA,IACjDpJ,GAAe,QAKjBA,GAAcA,EAAY9oB,MAAM,EAAGlD,EAGrCgsB,IAAemJ,EAoBjB,MAAOnJ,IAQT9yB,EAASmS,UAAUgqB,QAAU,WAC3B,MAAQ/9B,MAAK26B,SAAW36B,KAAKuE,MAAQvE,KAAK08B,WAAW18B,KAAKs8B,aAAe,GAG3Ez8B,EAAOD,QAAUgC,GAKb,SAAS/B,EAAQD,EAASM,GAgB9B,QAAS2B,GAAMuzB,EAAMrmB,GACnB,GAAIivB,GAAMn6B,IAASo6B,MAAM,GAAGC,QAAQ,GAAGC,QAAQ,GAAGC,aAAa,EAC/Dp+B,MAAKkQ,MAAQ8tB,EAAI/E,QAAQplB,IAAI,GAAI,QAAQxM,UACzCrH,KAAKmQ,IAAM6tB,EAAI/E,QAAQplB,IAAI,EAAG,QAAQxM,UAEtCrH,KAAKo1B,KAAOA,EACZp1B,KAAKq+B,gBAAkB,EACvBr+B,KAAKs+B,YAAc,EACnBt+B,KAAKg6B,cAAe,EACpBh6B,KAAKi6B,YAAa,EAGlBj6B,KAAK80B,gBACH5kB,MAAO,KACPC,IAAK,KACL4rB,UAAW,aACXwC,UAAU,EACVC,UAAU,EACVr6B,IAAK,KACLC,IAAK,KACLq6B,QAAS,GACTC,QAAS,UAEX1+B,KAAK+O,QAAUpO,EAAKgF,UAAW3F,KAAK80B,gBAEpC90B,KAAKqG,OACHs4B,UAEF3+B,KAAK4+B,aAAe,KAGpB5+B,KAAKo1B,KAAKE,QAAQnhB,GAAG,YAAanU,KAAK6+B,aAAatJ,KAAKv1B,OACzDA,KAAKo1B,KAAKE,QAAQnhB,GAAG,OAAanU,KAAK8+B,QAAQvJ,KAAKv1B,OACpDA,KAAKo1B,KAAKE,QAAQnhB,GAAG,UAAanU,KAAK++B,WAAWxJ,KAAKv1B,OAGvDA,KAAKo1B,KAAKE,QAAQnhB,GAAG,OAAQnU,KAAKg/B,QAAQzJ,KAAKv1B,OAG/CA,KAAKo1B,KAAKE,QAAQnhB,GAAG,aAAmBnU,KAAKi/B,cAAc1J,KAAKv1B,OAChEA,KAAKo1B,KAAKE,QAAQnhB,GAAG,iBAAmBnU,KAAKi/B,cAAc1J,KAAKv1B,OAGhEA,KAAKo1B,KAAKE,QAAQnhB,GAAG,QAASnU,KAAKk/B,SAAS3J,KAAKv1B,OACjDA,KAAKo1B,KAAKE,QAAQnhB,GAAG,QAASnU,KAAKm/B,SAAS5J,KAAKv1B,OAEjDA,KAAK8T,WAAW/E,GAsClB,QAASqwB,GAAmBrD,GAC1B,GAAiB,cAAbA,GAA0C,YAAbA,EAC/B,KAAM,IAAIr1B,WAAU,sBAAwBq1B,EAAY,yCAif5D,QAASsD,GAAYV,EAAOx1B,GAC1B,OACEkJ,EAAGssB,EAAMW,MAAQ3+B,EAAK+G,gBAAgByB,GACtCmJ,EAAGqsB,EAAMY,MAAQ5+B,EAAKqH,eAAemB,IAxlBzC,GAAIxI,GAAOT,EAAoB,GAC3Bs/B,EAAat/B,EAAoB,IACjC2D,EAAS3D,EAAoB,IAC7BqC,EAAYrC,EAAoB,IAChCyB,EAAWzB,EAAoB,GA2DnC2B,GAAMkS,UAAY,GAAIxR,GAkBtBV,EAAMkS,UAAUD,WAAa,SAAU/E,GACrC,GAAIA,EAAS,CAEX,GAAIP,IAAU,YAAa,MAAO,MAAO,UAAW,UAAW,WAAY,WAAY,WAAY,cACnG7N,GAAKyF,gBAAgBoI,EAAQxO,KAAK+O,QAASA,IAEvC,SAAWA,IAAW,OAASA,KAEjC/O,KAAKg0B,SAASjlB,EAAQmB,MAAOnB,EAAQoB,OA4B3CtO,EAAMkS,UAAUigB,SAAW,SAAS9jB,EAAOC,EAAKknB,EAASoI,GACnDA,KAAW,IACbA,GAAS,EAEX,IAAI9L,GAAkB9sB,QAATqJ,EAAqBvP,EAAKuG,QAAQgJ,EAAO,QAAQ7I,UAAY,KACtEusB,EAAgB/sB,QAAPsJ,EAAqBxP,EAAKuG,QAAQiJ,EAAK,QAAQ9I,UAAc,IAG1E,IAFArH,KAAK0/B,mBAEDrI,EAAS,CACX,GAAItiB,GAAK/U,KACL2/B,EAAY3/B,KAAKkQ,MACjB0vB,EAAU5/B,KAAKmQ,IACfC,EAA8B,gBAAZinB,GAAuBA,EAAU,IACnDwI,GAAW,GAAIj7B,OAAOyC,UACtBy4B,GAAa,EAEb5W,EAAO,WACT,IAAKnU,EAAG1O,MAAMs4B,MAAMoB,SAAU,CAC5B,GAAI/B,IAAM,GAAIp5B,OAAOyC,UACjB2zB,EAAOgD,EAAM6B,EACbG,EAAOhF,EAAO5qB,EACdhE,EAAK4zB,GAAmB,OAAXrM,EAAmBA,EAAShzB,EAAKsP,cAAc+qB,EAAM2E,EAAWhM,EAAQvjB,GACrFunB,EAAKqI,GAAiB,OAATpM,EAAmBA,EAASjzB,EAAKsP,cAAc+qB,EAAM4E,EAAShM,EAAMxjB,EAErF6vB,GAAUlrB,EAAGmlB,YAAY9tB,EAAGurB,GAC5Bh2B,EAAS82B,kBAAkB1jB,EAAGqgB,KAAMrgB,EAAGhG,QAAQymB,aAC/CsK,EAAaA,GAAcG,EACvBA,GACFlrB,EAAGqgB,KAAKE,QAAQhH,KAAK,eAAgBpe,MAAO,GAAItL,MAAKmQ,EAAG7E,OAAQC,IAAK,GAAIvL,MAAKmQ,EAAG5E,KAAMsvB,OAAOA,IAG5FO,EACEF,GACF/qB,EAAGqgB,KAAKE,QAAQhH,KAAK,gBAAiBpe,MAAO,GAAItL,MAAKmQ,EAAG7E,OAAQC,IAAK,GAAIvL,MAAKmQ,EAAG5E,KAAMsvB,OAAOA,IAMjG1qB,EAAG6pB,aAAexkB,WAAW8O,EAAM,KAKzC,OAAOA,KAGP,GAAI+W,GAAUjgC,KAAKk6B,YAAYvG,EAAQC,EAEvC,IADAjyB,EAAS82B,kBAAkBz4B,KAAKo1B,KAAMp1B,KAAK+O,QAAQymB,aAC/CyK,EAAS,CACX,GAAIvrB,IAAUxE,MAAO,GAAItL,MAAK5E,KAAKkQ,OAAQC,IAAK,GAAIvL,MAAK5E,KAAKmQ,KAAMsvB,OAAOA,EAC3Ez/B,MAAKo1B,KAAKE,QAAQhH,KAAK,cAAe5Z,GACtC1U,KAAKo1B,KAAKE,QAAQhH,KAAK,eAAgB5Z,KAS7C7S,EAAMkS,UAAU2rB,iBAAmB,WAC7B1/B,KAAK4+B,eACPzkB,aAAana,KAAK4+B,cAClB5+B,KAAK4+B,aAAe,OAaxB/8B,EAAMkS,UAAUmmB,YAAc,SAAShqB,EAAOC,GAC5C,GAII4c,GAJAmT,EAAqB,MAAThwB,EAAiBvP,EAAKuG,QAAQgJ,EAAO,QAAQ7I,UAAYrH,KAAKkQ,MAC1EiwB,EAAmB,MAAPhwB,EAAiBxP,EAAKuG,QAAQiJ,EAAK,QAAQ9I,UAAcrH,KAAKmQ,IAC1E/L,EAA2B,MAApBpE,KAAK+O,QAAQ3K,IAAezD,EAAKuG,QAAQlH,KAAK+O,QAAQ3K,IAAK,QAAQiD,UAAY,KACtFlD,EAA2B,MAApBnE,KAAK+O,QAAQ5K,IAAexD,EAAKuG,QAAQlH,KAAK+O,QAAQ5K,IAAK,QAAQkD,UAAY,IAI1F,IAAIrC,MAAMk7B,IAA0B,OAAbA,EACrB,KAAM,IAAIt8B,OAAM,kBAAoBsM,EAAQ,IAE9C,IAAIlL,MAAMm7B,IAAsB,OAAXA,EACnB,KAAM,IAAIv8B,OAAM,gBAAkBuM,EAAM,IAyC1C,IArCa+vB,EAATC,IACFA,EAASD,GAIC,OAAR/7B,GACaA,EAAX+7B,IACFnT,EAAQ5oB,EAAM+7B,EACdA,GAAYnT,EACZoT,GAAUpT,EAGC,MAAP3oB,GACE+7B,EAAS/7B,IACX+7B,EAAS/7B,IAOL,OAARA,GACE+7B,EAAS/7B,IACX2oB,EAAQoT,EAAS/7B,EACjB87B,GAAYnT,EACZoT,GAAUpT,EAGC,MAAP5oB,GACaA,EAAX+7B,IACFA,EAAW/7B,IAOU,OAAzBnE,KAAK+O,QAAQ0vB,QAAkB,CACjC,GAAIA,GAAUvY,WAAWlmB,KAAK+O,QAAQ0vB,QACxB,GAAVA,IACFA,EAAU,GAEcA,EAArB0B,EAASD,IACPlgC,KAAKmQ,IAAMnQ,KAAKkQ,QAAWuuB,GAAWyB,EAAWlgC,KAAKkQ,OAASiwB,EAASngC,KAAKmQ,KAEhF+vB,EAAWlgC,KAAKkQ,MAChBiwB,EAASngC,KAAKmQ,MAId4c,EAAQ0R,GAAW0B,EAASD,GAC5BA,GAAYnT,EAAO,EACnBoT,GAAUpT,EAAO,IAMvB,GAA6B,OAAzB/sB,KAAK+O,QAAQ2vB,QAAkB,CACjC,GAAIA,GAAUxY,WAAWlmB,KAAK+O,QAAQ2vB,QACxB,GAAVA,IACFA,EAAU,GAGPyB,EAASD,EAAYxB,IACnB1+B,KAAKmQ,IAAMnQ,KAAKkQ,QAAWwuB,GAAWwB,EAAWlgC,KAAKkQ,OAASiwB,EAASngC,KAAKmQ,KAEhF+vB,EAAWlgC,KAAKkQ,MAChBiwB,EAASngC,KAAKmQ,MAId4c,EAASoT,EAASD,EAAYxB,EAC9BwB,GAAYnT,EAAO,EACnBoT,GAAUpT,EAAO,IAKvB,GAAIkT,GAAWjgC,KAAKkQ,OAASgwB,GAAYlgC,KAAKmQ,KAAOgwB,CAUrD,OAPOD,IAAYlgC,KAAKkQ,OAASgwB,GAAclgC,KAAKmQ,KAASgwB,GAAYngC,KAAKkQ,OAASiwB,GAAYngC,KAAKmQ,KACjGnQ,KAAKkQ,OAASgwB,GAAYlgC,KAAKkQ,OAASiwB,GAAcngC,KAAKmQ,KAAO+vB,GAAclgC,KAAKmQ,KAAOgwB,GACjGngC,KAAKo1B,KAAKE,QAAQhH,KAAK,oBAGzBtuB,KAAKkQ,MAAQgwB,EACblgC,KAAKmQ,IAAMgwB,EACJF,GAOTp+B,EAAMkS,UAAUqsB,SAAW,WACzB,OACElwB,MAAOlQ,KAAKkQ,MACZC,IAAKnQ,KAAKmQ,MAUdtO,EAAMkS,UAAUknB,WAAa,SAAU9nB,EAAOktB,GAC5C,MAAOx+B,GAAMo5B,WAAWj7B,KAAKkQ,MAAOlQ,KAAKmQ,IAAKgD,EAAOktB,IAWvDx+B,EAAMo5B,WAAa,SAAU/qB,EAAOC,EAAKgD,EAAOktB,GAI9C,MAHoBx5B,UAAhBw5B,IACFA,EAAc,GAEH,GAATltB,GAAehD,EAAMD,GAAS,GAE9Bqa,OAAQra,EACR3L,MAAO4O,GAAShD,EAAMD,EAAQmwB,KAK9B9V,OAAQ,EACRhmB,MAAO,IAUb1C,EAAMkS,UAAU8qB,aAAe,WAC7B7+B,KAAKq+B,gBAAkB,EACvBr+B,KAAKsgC,cAAgB,EAEhBtgC,KAAK+O,QAAQwvB,UAIbv+B,KAAKqG,MAAMs4B,MAAM4B,gBAEtBvgC,KAAKqG,MAAMs4B,MAAMzuB,MAAQlQ,KAAKkQ,MAC9BlQ,KAAKqG,MAAMs4B,MAAMxuB,IAAMnQ,KAAKmQ,IAC5BnQ,KAAKqG,MAAMs4B,MAAMoB,UAAW,EAExB//B,KAAKo1B,KAAK5E,IAAI9wB,OAChBM,KAAKo1B,KAAK5E,IAAI9wB,KAAK6N,MAAMmgB,OAAS,UAStC7rB,EAAMkS,UAAU+qB,QAAU,SAAUj1B,GAElC,GAAK7J,KAAK+O,QAAQwvB,UAGbv+B,KAAKqG,MAAMs4B,MAAM4B,cAAtB,CAEA,GAAIxE,GAAY/7B,KAAK+O,QAAQgtB,SAC7BqD,GAAkBrD,EAElB,IAAI5M,GAAsB,cAAb4M,EAA6BlyB,EAAM22B,QAAQC,OAAS52B,EAAM22B,QAAQE,MAC/EvR,IAASnvB,KAAKq+B,eACd,IAAIpL,GAAYjzB,KAAKqG,MAAMs4B,MAAMxuB,IAAMnQ,KAAKqG,MAAMs4B,MAAMzuB,MAGpDE,EAAWzO,EAASu5B,yBAAyBl7B,KAAKo1B,KAAKI,YAAax1B,KAAKkQ,MAAOlQ,KAAKmQ,IACzF8iB,IAAY7iB,CAEZ,IAAI+C,GAAsB,cAAb4oB,EAA6B/7B,KAAKo1B,KAAKC,SAASzI,OAAOzZ,MAAQnT,KAAKo1B,KAAKC,SAASzI,OAAOxZ,OAClGutB,GAAaxR,EAAQhc,EAAQ8f,EAC7BiN,EAAWlgC,KAAKqG,MAAMs4B,MAAMzuB,MAAQywB,EACpCR,EAASngC,KAAKqG,MAAMs4B,MAAMxuB,IAAMwwB,EAIhCC,EAAYj/B,EAASm6B,mBAAmB97B,KAAKo1B,KAAKI,YAAa0K,EAAUlgC,KAAKsgC,cAAcnR,GAAO,GACnG0R,EAAUl/B,EAASm6B,mBAAmB97B,KAAKo1B,KAAKI,YAAa2K,EAAQngC,KAAKsgC,cAAcnR,GAAO,EACnG,IAAIyR,GAAaV,GAAYW,GAAWV,EAKtC,MAJAngC,MAAKq+B,iBAAmBlP,EACxBnvB,KAAKqG,MAAMs4B,MAAMzuB,MAAQ0wB,EACzB5gC,KAAKqG,MAAMs4B,MAAMxuB,IAAM0wB,MACvB7gC,MAAK8+B,QAAQj1B,EAIf7J,MAAKsgC,cAAgBnR,EACrBnvB,KAAKk6B,YAAYgG,EAAUC,GAG3BngC,KAAKo1B,KAAKE,QAAQhH,KAAK,eACrBpe,MAAO,GAAItL,MAAK5E,KAAKkQ,OACrBC,IAAO,GAAIvL,MAAK5E,KAAKmQ,KACrBsvB,QAAQ,MASZ59B,EAAMkS,UAAUgrB,WAAa,WAEtB/+B,KAAK+O,QAAQwvB,UAIbv+B,KAAKqG,MAAMs4B,MAAM4B,gBAEtBvgC,KAAKqG,MAAMs4B,MAAMoB,UAAW,EACxB//B,KAAKo1B,KAAK5E,IAAI9wB,OAChBM,KAAKo1B,KAAK5E,IAAI9wB,KAAK6N,MAAMmgB,OAAS,QAIpC1tB,KAAKo1B,KAAKE,QAAQhH,KAAK,gBACrBpe,MAAO,GAAItL,MAAK5E,KAAKkQ,OACrBC,IAAO,GAAIvL,MAAK5E,KAAKmQ,KACrBsvB,QAAQ,MAUZ59B,EAAMkS,UAAUkrB,cAAgB,SAASp1B,GAEvC,GAAM7J,KAAK+O,QAAQyvB,UAAYx+B,KAAK+O,QAAQwvB,SAA5C,CAGA,GAAIpP,GAAQ,CAYZ,IAXItlB,EAAMulB,WACRD,EAAQtlB,EAAMulB,WAAa,IAClBvlB,EAAMwlB,SAGfF,GAAStlB,EAAMwlB,OAAS,GAMtBF,EAAO,CAKT,GAAI5qB,EAEFA,GADU,EAAR4qB,EACM,EAAKA,EAAQ,EAGb,GAAK,EAAKA,EAAQ,EAI5B,IAAIqR,GAAUhB,EAAWsB,YAAY9gC,KAAM6J,GACvCk3B,EAAU1B,EAAWmB,EAAQ5T,OAAQ5sB,KAAKo1B,KAAK5E,IAAI5D,QACnDoU,EAAchhC,KAAKihC,eAAeF,EAEtC/gC,MAAKkhC,KAAK38B,EAAOy8B,EAAa7R,GAKhCtlB,EAAMD,mBAOR/H,EAAMkS,UAAUmrB,SAAW,WACzBl/B,KAAKqG,MAAMs4B,MAAMzuB,MAAQlQ,KAAKkQ,MAC9BlQ,KAAKqG,MAAMs4B,MAAMxuB,IAAMnQ,KAAKmQ,IAC5BnQ,KAAKqG,MAAMs4B,MAAM4B,eAAgB,EACjCvgC,KAAKqG,MAAMs4B,MAAM/R,OAAS,KAC1B5sB,KAAKs+B,YAAc,EACnBt+B,KAAKq+B,gBAAkB,GAOzBx8B,EAAMkS,UAAUirB,QAAU,WACxBh/B,KAAKqG,MAAMs4B,MAAM4B,eAAgB,GAQnC1+B,EAAMkS,UAAUorB,SAAW,SAAUt1B,GAEnC,GAAM7J,KAAK+O,QAAQyvB,UAAYx+B,KAAK+O,QAAQwvB,WAE5Cv+B,KAAKqG,MAAMs4B,MAAM4B,eAAgB,EAE7B12B,EAAM22B,QAAQW,QAAQn7B,OAAS,GAAG,CAC/BhG,KAAKqG,MAAMs4B,MAAM/R,SACpB5sB,KAAKqG,MAAMs4B,MAAM/R,OAASyS,EAAWx1B,EAAM22B,QAAQ5T,OAAQ5sB,KAAKo1B,KAAK5E,IAAI5D,QAG3E,IAAIroB,GAAQ,GAAKsF,EAAM22B,QAAQj8B,MAAQvE,KAAKs+B,aACxC8C,EAAaphC,KAAKihC,eAAejhC,KAAKqG,MAAMs4B,MAAM/R,QAElDwO,EAAiBz5B,EAASu5B,yBAAyBl7B,KAAKo1B,KAAKI,YAAax1B,KAAKkQ,MAAOlQ,KAAKmQ,KAC3FkxB,EAAuB1/B,EAAS+5B,wBAAwB17B,KAAKo1B,KAAKI,YAAax1B,KAAMohC,GACrFE,EAAsBlG,EAAiBiG,EAGvCnB,EAAYkB,EAAaC,GAAyBrhC,KAAKqG,MAAMs4B,MAAMzuB,OAASkxB,EAAaC,IAAyB98B,EAClH47B,EAAUiB,EAAaE,GAAwBthC,KAAKqG,MAAMs4B,MAAMxuB,KAAOixB,EAAaE,IAAwB/8B,CAGhHvE,MAAKg6B,aAAe,EAAIz1B,EAAQ,GAAI,GAAQ,EAC5CvE,KAAKi6B,WAAa11B,EAAQ,EAAI,GAAI,GAAQ,CAE1C,IAAIq8B,GAAYj/B,EAASm6B,mBAAmB97B,KAAKo1B,KAAKI,YAAa0K,EAAU,EAAI37B,GAAO,GACpFs8B,EAAUl/B,EAASm6B,mBAAmB97B,KAAKo1B,KAAKI,YAAa2K,EAAQ57B,EAAQ,GAAG,IAChFq8B,GAAaV,GAAYW,GAAWV,KACtCngC,KAAKqG,MAAMs4B,MAAMzuB,MAAQ0wB,EACzB5gC,KAAKqG,MAAMs4B,MAAMxuB,IAAM0wB,EACvB7gC,KAAKs+B,YAAc,EAAIz0B,EAAM22B,QAAQj8B,MACrC27B,EAAWU,EACXT,EAASU,GAGX7gC,KAAKg0B,SAASkM,EAAUC,GAAQ,GAAO,GAEvCngC,KAAKg6B,cAAe,EACpBh6B,KAAKi6B,YAAa,IAUtBp4B,EAAMkS,UAAUktB,eAAiB,SAAUF,GACzC,GAAI9F,GACAc,EAAY/7B,KAAK+O,QAAQgtB,SAI7B,IAFAqD,EAAkBrD,GAED,cAAbA,EACF,MAAO/7B,MAAKo1B,KAAKz0B,KAAKo1B,OAAOgL,EAAQ1uB,GAAGhL,SAGxC,IAAI+L,GAASpT,KAAKo1B,KAAKC,SAASzI,OAAOxZ,MAEvC,OADA6nB,GAAaj7B,KAAKi7B,WAAW7nB,GACtB2tB,EAAQzuB,EAAI2oB,EAAW12B,MAAQ02B,EAAW1Q,QA4BrD1oB,EAAMkS,UAAUmtB,KAAO,SAAS38B,EAAOqoB,EAAQuC,GAE/B,MAAVvC,IACFA,GAAU5sB,KAAKkQ,MAAQlQ,KAAKmQ,KAAO,EAGrC,IAAIirB,GAAiBz5B,EAASu5B,yBAAyBl7B,KAAKo1B,KAAKI,YAAax1B,KAAKkQ,MAAOlQ,KAAKmQ,KAC3FkxB,EAAuB1/B,EAAS+5B,wBAAwB17B,KAAKo1B,KAAKI,YAAax1B,KAAM4sB,GACrF0U,EAAsBlG,EAAiBiG,EAGvCnB,EAAYtT,EAAOyU,GAAyBrhC,KAAKkQ,OAAS0c,EAAOyU,IAAyB98B,EAC1F47B,EAAYvT,EAAO0U,GAAwBthC,KAAKmQ,KAAOyc,EAAO0U,IAAwB/8B,CAG1FvE,MAAKg6B,aAAe7K,EAAQ,GAAI,GAAQ,EACxCnvB,KAAKi6B,YAAc9K,EAAS,GAAI,GAAQ,CACxC,IAAIyR,GAAYj/B,EAASm6B,mBAAmB97B,KAAKo1B,KAAKI,YAAa0K,EAAU/Q,GAAO,GAChF0R,EAAUl/B,EAASm6B,mBAAmB97B,KAAKo1B,KAAKI,YAAa2K,GAAShR,GAAO,IAC7EyR,GAAaV,GAAYW,GAAWV,KACtCD,EAAWU,EACXT,EAASU,GAGX7gC,KAAKg0B,SAASkM,EAAUC,GAAQ,GAAO,GAEvCngC,KAAKg6B,cAAe,EACpBh6B,KAAKi6B,YAAa,GAWpBp4B,EAAMkS,UAAUwtB,KAAO,SAASpS,GAE9B,GAAIpC,GAAQ/sB,KAAKmQ,IAAMnQ,KAAKkQ,MAGxBgwB,EAAWlgC,KAAKkQ,MAAQ6c,EAAOoC,EAC/BgR,EAASngC,KAAKmQ,IAAM4c,EAAOoC,CAI/BnvB,MAAKkQ,MAAQgwB,EACblgC,KAAKmQ,IAAMgwB,GAObt+B,EAAMkS,UAAU2U,OAAS,SAASA,GAChC,GAAIkE,IAAU5sB,KAAKkQ,MAAQlQ,KAAKmQ,KAAO,EAEnC4c,EAAOH,EAASlE,EAGhBwX,EAAWlgC,KAAKkQ,MAAQ6c,EACxBoT,EAASngC,KAAKmQ,IAAM4c,CAExB/sB,MAAKg0B,SAASkM,EAAUC,IAG1BtgC,EAAOD,QAAUiC,GAKb,SAAShC,EAAQD,GAGrB,GAAI4hC,GAAU,IAMd5hC,GAAQ6hC,aAAe,SAASx/B,GAC9BA,EAAM6U,KAAK,SAAUlR,EAAGa,GACtB,MAAOb,GAAE0N,KAAKpD,MAAQzJ,EAAE6M,KAAKpD,SASjCtQ,EAAQ8hC,WAAa,SAASz/B,GAC5BA,EAAM6U,KAAK,SAAUlR,EAAGa,GACtB,GAAIk7B,GAAS,OAAS/7B,GAAE0N,KAAQ1N,EAAE0N,KAAKnD,IAAMvK,EAAE0N,KAAKpD,MAChD0xB,EAAS,OAASn7B,GAAE6M,KAAQ7M,EAAE6M,KAAKnD,IAAM1J,EAAE6M,KAAKpD,KAEpD,OAAOyxB,GAAQC,KAenBhiC,EAAQkC,MAAQ,SAASG,EAAOuY,EAAQqnB,GACtC,GAAIh8B,GAAGi8B,CAEP,IAAID,EAEF,IAAKh8B,EAAI,EAAGi8B,EAAO7/B,EAAM+D,OAAY87B,EAAJj8B,EAAUA,IACzC5D,EAAM4D,GAAGoC,IAAM,IAKnB,KAAKpC,EAAI,EAAGi8B,EAAO7/B,EAAM+D,OAAY87B,EAAJj8B,EAAUA,IAAK,CAC9C,GAAI8J,GAAO1N,EAAM4D,EACjB,IAAI8J,EAAK7N,OAAsB,OAAb6N,EAAK1H,IAAc,CAEnC0H,EAAK1H,IAAMuS,EAAOunB,IAElB,GAAG,CAID,IAAK,GADDC,GAAgB,KACX1V,EAAI,EAAG2V,EAAKhgC,EAAM+D,OAAYi8B,EAAJ3V,EAAQA,IAAK,CAC9C,GAAIrmB,GAAQhE,EAAMqqB,EAClB,IAAkB,OAAdrmB,EAAMgC,KAAgBhC,IAAU0J,GAAQ1J,EAAMnE,OAASlC,EAAQsiC,UAAUvyB,EAAM1J,EAAOuU,EAAO7K,MAAO,CACtGqyB,EAAgB/7B,CAChB,QAIiB,MAAjB+7B,IAEFryB,EAAK1H,IAAM+5B,EAAc/5B,IAAM+5B,EAAc5uB,OAASoH,EAAO7K,KAAK2W,gBAE7D0b,MAafpiC,EAAQuiC,QAAU,SAASlgC,EAAOuY,EAAQ4nB,GACxC,GAAIv8B,GAAGi8B,EAAMO,CAGb,KAAKx8B,EAAI,EAAGi8B,EAAO7/B,EAAM+D,OAAY87B,EAAJj8B,EAAUA,IACzC,GAA+BgB,SAA3B5E,EAAM4D,GAAGyN,KAAKgvB,SAAwB,CACxCD,EAAS7nB,EAAOunB,IAChB,KAAK,GAAIO,KAAYF,GACfA,EAAUj8B,eAAem8B,IACQ,GAA/BF,EAAUE,GAAUhZ,SAAmB8Y,EAAUE,GAAU55B,MAAQ05B,EAAUngC,EAAM4D,GAAGyN,KAAKgvB,UAAU55B,QACvG25B,GAAUD,EAAUE,GAAUlvB,OAASoH,EAAO7K,KAAK2W,SAIzDrkB,GAAM4D,GAAGoC,IAAMo6B,MAGfpgC,GAAM4D,GAAGoC,IAAMuS,EAAOunB,MAe5BniC,EAAQsiC,UAAY,SAASt8B,EAAGa,EAAG+T,GACjC,MAAS5U,GAAEiC,KAAO2S,EAAO6L,WAAamb,EAAkB/6B,EAAEoB,KAAOpB,EAAE0M,OAC9DvN,EAAEiC,KAAOjC,EAAEuN,MAAQqH,EAAO6L,WAAamb,EAAW/6B,EAAEoB,MACpDjC,EAAEqC,IAAMuS,EAAO8L,SAAWkb,EAAyB/6B,EAAEwB,IAAMxB,EAAE2M,QAC7DxN,EAAEqC,IAAMrC,EAAEwN,OAASoH,EAAO8L,SAAWkb,EAAa/6B,EAAEwB,MAMvD,SAASpI,EAAQD,EAASM,GAgC9B,QAAS6B,GAASmO,EAAOC,EAAK8rB,EAAazG,GAEzCx1B,KAAK26B,QAAU,GAAI/1B,MACnB5E,KAAK2zB,OAAS,GAAI/uB,MAClB5E,KAAK4zB,KAAO,GAAIhvB,MAEhB5E,KAAKq8B,WAAa,EAClBr8B,KAAKuE,MAAQ,MACbvE,KAAKgpB,KAAO,EAGZhpB,KAAKg0B,SAAS9jB,EAAOC,EAAK8rB,GAG1Bj8B,KAAK+6B,aAAc,EACnB/6B,KAAK86B,eAAgB,EACrB96B,KAAK66B,cAAe,EACpB76B,KAAKw1B,YAAcA,EACC3uB,SAAhB2uB,IACFx1B,KAAKw1B,gBAGPx1B,KAAKuiC,OAASxgC,EAASygC,OApDzB,GAAI3+B,GAAS3D,EAAoB,IAC7ByB,EAAWzB,EAAoB,IAC/BS,EAAOT,EAAoB,EAsD/B6B,GAASygC,QACPC,aACEC,YAAY,MACZC,OAAY,IACZC,OAAY,QACZC,KAAY,QACZC,QAAY,QACZ5J,IAAY,IACZK,MAAY,MACZH,KAAY,QAEd2J,aACEL,YAAY,WACZC,OAAY,eACZC,OAAY,aACZC,KAAY,aACZC,QAAY,YACZ5J,IAAY,YACZK,MAAY,OACZH,KAAY,KAUhBr3B,EAASgS,UAAUivB,UAAY,SAAUT,GACvC,GAAIU,GAAgBtiC,EAAKmG,cAAe/E,EAASygC,OACjDxiC,MAAKuiC,OAAS5hC,EAAKmG,WAAWm8B,EAAeV,IAa/CxgC,EAASgS,UAAUigB,SAAW,SAAS9jB,EAAOC,EAAK8rB,GACjD,KAAM/rB,YAAiBtL,OAAWuL,YAAevL,OAC/C,KAAO,+CAGT5E,MAAK2zB,OAAmB9sB,QAATqJ,EAAsB,GAAItL,MAAKsL,EAAM7I,WAAa,GAAIzC,MACrE5E,KAAK4zB,KAAe/sB,QAAPsJ,EAAoB,GAAIvL,MAAKuL,EAAI9I,WAAa,GAAIzC,MAE3D5E,KAAKq8B,WACPr8B,KAAK48B,eAAeX,IAOxBl6B,EAASgS,UAAUmvB,MAAQ,WACzBljC,KAAK26B,QAAU,GAAI/1B,MAAK5E,KAAK2zB,OAAOtsB,WACpCrH,KAAKu9B,gBAOPx7B,EAASgS,UAAUwpB,aAAe,WAIhC,OAAQv9B,KAAKuE,OACX,IAAK,OACHvE,KAAK26B,QAAQwI,YAAYnjC,KAAKgpB,KAAOxkB,KAAKgB,MAAMxF,KAAK26B,QAAQyI,cAAgBpjC,KAAKgpB,OAClFhpB,KAAK26B,QAAQ0I,SAAS,EACxB,KAAK,QAAgBrjC,KAAK26B,QAAQ2I,QAAQ,EAC1C,KAAK,MACL,IAAK,UAAgBtjC,KAAK26B,QAAQ4I,SAAS,EAC3C,KAAK,OAAgBvjC,KAAK26B,QAAQ6I,WAAW,EAC7C,KAAK,SAAgBxjC,KAAK26B,QAAQ8I,WAAW,EAC7C,KAAK,SAAgBzjC,KAAK26B,QAAQ+I,gBAAgB,GAIpD,GAAiB,GAAb1jC,KAAKgpB,KAEP,OAAQhpB,KAAKuE,OACX,IAAK,cAAgBvE,KAAK26B,QAAQ+I,gBAAgB1jC,KAAK26B,QAAQgJ,kBAAoB3jC,KAAK26B,QAAQgJ,kBAAoB3jC,KAAKgpB,KAAQ,MACjI,KAAK,SAAgBhpB,KAAK26B,QAAQ8I,WAAWzjC,KAAK26B,QAAQiJ,aAAe5jC,KAAK26B,QAAQiJ,aAAe5jC,KAAKgpB,KAAO;KACjH,KAAK,SAAgBhpB,KAAK26B,QAAQ6I,WAAWxjC,KAAK26B,QAAQkJ,aAAe7jC,KAAK26B,QAAQkJ,aAAe7jC,KAAKgpB,KAAO,MACjH,KAAK,OAAgBhpB,KAAK26B,QAAQ4I,SAASvjC,KAAK26B,QAAQmJ,WAAa9jC,KAAK26B,QAAQmJ,WAAa9jC,KAAKgpB,KAAO,MAC3G,KAAK,UACL,IAAK,MAAgBhpB,KAAK26B,QAAQ2I,QAAStjC,KAAK26B,QAAQoJ,UAAU,GAAM/jC,KAAK26B,QAAQoJ,UAAU,GAAK/jC,KAAKgpB,KAAO,EAAI,MACpH,KAAK,QAAgBhpB,KAAK26B,QAAQ0I,SAASrjC,KAAK26B,QAAQqJ,WAAahkC,KAAK26B,QAAQqJ,WAAahkC,KAAKgpB,KAAQ,MAC5G,KAAK,OAAgBhpB,KAAK26B,QAAQwI,YAAYnjC,KAAK26B,QAAQyI,cAAgBpjC,KAAK26B,QAAQyI,cAAgBpjC,KAAKgpB,QAUnHjnB,EAASgS,UAAU2pB,QAAU,WAC3B,MAAQ19B,MAAK26B,QAAQtzB,WAAarH,KAAK4zB,KAAKvsB,WAM9CtF,EAASgS,UAAUmV,KAAO,WACxB,GAAImJ,GAAOryB,KAAK26B,QAAQtzB,SAIxB,IAAIrH,KAAK26B,QAAQqJ,WAAa,EAC5B,OAAQhkC,KAAKuE,OACX,IAAK,cAEHvE,KAAK26B,QAAU,GAAI/1B,MAAK5E,KAAK26B,QAAQtzB,UAAYrH,KAAKgpB,KAAO,MAC/D,KAAK,SAAgBhpB,KAAK26B,QAAU,GAAI/1B,MAAK5E,KAAK26B,QAAQtzB,UAAwB,IAAZrH,KAAKgpB,KAAc,MACzF,KAAK,SAAgBhpB,KAAK26B,QAAU,GAAI/1B,MAAK5E,KAAK26B,QAAQtzB,UAAwB,IAAZrH,KAAKgpB,KAAc,GAAK,MAC9F,KAAK,OACHhpB,KAAK26B,QAAU,GAAI/1B,MAAK5E,KAAK26B,QAAQtzB,UAAwB,IAAZrH,KAAKgpB,KAAc,GAAK,GAEzE,IAAI7c,GAAInM,KAAK26B,QAAQmJ,UACrB9jC,MAAK26B,QAAQ4I,SAASp3B,EAAKA,EAAInM,KAAKgpB,KACpC,MACF,KAAK,UACL,IAAK,MAAgBhpB,KAAK26B,QAAQ2I,QAAQtjC,KAAK26B,QAAQoJ,UAAY/jC,KAAKgpB,KAAO,MAC/E,KAAK,QAAgBhpB,KAAK26B,QAAQ0I,SAASrjC,KAAK26B,QAAQqJ,WAAahkC,KAAKgpB,KAAO,MACjF,KAAK,OAAgBhpB,KAAK26B,QAAQwI,YAAYnjC,KAAK26B,QAAQyI,cAAgBpjC,KAAKgpB,UAKlF,QAAQhpB,KAAKuE,OACX,IAAK,cAAgBvE,KAAK26B,QAAU,GAAI/1B,MAAK5E,KAAK26B,QAAQtzB,UAAYrH,KAAKgpB,KAAO,MAClF,KAAK,SAAgBhpB,KAAK26B,QAAQ8I,WAAWzjC,KAAK26B,QAAQiJ,aAAe5jC,KAAKgpB,KAAO,MACrF,KAAK,SAAgBhpB,KAAK26B,QAAQ6I,WAAWxjC,KAAK26B,QAAQkJ,aAAe7jC,KAAKgpB,KAAO,MACrF,KAAK,OAAgBhpB,KAAK26B,QAAQ4I,SAASvjC,KAAK26B,QAAQmJ,WAAa9jC,KAAKgpB,KAAO,MACjF,KAAK,UACL,IAAK,MAAgBhpB,KAAK26B,QAAQ2I,QAAQtjC,KAAK26B,QAAQoJ,UAAY/jC,KAAKgpB,KAAO,MAC/E,KAAK,QAAgBhpB,KAAK26B,QAAQ0I,SAASrjC,KAAK26B,QAAQqJ,WAAahkC,KAAKgpB,KAAO,MACjF,KAAK,OAAgBhpB,KAAK26B,QAAQwI,YAAYnjC,KAAK26B,QAAQyI,cAAgBpjC,KAAKgpB,MAKpF,GAAiB,GAAbhpB,KAAKgpB,KAEP,OAAQhpB,KAAKuE,OACX,IAAK,cAAmBvE,KAAK26B,QAAQgJ,kBAAoB3jC,KAAKgpB,MAAMhpB,KAAK26B,QAAQ+I,gBAAgB,EAAK,MACtG,KAAK,SAAmB1jC,KAAK26B,QAAQiJ,aAAe5jC,KAAKgpB,MAAMhpB,KAAK26B,QAAQ8I,WAAW,EAAK,MAC5F,KAAK,SAAmBzjC,KAAK26B,QAAQkJ,aAAe7jC,KAAKgpB,MAAMhpB,KAAK26B,QAAQ6I,WAAW,EAAK,MAC5F,KAAK,OAAmBxjC,KAAK26B,QAAQmJ,WAAa9jC,KAAKgpB,MAAMhpB,KAAK26B,QAAQ4I,SAAS,EAAK,MACxF,KAAK,UACL,IAAK,MAAmBvjC,KAAK26B,QAAQoJ,UAAY/jC,KAAKgpB,KAAK,GAAGhpB,KAAK26B,QAAQ2I,QAAQ,EAAI,MACvF,KAAK,QAAmBtjC,KAAK26B,QAAQqJ,WAAahkC,KAAKgpB,MAAMhpB,KAAK26B,QAAQ0I,SAAS,EAAK,MACxF,KAAK,QAMLrjC,KAAK26B,QAAQtzB,WAAagrB,IAC5BryB,KAAK26B,QAAU,GAAI/1B,MAAK5E,KAAK4zB,KAAKvsB,YAGpC1F,EAAS24B,oBAAoBt6B,KAAMqyB,IAQrCtwB,EAASgS,UAAUkV,WAAa,WAC9B,MAAOjpB,MAAK26B,SAed54B,EAASgS,UAAUkwB,SAAW,SAASvvB,GACjCA,GAAiC,gBAAhBA,GAAOnQ,QAC1BvE,KAAKuE,MAAQmQ,EAAOnQ,MACpBvE,KAAKgpB,KAAOtU,EAAOsU,KAAO,EAAItU,EAAOsU,KAAO,EAC5ChpB,KAAKq8B,WAAY,IAQrBt6B,EAASgS,UAAUmwB,aAAe,SAAUC,GAC1CnkC,KAAKq8B,UAAY8H,GAQnBpiC,EAASgS,UAAU6oB,eAAiB,SAASX,GAC3C,GAAmBp1B,QAAfo1B,EAAJ,CAMA,GAAImI,GAAiB,QACjBC,EAAiB,OACjBC,EAAiB,MACjBC,EAAiB,KACjBC,EAAiB,IACjBC,EAAiB,IACjBC,EAAiB,CAGR,KAATN,EAAgBnI,IAAqBj8B,KAAKuE,MAAQ,OAAevE,KAAKgpB,KAAO,KACpE,IAATob,EAAenI,IAAsBj8B,KAAKuE,MAAQ,OAAevE,KAAKgpB,KAAO,KACpE,IAATob,EAAenI,IAAsBj8B,KAAKuE,MAAQ,OAAevE,KAAKgpB,KAAO,KACpE,GAATob,EAAcnI,IAAuBj8B,KAAKuE,MAAQ,OAAevE,KAAKgpB,KAAO,IACpE,GAATob,EAAcnI,IAAuBj8B,KAAKuE,MAAQ,OAAevE,KAAKgpB,KAAO,IACpE,EAATob,EAAanI,IAAwBj8B,KAAKuE,MAAQ,OAAevE,KAAKgpB,KAAO,GAC7Eob,EAAWnI,IAA0Bj8B,KAAKuE,MAAQ,OAAevE,KAAKgpB,KAAO,GACnE,EAAVqb,EAAcpI,IAAuBj8B,KAAKuE,MAAQ,QAAevE,KAAKgpB,KAAO,GAC7Eqb,EAAYpI,IAAyBj8B,KAAKuE,MAAQ,QAAevE,KAAKgpB,KAAO,GACrE,EAARsb,EAAYrI,IAAyBj8B,KAAKuE,MAAQ,MAAevE,KAAKgpB,KAAO,GACrE,EAARsb,EAAYrI,IAAyBj8B,KAAKuE,MAAQ,MAAevE,KAAKgpB,KAAO,GAC7Esb,EAAUrI,IAA2Bj8B,KAAKuE,MAAQ,MAAevE,KAAKgpB,KAAO,GAC7Esb,EAAQ,EAAIrI,IAAyBj8B,KAAKuE,MAAQ,UAAevE,KAAKgpB,KAAO,GACpE,EAATub,EAAatI,IAAwBj8B,KAAKuE,MAAQ,OAAevE,KAAKgpB,KAAO,GAC7Eub,EAAWtI,IAA0Bj8B,KAAKuE,MAAQ,OAAevE,KAAKgpB,KAAO,GAClE,GAAXwb,EAAgBvI,IAAqBj8B,KAAKuE,MAAQ,SAAevE,KAAKgpB,KAAO,IAClE,GAAXwb,EAAgBvI,IAAqBj8B,KAAKuE,MAAQ,SAAevE,KAAKgpB,KAAO,IAClE,EAAXwb,EAAevI,IAAsBj8B,KAAKuE,MAAQ,SAAevE,KAAKgpB,KAAO,GAC7Ewb,EAAavI,IAAwBj8B,KAAKuE,MAAQ,SAAevE,KAAKgpB,KAAO,GAClE,GAAXyb,EAAgBxI,IAAqBj8B,KAAKuE,MAAQ,SAAevE,KAAKgpB,KAAO,IAClE,GAAXyb,EAAgBxI,IAAqBj8B,KAAKuE,MAAQ,SAAevE,KAAKgpB,KAAO,IAClE,EAAXyb,EAAexI,IAAsBj8B,KAAKuE,MAAQ,SAAevE,KAAKgpB,KAAO,GAC7Eyb,EAAaxI,IAAwBj8B,KAAKuE,MAAQ,SAAevE,KAAKgpB,KAAO,GAC7D,IAAhB0b,EAAsBzI,IAAej8B,KAAKuE,MAAQ,cAAevE,KAAKgpB,KAAO,KAC7D,IAAhB0b,EAAsBzI,IAAej8B,KAAKuE,MAAQ,cAAevE,KAAKgpB,KAAO,KAC7D,GAAhB0b,EAAqBzI,IAAgBj8B,KAAKuE,MAAQ,cAAevE,KAAKgpB,KAAO,IAC7D,GAAhB0b,EAAqBzI,IAAgBj8B,KAAKuE,MAAQ,cAAevE,KAAKgpB,KAAO,IAC7D,EAAhB0b,EAAoBzI,IAAiBj8B,KAAKuE,MAAQ,cAAevE,KAAKgpB,KAAO,GAC7E0b,EAAkBzI,IAAmBj8B,KAAKuE,MAAQ,cAAevE,KAAKgpB,KAAO,KAanFjnB,EAAS4iC,KAAO,SAASrL,EAAM/0B,EAAOykB,GACpC,GAAIiQ,GAAQ,GAAIr0B,MAAK00B,EAAKjyB,UAE1B,IAAa,QAAT9C,EAAiB,CACnB,GAAI60B,GAAOH,EAAMmK,cAAgB5+B,KAAK4pB,MAAM6K,EAAM+K,WAAa,GAC/D/K,GAAMkK,YAAY3+B,KAAK4pB,MAAMgL,EAAOpQ,GAAQA,GAC5CiQ,EAAMoK,SAAS,GACfpK,EAAMqK,QAAQ,GACdrK,EAAMsK,SAAS,GACftK,EAAMuK,WAAW,GACjBvK,EAAMwK,WAAW,GACjBxK,EAAMyK,gBAAgB,OAEnB,IAAa,SAATn/B,EACH00B,EAAM8K,UAAY,IACpB9K,EAAMqK,QAAQ,GACdrK,EAAMoK,SAASpK,EAAM+K,WAAa,IAIlC/K,EAAMqK,QAAQ,GAGhBrK,EAAMsK,SAAS,GACftK,EAAMuK,WAAW,GACjBvK,EAAMwK,WAAW,GACjBxK,EAAMyK,gBAAgB,OAEnB,IAAa,OAATn/B,EAAgB,CAEvB,OAAQykB,GACN,IAAK,GACL,IAAK,GACHiQ,EAAMsK,SAA6C,GAApC/+B,KAAK4pB,MAAM6K,EAAM6K,WAAa,IAAW,MAC1D,SACE7K,EAAMsK,SAA6C,GAApC/+B,KAAK4pB,MAAM6K,EAAM6K,WAAa,KAEjD7K,EAAMuK,WAAW,GACjBvK,EAAMwK,WAAW,GACjBxK,EAAMyK,gBAAgB,OAEnB,IAAa,WAATn/B,EAAoB,CAE3B,OAAQykB,GACN,IAAK,GACL,IAAK,GACHiQ,EAAMsK,SAA6C,GAApC/+B,KAAK4pB,MAAM6K,EAAM6K,WAAa,IAAW,MAC1D,SACE7K,EAAMsK,SAA4C,EAAnC/+B,KAAK4pB,MAAM6K,EAAM6K,WAAa,IAEjD7K,EAAMuK,WAAW,GACjBvK,EAAMwK,WAAW,GACjBxK,EAAMyK,gBAAgB,OAEnB,IAAa,QAATn/B,EAAiB,CACxB,OAAQykB,GACN,IAAK,GACHiQ,EAAMuK,WAAiD,GAAtCh/B,KAAK4pB,MAAM6K,EAAM4K,aAAe,IAAW,MAC9D,SACE5K,EAAMuK,WAAiD,GAAtCh/B,KAAK4pB,MAAM6K,EAAM4K,aAAe,KAErD5K,EAAMwK,WAAW,GACjBxK,EAAMyK,gBAAgB,OACjB,IAAa,UAATn/B,EAAmB,CAE5B,OAAQykB,GACN,IAAK,IACL,IAAK,IACHiQ,EAAMuK,WAAgD,EAArCh/B,KAAK4pB,MAAM6K,EAAM4K,aAAe,IACjD5K,EAAMwK,WAAW,EACjB,MACF,KAAK,GACHxK,EAAMwK,WAAiD,GAAtCj/B,KAAK4pB,MAAM6K,EAAM2K,aAAe,IAAW,MAC9D,SACE3K,EAAMwK,WAAiD,GAAtCj/B,KAAK4pB,MAAM6K,EAAM2K,aAAe,KAErD3K,EAAMyK,gBAAgB,OAEnB,IAAa,UAATn/B,EAEP,OAAQykB,GACN,IAAK,IACL,IAAK,IACHiQ,EAAMwK,WAAgD,EAArCj/B,KAAK4pB,MAAM6K,EAAM2K,aAAe,IACjD3K,EAAMyK,gBAAgB,EACtB,MACF,KAAK,GACHzK,EAAMyK,gBAA6D,IAA7Cl/B,KAAK4pB,MAAM6K,EAAM0K,kBAAoB,KAAe,MAC5E,SACE1K,EAAMyK,gBAA4D,IAA5Cl/B,KAAK4pB,MAAM6K,EAAM0K,kBAAoB,UAG5D,IAAa,eAATp/B,EAAwB,CAC/B,GAAIsvB,GAAQ7K,EAAO,EAAIA,EAAO,EAAI,CAClCiQ,GAAMyK,gBAAgBl/B,KAAK4pB,MAAM6K,EAAM0K,kBAAoB9P,GAASA,GAGtE,MAAOoF,IAQTl3B,EAASgS,UAAUgqB,QAAU,WAC3B,GAAyB,GAArB/9B,KAAK66B,aAEP,OADA76B,KAAK66B,cAAe,EACZ76B,KAAKuE,OACX,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,MACL,IAAK,OACL,IAAK,SACL,IAAK,SACL,IAAK,cACH,OAAO,CACT,SACE,OAAO,MAGR,IAA0B,GAAtBvE,KAAK86B,cAEZ,OADA96B,KAAK86B,eAAgB,EACb96B,KAAKuE,OACX,IAAK,UACL,IAAK,MACL,IAAK,OACL,IAAK,SACL,IAAK,SACL,IAAK,cACH,OAAO,CACT,SACE,OAAO,MAGR,IAAwB,GAApBvE,KAAK+6B,YAEZ,OADA/6B,KAAK+6B,aAAc,EACX/6B,KAAKuE,OACX,IAAK,cACL,IAAK,SACL,IAAK,SACL,IAAK,OACH,OAAO,CACT,SACE,OAAO,EAIb,OAAQvE,KAAKuE,OACX,IAAK,cACH,MAA0C,IAAlCvE,KAAK26B,QAAQgJ,iBACvB,KAAK,SACH,MAAqC,IAA7B3jC,KAAK26B,QAAQiJ,YACvB,KAAK,SACH,MAAmC,IAA3B5jC,KAAK26B,QAAQmJ,YAAkD,GAA7B9jC,KAAK26B,QAAQkJ,YACzD,KAAK,OACH,MAAmC,IAA3B7jC,KAAK26B,QAAQmJ,UACvB,KAAK,UACL,IAAK,MACH,MAAkC,IAA1B9jC,KAAK26B,QAAQoJ,SACvB,KAAK,QACH,MAAmC,IAA3B/jC,KAAK26B,QAAQqJ,UACvB,KAAK,OACH,OAAO,CACT,SACE,OAAO,IAWbjiC,EAASgS,UAAU6wB,cAAgB,SAAStL,GAC9BzyB,QAARyyB,IACFA,EAAOt5B,KAAK26B,QAGd,IAAI4H,GAASviC,KAAKuiC,OAAOE,YAAYziC,KAAKuE,MAC1C,OAAQg+B,IAAUA,EAAOv8B,OAAS,EAAKnC,EAAOy1B,GAAMiJ,OAAOA,GAAU,IASvExgC,EAASgS,UAAU8wB,cAAgB,SAASvL,GAC9BzyB,QAARyyB,IACFA,EAAOt5B,KAAK26B,QAGd,IAAI4H,GAASviC,KAAKuiC,OAAOQ,YAAY/iC,KAAKuE,MAC1C,OAAQg+B,IAAUA,EAAOv8B,OAAS,EAAKnC,EAAOy1B,GAAMiJ,OAAOA,GAAU,IAGvExgC,EAASgS,UAAU+wB,aAAe,WAKhC,QAASC,GAAKzgC,GACZ,MAAQA,GAAQ0kB,EAAO,GAAK,EAAK,QAAU,OAG7C,QAASgc,GAAM1L,GACb,MAAIA,GAAK2L,OAAO,GAAIrgC,MAAQ,OACnB,SAEL00B,EAAK2L,OAAOphC,IAASgQ,IAAI,EAAG,OAAQ,OAC/B,YAELylB,EAAK2L,OAAOphC,IAASgQ,IAAI,GAAI,OAAQ,OAChC,aAEF,GAGT,QAASqxB,GAAY5L,GACnB,MAAOA,GAAK2L,OAAO,GAAIrgC,MAAQ,QAAU,gBAAkB,GAG7D,QAASugC,GAAa7L,GACpB,MAAOA,GAAK2L,OAAO,GAAIrgC,MAAQ,SAAW,iBAAmB,GAG/D,QAASwgC,GAAY9L,GACnB,MAAOA,GAAK2L,OAAO,GAAIrgC,MAAQ,QAAU,gBAAkB,GA9B7D,GAAIpE,GAAIqD,EAAO7D,KAAK26B,SAChBrB,EAAO94B,EAAE6kC,OAAS7kC,EAAE6kC,OAAO,MAAQ7kC,EAAE8kC,KAAK,MAC1Ctc,EAAOhpB,KAAKgpB,IA+BhB,QAAQhpB,KAAKuE,OACX,IAAK,cACH,MAAOwgC,GAAKzL,EAAK8E,gBAAgB5wB,MAEnC,KAAK,SACH,MAAOu3B,GAAKzL,EAAK6E,WAAW3wB,MAE9B,KAAK,SACH,MAAOu3B,GAAKzL,EAAK4E,WAAW1wB,MAE9B,KAAK,OACH,GAAIywB,GAAQ3E,EAAK2E,OAIjB,OAHiB,IAAbj+B,KAAKgpB,OACPiV,EAAQA,EAAQ,KAAOA,EAAQ,IAE1BA,EAAQ,IAAM+G,EAAM1L,GAAQyL,EAAKzL,EAAK2E,QAE/C,KAAK,UACH,MAAO3E,GAAKiJ,OAAO,QAAQgD,cACvBP,EAAM1L,GAAQ4L,EAAY5L,GAAQyL,EAAKzL,EAAKA,OAElD,KAAK,MACH,GAAIJ,GAAMI,EAAKA,OACXC,EAAQD,EAAKiJ,OAAO,QAAQgD,aAChC,OAAO,MAAQrM,EAAM,IAAMK,EAAQ4L,EAAa7L,GAAQyL,EAAK7L,EAAM,EAErE,KAAK,QACH,MAAOI,GAAKiJ,OAAO,QAAQgD,cACvBJ,EAAa7L,GAAQyL,EAAKzL,EAAKC,QAErC,KAAK,OACH,GAAIH,GAAOE,EAAKF,MAChB,OAAO,OAASA,EAAOgM,EAAY9L,GAAOyL,EAAK3L,EAEjD,SACE,MAAO,KAIbv5B,EAAOD,QAAUmC,GAKb,SAASlC,EAAQD,EAASM,GAc9B,QAASgC,GAAMoR,EAAM2nB,EAAYlsB,GAC/B/O,KAAKK,GAAK,KACVL,KAAKwlC,OAAS,KACdxlC,KAAKsT,KAAOA,EACZtT,KAAKwwB,IAAM,KACXxwB,KAAKi7B,WAAaA,MAClBj7B,KAAK+O,QAAUA,MAEf/O,KAAKylC,UAAW,EAChBzlC,KAAK0lC,WAAY,EACjB1lC,KAAK2lC,OAAQ,EAEb3lC,KAAKiI,IAAM,KACXjI,KAAK6H,KAAO,KACZ7H,KAAKmT,MAAQ,KACbnT,KAAKoT,OAAS,KA3BhB,GAAIwyB,GAAS1lC,EAAoB,IAC7BS,EAAOT,EAAoB,EA6B/BgC,GAAK6R,UAAUjS,OAAQ,EAKvBI,EAAK6R,UAAU8xB,OAAS,WACtB7lC,KAAKylC,UAAW,EAChBzlC,KAAK2lC,OAAQ,EACT3lC,KAAK0lC,WAAW1lC,KAAKsiB,UAM3BpgB,EAAK6R,UAAU+xB,SAAW,WACxB9lC,KAAKylC,UAAW,EAChBzlC,KAAK2lC,OAAQ,EACT3lC,KAAK0lC,WAAW1lC,KAAKsiB,UAQ3BpgB,EAAK6R,UAAU6E,QAAU,SAAStF,GAChCtT,KAAKsT,KAAOA,EACZtT,KAAK2lC,OAAQ,EACT3lC,KAAK0lC,WAAW1lC,KAAKsiB,UAO3BpgB,EAAK6R,UAAUgyB,UAAY,SAASP,GAC9BxlC,KAAK0lC,WACP1lC,KAAKgmC,OACLhmC,KAAKwlC,OAASA,EACVxlC,KAAKwlC,QACPxlC,KAAKimC,QAIPjmC,KAAKwlC,OAASA,GASlBtjC,EAAK6R,UAAUmyB,UAAY,WAEzB,OAAO,GAOThkC,EAAK6R,UAAUkyB,KAAO,WACpB,OAAO,GAOT/jC,EAAK6R,UAAUiyB,KAAO,WACpB,OAAO,GAMT9jC,EAAK6R,UAAUuO,OAAS,aAOxBpgB,EAAK6R,UAAUoyB,YAAc,aAO7BjkC,EAAK6R,UAAUqyB,YAAc,aAS7BlkC,EAAK6R,UAAUsyB,qBAAuB,SAAUC,GAC9C,GAAItmC,KAAKylC,UAAYzlC,KAAK+O,QAAQw3B,SAAStvB,SAAWjX,KAAKwwB,IAAIgW,aAAc,CAE3E,GAAIzxB,GAAK/U,KAELwmC,EAAe30B,SAASM,cAAc,MAC1Cq0B,GAAap+B,UAAY,SACzBo+B,EAAaC,MAAQ,mBAErBb,EAAOY,GACL58B,gBAAgB,IACfuK,GAAG,MAAO,SAAUtK,GACrBkL,EAAGywB,OAAOkB,kBAAkB3xB,GAC5BlL,EAAM88B,oBAGRL,EAAOv0B,YAAYy0B,GACnBxmC,KAAKwwB,IAAIgW,aAAeA,OAEhBxmC,KAAKylC,UAAYzlC,KAAKwwB,IAAIgW,eAE9BxmC,KAAKwwB,IAAIgW,aAAar8B,YACxBnK,KAAKwwB,IAAIgW,aAAar8B,WAAWsH,YAAYzR,KAAKwwB,IAAIgW,cAExDxmC,KAAKwwB,IAAIgW,aAAe,OAS5BtkC,EAAK6R,UAAU6yB,gBAAkB,SAAUz9B,GACzC,GAAI6J,EACJ,IAAIhT,KAAK+O,QAAQ83B,SAAU,CACzB,GAAInP,GAAW13B,KAAKwlC,OAAOjP,QAAQC,UAAU1gB,IAAI9V,KAAKK,GACtD2S,GAAUhT,KAAK+O,QAAQ83B,SAASnP,OAGhC1kB,GAAUhT,KAAKsT,KAAKN,OAGtB,IAAGA,IAAYhT,KAAKgT,QAAS,CAE3B,GAAIA,YAAmB8zB,SACrB39B,EAAQ2b,UAAY,GACpB3b,EAAQ4I,YAAYiB,OAEjB,IAAenM,QAAXmM,EACP7J,EAAQ2b,UAAY9R,MAGpB,IAAwB,cAAlBhT,KAAKsT,KAAKnM,MAA8CN,SAAtB7G,KAAKsT,KAAKN,QAChD,KAAM,IAAIpP,OAAM,sCAAwC5D,KAAKK,GAIjEL,MAAKgT,QAAUA,IASnB9Q,EAAK6R,UAAUgzB,aAAe,SAAU59B,GACf,MAAnBnJ,KAAKsT,KAAKmzB,MACZt9B,EAAQs9B,MAAQzmC,KAAKsT,KAAKmzB,OAAS,GAGnCt9B,EAAQ69B,gBAAgB,UAS3B9kC,EAAK6R,UAAUkzB,sBAAwB,SAAS99B,GAC/C,GAAInJ,KAAK+O,QAAQm4B,gBAAkBlnC,KAAK+O,QAAQm4B,eAAelhC,OAAS,EAAG,CACzE,GAAImhC,KAEJ,IAAI7gC,MAAMC,QAAQvG,KAAK+O,QAAQm4B,gBAC7BC,EAAannC,KAAK+O,QAAQm4B,mBAEvB,CAAA,GAAmC,OAA/BlnC,KAAK+O,QAAQm4B,eAIpB,MAHAC,GAAavgC,OAAO8G,KAAK1N,KAAKsT,MAMhC,IAAK,GAAIzN,GAAI,EAAGA,EAAIshC,EAAWnhC,OAAQH,IAAK,CAC1C,GAAIgR,GAAOswB,EAAWthC,GAClBvB,EAAQtE,KAAKsT,KAAKuD,EAET,OAATvS,EACF6E,EAAQi+B,aAAa,QAAUvwB,EAAMvS,GAGrC6E,EAAQ69B,gBAAgB,QAAUnwB,MAW1C3U,EAAK6R,UAAUszB,aAAe,SAASl+B,GAEjCnJ,KAAKuN,QACP5M,EAAKoN,cAAc5E,EAASnJ,KAAKuN,OACjCvN,KAAKuN,MAAQ,MAIXvN,KAAKsT,KAAK/F,QACZ5M,EAAKiN,WAAWzE,EAASnJ,KAAKsT,KAAK/F,OACnCvN,KAAKuN,MAAQvN,KAAKsT,KAAK/F,QAI3B1N,EAAOD,QAAUsC,GAKb,SAASrC,EAAQD,EAASM,GAkB9B,QAASiC,GAAgBmR,EAAM2nB,EAAYlsB,GASzC,GARA/O,KAAKqG,OACH2M,SACEG,MAAO,IAGXnT,KAAK0kB,UAAW,EAGZpR,EAAM,CACR,GAAkBzM,QAAdyM,EAAKpD,MACP,KAAM,IAAItM,OAAM,oCAAsC0P,EAAKjT,GAE7D,IAAgBwG,QAAZyM,EAAKnD,IACP,KAAM,IAAIvM,OAAM,kCAAoC0P,EAAKjT,IAI7D6B,EAAK3B,KAAKP,KAAMsT,EAAM2nB,EAAYlsB,GAElC/O,KAAKsnC,cAAe,EApCtB,GACIplC,IADShC,EAAoB,IACtBA,EAAoB,KAC3B2C,EAAkB3C,EAAoB,IACtCoC,EAAYpC,EAAoB,GAoCpCiC,GAAe4R,UAAY,GAAI7R,GAAM,KAAM,KAAM,MAEjDC,EAAe4R,UAAUwzB,cAAgB,kBACzCplC,EAAe4R,UAAUjS,OAAQ,EAOjCK,EAAe4R,UAAUmyB,UAAY,SAAS/P,GAE5C,MAAQn2B,MAAKsT,KAAKpD,MAAQimB,EAAMhmB,KAASnQ,KAAKsT,KAAKnD,IAAMgmB,EAAMjmB,OAMjE/N,EAAe4R,UAAUuO,OAAS,WAChC,GAAIkO,GAAMxwB,KAAKwwB,GAuBf,IAtBKA,IAEHxwB,KAAKwwB,OACLA,EAAMxwB,KAAKwwB,IAGXA,EAAIgX,IAAM31B,SAASM,cAAc,OAIjCqe,EAAIxd,QAAUnB,SAASM,cAAc,OACrCqe,EAAIxd,QAAQ5K,UAAY,UACxBooB,EAAIgX,IAAIz1B,YAAYye,EAAIxd,SAMxBhT,KAAK2lC,OAAQ,IAIV3lC,KAAKwlC,OACR,KAAM,IAAI5hC,OAAM,yCAElB,KAAK4sB,EAAIgX,IAAIr9B,WAAY,CACvB,GAAIuC,GAAa1M,KAAKwlC,OAAOhV,IAAI9jB,UACjC,KAAKA,EACH,KAAM,IAAI9I,OAAM,iEAElB8I,GAAWqF,YAAYye,EAAIgX,KAQ7B,GANAxnC,KAAK0lC,WAAY,EAMb1lC,KAAK2lC,MAAO,CACd3lC,KAAK4mC,gBAAgB5mC,KAAKwwB,IAAIxd,SAC9BhT,KAAK+mC,aAAa/mC,KAAKwwB,IAAIxd,SAC3BhT,KAAKinC,sBAAsBjnC,KAAKwwB,IAAIxd,SACpChT,KAAKqnC,aAAarnC,KAAKwwB,IAAIgX,IAG3B,IAAIp/B,IAAapI,KAAKsT,KAAKlL,UAAa,IAAMpI,KAAKsT,KAAKlL,UAAa,KAChEpI,KAAKylC,SAAW,YAAc,GACnCjV,GAAIgX,IAAIp/B,UAAYpI,KAAKunC,cAAgBn/B,EAGzCpI,KAAK0kB,SAA6D,WAAlD5c,OAAO2/B,iBAAiBjX,EAAIxd,SAAS0R,SAGrD1kB,KAAKqG,MAAM2M,QAAQG,MAAQnT,KAAKwwB,IAAIxd,QAAQ6d,YAC5C7wB,KAAKoT,OAAS,EAEdpT,KAAK2lC,OAAQ,IAQjBxjC,EAAe4R,UAAUkyB,KAAO3jC,EAAUyR,UAAUkyB,KAMpD9jC,EAAe4R,UAAUiyB,KAAO1jC,EAAUyR,UAAUiyB,KAMpD7jC,EAAe4R,UAAUoyB,YAAc7jC,EAAUyR,UAAUoyB,YAM3DhkC,EAAe4R,UAAUqyB,YAAc,SAAS5rB,GAC9C,GAAIktB,GAAqC,QAA7B1nC,KAAK+O,QAAQimB,WACzBh1B,MAAKwwB,IAAIxd,QAAQzF,MAAMtF,IAAMy/B,EAAQ,GAAK,IAC1C1nC,KAAKwwB,IAAIxd,QAAQzF,MAAM4W,OAASujB,EAAQ,IAAM,EAC9C,IAAIt0B,EAGJ,IAA2BvM,SAAvB7G,KAAKsT,KAAKgvB,SAAwB,CACpC,GAAIqF,GAAe3nC,KAAKsT,KAAKgvB,SACzBF,EAAYpiC,KAAKwlC,OAAOpD,UACxBwF,EAAgBxF,EAAUuF,GAAcj/B,KAE5C,IAAa,GAATg/B,EAAe,CAEjBt0B,EAASpT,KAAKwlC,OAAOpD,UAAUuF,GAAcv0B,OAASoH,EAAO7K,KAAK2W,SAClElT,GAA2B,GAAjBw0B,EAAqBptB,EAAOunB,KAAO,GAAIvnB,EAAO7K,KAAK2W,SAAW,CACxE,IAAI+b,GAASriC,KAAKwlC,OAAOv9B,GACzB,KAAK,GAAIq6B,KAAYF,GACfA,EAAUj8B,eAAem8B,IACQ,GAA/BF,EAAUE,GAAUhZ,SAAmB8Y,EAAUE,GAAU55B,MAAQk/B,IACrEvF,GAAUD,EAAUE,GAAUlvB,OAASoH,EAAO7K,KAAK2W,SAMzD+b,IAA2B,GAAjBuF,EAAqBptB,EAAOunB,KAAO,GAAMvnB,EAAO7K,KAAK2W,SAAW,EAC1EtmB,KAAKwwB,IAAIgX,IAAIj6B,MAAMtF,IAAMo6B,EAAS,KAClCriC,KAAKwwB,IAAIgX,IAAIj6B,MAAM4W,OAAS,OAGzB,CACH,GAAIke,GAASriC,KAAKwlC,OAAOv9B,GACzB,KAAK,GAAIq6B,KAAYF,GACfA,EAAUj8B,eAAem8B,IACQ,GAA/BF,EAAUE,GAAUhZ,SAAmB8Y,EAAUE,GAAU55B,MAAQk/B,IACrEvF,GAAUD,EAAUE,GAAUlvB,OAASoH,EAAO7K,KAAK2W,SAIzDlT,GAASpT,KAAKwlC,OAAOpD,UAAUuF,GAAcv0B,OAASoH,EAAO7K,KAAK2W,SAClEtmB,KAAKwwB,IAAIgX,IAAIj6B,MAAMtF,IAAMo6B,EAAS,KAClCriC,KAAKwwB,IAAIgX,IAAIj6B,MAAM4W,OAAS,QAM1BnkB,MAAKwlC,iBAAkB3iC,IAEzBuQ,EAAS5O,KAAKJ,IAAIpE,KAAKwlC,OAAOpyB,OAC1BpT,KAAKwlC,OAAOjP,QAAQnB,KAAKC,SAASzI,OAAOxZ,OACzCpT,KAAKwlC,OAAOjP,QAAQnB,KAAKC,SAASqD,gBAAgBtlB,QACtDpT,KAAKwwB,IAAIgX,IAAIj6B,MAAMtF,IAAMy/B,EAAQ,IAAM,GACvC1nC,KAAKwwB,IAAIgX,IAAIj6B,MAAM4W,OAASujB,EAAQ,GAAK,MAGzCt0B,EAASpT,KAAKwlC,OAAOpyB,OAErBpT,KAAKwwB,IAAIgX,IAAIj6B,MAAMtF,IAAMjI,KAAKwlC,OAAOv9B,IAAM,KAC3CjI,KAAKwwB,IAAIgX,IAAIj6B,MAAM4W,OAAS,GAGhCnkB,MAAKwwB,IAAIgX,IAAIj6B,MAAM6F,OAASA,EAAS,MAGvCvT,EAAOD,QAAUuC,GAKb,SAAStC,EAAQD,EAASM,GAe9B,QAASkC,GAASkR,EAAM2nB,EAAYlsB,GAalC,GAZA/O,KAAKqG,OACHkqB,KACEpd,MAAO,EACPC,OAAQ,GAEVkd,MACEnd,MAAO,EACPC,OAAQ,IAKRE,GACgBzM,QAAdyM,EAAKpD,MACP,KAAM,IAAItM,OAAM,oCAAsC0P,EAI1DpR,GAAK3B,KAAKP,KAAMsT,EAAM2nB,EAAYlsB,GAhCpC,CAAA,GAAI7M,GAAOhC,EAAoB,GACpBA,GAAoB,GAkC/BkC,EAAQ2R,UAAY,GAAI7R,GAAM,KAAM,KAAM,MAO1CE,EAAQ2R,UAAUmyB,UAAY,SAAS/P,GAGrC,GAAIlD,IAAYkD,EAAMhmB,IAAMgmB,EAAMjmB,OAAS,CAC3C,OAAQlQ,MAAKsT,KAAKpD,MAAQimB,EAAMjmB,MAAQ+iB,GAAcjzB,KAAKsT,KAAKpD,MAAQimB,EAAMhmB,IAAM8iB,GAMtF7wB,EAAQ2R,UAAUuO,OAAS,WACzB,GAAIkO,GAAMxwB,KAAKwwB,GA6Bf,IA5BKA,IAEHxwB,KAAKwwB,OACLA,EAAMxwB,KAAKwwB,IAGXA,EAAIgX,IAAM31B,SAASM,cAAc,OAGjCqe,EAAIxd,QAAUnB,SAASM,cAAc,OACrCqe,EAAIxd,QAAQ5K,UAAY,UACxBooB,EAAIgX,IAAIz1B,YAAYye,EAAIxd,SAGxBwd,EAAIF,KAAOze,SAASM,cAAc,OAClCqe,EAAIF,KAAKloB,UAAY,OAGrBooB,EAAID,IAAM1e,SAASM,cAAc,OACjCqe,EAAID,IAAInoB,UAAY,MAGpBooB,EAAIgX,IAAI,iBAAmBxnC,KAE3BA,KAAK2lC,OAAQ,IAIV3lC,KAAKwlC,OACR,KAAM,IAAI5hC,OAAM,yCAElB,KAAK4sB,EAAIgX,IAAIr9B,WAAY,CACvB,GAAI09B,GAAa7nC,KAAKwlC,OAAOhV,IAAIqX,UACjC,KAAKA,EAAY,KAAM,IAAIjkC,OAAM,iEACjCikC,GAAW91B,YAAYye,EAAIgX,KAE7B,IAAKhX,EAAIF,KAAKnmB,WAAY,CACxB,GAAIuC,GAAa1M,KAAKwlC,OAAOhV,IAAI9jB,UACjC,KAAKA,EAAY,KAAM,IAAI9I,OAAM,iEACjC8I,GAAWqF,YAAYye,EAAIF,MAE7B,IAAKE,EAAID,IAAIpmB,WAAY,CACvB,GAAI43B,GAAO/hC,KAAKwlC,OAAOhV,IAAIuR,IAC3B,KAAKr1B,EAAY,KAAM,IAAI9I,OAAM,2DACjCm+B,GAAKhwB,YAAYye,EAAID,KAQvB,GANAvwB,KAAK0lC,WAAY,EAMb1lC,KAAK2lC,MAAO,CACd3lC,KAAK4mC,gBAAgB5mC,KAAKwwB,IAAIxd,SAC9BhT,KAAK+mC,aAAa/mC,KAAKwwB,IAAIgX,KAC3BxnC,KAAKinC,sBAAsBjnC,KAAKwwB,IAAIgX,KACpCxnC,KAAKqnC,aAAarnC,KAAKwwB,IAAIgX,IAG3B,IAAIp/B,IAAapI,KAAKsT,KAAKlL,UAAW,IAAMpI,KAAKsT,KAAKlL,UAAY,KAC7DpI,KAAKylC,SAAW,YAAc,GACnCjV,GAAIgX,IAAIp/B,UAAY,WAAaA,EACjCooB,EAAIF,KAAKloB,UAAY,YAAcA,EACnCooB,EAAID,IAAInoB,UAAa,WAAaA,EAGlCpI,KAAKqG,MAAMkqB,IAAInd,OAASod,EAAID,IAAIQ,aAChC/wB,KAAKqG,MAAMkqB,IAAIpd,MAAQqd,EAAID,IAAIM,YAC/B7wB,KAAKqG,MAAMiqB,KAAKnd,MAAQqd,EAAIF,KAAKO,YACjC7wB,KAAKmT,MAAQqd,EAAIgX,IAAI3W,YACrB7wB,KAAKoT,OAASod,EAAIgX,IAAIzW,aAEtB/wB,KAAK2lC,OAAQ,EAGf3lC,KAAKqmC,qBAAqB7V,EAAIgX,MAOhCplC,EAAQ2R,UAAUkyB,KAAO,WAClBjmC,KAAK0lC,WACR1lC,KAAKsiB,UAOTlgB,EAAQ2R,UAAUiyB,KAAO,WACvB,GAAIhmC,KAAK0lC,UAAW,CAClB,GAAIlV,GAAMxwB,KAAKwwB,GAEXA,GAAIgX,IAAIr9B,YAAcqmB,EAAIgX,IAAIr9B,WAAWsH,YAAY+e,EAAIgX,KACzDhX,EAAIF,KAAKnmB,YAAaqmB,EAAIF,KAAKnmB,WAAWsH,YAAY+e,EAAIF,MAC1DE,EAAID,IAAIpmB,YAAcqmB,EAAID,IAAIpmB,WAAWsH,YAAY+e,EAAID,KAE7DvwB,KAAKiI,IAAM,KACXjI,KAAK6H,KAAO,KAEZ7H,KAAK0lC,WAAY,IAQrBtjC,EAAQ2R,UAAUoyB,YAAc,WAC9B,GAAIj2B,GAAQlQ,KAAKi7B,WAAWtF,SAAS31B,KAAKsT,KAAKpD,OAC3C43B,EAAQ9nC,KAAK+O,QAAQ+4B,MAErBN,EAAMxnC,KAAKwwB,IAAIgX,IACflX,EAAOtwB,KAAKwwB,IAAIF,KAChBC,EAAMvwB,KAAKwwB,IAAID,GAIjBvwB,MAAK6H,KADM,SAATigC,EACU53B,EAAQlQ,KAAKmT,MAET,QAAT20B,EACK53B,EAIAA,EAAQlQ,KAAKmT,MAAQ,EAInCq0B,EAAIj6B,MAAM1F,KAAO7H,KAAK6H,KAAO,KAG7ByoB,EAAK/iB,MAAM1F,KAAQqI,EAAQlQ,KAAKqG,MAAMiqB,KAAKnd,MAAQ,EAAK,KAGxDod,EAAIhjB,MAAM1F,KAAQqI,EAAQlQ,KAAKqG,MAAMkqB,IAAIpd,MAAQ,EAAK,MAOxD/Q,EAAQ2R,UAAUqyB,YAAc,WAC9B,GAAIpR,GAAch1B,KAAK+O,QAAQimB,YAC3BwS,EAAMxnC,KAAKwwB,IAAIgX,IACflX,EAAOtwB,KAAKwwB,IAAIF,KAChBC,EAAMvwB,KAAKwwB,IAAID,GAEnB,IAAmB,OAAfyE,EACFwS,EAAIj6B,MAAMtF,KAAWjI,KAAKiI,KAAO,GAAK,KAEtCqoB,EAAK/iB,MAAMtF,IAAS,IACpBqoB,EAAK/iB,MAAM6F,OAAUpT,KAAKwlC,OAAOv9B,IAAMjI,KAAKiI,IAAM,EAAK,KACvDqoB,EAAK/iB,MAAM4W,OAAS,OAEjB,CACH,GAAI4jB,GAAgB/nC,KAAKwlC,OAAOjP,QAAQlwB,MAAM+M,OAC1C4d,EAAa+W,EAAgB/nC,KAAKwlC,OAAOv9B,IAAMjI,KAAKwlC,OAAOpyB,OAASpT,KAAKiI,GAE7Eu/B,GAAIj6B,MAAMtF,KAAWjI,KAAKwlC,OAAOpyB,OAASpT,KAAKiI,IAAMjI,KAAKoT,QAAU,GAAK,KACzEkd,EAAK/iB,MAAMtF,IAAU8/B,EAAgB/W,EAAc,KACnDV,EAAK/iB,MAAM4W,OAAS,IAGtBoM,EAAIhjB,MAAMtF,KAAQjI,KAAKqG,MAAMkqB,IAAInd,OAAS,EAAK,MAGjDvT,EAAOD,QAAUwC,GAKb,SAASvC,EAAQD,EAASM,GAc9B,QAASmC,GAAWiR,EAAM2nB,EAAYlsB,GAcpC,GAbA/O,KAAKqG,OACHkqB,KACEtoB,IAAK,EACLkL,MAAO,EACPC,OAAQ,GAEVJ,SACEI,OAAQ,EACR40B,WAAY,IAKZ10B,GACgBzM,QAAdyM,EAAKpD,MACP,KAAM,IAAItM,OAAM,oCAAsC0P,EAI1DpR,GAAK3B,KAAKP,KAAMsT,EAAM2nB,EAAYlsB,GAhCpC,GAAI7M,GAAOhC,EAAoB,GAmC/BmC,GAAU0R,UAAY,GAAI7R,GAAM,KAAM,KAAM,MAO5CG,EAAU0R,UAAUmyB,UAAY,SAAS/P,GAGvC,GAAIlD,IAAYkD,EAAMhmB,IAAMgmB,EAAMjmB,OAAS,CAC3C,OAAQlQ,MAAKsT,KAAKpD,MAAQimB,EAAMjmB,MAAQ+iB,GAAcjzB,KAAKsT,KAAKpD,MAAQimB,EAAMhmB,IAAM8iB,GAMtF5wB,EAAU0R,UAAUuO,OAAS,WAC3B,GAAIkO,GAAMxwB,KAAKwwB,GA0Bf,IAzBKA,IAEHxwB,KAAKwwB,OACLA,EAAMxwB,KAAKwwB,IAGXA,EAAI/d,MAAQZ,SAASM,cAAc,OAInCqe,EAAIxd,QAAUnB,SAASM,cAAc,OACrCqe,EAAIxd,QAAQ5K,UAAY,UACxBooB,EAAI/d,MAAMV,YAAYye,EAAIxd,SAG1Bwd,EAAID,IAAM1e,SAASM,cAAc,OACjCqe,EAAI/d,MAAMV,YAAYye,EAAID,KAG1BC,EAAI/d,MAAM,iBAAmBzS,KAE7BA,KAAK2lC,OAAQ,IAIV3lC,KAAKwlC,OACR,KAAM,IAAI5hC,OAAM,yCAElB,KAAK4sB,EAAI/d,MAAMtI,WAAY,CACzB,GAAI09B,GAAa7nC,KAAKwlC,OAAOhV,IAAIqX,UACjC,KAAKA,EACH,KAAM,IAAIjkC,OAAM,iEAElBikC,GAAW91B,YAAYye,EAAI/d,OAQ7B,GANAzS,KAAK0lC,WAAY,EAMb1lC,KAAK2lC,MAAO,CACd3lC,KAAK4mC,gBAAgB5mC,KAAKwwB,IAAIxd,SAC9BhT,KAAK+mC,aAAa/mC,KAAKwwB,IAAI/d,OAC3BzS,KAAKinC,sBAAsBjnC,KAAKwwB,IAAI/d,OACpCzS,KAAKqnC,aAAarnC,KAAKwwB,IAAI/d,MAG3B,IAAIrK,IAAapI,KAAKsT,KAAKlL,UAAW,IAAMpI,KAAKsT,KAAKlL,UAAY,KAC7DpI,KAAKylC,SAAW,YAAc,GACnCjV,GAAI/d,MAAMrK,UAAa,aAAeA,EACtCooB,EAAID,IAAInoB,UAAa,WAAaA,EAGlCpI,KAAKmT,MAAQqd,EAAI/d,MAAMoe,YACvB7wB,KAAKoT,OAASod,EAAI/d,MAAMse,aACxB/wB,KAAKqG,MAAMkqB,IAAIpd,MAAQqd,EAAID,IAAIM,YAC/B7wB,KAAKqG,MAAMkqB,IAAInd,OAASod,EAAID,IAAIQ,aAChC/wB,KAAKqG,MAAM2M,QAAQI,OAASod,EAAIxd,QAAQ+d,aAGxCP,EAAIxd,QAAQzF,MAAMy6B,WAAa,EAAIhoC,KAAKqG,MAAMkqB,IAAIpd,MAAQ,KAG1Dqd,EAAID,IAAIhjB,MAAMtF,KAAQjI,KAAKoT,OAASpT,KAAKqG,MAAMkqB,IAAInd,QAAU,EAAK,KAClEod,EAAID,IAAIhjB,MAAM1F,KAAQ7H,KAAKqG,MAAMkqB,IAAIpd,MAAQ,EAAK,KAElDnT,KAAK2lC,OAAQ,EAGf3lC,KAAKqmC,qBAAqB7V,EAAI/d,QAOhCpQ,EAAU0R,UAAUkyB,KAAO,WACpBjmC,KAAK0lC,WACR1lC,KAAKsiB,UAOTjgB,EAAU0R,UAAUiyB,KAAO,WACrBhmC,KAAK0lC,YACH1lC,KAAKwwB,IAAI/d,MAAMtI,YACjBnK,KAAKwwB,IAAI/d,MAAMtI,WAAWsH,YAAYzR,KAAKwwB,IAAI/d,OAGjDzS,KAAKiI,IAAM,KACXjI,KAAK6H,KAAO,KAEZ7H,KAAK0lC,WAAY,IAQrBrjC,EAAU0R,UAAUoyB,YAAc,WAChC,GAAIj2B,GAAQlQ,KAAKi7B,WAAWtF,SAAS31B,KAAKsT,KAAKpD,MAE/ClQ,MAAK6H,KAAOqI,EAAQlQ,KAAKqG,MAAMkqB,IAAIpd,MAGnCnT,KAAKwwB,IAAI/d,MAAMlF,MAAM1F,KAAO7H,KAAK6H,KAAO,MAO1CxF,EAAU0R,UAAUqyB,YAAc,WAChC,GAAIpR,GAAch1B,KAAK+O,QAAQimB,YAC3BviB,EAAQzS,KAAKwwB,IAAI/d,KAGnBA,GAAMlF,MAAMtF,IADK,OAAf+sB,EACgBh1B,KAAKiI,IAAM,KAGVjI,KAAKwlC,OAAOpyB,OAASpT,KAAKiI,IAAMjI,KAAKoT,OAAU,MAItEvT,EAAOD,QAAUyC,GAKb,SAASxC,EAAQD,EAASM,GAe9B,QAASoC,GAAWgR,EAAM2nB,EAAYlsB,GASpC,GARA/O,KAAKqG,OACH2M,SACEG,MAAO,IAGXnT,KAAK0kB,UAAW,EAGZpR,EAAM,CACR,GAAkBzM,QAAdyM,EAAKpD,MACP,KAAM,IAAItM,OAAM,oCAAsC0P,EAAKjT,GAE7D,IAAgBwG,QAAZyM,EAAKnD,IACP,KAAM,IAAIvM,OAAM,kCAAoC0P,EAAKjT,IAI7D6B,EAAK3B,KAAKP,KAAMsT,EAAM2nB,EAAYlsB,GA/BpC,GAAI62B,GAAS1lC,EAAoB,IAC7BgC,EAAOhC,EAAoB,GAiC/BoC,GAAUyR,UAAY,GAAI7R,GAAM,KAAM,KAAM,MAE5CI,EAAUyR,UAAUwzB,cAAgB,aAOpCjlC,EAAUyR,UAAUmyB,UAAY,SAAS/P,GAEvC,MAAQn2B,MAAKsT,KAAKpD,MAAQimB,EAAMhmB,KAASnQ,KAAKsT,KAAKnD,IAAMgmB,EAAMjmB,OAMjE5N,EAAUyR,UAAUuO,OAAS,WAC3B,GAAIkO,GAAMxwB,KAAKwwB,GAsBf,IArBKA,IAEHxwB,KAAKwwB,OACLA,EAAMxwB,KAAKwwB,IAGXA,EAAIgX,IAAM31B,SAASM,cAAc,OAIjCqe,EAAIxd,QAAUnB,SAASM,cAAc,OACrCqe,EAAIxd,QAAQ5K,UAAY,UACxBooB,EAAIgX,IAAIz1B,YAAYye,EAAIxd,SAGxBwd,EAAIgX,IAAI,iBAAmBxnC,KAE3BA,KAAK2lC,OAAQ,IAIV3lC,KAAKwlC,OACR,KAAM,IAAI5hC,OAAM,yCAElB,KAAK4sB,EAAIgX,IAAIr9B,WAAY,CACvB,GAAI09B,GAAa7nC,KAAKwlC,OAAOhV,IAAIqX,UACjC,KAAKA,EACH,KAAM,IAAIjkC,OAAM,iEAElBikC,GAAW91B,YAAYye,EAAIgX,KAQ7B,GANAxnC,KAAK0lC,WAAY,EAMb1lC,KAAK2lC,MAAO,CACd3lC,KAAK4mC,gBAAgB5mC,KAAKwwB,IAAIxd,SAC9BhT,KAAK+mC,aAAa/mC,KAAKwwB,IAAIgX,KAC3BxnC,KAAKinC,sBAAsBjnC,KAAKwwB,IAAIgX,KACpCxnC,KAAKqnC,aAAarnC,KAAKwwB,IAAIgX,IAG3B,IAAIp/B,IAAapI,KAAKsT,KAAKlL,UAAa,IAAMpI,KAAKsT,KAAKlL,UAAa,KAChEpI,KAAKylC,SAAW,YAAc,GACnCjV,GAAIgX,IAAIp/B,UAAYpI,KAAKunC,cAAgBn/B,EAGzCpI,KAAK0kB,SAA6D,WAAlD5c,OAAO2/B,iBAAiBjX,EAAIxd,SAAS0R,SAKrD1kB,KAAKwwB,IAAIxd,QAAQzF,MAAM06B,SAAW,OAClCjoC,KAAKqG,MAAM2M,QAAQG,MAAQnT,KAAKwwB,IAAIxd,QAAQ6d,YAC5C7wB,KAAKoT,OAASpT,KAAKwwB,IAAIgX,IAAIzW,aAC3B/wB,KAAKwwB,IAAIxd,QAAQzF,MAAM06B,SAAW,GAElCjoC,KAAK2lC,OAAQ,EAGf3lC,KAAKqmC,qBAAqB7V,EAAIgX,KAC9BxnC,KAAKkoC,mBACLloC,KAAKmoC,qBAOP7lC,EAAUyR,UAAUkyB,KAAO,WACpBjmC,KAAK0lC,WACR1lC,KAAKsiB,UAQThgB,EAAUyR,UAAUiyB,KAAO,WACzB,GAAIhmC,KAAK0lC,UAAW,CAClB,GAAI8B,GAAMxnC,KAAKwwB,IAAIgX,GAEfA,GAAIr9B,YACNq9B,EAAIr9B,WAAWsH,YAAY+1B,GAG7BxnC,KAAKiI,IAAM,KACXjI,KAAK6H,KAAO,KAEZ7H,KAAK0lC,WAAY,IAQrBpjC,EAAUyR,UAAUoyB,YAAc,WAChC,GAGIiC,GACAxX,EAJAyX,EAAcroC,KAAKwlC,OAAOryB,MAC1BjD,EAAQlQ,KAAKi7B,WAAWtF,SAAS31B,KAAKsT,KAAKpD,OAC3CC,EAAMnQ,KAAKi7B,WAAWtF,SAAS31B,KAAKsT,KAAKnD,MAKhCk4B,EAATn4B,IACFA,GAASm4B,GAEPl4B,EAAM,EAAIk4B,IACZl4B,EAAM,EAAIk4B,EAEZ,IAAIC,GAAW9jC,KAAKJ,IAAI+L,EAAMD,EAAO,EAoBrC,QAlBIlQ,KAAK0kB,UACP1kB,KAAK6H,KAAOqI,EACZlQ,KAAKmT,MAAQm1B,EAAWtoC,KAAKqG,MAAM2M,QAAQG,MAC3Cyd,EAAe5wB,KAAKqG,MAAM2M,QAAQG,QAOlCnT,KAAK6H,KAAOqI,EACZlQ,KAAKmT,MAAQm1B,EACb1X,EAAepsB,KAAKL,IAAIgM,EAAMD,EAAQ,EAAIlQ,KAAK+O,QAAQ8V,QAAS7kB,KAAKqG,MAAM2M,QAAQG,QAGrFnT,KAAKwwB,IAAIgX,IAAIj6B,MAAM1F,KAAO7H,KAAK6H,KAAO,KACtC7H,KAAKwwB,IAAIgX,IAAIj6B,MAAM4F,MAAQm1B,EAAW,KAE9BtoC,KAAK+O,QAAQ+4B,OACnB,IAAK,OACH9nC,KAAKwwB,IAAIxd,QAAQzF,MAAM1F,KAAO,GAC9B,MAEF,KAAK,QACH7H,KAAKwwB,IAAIxd,QAAQzF,MAAM1F,KAAOrD,KAAKJ,IAAKkkC,EAAW1X,EAAe,EAAI5wB,KAAK+O,QAAQ8V,QAAU,GAAK,IAClG,MAEF,KAAK,SACH7kB,KAAKwwB,IAAIxd,QAAQzF,MAAM1F,KAAOrD,KAAKJ,KAAKkkC,EAAW1X,EAAe,EAAI5wB,KAAK+O,QAAQ8V,SAAW,EAAG,GAAK,IACtG,MAEF,SAIMujB,EAFApoC,KAAK0kB,SACHvU,EAAM,EACM3L,KAAKJ,KAAK8L,EAAO,IAGhB0gB,EAIL,EAAR1gB,EACY1L,KAAKL,KAAK+L,EACnBC,EAAMD,EAAQ0gB,EAAe,EAAI5wB,KAAK+O,QAAQ8V,SAIrC,EAGlB7kB,KAAKwwB,IAAIxd,QAAQzF,MAAM1F,KAAOugC,EAAc,OAQlD9lC,EAAUyR,UAAUqyB,YAAc,WAChC,GAAIpR,GAAch1B,KAAK+O,QAAQimB,YAC3BwS,EAAMxnC,KAAKwwB,IAAIgX,GAGjBA,GAAIj6B,MAAMtF,IADO,OAAf+sB,EACch1B,KAAKiI,IAAM,KAGVjI,KAAKwlC,OAAOpyB,OAASpT,KAAKiI,IAAMjI,KAAKoT,OAAU,MAQpE9Q,EAAUyR,UAAUm0B,iBAAmB,WACrC,GAAIloC,KAAKylC,UAAYzlC,KAAK+O,QAAQw3B,SAASgC,aAAevoC,KAAKwwB,IAAIgY,SAAU,CAE3E,GAAIA,GAAW32B,SAASM,cAAc,MACtCq2B,GAASpgC,UAAY,YACrBogC,EAASC,aAAezoC,KAGxB4lC,EAAO4C,GACL5+B,gBAAgB,IACfuK,GAAG,OAAQ,cAIdnU,KAAKwwB,IAAIgX,IAAIz1B,YAAYy2B,GACzBxoC,KAAKwwB,IAAIgY,SAAWA,OAEZxoC,KAAKylC,UAAYzlC,KAAKwwB,IAAIgY,WAE9BxoC,KAAKwwB,IAAIgY,SAASr+B,YACpBnK,KAAKwwB,IAAIgY,SAASr+B,WAAWsH,YAAYzR,KAAKwwB,IAAIgY,UAEpDxoC,KAAKwwB,IAAIgY,SAAW,OAQxBlmC,EAAUyR,UAAUo0B,kBAAoB,WACtC,GAAInoC,KAAKylC,UAAYzlC,KAAK+O,QAAQw3B,SAASgC,aAAevoC,KAAKwwB,IAAIkY,UAAW,CAE5E,GAAIA,GAAY72B,SAASM,cAAc,MACvCu2B,GAAUtgC,UAAY,aACtBsgC,EAAUC,cAAgB3oC,KAG1B4lC,EAAO8C,GACL9+B,gBAAgB,IACfuK,GAAG,OAAQ,cAIdnU,KAAKwwB,IAAIgX,IAAIz1B,YAAY22B,GACzB1oC,KAAKwwB,IAAIkY,UAAYA,OAEb1oC,KAAKylC,UAAYzlC,KAAKwwB,IAAIkY,YAE9B1oC,KAAKwwB,IAAIkY,UAAUv+B,YACrBnK,KAAKwwB,IAAIkY,UAAUv+B,WAAWsH,YAAYzR,KAAKwwB,IAAIkY,WAErD1oC,KAAKwwB,IAAIkY,UAAY,OAIzB7oC,EAAOD,QAAU0C,GAKb,SAASzC,GAOb,QAAS0C,KACPvC,KAAK+O,QAAU,KACf/O,KAAKqG,MAAQ,KAQf9D,EAAUwR,UAAUD,WAAa,SAAS/E,GACpCA,GACFpO,KAAKgF,OAAO3F,KAAK+O,QAASA,IAQ9BxM,EAAUwR,UAAUuO,OAAS,WAE3B,OAAO,GAMT/f,EAAUwR,UAAUG,QAAU,aAU9B3R,EAAUwR,UAAU60B,WAAa,WAC/B,GAAIC,GAAW7oC,KAAKqG,MAAMyiC,iBAAmB9oC,KAAKqG,MAAM8M,OACpDnT,KAAKqG,MAAM0iC,kBAAoB/oC,KAAKqG,MAAM+M,MAK9C,OAHApT,MAAKqG,MAAMyiC,eAAiB9oC,KAAKqG,MAAM8M,MACvCnT,KAAKqG,MAAM0iC,gBAAkB/oC,KAAKqG,MAAM+M,OAEjCy1B,GAGThpC,EAAOD,QAAU2C,GAKb,SAAS1C,EAAQD,EAASM,GAe9B,QAASsC,GAAa4yB,EAAMrmB,GAC1B/O,KAAKo1B,KAAOA,EAGZp1B,KAAK80B,gBACHkU,iBAAiB,EAEjBC,QAASA,EACT5D,OAAQ,MAEVrlC,KAAK+O,QAAUpO,EAAKgF,UAAW3F,KAAK80B,gBACpC90B,KAAKuqB,OAAS,EAEdvqB,KAAKm1B,UAELn1B,KAAK8T,WAAW/E,GA5BlB,GAAIpO,GAAOT,EAAoB,GAC3BqC,EAAYrC,EAAoB,IAChC2D,EAAS3D,EAAoB,IAC7B+oC,EAAU/oC,EAAoB,GA4BlCsC,GAAYuR,UAAY,GAAIxR,GAM5BC,EAAYuR,UAAUohB,QAAU,WAC9B,GAAI7C,GAAMzgB,SAASM,cAAc,MACjCmgB,GAAIlqB,UAAY,cAChBkqB,EAAI/kB,MAAMkX,SAAW,WACrB6N,EAAI/kB,MAAMtF,IAAM,MAChBqqB,EAAI/kB,MAAM6F,OAAS,OAEnBpT,KAAKsyB,IAAMA,GAMb9vB,EAAYuR,UAAUG,QAAU,WAC9BlU,KAAK+O,QAAQi6B,iBAAkB,EAC/BhpC,KAAKsiB,SAELtiB,KAAKo1B,KAAO,MAQd5yB,EAAYuR,UAAUD,WAAa,SAAS/E,GACtCA,GAEFpO,EAAKyF,iBAAiB,kBAAmB,SAAU,WAAYpG,KAAK+O,QAASA,IAQjFvM,EAAYuR,UAAUuO,OAAS,WAC7B,GAAItiB,KAAK+O,QAAQi6B,gBAAiB,CAChC,GAAIxD,GAASxlC,KAAKo1B,KAAK5E,IAAI0Y,kBACvBlpC,MAAKsyB,IAAInoB,YAAcq7B,IAErBxlC,KAAKsyB,IAAInoB,YACXnK,KAAKsyB,IAAInoB,WAAWsH,YAAYzR,KAAKsyB,KAEvCkT,EAAOzzB,YAAY/R,KAAKsyB,KAExBtyB,KAAKkQ,QAGP,IAAI8tB,GAAM,GAAIp5B,OAAK,GAAIA,OAAOyC,UAAYrH,KAAKuqB,QAC3ClY,EAAIrS,KAAKo1B,KAAKz0B,KAAKg1B,SAASqI,GAE5BqH,EAASrlC,KAAK+O,QAAQk6B,QAAQjpC,KAAK+O,QAAQs2B,QAC3CoB,EAAQpB,EAAO1K,QAAU,IAAM0K,EAAOrK,KAAO,KAAOn3B,EAAOm6B,GAAKuE,OAAO,8BAC3EkE,GAAQA,EAAMxgB,OAAO,GAAGkjB,cAAgB1C,EAAM2C,UAAU,GAExDppC,KAAKsyB,IAAI/kB,MAAM1F,KAAOwK,EAAI,KAC1BrS,KAAKsyB,IAAImU,MAAQA,MAIbzmC,MAAKsyB,IAAInoB,YACXnK,KAAKsyB,IAAInoB,WAAWsH,YAAYzR,KAAKsyB,KAEvCtyB,KAAK+lB,MAGP,QAAO,GAMTvjB,EAAYuR,UAAU7D,MAAQ,WAG5B,QAASuF,KACPV,EAAGgR,MAGH,IAAIxhB,GAAQwQ,EAAGqgB,KAAKe,MAAM8E,WAAWlmB,EAAGqgB,KAAKC,SAASzI,OAAOzZ,OAAO5O,MAChE0uB,EAAW,EAAI1uB,EAAQ,EACZ,IAAX0uB,IAAiBA,EAAW,IAC5BA,EAAW,MAAMA,EAAW,KAEhCle,EAAGuN,SAGHvN,EAAGs0B,iBAAmBjvB,WAAW3E,EAAQwd,GAd3C,GAAIle,GAAK/U,IAiBTyV,MAMFjT,EAAYuR,UAAUgS,KAAO,WACGlf,SAA1B7G,KAAKqpC,mBACPlvB,aAAana,KAAKqpC,wBACXrpC,MAAKqpC,mBAUhB7mC,EAAYuR,UAAUu1B,eAAiB,SAAStO,GAC9C,GAAI5sB,GAAIzN,EAAKuG,QAAQ8zB,EAAM,QAAQ3zB,UAC/B22B,GAAM,GAAIp5B,OAAOyC,SACrBrH,MAAKuqB,OAASnc,EAAI4vB,EAClBh+B,KAAKsiB,UAOP9f,EAAYuR,UAAUw1B,eAAiB,WACrC,MAAO,IAAI3kC,OAAK,GAAIA,OAAOyC,UAAYrH,KAAKuqB,SAG9C1qB,EAAOD,QAAU4C,GAKb,SAAS3C,EAAQD,EAASM,GAiB9B,QAASuC,GAAY2yB,EAAMrmB,GACzB/O,KAAKo1B,KAAOA,EAGZp1B,KAAK80B,gBACH0U,gBAAgB,EAChBP,QAASA,EACT5D,OAAQ,KACRhlC,GAAI,GAENL,KAAK+O,QAAUpO,EAAKgF,UAAW3F,KAAK80B,gBAGlC90B,KAAKs2B,WADHvnB,GAAWA,EAAQisB,KACHjsB,EAAQisB,KAER,GAAIp2B,MAGxB5E,KAAKypC,eAGLzpC,KAAKm1B,UAELn1B,KAAK8T,WAAW/E,GAtClB,GAAI62B,GAAS1lC,EAAoB,IAC7BS,EAAOT,EAAoB,GAC3BqC,EAAYrC,EAAoB,IAChC2D,EAAS3D,EAAoB,IAC7B+oC,EAAU/oC,EAAoB,GAqClCuC,GAAWsR,UAAY,GAAIxR,GAO3BE,EAAWsR,UAAUD,WAAa,SAAS/E,GACrCA,IAEFpO,EAAKyF,iBAAiB,iBAAkB,SAAU,UAAW,MAAOpG,KAAK+O,QAASA,GAG9E/O,KAAK+O,QAAQ1O,IACfL,KAAKsiB,WASX7f,EAAWsR,UAAUohB,QAAU,WAC7B,GAAI7C,GAAMzgB,SAASM,cAAc,MACjCmgB,GAAIlqB,UAAY,aAChBkqB,EAAI/kB,MAAMkX,SAAW,WACrB6N,EAAI/kB,MAAMtF,IAAM,MAChBqqB,EAAI/kB,MAAM6F,OAAS,OACnBpT,KAAKsyB,IAAMA,CAEX,IAAIoX,GAAO73B,SAASM,cAAc,MAClCu3B,GAAKn8B,MAAMkX,SAAW,WACtBilB,EAAKn8B,MAAMtF,IAAM,MACjByhC,EAAKn8B,MAAM1F,KAAO,QAClB6hC,EAAKn8B,MAAM6F,OAAS,OACpBs2B,EAAKn8B,MAAM4F,MAAQ,OACnBmf,EAAIvgB,YAAY23B,GAGhB1pC,KAAK8D,OAAS8hC,EAAOtT,GACnBqX,iBAAiB,IAEnB3pC,KAAK8D,OAAOqQ,GAAG,YAAanU,KAAK6+B,aAAatJ,KAAKv1B,OACnDA,KAAK8D,OAAOqQ,GAAG,OAAanU,KAAK8+B,QAAQvJ,KAAKv1B,OAC9CA,KAAK8D,OAAOqQ,GAAG,UAAanU,KAAK++B,WAAWxJ,KAAKv1B,QAMnDyC,EAAWsR,UAAUG,QAAU,WAC7BlU,KAAK+O,QAAQy6B,gBAAiB,EAC9BxpC,KAAKsiB,SAELtiB,KAAK8D,OAAOqgC,QAAO,GACnBnkC,KAAK8D,OAAS,KAEd9D,KAAKo1B,KAAO,MAOd3yB,EAAWsR,UAAUuO,OAAS,WAC5B,GAAItiB,KAAK+O,QAAQy6B,eAAgB,CAC/B,GAAIhE,GAASxlC,KAAKo1B,KAAK5E,IAAI0Y,kBACvBlpC,MAAKsyB,IAAInoB,YAAcq7B,IAErBxlC,KAAKsyB,IAAInoB,YACXnK,KAAKsyB,IAAInoB,WAAWsH,YAAYzR,KAAKsyB,KAEvCkT,EAAOzzB,YAAY/R,KAAKsyB,KAG1B,IAAIjgB,GAAIrS,KAAKo1B,KAAKz0B,KAAKg1B,SAAS31B,KAAKs2B,YAEjC+O,EAASrlC,KAAK+O,QAAQk6B,QAAQjpC,KAAK+O,QAAQs2B,QAC3CoB,EAAQpB,EAAOrK,KAAO,KAAOn3B,EAAO7D,KAAKs2B,YAAYiM,OAAO,8BAChEkE,GAAQA,EAAMxgB,OAAO,GAAGkjB,cAAgB1C,EAAM2C,UAAU,GAExDppC,KAAKsyB,IAAI/kB,MAAM1F,KAAOwK,EAAI,KAC1BrS,KAAKsyB,IAAImU,MAAQA,MAIbzmC,MAAKsyB,IAAInoB,YACXnK,KAAKsyB,IAAInoB,WAAWsH,YAAYzR,KAAKsyB,IAIzC,QAAO,GAOT7vB,EAAWsR,UAAU61B,cAAgB,SAAS5O,GAC5Ch7B,KAAKs2B,WAAa31B,EAAKuG,QAAQ8zB,EAAM,QACrCh7B,KAAKsiB,UAOP7f,EAAWsR,UAAU81B,cAAgB,WACnC,MAAO,IAAIjlC,MAAK5E,KAAKs2B,WAAWjvB,YAQlC5E,EAAWsR,UAAU8qB,aAAe,SAASh1B,GAC3C7J,KAAKypC,YAAY1J,UAAW,EAC5B//B,KAAKypC,YAAYnT,WAAat2B,KAAKs2B,WAEnCzsB,EAAM88B,kBACN98B,EAAMD,kBAQRnH,EAAWsR,UAAU+qB,QAAU,SAAUj1B,GACvC,GAAK7J,KAAKypC,YAAY1J,SAAtB,CAEA,GAAIU,GAAS52B,EAAM22B,QAAQC,OACvBpuB,EAAIrS,KAAKo1B,KAAKz0B,KAAKg1B,SAAS31B,KAAKypC,YAAYnT,YAAcmK,EAC3DzF,EAAOh7B,KAAKo1B,KAAKz0B,KAAKo1B,OAAO1jB,EAEjCrS,MAAK4pC,cAAc5O,GAGnBh7B,KAAKo1B,KAAKE,QAAQhH,KAAK,cACrBjuB,GAAIL,KAAK+O,QAAQ1O,GACjB26B,KAAM,GAAIp2B,MAAK5E,KAAKs2B,WAAWjvB,aAGjCwC,EAAM88B,kBACN98B,EAAMD,mBAQRnH,EAAWsR,UAAUgrB,WAAa,SAAUl1B,GACrC7J,KAAKypC,YAAY1J,WAGtB//B,KAAKo1B,KAAKE,QAAQhH,KAAK,eACrBjuB,GAAIL,KAAK+O,QAAQ1O,GACjB26B,KAAM,GAAIp2B,MAAK5E,KAAKs2B,WAAWjvB,aAGjCwC,EAAM88B,kBACN98B,EAAMD,mBAGR/J,EAAOD,QAAU6C,GAKb,SAAS5C,EAAQD,EAASM,GAe9B,QAASwC,GAAU0yB,EAAMrmB,EAAS+6B,EAAKC,GACrC/pC,KAAKK,GAAKM,EAAK2E,aACftF,KAAKo1B,KAAOA,EAEZp1B,KAAK80B,gBACHE,YAAa,OACbgV,iBAAiB,EACjBC,iBAAiB,EACjBC,OAAO,EACPC,iBAAkB,EAClBC,iBAAkB,EAClBC,aAAc,GACdC,aAAc,EACdC,UAAW,GACXp3B,MAAO,OACPmW,SAAS,EACT8S,YAAY,EACZD,aACEt0B,MAAO1D,IAAI0C,OAAWzC,IAAIyC,QAC1BqhB,OAAQ/jB,IAAI0C,OAAWzC,IAAIyC,SAE7B4/B,OACE5+B,MAAOsiB,KAAKtjB,QACZqhB,OAAQiC,KAAKtjB,SAEf07B,QACE16B,MAAO+1B,SAAU/2B,QACjBqhB,OAAQ0V,SAAU/2B,UAItB7G,KAAK+pC,iBAAmBA,EACxB/pC,KAAKwqC,aAAeV,EACpB9pC,KAAKqG,SACLrG,KAAKyqC,aACHC,SACAC,UACAlE,UAGFzmC,KAAKwwB,OAELxwB,KAAKm2B,OAASjmB,MAAM,EAAGC,IAAI,GAE3BnQ,KAAK+O,QAAUpO,EAAKgF,UAAW3F,KAAK80B,gBACpC90B,KAAK4qC,iBAAmB,EAExB5qC,KAAK8T,WAAW/E,GAChB/O,KAAKmT,MAAQlP,QAAQ,GAAKjE,KAAK+O,QAAQoE,OAAOrI,QAAQ,KAAK,KAC3D9K,KAAK6qC,SAAW7qC,KAAKmT,MACrBnT,KAAKoT,OAASpT,KAAKwqC,aAAazZ,aAChC/wB,KAAK+5B,QAAS,EAEd/5B,KAAK8qC,WAAa,GAClB9qC,KAAK+qC,iBAAmB,GACxB/qC,KAAKgrC,aAAe,GAEpBhrC,KAAKirC,WAAa,EAClBjrC,KAAKkrC,QAAS,EACdlrC,KAAKmrC,eACLnrC,KAAKorC,cAAe,EAGpBprC,KAAK40B,UACL50B,KAAKqrC,eAAiB,EAGtBrrC,KAAKm1B,SAEL,IAAIpgB,GAAK/U,IACTA,MAAKo1B,KAAKE,QAAQnhB,GAAG,eAAgB,WACnCY,EAAGyb,IAAI8a,cAAc/9B,MAAMtF,IAAM8M,EAAGqgB,KAAKC,SAASkW,UAAY,OApFlE,GAAI5qC,GAAOT,EAAoB,GAC3BU,EAAUV,EAAoB,GAC9BqC,EAAYrC,EAAoB,IAChC0B,EAAW1B,EAAoB,GAqFnCwC,GAASqR,UAAY,GAAIxR,GAGzBG,EAASqR,UAAUy3B,SAAW,SAAS34B,EAAO44B,GACvCzrC,KAAK40B,OAAOzuB,eAAe0M,KAC9B7S,KAAK40B,OAAO/hB,GAAS44B,GAEvBzrC,KAAKqrC,gBAAkB,GAGzB3oC,EAASqR,UAAU23B,YAAc,SAAS74B,EAAO44B,GAC/CzrC,KAAK40B,OAAO/hB,GAAS44B,GAGvB/oC,EAASqR,UAAU43B,YAAc,SAAS94B,GACpC7S,KAAK40B,OAAOzuB,eAAe0M,WACtB7S,MAAK40B,OAAO/hB,GACnB7S,KAAKqrC,gBAAkB,IAK3B3oC,EAASqR,UAAUD,WAAa,SAAU/E,GACxC,GAAIA,EAAS,CACX,GAAIuT,IAAS,CACTtiB,MAAK+O,QAAQimB,aAAejmB,EAAQimB,aAAuCnuB,SAAxBkI,EAAQimB,cAC7D1S,GAAS,EAEX,IAAI9T,IACF,cACA,kBACA,kBACA,QACA,mBACA,mBACA,eACA,eACA,YACA,QACA,UACA,cACA,QACA,SACA,aAEF7N,GAAKyF,gBAAgBoI,EAAQxO,KAAK+O,QAASA,GAE3C/O,KAAK6qC,SAAW5mC,QAAQ,GAAKjE,KAAK+O,QAAQoE,OAAOrI,QAAQ,KAAK,KAEhD,GAAVwX,GAAkBtiB,KAAKwwB,IAAIrQ,QAC7BngB,KAAKgmC,OACLhmC,KAAKimC,UASXvjC,EAASqR,UAAUohB,QAAU,WAC3Bn1B,KAAKwwB,IAAIrQ,MAAQtO,SAASM,cAAc,OACxCnS,KAAKwwB,IAAIrQ,MAAM5S,MAAM4F,MAAQnT,KAAK+O,QAAQoE,MAC1CnT,KAAKwwB,IAAIrQ,MAAM5S,MAAM6F,OAASpT,KAAKoT,OAEnCpT,KAAKwwB,IAAI8a,cAAgBz5B,SAASM,cAAc,OAChDnS,KAAKwwB,IAAI8a,cAAc/9B,MAAM4F,MAAQ,OACrCnT,KAAKwwB,IAAI8a,cAAc/9B,MAAM6F,OAASpT,KAAKoT,OAC3CpT,KAAKwwB,IAAI8a,cAAc/9B,MAAMkX,SAAW,WAGxCzkB,KAAK8pC,IAAMj4B,SAASC,gBAAgB,6BAA6B,OACjE9R,KAAK8pC,IAAIv8B,MAAMkX,SAAW,WAC1BzkB,KAAK8pC,IAAIv8B,MAAMtF,IAAM,MACrBjI,KAAK8pC,IAAIv8B,MAAM6F,OAAS,OACxBpT,KAAK8pC,IAAIv8B,MAAM4F,MAAQ,OACvBnT,KAAK8pC,IAAIv8B,MAAMq+B,QAAU,QACzB5rC,KAAKwwB,IAAIrQ,MAAMpO,YAAY/R,KAAK8pC,MAGlCpnC,EAASqR,UAAU83B,kBAAoB,WACrCjrC,EAAQuQ,gBAAgBnR,KAAKmrC,YAE7B,IAAI94B,GACAk4B,EAAYvqC,KAAK+O,QAAQw7B,UACzBuB,EAAa,GACbC,EAAa,EACbz5B,EAAIy5B,EAAa,GAAMD,CAGzBz5B,GAD8B,QAA5BrS,KAAK+O,QAAQimB,YACX+W,EAGA/rC,KAAKmT,MAAQo3B,EAAYwB,CAG/B,KAAK,GAAI5T,KAAWn4B,MAAK40B,OACnB50B,KAAK40B,OAAOzuB,eAAegyB,KACO,GAAhCn4B,KAAK40B,OAAOuD,GAAS7O,SAAkEziB,SAA9C7G,KAAK+pC,iBAAiB1R,WAAWF,IAAuE,GAA7Cn4B,KAAK+pC,iBAAiB1R,WAAWF,KACvIn4B,KAAK40B,OAAOuD,GAAS6T,SAAS35B,EAAGC,EAAGtS,KAAKmrC,YAAanrC,KAAK8pC,IAAKS,EAAWuB,GAC3Ex5B,GAAKw5B,EAAaC,GAKxBnrC,GAAQ4Q,gBAAgBxR,KAAKmrC,aAC7BnrC,KAAKorC,cAAe,GAGtB1oC,EAASqR,UAAUk4B,cAAgB,WACR,GAArBjsC,KAAKorC,eACPxqC,EAAQuQ,gBAAgBnR,KAAKmrC,aAC7BvqC,EAAQ4Q,gBAAgBxR,KAAKmrC,aAC7BnrC,KAAKorC,cAAe,IAOxB1oC,EAASqR,UAAUkyB,KAAO,WACxBjmC,KAAK+5B,QAAS,EACT/5B,KAAKwwB,IAAIrQ,MAAMhW,aACc,QAA5BnK,KAAK+O,QAAQimB,YACfh1B,KAAKo1B,KAAK5E,IAAI3oB,KAAKkK,YAAY/R,KAAKwwB,IAAIrQ,OAGxCngB,KAAKo1B,KAAK5E,IAAItI,MAAMnW,YAAY/R,KAAKwwB,IAAIrQ,QAIxCngB,KAAKwwB,IAAI8a,cAAcnhC,YAC1BnK,KAAKo1B,KAAK5E,IAAI0b,qBAAqBn6B,YAAY/R,KAAKwwB,IAAI8a,gBAO5D5oC,EAASqR,UAAUiyB,KAAO,WACxBhmC,KAAK+5B,QAAS,EACV/5B,KAAKwwB,IAAIrQ,MAAMhW,YACjBnK,KAAKwwB,IAAIrQ,MAAMhW,WAAWsH,YAAYzR,KAAKwwB,IAAIrQ,OAG7CngB,KAAKwwB,IAAI8a,cAAcnhC,YACzBnK,KAAKwwB,IAAI8a,cAAcnhC,WAAWsH,YAAYzR,KAAKwwB,IAAI8a,gBAU3D5oC,EAASqR,UAAUigB,SAAW,SAAU9jB,EAAOC,GAC1B,GAAfnQ,KAAKkrC,QAA8C,GAA3BlrC,KAAK+O,QAAQqtB,YAA2C,IAArBp8B,KAAKgrC,cAC9D96B,EAAQ,IACVA,EAAQ,GAGZlQ,KAAKm2B,MAAMjmB,MAAQA,EACnBlQ,KAAKm2B,MAAMhmB,IAAMA,GAOnBzN,EAASqR,UAAUuO,OAAS,WAC1B,GAAIumB,IAAU,EACVsD,EAAe,CAGnBnsC,MAAKwwB,IAAI8a,cAAc/9B,MAAMtF,IAAMjI,KAAKo1B,KAAKC,SAASkW,UAAY,IAElE,KAAK,GAAIpT,KAAWn4B,MAAK40B,OACnB50B,KAAK40B,OAAOzuB,eAAegyB,KACO,GAAhCn4B,KAAK40B,OAAOuD,GAAS7O,SAAkEziB,SAA9C7G,KAAK+pC,iBAAiB1R,WAAWF,IAAuE,GAA7Cn4B,KAAK+pC,iBAAiB1R,WAAWF,IACvIgU,IAIN,IAA2B,GAAvBnsC,KAAKqrC,gBAAuC,GAAhBc,EAC9BnsC,KAAKgmC,WAEF,CACHhmC,KAAKimC,OACLjmC,KAAKoT,OAASnP,OAAOjE,KAAKwqC,aAAaj9B,MAAM6F,OAAOtI,QAAQ,KAAK,KAGjE9K,KAAKwwB,IAAI8a,cAAc/9B,MAAM6F,OAASpT,KAAKoT,OAAS,KACpDpT,KAAKmT,MAAgC,GAAxBnT,KAAK+O,QAAQua,QAAkBrlB,QAAQ,GAAKjE,KAAK+O,QAAQoE,OAAOrI,QAAQ,KAAK,KAAO,CAEjG,IAAIzE,GAAQrG,KAAKqG,MACb8Z,EAAQngB,KAAKwwB,IAAIrQ,KAGrBA,GAAM/X,UAAY,WAGlBpI,KAAKosC,oBAEL,IAAIpX,GAAch1B,KAAK+O,QAAQimB,YAC3BgV,EAAkBhqC,KAAK+O,QAAQi7B,gBAC/BC,EAAkBjqC,KAAK+O,QAAQk7B,eAGnC5jC,GAAMgmC,iBAAmBrC,EAAkB3jC,EAAMimC,gBAAkB,EACnEjmC,EAAMkmC,iBAAmBtC,EAAkB5jC,EAAMmmC,gBAAkB,EAEnEnmC,EAAMomC,eAAiBzsC,KAAKo1B,KAAK5E,IAAI0b,qBAAqBrb,YAAc7wB,KAAKirC,WAAajrC,KAAKmT,MAAQ,EAAInT,KAAK+O,QAAQq7B,iBACxH/jC,EAAMqmC,gBAAkB,EACxBrmC,EAAMsmC,eAAiB3sC,KAAKo1B,KAAK5E,IAAI0b,qBAAqBrb,YAAc7wB,KAAKirC,WAAajrC,KAAKmT,MAAQ,EAAInT,KAAK+O,QAAQo7B,iBACxH9jC,EAAMumC,gBAAkB,EAGL,QAAf5X,GACF7U,EAAM5S,MAAMtF,IAAM,IAClBkY,EAAM5S,MAAM1F,KAAO,IACnBsY,EAAM5S,MAAM4W,OAAS,GACrBhE,EAAM5S,MAAM4F,MAAQnT,KAAKmT,MAAQ,KACjCgN,EAAM5S,MAAM6F,OAASpT,KAAKoT,OAAS,KACnCpT,KAAKqG,MAAM8M,MAAQnT,KAAKo1B,KAAKC,SAASxtB,KAAKsL,MAC3CnT,KAAKqG,MAAM+M,OAASpT,KAAKo1B,KAAKC,SAASxtB,KAAKuL,SAG5C+M,EAAM5S,MAAMtF,IAAM,GAClBkY,EAAM5S,MAAM4W,OAAS,IACrBhE,EAAM5S,MAAM1F,KAAO,IACnBsY,EAAM5S,MAAM4F,MAAQnT,KAAKmT,MAAQ,KACjCgN,EAAM5S,MAAM6F,OAASpT,KAAKoT,OAAS,KACnCpT,KAAKqG,MAAM8M,MAAQnT,KAAKo1B,KAAKC,SAASnN,MAAM/U,MAC5CnT,KAAKqG,MAAM+M,OAASpT,KAAKo1B,KAAKC,SAASnN,MAAM9U,QAG/Cy1B,EAAU7oC,KAAK6sC,gBACfhE,EAAU7oC,KAAK4oC,cAAgBC,EAEL,GAAtB7oC,KAAK+O,QAAQm7B,MACflqC,KAAK6rC,oBAGL7rC,KAAKisC,gBAGPjsC,KAAK8sC,aAAa9X;CAEpB,MAAO6T,IAOTnmC,EAASqR,UAAU84B,cAAgB,WACjC,GAAIhE,IAAU,CACdjoC,GAAQuQ,gBAAgBnR,KAAKyqC,YAAYC,OACzC9pC,EAAQuQ,gBAAgBnR,KAAKyqC,YAAYE,OAEzC,IAAI3V,GAAch1B,KAAK+O,QAAqB,YAGxCktB,EAAcj8B,KAAKkrC,OAASlrC,KAAKqG,MAAMmmC,iBAAmB,GAAKxsC,KAAK+qC,iBAEpE/hB,EAAO,GAAIpnB,GACb5B,KAAKm2B,MAAMjmB,MACXlQ,KAAKm2B,MAAMhmB,IACX8rB,EACAj8B,KAAKwwB,IAAIrQ,MAAM4Q,aACf/wB,KAAK+O,QAAQotB,YAAYn8B,KAAK+O,QAAQimB,aACvB,GAAfh1B,KAAKkrC,QAAmBlrC,KAAK+O,QAAQqtB,WAGvCp8B,MAAKgpB,KAAOA,CAGZ,IAAI8hB,IAAc9qC,KAAKwwB,IAAIrQ,MAAM4Q,aAAgB/H,EAAKyT,WAAaz8B,KAAKwwB,IAAIrQ,MAAM4Q,aAAe/H,EAAKwU,gBAAoBxU,EAAKwU,YAAcxU,EAAKyT,WAAazT,EAAKA,KAEpKhpB,MAAK8qC,WAAaA,CAElB,IAAIiC,GAAgB/sC,KAAKoT,OAAS03B,EAC9BkC,EAAiB,CAGrB,IAAmB,GAAfhtC,KAAKkrC,OAAiB,CACxBJ,EAAa9qC,KAAK+qC,iBAClBiC,EAAiBxoC,KAAK4pB,MAAOpuB,KAAKwwB,IAAIrQ,MAAM4Q,aAAe+Z,EAAciC,EACzE,KAAK,GAAIlnC,GAAI,EAAO,GAAMmnC,EAAVnnC,EAA0BA,IACxCmjB,EAAK2U,UAIP,IAFAoP,EAAgB/sC,KAAKoT,OAAS03B,EAEL,IAArB9qC,KAAKgrC,cAAiD,GAA3BhrC,KAAK+O,QAAQqtB,WAAoB,CAC9D,GAAI6Q,GAAsBjkB,EAAKwT,UAAYxT,EAAKA,KAAQhpB,KAAKgrC,YAC7D,IAAIiC,EAAqB,EACvB,IAAK,GAAIpnC,GAAI,EAAOonC,EAAJpnC,EAAwBA,IAAMmjB,EAAKE,WAEhD,IAAyB,EAArB+jB,EACP,IAAK,GAAIpnC,GAAI,GAAQonC,EAALpnC,EAAyBA,IAAMmjB,EAAK2U,gBAKxDoP,IAAiB,GAInB/sC,MAAKktC,YAAclkB,EAAKwT,SACxB,IAMIoB,GANAuP,EAAiB,EAGjB/oC,EAAM,CAI8ByC,UAArC7G,KAAK+O,QAAQwzB,OAAOvN,KACrB4I,EAAW59B,KAAK+O,QAAQwzB,OAAOvN,GAAa4I,UAG9C59B,KAAKotC,aAAe,CAEpB,KADA,GAAI96B,GAAI,EACDlO,EAAMI,KAAK4pB,MAAM2e,IAAgB,CACtC/jB,EAAKE,OACL5W,EAAI9N,KAAK4pB,MAAMhqB,EAAM0mC,GACrBqC,EAAiB/oC,EAAM0mC,CACvB,IAAI/M,GAAU/U,EAAK+U,WAEf/9B,KAAK+O,QAAyB,iBAAgB,GAAXgvB,GAAmC,GAAf/9B,KAAKkrC,QAAsD,GAAnClrC,KAAK+O,QAAyB,kBAC/G/O,KAAKqtC,aAAa/6B,EAAI,EAAG0W,EAAKC,WAAW2U,GAAW5I,EAAa,cAAeh1B,KAAKqG,MAAMimC,iBAGzFvO,GAAW/9B,KAAK+O,QAAyB,iBAAoB,GAAf/O,KAAKkrC,QAChB,GAAnClrC,KAAK+O,QAAyB,iBAA6B,GAAf/O,KAAKkrC,QAA8B,GAAXnN,GAClEzrB,GAAK,GACPtS,KAAKqtC,aAAa/6B,EAAI,EAAG0W,EAAKC,WAAW2U,GAAW5I,EAAa,cAAeh1B,KAAKqG,MAAMmmC,iBAE7FxsC,KAAKstC,YAAYh7B,EAAG0iB,EAAa,wBAAyBh1B,KAAK+O,QAAQo7B,iBAAkBnqC,KAAKqG,MAAMsmC,iBAGpG3sC,KAAKstC,YAAYh7B,EAAG0iB,EAAa,wBAAyBh1B,KAAK+O,QAAQq7B,iBAAkBpqC,KAAKqG,MAAMomC,gBAGnF,GAAfzsC,KAAKkrC,QAAkC,GAAhBliB,EAAK2R,UAC9B36B,KAAKgrC,aAAe5mC,GAGtBA,IAIApE,KAAK4qC,iBADY,GAAf5qC,KAAKkrC,OACiB54B,GAAKtS,KAAKktC,YAAclkB,EAAK2R,SAG7B36B,KAAKwwB,IAAIrQ,MAAM4Q,aAAe/H,EAAKwU,WAI7D,IAAI+P,GAAa,CACuB1mC,UAApC7G,KAAK+O,QAAQ03B,MAAMzR,IAAuEnuB,SAAzC7G,KAAK+O,QAAQ03B,MAAMzR,GAAa7K,OACnFojB,EAAavtC,KAAKqG,MAAMmnC,gBAE1B,IAAIjjB,GAA+B,GAAtBvqB,KAAK+O,QAAQm7B,MAAgB1lC,KAAKJ,IAAIpE,KAAK+O,QAAQw7B,UAAWgD,GAAcvtC,KAAK+O,QAAQs7B,aAAe,GAAKkD,EAAavtC,KAAK+O,QAAQs7B,aAAe,EA0BnK,OAvBIrqC,MAAKotC,aAAgBptC,KAAKmT,MAAQoX,GAAmC,GAAxBvqB,KAAK+O,QAAQua,SAC5DtpB,KAAKmT,MAAQnT,KAAKotC,aAAe7iB,EACjCvqB,KAAK+O,QAAQoE,MAAQnT,KAAKmT,MAAQ,KAClCvS,EAAQ4Q,gBAAgBxR,KAAKyqC,YAAYC,OACzC9pC,EAAQ4Q,gBAAgBxR,KAAKyqC,YAAYE,QACzC3qC,KAAKsiB,SACLumB,GAAU,GAGH7oC,KAAKotC,aAAgBptC,KAAKmT,MAAQoX,GAAmC,GAAxBvqB,KAAK+O,QAAQua,SAAmBtpB,KAAKmT,MAAQnT,KAAK6qC,UACtG7qC,KAAKmT,MAAQ3O,KAAKJ,IAAIpE,KAAK6qC,SAAS7qC,KAAKotC,aAAe7iB,GACxDvqB,KAAK+O,QAAQoE,MAAQnT,KAAKmT,MAAQ,KAClCvS,EAAQ4Q,gBAAgBxR,KAAKyqC,YAAYC,OACzC9pC,EAAQ4Q,gBAAgBxR,KAAKyqC,YAAYE,QACzC3qC,KAAKsiB,SACLumB,GAAU,IAGVjoC,EAAQ4Q,gBAAgBxR,KAAKyqC,YAAYC,OACzC9pC,EAAQ4Q,gBAAgBxR,KAAKyqC,YAAYE,QACzC9B,GAAU,GAGLA,GAGTnmC,EAASqR,UAAU05B,aAAe,SAAUnpC,GAC1C,GAAIopC,GAAgB1tC,KAAKktC,YAAc5oC,EACnCqpC,EAAiBD,EAAgB1tC,KAAK4qC,gBAC1C,OAAO+C,IAYTjrC,EAASqR,UAAUs5B,aAAe,SAAU/6B,EAAG6X,EAAM6K,EAAa5sB,EAAWwlC,GAE3E,GAAI/6B,GAAQjS,EAAQoR,cAAc,MAAMhS,KAAKyqC,YAAYE,OAAQ3qC,KAAKwwB,IAAIrQ,MAC1EtN,GAAMzK,UAAYA,EAClByK,EAAMiS,UAAYqF,EACC,QAAf6K,GACFniB,EAAMtF,MAAM1F,KAAO,IAAM7H,KAAK+O,QAAQs7B,aAAe,KACrDx3B,EAAMtF,MAAM4b,UAAY,UAGxBtW,EAAMtF,MAAM2a,MAAQ,IAAMloB,KAAK+O,QAAQs7B,aAAe,KACtDx3B,EAAMtF,MAAM4b,UAAY,QAG1BtW,EAAMtF,MAAMtF,IAAMqK,EAAI,GAAMs7B,EAAkB5tC,KAAK+O,QAAQu7B,aAAe,KAE1EngB,GAAQ,EAER,IAAI0jB,GAAerpC,KAAKJ,IAAIpE,KAAKqG,MAAMynC,eAAe9tC,KAAKqG,MAAM0nC,eAC7D/tC,MAAKotC,aAAejjB,EAAKnkB,OAAS6nC,IACpC7tC,KAAKotC,aAAejjB,EAAKnkB,OAAS6nC,IAYtCnrC,EAASqR,UAAUu5B,YAAc,SAAUh7B,EAAG0iB,EAAa5sB,EAAWmiB,EAAQpX,GAC5E,GAAmB,GAAfnT,KAAKkrC,OAAgB,CACvB,GAAI5a,GAAO1vB,EAAQoR,cAAc,MAAMhS,KAAKyqC,YAAYC,MAAO1qC,KAAKwwB,IAAI8a,cACxEhb,GAAKloB,UAAYA,EACjBkoB,EAAKxL,UAAY,GAEE,QAAfkQ,EACF1E,EAAK/iB,MAAM1F,KAAQ7H,KAAKmT,MAAQoX,EAAU,KAG1C+F,EAAK/iB,MAAM2a,MAASloB,KAAKmT,MAAQoX,EAAU,KAG7C+F,EAAK/iB,MAAM4F,MAAQA,EAAQ,KAC3Bmd,EAAK/iB,MAAMtF,IAAMqK,EAAI,OASzB5P,EAASqR,UAAU+4B,aAAe,SAAU9X,GAI1C,GAHAp0B,EAAQuQ,gBAAgBnR,KAAKyqC,YAAYhE,OAGD5/B,SAApC7G,KAAK+O,QAAQ03B,MAAMzR,IAAuEnuB,SAAzC7G,KAAK+O,QAAQ03B,MAAMzR,GAAa7K,KAAoB,CACvG,GAAIsc,GAAQ7lC,EAAQoR,cAAc,MAAOhS,KAAKyqC,YAAYhE,MAAOzmC,KAAKwwB,IAAIrQ,MAC1EsmB,GAAMr+B,UAAY,eAAiB4sB,EACnCyR,EAAM3hB,UAAY9kB,KAAK+O,QAAQ03B,MAAMzR,GAAa7K,KAGJtjB,SAA1C7G,KAAK+O,QAAQ03B,MAAMzR,GAAaznB,OAClC5M,EAAKiN,WAAW64B,EAAOzmC,KAAK+O,QAAQ03B,MAAMzR,GAAaznB,OAGtC,QAAfynB,EACFyR,EAAMl5B,MAAM1F,KAAO7H,KAAKqG,MAAMmnC,gBAAkB,KAGhD/G,EAAMl5B,MAAM2a,MAAQloB,KAAKqG,MAAMmnC,gBAAkB,KAGnD/G,EAAMl5B,MAAM4F,MAAQnT,KAAKoT,OAAS,KAIpCxS,EAAQ4Q,gBAAgBxR,KAAKyqC,YAAYhE,QAW3C/jC,EAASqR,UAAUq4B,mBAAqB,WAEtC,KAAM,mBAAqBpsC,MAAKqG,OAAQ,CACtC,GAAI2nC,GAAYn8B,SAASo8B,eAAe,KACpCC,EAAmBr8B,SAASM,cAAc,MAC9C+7B,GAAiB9lC,UAAY,sBAC7B8lC,EAAiBn8B,YAAYi8B,GAC7BhuC,KAAKwwB,IAAIrQ,MAAMpO,YAAYm8B,GAE3BluC,KAAKqG,MAAMimC,gBAAkB4B,EAAiBxoB,aAC9C1lB,KAAKqG,MAAM0nC,eAAiBG,EAAiB7tB,YAE7CrgB,KAAKwwB,IAAIrQ,MAAM1O,YAAYy8B,GAG7B,KAAM,mBAAqBluC,MAAKqG,OAAQ,CACtC,GAAI8nC,GAAYt8B,SAASo8B,eAAe,KACpCG,EAAmBv8B,SAASM,cAAc,MAC9Ci8B,GAAiBhmC,UAAY,sBAC7BgmC,EAAiBr8B,YAAYo8B,GAC7BnuC,KAAKwwB,IAAIrQ,MAAMpO,YAAYq8B,GAE3BpuC,KAAKqG,MAAMmmC,gBAAkB4B,EAAiB1oB,aAC9C1lB,KAAKqG,MAAMynC,eAAiBM,EAAiB/tB,YAE7CrgB,KAAKwwB,IAAIrQ,MAAM1O,YAAY28B,GAG7B,KAAM,mBAAqBpuC,MAAKqG,OAAQ,CACtC,GAAIgoC,GAAYx8B,SAASo8B,eAAe,KACpCK,EAAmBz8B,SAASM,cAAc,MAC9Cm8B,GAAiBlmC,UAAY,sBAC7BkmC,EAAiBv8B,YAAYs8B,GAC7BruC,KAAKwwB,IAAIrQ,MAAMpO,YAAYu8B,GAE3BtuC,KAAKqG,MAAMmnC,gBAAkBc,EAAiB5oB,aAC9C1lB,KAAKqG,MAAMkoC,eAAiBD,EAAiBjuB,YAE7CrgB,KAAKwwB,IAAIrQ,MAAM1O,YAAY68B,KAI/BzuC,EAAOD,QAAU8C,GAKb,SAAS7C,EAAQD,EAASM,GAkB9B,QAASyC,GAAY4P,EAAO4lB,EAASppB,EAASy/B,GAC5CxuC,KAAKK,GAAK83B,CACV,IAAI3pB,IAAU,WAAW,QAAQ,OAAO,mBAAmB,WAAW,aAAa,SAAS,aAC5FxO,MAAK+O,QAAUpO,EAAK4N,sBAAsBC,EAAOO,GACjD/O,KAAKyuC,kBAAwC5nC,SAApB0L,EAAMnK,UAC/BpI,KAAKwuC,yBAA2BA,EAChCxuC,KAAK0uC,aAAe,EACpB1uC,KAAKyV,OAAOlD,GACkB,GAA1BvS,KAAKyuC,oBACPzuC,KAAKwuC,yBAAyB,IAAM,GAEtCxuC,KAAKw2B,aACLx2B,KAAKspB,QAA4BziB,SAAlB0L,EAAM+W,SAAwB,EAAO/W,EAAM+W,QA5B5D,GAAI3oB,GAAOT,EAAoB,GAC3BU,EAAUV,EAAoB,GAC9ByuC,EAAOzuC,EAAoB,IAC3B0uC,EAAM1uC,EAAoB,IAC1B2uC,EAAS3uC,EAAoB,GAgCjCyC,GAAWoR,UAAU4iB,SAAW,SAAS10B,GAC1B,MAATA,GACFjC,KAAKw2B,UAAYv0B,EACQ,GAArBjC,KAAK+O,QAAQ+H,MACf9W,KAAKw2B,UAAU1f,KAAK,SAAUlR,EAAEa,GAAI,MAAOb,GAAEyM,EAAI5L,EAAE4L,KAIrDrS,KAAKw2B,cAST7zB,EAAWoR,UAAU+6B,gBAAkB,SAAS1oB,GAC9CpmB,KAAK0uC,aAAetoB,GAQtBzjB,EAAWoR,UAAUD,WAAa,SAAS/E,GACzC,GAAgBlI,SAAZkI,EAAuB,CACzB,GAAIP,IAAU,WAAW,QAAQ,OAAO,mBAAmB,WAC3D7N,GAAK6F,oBAAoBgI,EAAQxO,KAAK+O,QAASA,GAE/CpO,EAAKkO,aAAa7O,KAAK+O,QAASA,EAAQ,cACxCpO,EAAKkO,aAAa7O,KAAK+O,QAASA,EAAQ,cACxCpO,EAAKkO,aAAa7O,KAAK+O,QAASA,EAAQ,UAEpCA,EAAQggC,YACuB,gBAAtBhgC,GAAQggC,YACbhgC,EAAQggC,WAAWC,kBACqB,WAAtCjgC,EAAQggC,WAAWC,gBACrBhvC,KAAK+O,QAAQggC,WAAWE,MAAQ,EAEa,WAAtClgC,EAAQggC,WAAWC,gBAC1BhvC,KAAK+O,QAAQggC,WAAWE,MAAQ,GAGhCjvC,KAAK+O,QAAQggC,WAAWC,gBAAkB,cAC1ChvC,KAAK+O,QAAQggC,WAAWE,MAAQ,KAOhB,QAAtBjvC,KAAK+O,QAAQxB,MACfvN,KAAKmH,KAAO,GAAIwnC,GAAK3uC,KAAKK,GAAIL,KAAK+O,SAEN,OAAtB/O,KAAK+O,QAAQxB,MACpBvN,KAAKmH,KAAO,GAAIynC,GAAI5uC,KAAKK,GAAIL,KAAK+O,SAEL,UAAtB/O,KAAK+O,QAAQxB,QACpBvN,KAAKmH,KAAO,GAAI0nC,GAAO7uC,KAAKK,GAAIL,KAAK+O,WASzCpM,EAAWoR,UAAU0B,OAAS,SAASlD,GACrCvS,KAAKuS,MAAQA,EACbvS,KAAKgT,QAAUT,EAAMS,SAAW,QAChChT,KAAKoI,UAAYmK,EAAMnK,WAAapI,KAAKoI,WAAa,aAAepI,KAAKwuC,yBAAyB,GAAK,GACxGxuC,KAAKspB,QAA4BziB,SAAlB0L,EAAM+W,SAAwB,EAAO/W,EAAM+W,QAC1DtpB,KAAKuN,MAAQgF,EAAMhF,MACnBvN,KAAK8T,WAAWvB,EAAMxD,UAcxBpM,EAAWoR,UAAUi4B,SAAW,SAAS35B,EAAGC,EAAGlB,EAAe89B,EAAc3E,EAAWuB,GACrF,GACIqD,GAAMC,EADNC,EAA0B,GAAbvD,EAGbwD,EAAU1uC,EAAQ8Q,cAAc,OAAQN,EAAe89B,EAO3D,IANAI,EAAQ38B,eAAe,KAAM,IAAKN,GAClCi9B,EAAQ38B,eAAe,KAAM,IAAKL,EAAI+8B,GACtCC,EAAQ38B,eAAe,KAAM,QAAS43B,GACtC+E,EAAQ38B,eAAe,KAAM,SAAU,EAAE08B,GACzCC,EAAQ38B,eAAe,KAAM,QAAS,WAEZ,QAAtB3S,KAAK+O,QAAQxB,MACf4hC,EAAOvuC,EAAQ8Q,cAAc,OAAQN,EAAe89B,GACpDC,EAAKx8B,eAAe,KAAM,QAAS3S,KAAKoI,WACtBvB,SAAf7G,KAAKuN,OACN4hC,EAAKx8B,eAAe,KAAM,QAAS3S,KAAKuN,OAG1C4hC,EAAKx8B,eAAe,KAAM,IAAK,IAAMN,EAAI,IAAIC,EAAE,MAAQD,EAAIk4B,GAAa,IAAIj4B,GACzC,GAA/BtS,KAAK+O,QAAQwgC,OAAOvgC,UACtBogC,EAAWxuC,EAAQ8Q,cAAc,OAAQN,EAAe89B,GACjB,OAAnClvC,KAAK+O,QAAQwgC,OAAOva,YACtBoa,EAASz8B,eAAe,KAAM,IAAK,IAAIN,EAAE,MAAQC,EAAI+8B,GACnD,IAAIh9B,EAAE,IAAIC,EAAE,MAAOD,EAAIk4B,GAAa,IAAIj4B,EAAE,MAAOD,EAAIk4B,GAAa,KAAOj4B,EAAI+8B,IAG/ED,EAASz8B,eAAe,KAAM,IAAK,IAAIN,EAAE,IAAIC,EAAE,KACzCD,EAAE,KAAOC,EAAI+8B,GAAc,MACzBh9B,EAAIk4B,GAAa,KAAOj4B,EAAI+8B,GAClC,KAAMh9B,EAAIk4B,GAAa,IAAIj4B,GAE/B88B,EAASz8B,eAAe,KAAM,QAAS3S,KAAKoI,UAAY,cAGnB,GAAnCpI,KAAK+O,QAAQ2D,WAAW1D,SAC1BpO,EAAQwR,UAAUC,EAAI,GAAMk4B,EAAUj4B,EAAGtS,KAAMoR,EAAe89B,OAG7D,CACH,GAAIM,GAAWhrC,KAAK4pB,MAAM,GAAMmc,GAC5BkF,EAAajrC,KAAK4pB,MAAM,GAAM0d,GAC9B4D,EAAalrC,KAAK4pB,MAAM,IAAO0d,GAE/BvhB,EAAS/lB,KAAK4pB,OAAOmc,EAAa,EAAIiF,GAAW,EAErD5uC,GAAQsS,QAAQb,EAAI,GAAIm9B,EAAWjlB,EAAYjY,EAAI+8B,EAAaI,EAAa,EAAGD,EAAUC,EAAYzvC,KAAKoI,UAAY,OAAQgJ,EAAe89B,GAC9ItuC,EAAQsS,QAAQb,EAAI,IAAIm9B,EAAWjlB,EAAS,EAAGjY,EAAI+8B,EAAaK,EAAa,EAAGF,EAAUE,EAAY1vC,KAAKoI,UAAY,OAAQgJ,EAAe89B,KAYlJvsC,EAAWoR,UAAUmkB,UAAY,SAASqS,EAAWuB,GACnD,GAAIhC,GAAMj4B,SAASC,gBAAgB,6BAA6B,MAEhE,OADA9R,MAAKgsC,SAAS,EAAE,GAAIF,KAAchC,EAAIS,EAAUuB,IACxC6D,KAAM7F,EAAKj3B,MAAO7S,KAAKgT,QAASgiB,YAAYh1B,KAAK+O,QAAQ6gC,mBAGnEjtC,EAAWoR,UAAU87B,UAAY,SAASC,GACxC,MAAO9vC,MAAKmH,KAAK0oC,UAAUC,IAG7BntC,EAAWoR,UAAUg8B,KAAO,SAASlY,EAAStlB,EAAOy9B,GACnDhwC,KAAKmH,KAAK4oC,KAAKlY,EAAStlB,EAAOy9B,IAIjCnwC,EAAOD,QAAU+C,GAKb,SAAS9C,EAAQD,EAASM,GAY9B,QAAS0C,GAAOu1B,EAAS7kB,EAAMijB,GAC7Bv2B,KAAKm4B,QAAUA,EACfn4B,KAAKoiC,aACLpiC,KAAK4nC,cAAgB,EACrB5nC,KAAKiwC,gBAAkB38B,GAAQA,EAAK48B,cACpClwC,KAAKu2B,QAAUA,EAEfv2B,KAAKwwB,OACLxwB,KAAKqG,OACHwM,OACEM,MAAO,EACPC,OAAQ,IAGZpT,KAAKoI,UAAY,KAEjBpI,KAAKiC,SACLjC,KAAKmwC,gBACLnwC,KAAKkP,cACHkhC,WACAC,UAEFrwC,KAAKswC,kBAAmB,CACxB,IAAIv7B,GAAK/U,IACTA,MAAKu2B,QAAQnB,KAAKE,QAAQnhB,GAAG,mBAAoB,WAC/CY,EAAGu7B,kBAAmB,IAGxBtwC,KAAKm1B,UAELn1B,KAAK4Y,QAAQtF,GAxCf,CAAA,GAAI3S,GAAOT,EAAoB,GAC3B4B,EAAQ5B,EAAoB,GAChBA,GAAoB,IA6CpC0C,EAAMmR,UAAUohB,QAAU,WACxB,GAAItiB,GAAQhB,SAASM,cAAc,MACnCU,GAAMzK,UAAY,SAClBpI,KAAKwwB,IAAI3d,MAAQA,CAEjB,IAAI09B,GAAQ1+B,SAASM,cAAc,MACnCo+B,GAAMnoC,UAAY,QAClByK,EAAMd,YAAYw+B,GAClBvwC,KAAKwwB,IAAI+f,MAAQA,CAEjB,IAAI1I,GAAah2B,SAASM,cAAc,MACxC01B,GAAWz/B,UAAY,QACvBy/B,EAAW,kBAAoB7nC,KAC/BA,KAAKwwB,IAAIqX,WAAaA,EAEtB7nC,KAAKwwB,IAAI9jB,WAAamF,SAASM,cAAc,OAC7CnS,KAAKwwB,IAAI9jB,WAAWtE,UAAY,QAEhCpI,KAAKwwB,IAAIuR,KAAOlwB,SAASM,cAAc,OACvCnS,KAAKwwB,IAAIuR,KAAK35B,UAAY,QAK1BpI,KAAKwwB,IAAIggB,OAAS3+B,SAASM,cAAc,OACzCnS,KAAKwwB,IAAIggB,OAAOjjC,MAAM8qB,WAAa,SACnCr4B,KAAKwwB,IAAIggB,OAAO1rB,UAAY,IAC5B9kB,KAAKwwB,IAAI9jB,WAAWqF,YAAY/R,KAAKwwB,IAAIggB,SAO3C5tC,EAAMmR,UAAU6E,QAAU,SAAStF,GAEjC,GAAIN,GAAUM,GAAQA,EAAKN,OACvBA,aAAmB8zB,SACrB9mC,KAAKwwB,IAAI+f,MAAMx+B,YAAYiB,GAG3BhT,KAAKwwB,IAAI+f,MAAMzrB,UADIje,SAAZmM,GAAqC,OAAZA,EACLA,EAGAhT,KAAKm4B,SAAW,GAI7Cn4B,KAAKwwB,IAAI3d,MAAM4zB,MAAQnzB,GAAQA,EAAKmzB,OAAS,GAExCzmC,KAAKwwB,IAAI+f,MAAM/rB,WAIlB7jB,EAAK8H,gBAAgBzI,KAAKwwB,IAAI+f,MAAO,UAHrC5vC,EAAKwH,aAAanI,KAAKwwB,IAAI+f,MAAO,SAOpC,IAAInoC,GAAYkL,GAAQA,EAAKlL,WAAa,IACtCA,IAAapI,KAAKoI,YAChBpI,KAAKoI,YACPzH,EAAK8H,gBAAgBzI,KAAKwwB,IAAI3d,MAAO7S,KAAKoI,WAC1CzH,EAAK8H,gBAAgBzI,KAAKwwB,IAAIqX,WAAY7nC,KAAKoI,WAC/CzH,EAAK8H,gBAAgBzI,KAAKwwB,IAAI9jB,WAAY1M,KAAKoI,WAC/CzH,EAAK8H,gBAAgBzI,KAAKwwB,IAAIuR,KAAM/hC,KAAKoI,YAE3CzH,EAAKwH,aAAanI,KAAKwwB,IAAI3d,MAAOzK,GAClCzH,EAAKwH,aAAanI,KAAKwwB,IAAIqX,WAAYz/B,GACvCzH,EAAKwH,aAAanI,KAAKwwB,IAAI9jB,WAAYtE,GACvCzH,EAAKwH,aAAanI,KAAKwwB,IAAIuR,KAAM35B,GACjCpI,KAAKoI,UAAYA,GAIfpI,KAAKuN,QACP5M,EAAKoN,cAAc/N,KAAKwwB,IAAI3d,MAAO7S,KAAKuN,OACxCvN,KAAKuN,MAAQ,MAEX+F,GAAQA,EAAK/F,QACf5M,EAAKiN,WAAW5N,KAAKwwB,IAAI3d,MAAOS,EAAK/F,OACrCvN,KAAKuN,MAAQ+F,EAAK/F,QAQtB3K,EAAMmR,UAAU08B,cAAgB,WAC9B,MAAOzwC,MAAKqG,MAAMwM,MAAMM,OAW1BvQ,EAAMmR,UAAUuO,OAAS,SAAS6T,EAAO3b,EAAQk2B,GAC/C,GAAI7H,IAAU,CAEd7oC,MAAKmwC,aAAenwC,KAAK2wC,oBAAoB3wC,KAAKkP,aAAclP,KAAKmwC,aAAcha,EAInF,IAAIya,GAAe5wC,KAAKwwB,IAAIggB,OAAO9qB,YAC/BkrB,IAAgB5wC,KAAK6wC,mBACvB7wC,KAAK6wC,iBAAmBD,EAExBjwC,EAAKiI,QAAQ5I,KAAKiC,MAAO,SAAU0N,GACjCA,EAAKg2B,OAAQ,EACTh2B,EAAK+1B,WAAW/1B,EAAK2S,WAG3BouB,GAAU,GAIR1wC,KAAKu2B,QAAQxnB,QAAQjN,MACvBA,EAAMA,MAAM9B,KAAKmwC,aAAc31B,EAAQk2B,GAGvC5uC,EAAMqgC,QAAQniC,KAAKmwC,aAAc31B,EAAQxa,KAAKoiC,UAIhD,IAAIhvB,GAASpT,KAAK8wC,iBAAiBt2B,GAG/BqtB,EAAa7nC,KAAKwwB,IAAIqX,UAC1B7nC,MAAKiI,IAAM4/B,EAAWkJ,UACtB/wC,KAAK6H,KAAOggC,EAAWmJ,WACvBhxC,KAAKmT,MAAQ00B,EAAWhX,YACxBgY,EAAUloC,EAAKqI,eAAehJ,KAAM,SAAUoT,IAAWy1B,EAGzDA,EAAUloC,EAAKqI,eAAehJ,KAAKqG,MAAMwM,MAAO,QAAS7S,KAAKwwB,IAAI+f,MAAMlwB,cAAgBwoB,EACxFA,EAAUloC,EAAKqI,eAAehJ,KAAKqG,MAAMwM,MAAO,SAAU7S,KAAKwwB,IAAI+f,MAAM7qB,eAAiBmjB,EAG1F7oC,KAAKwwB,IAAI9jB,WAAWa,MAAM6F,OAAUA,EAAS,KAC7CpT,KAAKwwB,IAAIqX,WAAWt6B,MAAM6F,OAAUA,EAAS,KAC7CpT,KAAKwwB,IAAI3d,MAAMtF,MAAM6F,OAASA,EAAS,IAGvC,KAAK,GAAIvN,GAAI,EAAGorC,EAAKjxC,KAAKmwC,aAAanqC,OAAYirC,EAAJprC,EAAQA,IAAK,CAC1D,GAAI8J,GAAO3P,KAAKmwC,aAAatqC,EAC7B8J,GAAKy2B,YAAY5rB,GAGnB,MAAOquB,IASTjmC,EAAMmR,UAAU+8B,iBAAmB,SAAUt2B,GAE3C,GAAIpH,GACA+8B,EAAenwC,KAAKmwC,YAGxBnwC,MAAKkxC,gBACL,IAAIn8B,GAAK/U,IACT,IAAImwC,EAAanqC,OAAQ,CACvB,GAAI7B,GAAMgsC,EAAa,GAAGloC,IACtB7D,EAAM+rC,EAAa,GAAGloC,IAAMkoC,EAAa,GAAG/8B,MAahD,IAZAzS,EAAKiI,QAAQunC,EAAc,SAAUxgC,GACnCxL,EAAMK,KAAKL,IAAIA,EAAKwL,EAAK1H,KACzB7D,EAAMI,KAAKJ,IAAIA,EAAMuL,EAAK1H,IAAM0H,EAAKyD,QACVvM,SAAvB8I,EAAK2D,KAAKgvB,WACZvtB,EAAGqtB,UAAUzyB,EAAK2D,KAAKgvB,UAAUlvB,OAAS5O,KAAKJ,IAAI2Q,EAAGqtB,UAAUzyB,EAAK2D,KAAKgvB,UAAUlvB,OAAOzD,EAAKyD,QAChG2B,EAAGqtB,UAAUzyB,EAAK2D,KAAKgvB,UAAUhZ,SAAU,KAO3CnlB,EAAMqW,EAAOunB,KAAM,CAErB,GAAIxX,GAASpmB,EAAMqW,EAAOunB,IAC1B39B,IAAOmmB,EACP5pB,EAAKiI,QAAQunC,EAAc,SAAUxgC,GACnCA,EAAK1H,KAAOsiB,IAGhBnX,EAAShP,EAAMoW,EAAO7K,KAAK2W,SAAW,MAGtClT,GAASoH,EAAOunB,KAAOvnB,EAAO7K,KAAK2W,QAIrC,OAFAlT,GAAS5O,KAAKJ,IAAIgP,EAAQpT,KAAKqG,MAAMwM,MAAMO,SAQ7CxQ,EAAMmR,UAAUkyB,KAAO,WAChBjmC,KAAKwwB,IAAI3d,MAAM1I,YAClBnK,KAAKu2B,QAAQ/F,IAAI2gB,SAASp/B,YAAY/R,KAAKwwB,IAAI3d,OAG5C7S,KAAKwwB,IAAIqX,WAAW19B,YACvBnK,KAAKu2B,QAAQ/F,IAAIqX,WAAW91B,YAAY/R,KAAKwwB,IAAIqX,YAG9C7nC,KAAKwwB,IAAI9jB,WAAWvC,YACvBnK,KAAKu2B,QAAQ/F,IAAI9jB,WAAWqF,YAAY/R,KAAKwwB,IAAI9jB,YAG9C1M,KAAKwwB,IAAIuR,KAAK53B,YACjBnK,KAAKu2B,QAAQ/F,IAAIuR,KAAKhwB,YAAY/R,KAAKwwB,IAAIuR,OAO/Cn/B,EAAMmR,UAAUiyB,KAAO,WACrB,GAAInzB,GAAQ7S,KAAKwwB,IAAI3d,KACjBA,GAAM1I,YACR0I,EAAM1I,WAAWsH,YAAYoB,EAG/B,IAAIg1B,GAAa7nC,KAAKwwB,IAAIqX,UACtBA,GAAW19B,YACb09B,EAAW19B,WAAWsH,YAAYo2B,EAGpC,IAAIn7B,GAAa1M,KAAKwwB,IAAI9jB,UACtBA,GAAWvC,YACbuC,EAAWvC,WAAWsH,YAAY/E,EAGpC,IAAIq1B,GAAO/hC,KAAKwwB,IAAIuR,IAChBA,GAAK53B,YACP43B,EAAK53B,WAAWsH,YAAYswB,IAQhCn/B,EAAMmR,UAAUF,IAAM,SAASlE,GAc7B,GAbA3P,KAAKiC,MAAM0N,EAAKtP,IAAMsP,EACtBA,EAAKo2B,UAAU/lC,MAGY6G,SAAvB8I,EAAK2D,KAAKgvB,WAC+Bz7B,SAAvC7G,KAAKoiC,UAAUzyB,EAAK2D,KAAKgvB,YAC3BtiC,KAAKoiC,UAAUzyB,EAAK2D,KAAKgvB,WAAalvB,OAAO,EAAGkW,SAAS,EAAO5gB,MAAM1I,KAAK4nC,cAAe3lC,UAC1FjC,KAAK4nC,iBAEP5nC,KAAKoiC,UAAUzyB,EAAK2D,KAAKgvB,UAAUrgC,MAAMsG,KAAKoH,IAEhD3P,KAAKoxC,iBAEkC,IAAnCpxC,KAAKmwC,aAAanpC,QAAQ2I,GAAa,CACzC,GAAIwmB,GAAQn2B,KAAKu2B,QAAQnB,KAAKe,KAC9Bn2B,MAAKqxC,gBAAgB1hC,EAAM3P,KAAKmwC,aAAcha,KAIlDvzB,EAAMmR,UAAUq9B,eAAiB,WAC/B,GAA6BvqC,SAAzB7G,KAAKiwC,gBAA+B,CACtC,GAAIqB,KACJ,IAAmC,gBAAxBtxC,MAAKiwC,gBAA6B,CAC3C,IAAK,GAAI3N,KAAYtiC,MAAKoiC,UACxBkP,EAAU/oC,MAAM+5B,SAAUA,EAAUiP,UAAWvxC,KAAKoiC,UAAUE,GAAUrgC,MAAM,GAAGqR,KAAKtT,KAAKiwC,kBAE7FqB,GAAUx6B,KAAK,SAAUlR,EAAGa,GAC1B,MAAOb,GAAE2rC,UAAY9qC,EAAE8qC,gBAGtB,IAAmC,kBAAxBvxC,MAAKiwC,gBAA+B,CAClD,IAAK,GAAI3N,KAAYtiC,MAAKoiC,UACxBkP,EAAU/oC,KAAKvI,KAAKoiC,UAAUE,GAAUrgC,MAAM,GAAGqR,KAEnDg+B,GAAUx6B,KAAK9W,KAAKiwC,iBAGtB,GAAIqB,EAAUtrC,OAAS,EACrB,IAAK,GAAIH,GAAI,EAAGA,EAAIyrC,EAAUtrC,OAAQH,IACpC7F,KAAKoiC,UAAUkP,EAAUzrC,GAAGy8B,UAAU55B,MAAQ7C,IAMtDjD,EAAMmR,UAAUm9B,eAAiB,WAC/B,IAAK,GAAI5O,KAAYtiC,MAAKoiC,UACpBpiC,KAAKoiC,UAAUj8B,eAAem8B,KAChCtiC,KAAKoiC,UAAUE,GAAUhZ,SAAU,IASzC1mB,EAAMmR,UAAUkD,OAAS,SAAStH,SACzB3P,MAAKiC,MAAM0N,EAAKtP,IACvBsP,EAAKo2B,UAAU,KAGf,IAAIr9B,GAAQ1I,KAAKmwC,aAAanpC,QAAQ2I,EACzB,KAATjH,GAAa1I,KAAKmwC,aAAaxnC,OAAOD,EAAO,IAUnD9F,EAAMmR,UAAU2yB,kBAAoB,SAAS/2B,GAC3C3P,KAAKu2B,QAAQib,WAAW7hC,EAAKtP,KAO/BuC,EAAMmR,UAAUsC,MAAQ,WAKtB,IAAK,GAJDtN,GAAQpI,EAAKmI,QAAQ9I,KAAKiC,OAC1BwvC,KACAC,KAEK7rC,EAAI,EAAGA,EAAIkD,EAAM/C,OAAQH,IACNgB,SAAtBkC,EAAMlD,GAAGyN,KAAKnD,KAChBuhC,EAASnpC,KAAKQ,EAAMlD,IAEtB4rC,EAAWlpC,KAAKQ,EAAMlD,GAExB7F,MAAKkP,cACHkhC,QAASqB,EACTpB,MAAOqB,GAGT5vC,EAAM2/B,aAAazhC,KAAKkP,aAAakhC,SACrCtuC,EAAM4/B,WAAW1hC,KAAKkP,aAAamhC,QAYrCztC,EAAMmR,UAAU48B,oBAAsB,SAASzhC,EAAcyiC,EAAiBxb,GAC5E,GAKIxmB,GAAM9J,EALNsqC,KACAyB,KACA3e,GAAYkD,EAAMhmB,IAAMgmB,EAAMjmB,OAAS,EACvC2hC,EAAa1b,EAAMjmB,MAAQ+iB,EAC3B6e,EAAa3b,EAAMhmB,IAAM8iB,EAIzB9jB,EAAiB,SAAU7K,GAC7B,MAAiButC,GAARvtC,EAA6B,GACpBwtC,GAATxtC,EAA8B,EACA,EAMzC,IAAIqtC,EAAgB3rC,OAAS,EAC3B,IAAKH,EAAI,EAAGA,EAAI8rC,EAAgB3rC,OAAQH,IACtC7F,KAAK+xC,6BAA6BJ,EAAgB9rC,GAAIsqC,EAAcyB,EAAoBzb,EAK5F,IAAI6b,GAAoBrxC,EAAKsO,mBAAmBC,EAAakhC,QAASjhC,EAAgB,OAAO,QAS7F,IANAnP,KAAKiyC,cAAcD,EAAmB9iC,EAAakhC,QAASD,EAAcyB,EAAoB,SAAUjiC,GACtG,MAAQA,GAAK2D,KAAKpD,MAAQ2hC,GAAcliC,EAAK2D,KAAKpD,MAAQ4hC,IAK/B,GAAzB9xC,KAAKswC,iBAEP,IADAtwC,KAAKswC,kBAAmB,EACnBzqC,EAAI,EAAGA,EAAIqJ,EAAamhC,MAAMrqC,OAAQH,IACzC7F,KAAK+xC,6BAA6B7iC,EAAamhC,MAAMxqC,GAAIsqC,EAAcyB,EAAoBzb,OAG1F,CAEH,GAAI+b,GAAkBvxC,EAAKsO,mBAAmBC,EAAamhC,MAAOlhC,EAAgB,OAAO,MAGzFnP,MAAKiyC,cAAcC,EAAiBhjC,EAAamhC,MAAOF,EAAcyB,EAAoB,SAAUjiC,GAClG,MAAQA,GAAK2D,KAAKnD,IAAM0hC,GAAcliC,EAAK2D,KAAKnD,IAAM2hC,IAM1D,IAAKjsC,EAAI,EAAGA,EAAIsqC,EAAanqC,OAAQH,IACnC8J,EAAOwgC,EAAatqC,GACf8J,EAAK+1B,WAAW/1B,EAAKs2B,OAE1Bt2B,EAAKw2B,aAgBP,OAAOgK,IAGTvtC,EAAMmR,UAAUk+B,cAAgB,SAAUE,EAAYlwC,EAAOkuC,EAAcyB,EAAoBQ,GAC7F,GAAIziC,GACA9J,CAEJ,IAAkB,IAAdssC,EAAkB,CACpB,IAAKtsC,EAAIssC,EAAYtsC,GAAK,IACxB8J,EAAO1N,EAAM4D,IACTusC,EAAeziC,IAFQ9J,IAMWgB,SAAhC+qC,EAAmBjiC,EAAKtP,MAC1BuxC,EAAmBjiC,EAAKtP,KAAM,EAC9B8vC,EAAa5nC,KAAKoH,GAKxB,KAAK9J,EAAIssC,EAAa,EAAGtsC,EAAI5D,EAAM+D,SACjC2J,EAAO1N,EAAM4D,IACTusC,EAAeziC,IAFsB9J,IAMHgB,SAAhC+qC,EAAmBjiC,EAAKtP,MAC1BuxC,EAAmBjiC,EAAKtP,KAAM,EAC9B8vC,EAAa5nC,KAAKoH,MAmB5B/M,EAAMmR,UAAUs9B,gBAAkB,SAAS1hC,EAAMwgC,EAAcha,GACvDxmB,EAAKu2B,UAAU/P,IACZxmB,EAAK+1B,WAAW/1B,EAAKs2B,OAE1Bt2B,EAAKw2B,cACLgK,EAAa5nC,KAAKoH,IAGdA,EAAK+1B,WAAW/1B,EAAKq2B,QAgB/BpjC,EAAMmR,UAAUg+B,6BAA+B,SAASpiC,EAAMwgC,EAAcyB,EAAoBzb,GAC1FxmB,EAAKu2B,UAAU/P,GACmBtvB,SAAhC+qC,EAAmBjiC,EAAKtP,MAC1BuxC,EAAmBjiC,EAAKtP,KAAM,EAC9B8vC,EAAa5nC,KAAKoH,IAIhBA,EAAK+1B,WAAW/1B,EAAKq2B,QAM7BnmC,EAAOD,QAAUgD,GAKb,SAAS/C,EAAQD,EAASM,GAW9B,QAAS2C,GAAiBs1B,EAAS7kB,EAAMijB,GACvC3zB,EAAMrC,KAAKP,KAAMm4B,EAAS7kB,EAAMijB,GAEhCv2B,KAAKmT,MAAQ,EACbnT,KAAKoT,OAAS,EACdpT,KAAKiI,IAAM,EACXjI,KAAK6H,KAAO,EAfd,GACIjF,IADO1C,EAAoB,GACnBA,EAAoB,IAiBhC2C,GAAgBkR,UAAYnN,OAAO+H,OAAO/L,EAAMmR,WAShDlR,EAAgBkR,UAAUuO,OAAS,SAAS6T,EAAO3b,GACjD,GAAIquB,IAAU,CAEd7oC,MAAKmwC,aAAenwC,KAAK2wC,oBAAoB3wC,KAAKkP,aAAclP,KAAKmwC,aAAcha,GAGnFn2B,KAAKmT,MAAQnT,KAAKwwB,IAAI9jB,WAAWmkB,YAGjC7wB,KAAKwwB,IAAI9jB,WAAWa,MAAM6F,OAAU,GAGpC,KAAK,GAAIvN,GAAI,EAAGorC,EAAKjxC,KAAKmwC,aAAanqC,OAAYirC,EAAJprC,EAAQA,IAAK,CAC1D,GAAI8J,GAAO3P,KAAKmwC,aAAatqC,EAC7B8J,GAAKy2B,YAAY5rB,GAGnB,MAAOquB,IAMThmC,EAAgBkR,UAAUkyB,KAAO,WAC1BjmC,KAAKwwB,IAAI9jB,WAAWvC,YACvBnK,KAAKu2B,QAAQ/F,IAAI9jB,WAAWqF,YAAY/R,KAAKwwB,IAAI9jB,aAIrD7M,EAAOD,QAAUiD,GAKb,SAAShD,EAAQD,EAASM,GA4B9B,QAAS4C,GAAQsyB,EAAMrmB,GACrB/O,KAAKo1B,KAAOA,EAEZp1B,KAAK80B,gBACH3tB,KAAM,KACN6tB,YAAa,SACb8S,MAAO,OACPhmC,OAAO,EACPuwC,WAAY,KAEZC,YAAY,EACZ/L,UACEgC,YAAY,EACZmD,aAAa,EACb73B,KAAK,EACLoD,QAAQ,GAGV0tB,KAAO5iC,EAAS4iC,KAEhB4N,MAAO,SAAU5iC,EAAM9G,GACrBA,EAAS8G,IAEX6iC,SAAU,SAAU7iC,EAAM9G,GACxBA,EAAS8G,IAEX8iC,OAAQ,SAAU9iC,EAAM9G,GACtBA,EAAS8G,IAEX+iC,SAAU,SAAU/iC,EAAM9G,GACxBA,EAAS8G,IAEXgjC,SAAU,SAAUhjC,EAAM9G,GACxBA,EAAS8G,IAGX6K,QACE7K,MACE0W,WAAY,GACZC,SAAU,IAEZyb,KAAM,IAERld,QAAS,GAIX7kB,KAAK+O,QAAUpO,EAAKgF,UAAW3F,KAAK80B,gBAGpC90B,KAAK4yC,aACHzrC,MAAO+I,MAAO,OAAQC,IAAK,SAG7BnQ,KAAKi7B,YACHtF,SAAUP,EAAKz0B,KAAKg1B,SACpBI,OAAQX,EAAKz0B,KAAKo1B,QAEpB/1B,KAAKwwB,OACLxwB,KAAKqG,SACLrG,KAAK8D,OAAS,IAEd,IAAIiR,GAAK/U,IACTA,MAAKw2B,UAAY,KACjBx2B,KAAKy2B,WAAa,KAGlBz2B,KAAK6yC,eACHh/B,IAAO,SAAUhK,EAAO6K,GACtBK,EAAG+9B,OAAOp+B,EAAOzS,QAEnBwT,OAAU,SAAU5L,EAAO6K,GACzBK,EAAGg+B,UAAUr+B,EAAOzS,QAEtBgV,OAAU,SAAUpN,EAAO6K,GACzBK,EAAGi+B,UAAUt+B,EAAOzS,SAKxBjC,KAAKizC,gBACHp/B,IAAO,SAAUhK,EAAO6K,GACtBK,EAAGm+B,aAAax+B,EAAOzS,QAEzBwT,OAAU,SAAU5L,EAAO6K,GACzBK,EAAGo+B,gBAAgBz+B,EAAOzS,QAE5BgV,OAAU,SAAUpN,EAAO6K,GACzBK,EAAGq+B,gBAAgB1+B,EAAOzS,SAI9BjC,KAAKiC,SACLjC,KAAK40B,UACL50B,KAAKqzC,YAELrzC,KAAKszC,aACLtzC,KAAKuzC,YAAa,EAElBvzC,KAAKwzC,eAGLxzC,KAAKm1B,UAELn1B,KAAK8T,WAAW/E,GAlIlB,GAAI62B,GAAS1lC,EAAoB,IAC7BS,EAAOT,EAAoB,GAC3BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/B6B,EAAW7B,EAAoB,IAC/BqC,EAAYrC,EAAoB,IAChC0C,EAAQ1C,EAAoB,IAC5B2C,EAAkB3C,EAAoB,IACtCkC,EAAUlC,EAAoB,IAC9BmC,EAAYnC,EAAoB,IAChCoC,EAAYpC,EAAoB,IAChCiC,EAAiBjC,EAAoB,IAGrCuzC,EAAY,gBACZC,EAAa,gBAsHjB5wC,GAAQiR,UAAY,GAAIxR,GAGxBO,EAAQgV,OACNpL,WAAYvK,EACZqlC,IAAKplC,EACL+zB,MAAO7zB,EACPmQ,MAAOpQ,GAMTS,EAAQiR,UAAUohB,QAAU,WAC1B,GAAIhV,GAAQtO,SAASM,cAAc,MACnCgO,GAAM/X,UAAY,UAClB+X,EAAM,oBAAsBngB,KAC5BA,KAAKwwB,IAAIrQ,MAAQA,CAGjB,IAAIzT,GAAamF,SAASM,cAAc,MACxCzF,GAAWtE,UAAY,aACvB+X,EAAMpO,YAAYrF,GAClB1M,KAAKwwB,IAAI9jB,WAAaA,CAGtB,IAAIm7B,GAAah2B,SAASM,cAAc,MACxC01B,GAAWz/B,UAAY,aACvB+X,EAAMpO,YAAY81B,GAClB7nC,KAAKwwB,IAAIqX,WAAaA,CAGtB,IAAI9F,GAAOlwB,SAASM,cAAc,MAClC4vB,GAAK35B,UAAY,OACjBpI,KAAKwwB,IAAIuR,KAAOA,CAGhB,IAAIoP,GAAWt/B,SAASM,cAAc,MACtCg/B,GAAS/oC,UAAY,WACrBpI,KAAKwwB,IAAI2gB,SAAWA,EAGpBnxC,KAAK2zC,kBAGL,IAAIC,GAAkB,GAAI/wC,GAAgB6wC,EAAY,KAAM1zC,KAC5D4zC,GAAgB3N,OAChBjmC,KAAK40B,OAAO8e,GAAcE,EAM1B5zC,KAAK8D,OAAS8hC,EAAO5lC,KAAKo1B,KAAK5E,IAAIkI,iBACjC9uB,gBAAgB,IAIlB5J,KAAK8D,OAAOqQ,GAAG,QAAanU,KAAKk/B,SAAS3J,KAAKv1B,OAC/CA,KAAK8D,OAAOqQ,GAAG,YAAanU,KAAK6+B,aAAatJ,KAAKv1B,OACnDA,KAAK8D,OAAOqQ,GAAG,OAAanU,KAAK8+B,QAAQvJ,KAAKv1B,OAC9CA,KAAK8D,OAAOqQ,GAAG,UAAanU,KAAK++B,WAAWxJ,KAAKv1B,OAGjDA,KAAK8D,OAAOqQ,GAAG,MAAQnU,KAAK6zC,cAActe,KAAKv1B,OAG/CA,KAAK8D,OAAOqQ,GAAG,OAAQnU,KAAK8zC,mBAAmBve,KAAKv1B,OAGpDA,KAAK8D,OAAOqQ,GAAG,YAAanU,KAAK+zC,WAAWxe,KAAKv1B,OAGjDA,KAAKimC,QAmEPnjC,EAAQiR,UAAUD,WAAa,SAAS/E,GACtC,GAAIA,EAAS,CAEX,GAAIP,IAAU,OAAQ,QAAS,cAAe,UAAW,QAAS,aAAc,aAAc,iBAAkB,WAAW,OAAQ,OACnI7N,GAAKyF,gBAAgBoI,EAAQxO,KAAK+O,QAASA,GAEvC,UAAYA,KACgB,gBAAnBA,GAAQyL,QACjBxa,KAAK+O,QAAQyL,OAAOunB,KAAOhzB,EAAQyL,OACnCxa,KAAK+O,QAAQyL,OAAO7K,KAAK0W,WAAatX,EAAQyL,OAC9Cxa,KAAK+O,QAAQyL,OAAO7K,KAAK2W,SAAWvX,EAAQyL,QAEX,gBAAnBzL,GAAQyL,SACtB7Z,EAAKyF,iBAAiB,QAASpG,KAAK+O,QAAQyL,OAAQzL,EAAQyL,QACxD,QAAUzL,GAAQyL,SACe,gBAAxBzL,GAAQyL,OAAO7K,MACxB3P,KAAK+O,QAAQyL,OAAO7K,KAAK0W,WAAatX,EAAQyL,OAAO7K,KACrD3P,KAAK+O,QAAQyL,OAAO7K,KAAK2W,SAAWvX,EAAQyL,OAAO7K,MAEb,gBAAxBZ,GAAQyL,OAAO7K,MAC7BhP,EAAKyF,iBAAiB,aAAc,YAAapG,KAAK+O,QAAQyL,OAAO7K,KAAMZ,EAAQyL,OAAO7K,SAM9F,YAAcZ,KACgB,iBAArBA,GAAQw3B,UACjBvmC,KAAK+O,QAAQw3B,SAASgC,WAAcx5B,EAAQw3B,SAC5CvmC,KAAK+O,QAAQw3B,SAASmF,YAAc38B,EAAQw3B,SAC5CvmC,KAAK+O,QAAQw3B,SAAS1yB,IAAc9E,EAAQw3B,SAC5CvmC,KAAK+O,QAAQw3B,SAAStvB,OAAclI,EAAQw3B,UAET,gBAArBx3B,GAAQw3B,UACtB5lC,EAAKyF,iBAAiB,aAAc,cAAe,MAAO,UAAWpG,KAAK+O,QAAQw3B,SAAUx3B,EAAQw3B,UAKxG,IAAIyN,GAAc,SAAWn9B,GAC3B,GAAImD,GAAKjL,EAAQ8H,EACjB,IAAImD,EAAI,CACN,KAAMA,YAAci6B,WAClB,KAAM,IAAIrwC,OAAM,UAAYiT,EAAO,uBAAyBA,EAAO,mBAErE7W,MAAK+O,QAAQ8H,GAAQmD,IAEtBub,KAAKv1B,OACP,QAAS,WAAY,WAAY,SAAU,YAAY4I,QAAQorC,GAGhEh0C,KAAK82B,cASTh0B,EAAQiR,UAAU+iB,UAAY,SAAS/nB,GACrC/O,KAAKqzC,YACLrzC,KAAKuzC,YAAa,EAEdxkC,GAAWA,EAAQgoB,cACrBp2B,EAAKiI,QAAQ5I,KAAKiC,MAAO,SAAU0N,GACjCA,EAAKg2B,OAAQ,EACTh2B,EAAK+1B,WAAW/1B,EAAK2S,YAQ/Bxf,EAAQiR,UAAUG,QAAU,WAC1BlU,KAAKgmC,OACLhmC,KAAK22B,SAAS,MACd32B,KAAK02B,UAAU,MAEf12B,KAAK8D,OAAS,KAEd9D,KAAKo1B,KAAO,KACZp1B,KAAKi7B,WAAa,MAMpBn4B,EAAQiR,UAAUiyB,KAAO,WAEnBhmC,KAAKwwB,IAAIrQ,MAAMhW,YACjBnK,KAAKwwB,IAAIrQ,MAAMhW,WAAWsH,YAAYzR,KAAKwwB,IAAIrQ,OAI7CngB,KAAKwwB,IAAIuR,KAAK53B,YAChBnK,KAAKwwB,IAAIuR,KAAK53B,WAAWsH,YAAYzR,KAAKwwB,IAAIuR,MAI5C/hC,KAAKwwB,IAAI2gB,SAAShnC,YACpBnK,KAAKwwB,IAAI2gB,SAAShnC,WAAWsH,YAAYzR,KAAKwwB,IAAI2gB,WAQtDruC,EAAQiR,UAAUkyB,KAAO,WAElBjmC,KAAKwwB,IAAIrQ,MAAMhW,YAClBnK,KAAKo1B,KAAK5E,IAAI5D,OAAO7a,YAAY/R,KAAKwwB,IAAIrQ,OAIvCngB,KAAKwwB,IAAIuR,KAAK53B,YACjBnK,KAAKo1B,KAAK5E,IAAI0Y,mBAAmBn3B,YAAY/R,KAAKwwB,IAAIuR,MAInD/hC,KAAKwwB,IAAI2gB,SAAShnC,YACrBnK,KAAKo1B,KAAK5E,IAAI3oB,KAAKkK,YAAY/R,KAAKwwB,IAAI2gB,WAW5CruC,EAAQiR,UAAUwjB,aAAe,SAASxhB,GACxC,GAAIlQ,GAAGorC,EAAI5wC,EAAIsP,CAMf,KAJW9I,QAAPkP,IAAkBA,MACjBzP,MAAMC,QAAQwP,KAAMA,GAAOA,IAG3BlQ,EAAI,EAAGorC,EAAKjxC,KAAKszC,UAAUttC,OAAYirC,EAAJprC,EAAQA,IAC9CxF,EAAKL,KAAKszC,UAAUztC,GACpB8J,EAAO3P,KAAKiC,MAAM5B,GACdsP,GAAMA,EAAKm2B,UAKjB,KADA9lC,KAAKszC,aACAztC,EAAI,EAAGorC,EAAKl7B,EAAI/P,OAAYirC,EAAJprC,EAAQA,IACnCxF,EAAK0V,EAAIlQ,GACT8J,EAAO3P,KAAKiC,MAAM5B,GACdsP,IACF3P,KAAKszC,UAAU/qC,KAAKlI,GACpBsP,EAAKk2B,WASX/iC,EAAQiR,UAAU0jB,aAAe,WAC/B,MAAOz3B,MAAKszC,UAAU1+B,YAOxB9R,EAAQiR,UAAUmgC,gBAAkB,WAClC,GAAI/d,GAAQn2B,KAAKo1B,KAAKe,MAAMiK,WACxBv4B,EAAQ7H,KAAKo1B,KAAKz0B,KAAKg1B,SAASQ,EAAMjmB,OACtCgY,EAAQloB,KAAKo1B,KAAKz0B,KAAKg1B,SAASQ,EAAMhmB,KAEtC4F,IACJ,KAAK,GAAIoiB,KAAWn4B,MAAK40B,OACvB,GAAI50B,KAAK40B,OAAOzuB,eAAegyB,GAM7B,IAAK,GALD5lB,GAAQvS,KAAK40B,OAAOuD,GACpBgc,EAAkB5hC,EAAM49B,aAInBtqC,EAAI,EAAGA,EAAIsuC,EAAgBnuC,OAAQH,IAAK,CAC/C,GAAI8J,GAAOwkC,EAAgBtuC,EAEtB8J,GAAK9H,KAAOqgB,GAAWvY,EAAK9H,KAAO8H,EAAKwD,MAAQtL,GACnDkO,EAAIxN,KAAKoH,EAAKtP,IAMtB,MAAO0V,IAQTjT,EAAQiR,UAAUqgC,UAAY,SAAS/zC,GAErC,IAAK,GADDizC,GAAYtzC,KAAKszC,UACZztC,EAAI,EAAGorC,EAAKqC,EAAUttC,OAAYirC,EAAJprC,EAAQA,IAC7C,GAAIytC,EAAUztC,IAAMxF,EAAI,CACtBizC,EAAU3qC,OAAO9C,EAAG,EACpB,SASN/C,EAAQiR,UAAUuO,OAAS,WACzB,GAAI9H,GAASxa,KAAK+O,QAAQyL,OACtB2b,EAAQn2B,KAAKo1B,KAAKe,MAClB1rB,EAAS9J,EAAKyJ,OAAOK,OACrBsE,EAAU/O,KAAK+O,QACfimB,EAAcjmB,EAAQimB,YACtB6T,GAAU,EACV1oB,EAAQngB,KAAKwwB,IAAIrQ,MACjBomB,EAAWx3B,EAAQw3B,SAASgC,YAAcx5B,EAAQw3B,SAASmF,WAG/D1rC,MAAKqG,MAAM4B,IAAMjI,KAAKo1B,KAAKC,SAASptB,IAAImL,OAASpT,KAAKo1B,KAAKC,SAAS1oB,OAAO1E,IAC3EjI,KAAKqG,MAAMwB,KAAO7H,KAAKo1B,KAAKC,SAASxtB,KAAKsL,MAAQnT,KAAKo1B,KAAKC,SAAS1oB,OAAO9E,KAG5EsY,EAAM/X,UAAY,WAAam+B,EAAW,YAAc,IAGxDsC,EAAU7oC,KAAKq0C,gBAAkBxL,CAIjC,IAAIyL,GAAkBne,EAAMhmB,IAAMgmB,EAAMjmB,MACpCqkC,EAAUD,GAAmBt0C,KAAKw0C,qBAAyBx0C,KAAKqG,MAAM8M,OAASnT,KAAKqG,MAAMouC,SAC1FF,KAAQv0C,KAAKuzC,YAAa,GAC9BvzC,KAAKw0C,oBAAsBF,EAC3Bt0C,KAAKqG,MAAMouC,UAAYz0C,KAAKqG,MAAM8M,KAElC,IAAIu9B,GAAU1wC,KAAKuzC,WACfmB,EAAa10C,KAAK20C,cAClBC,GACFjlC,KAAM6K,EAAO7K,KACboyB,KAAMvnB,EAAOunB,MAEX8S,GACFllC,KAAM6K,EAAO7K,KACboyB,KAAMvnB,EAAO7K,KAAK2W,SAAW,GAE3BlT,EAAS,EACT8hB,EAAY1a,EAAOunB,KAAOvnB,EAAO7K,KAAK2W,QA+B1C,OA5BAtmB,MAAK40B,OAAO8e,GAAYpxB,OAAO6T,EAAO0e,EAAgBnE,GAGtD/vC,EAAKiI,QAAQ5I,KAAK40B,OAAQ,SAAUriB,GAClC,GAAIuiC,GAAeviC,GAASmiC,EAAcE,EAAcC,EACpDE,EAAexiC,EAAM+P,OAAO6T,EAAO2e,EAAapE,EACpD7H,GAAUkM,GAAgBlM,EAC1Bz1B,GAAUb,EAAMa,SAElBA,EAAS5O,KAAKJ,IAAIgP,EAAQ8hB,GAC1Bl1B,KAAKuzC,YAAa,EAGlBpzB,EAAM5S,MAAM6F,OAAU3I,EAAO2I,GAG7BpT,KAAKqG,MAAM8M,MAAQgN,EAAM0Q,YACzB7wB,KAAKqG,MAAM+M,OAASA,EAGpBpT,KAAKwwB,IAAIuR,KAAKx0B,MAAMtF,IAAMwC,EAAuB,OAAfuqB,EAC7Bh1B,KAAKo1B,KAAKC,SAASptB,IAAImL,OAASpT,KAAKo1B,KAAKC,SAAS1oB,OAAO1E,IAC1DjI,KAAKo1B,KAAKC,SAASptB,IAAImL,OAASpT,KAAKo1B,KAAKC,SAASqD,gBAAgBtlB,QACxEpT,KAAKwwB,IAAIuR,KAAKx0B,MAAM1F,KAAO,IAG3BghC,EAAU7oC,KAAK4oC,cAAgBC,GAUjC/lC,EAAQiR,UAAU4gC,YAAc,WAC9B,GAAIK,GAA+C,OAA5Bh1C,KAAK+O,QAAQimB,YAAwB,EAAKh1B,KAAKqzC,SAASrtC,OAAS,EACpFivC,EAAej1C,KAAKqzC,SAAS2B,GAC7BN,EAAa10C,KAAK40B,OAAOqgB,IAAiBj1C,KAAK40B,OAAO6e,EAE1D,OAAOiB,IAAc,MAQvB5xC,EAAQiR,UAAU4/B,iBAAmB,WACnC,CAAA,GAEIhkC,GAAMwG,EAFN++B,EAAYl1C,KAAK40B,OAAO6e,EACXzzC,MAAK40B,OAAO8e,GAG7B,GAAI1zC,KAAKy2B,YAEP,GAAIye,EAAW,CACbA,EAAUlP,aACHhmC,MAAK40B,OAAO6e,EAEnB,KAAKt9B,IAAUnW,MAAKiC,MAClB,GAAIjC,KAAKiC,MAAMkE,eAAegQ,GAAS,CACrCxG,EAAO3P,KAAKiC,MAAMkU,GAClBxG,EAAK61B,QAAU71B,EAAK61B,OAAOvuB,OAAOtH,EAClC,IAAIwoB,GAAUn4B,KAAKm1C,YAAYxlC,EAAK2D,MAChCf,EAAQvS,KAAK40B,OAAOuD,EACxB5lB,IAASA,EAAMsB,IAAIlE,IAASA,EAAKq2B,aAOvC,KAAKkP,EAAW,CACd,GAAI70C,GAAK,KACLiT,EAAO,IACX4hC,GAAY,GAAItyC,GAAMvC,EAAIiT,EAAMtT,MAChCA,KAAK40B,OAAO6e,GAAayB,CAEzB,KAAK/+B,IAAUnW,MAAKiC,MACdjC,KAAKiC,MAAMkE,eAAegQ,KAC5BxG,EAAO3P,KAAKiC,MAAMkU,GAClB++B,EAAUrhC,IAAIlE,GAIlBulC,GAAUjP,SAShBnjC,EAAQiR,UAAUqhC,YAAc,WAC9B,MAAOp1C,MAAKwwB,IAAI2gB,UAOlBruC,EAAQiR,UAAU4iB,SAAW,SAAS10B,GACpC,GACI8T,GADAhB,EAAK/U,KAELq1C,EAAer1C,KAAKw2B,SAGxB,IAAKv0B,EAGA,CAAA,KAAIA,YAAiBpB,IAAWoB,YAAiBnB,IAIpD,KAAM,IAAI4F,WAAU,kDAHpB1G,MAAKw2B,UAAYv0B,MAHjBjC,MAAKw2B,UAAY,IAoBnB,IAXI6e,IAEF10C,EAAKiI,QAAQ5I,KAAK6yC,cAAe,SAAUhqC,EAAUgB,GACnDwrC,EAAa/gC,IAAIzK,EAAOhB,KAI1BkN,EAAMs/B,EAAa5+B,SACnBzW,KAAKgzC,UAAUj9B,IAGb/V,KAAKw2B,UAAW,CAElB,GAAIn2B,GAAKL,KAAKK,EACdM,GAAKiI,QAAQ5I,KAAK6yC,cAAe,SAAUhqC,EAAUgB,GACnDkL,EAAGyhB,UAAUriB,GAAGtK,EAAOhB,EAAUxI,KAInC0V,EAAM/V,KAAKw2B,UAAU/f,SACrBzW,KAAK8yC,OAAO/8B,GAGZ/V,KAAK2zC,qBAQT7wC,EAAQiR,UAAUuhC,SAAW,WAC3B,MAAOt1C,MAAKw2B,WAOd1zB,EAAQiR,UAAU2iB,UAAY,SAAS9B,GACrC,GACI7e,GADAhB,EAAK/U,IAgBT,IAZIA,KAAKy2B,aACP91B,EAAKiI,QAAQ5I,KAAKizC,eAAgB,SAAUpqC,EAAUgB,GACpDkL,EAAG0hB,WAAWjiB,YAAY3K,EAAOhB,KAInCkN,EAAM/V,KAAKy2B,WAAWhgB,SACtBzW,KAAKy2B,WAAa,KAClBz2B,KAAKozC,gBAAgBr9B,IAIlB6e,EAGA,CAAA,KAAIA,YAAkB/zB,IAAW+zB,YAAkB9zB,IAItD,KAAM,IAAI4F,WAAU,kDAHpB1G,MAAKy2B,WAAa7B,MAHlB50B,MAAKy2B,WAAa,IASpB,IAAIz2B,KAAKy2B,WAAY,CAEnB,GAAIp2B,GAAKL,KAAKK,EACdM,GAAKiI,QAAQ5I,KAAKizC,eAAgB,SAAUpqC,EAAUgB,GACpDkL,EAAG0hB,WAAWtiB,GAAGtK,EAAOhB,EAAUxI,KAIpC0V,EAAM/V,KAAKy2B,WAAWhgB,SACtBzW,KAAKkzC,aAAan9B,GAIpB/V,KAAK2zC,mBAGL3zC,KAAKu1C,SAELv1C,KAAKo1B,KAAKE,QAAQhH,KAAK,UAAWta,OAAO,KAO3ClR,EAAQiR,UAAUyhC,UAAY,WAC5B,MAAOx1C,MAAKy2B,YAOd3zB,EAAQiR,UAAUy9B,WAAa,SAASnxC,GACtC,GAAIsP,GAAO3P,KAAKw2B,UAAU1gB,IAAIzV,GAC1Bw3B,EAAU73B,KAAKw2B,UAAU9f,YAEzB/G,IAEF3P,KAAK+O,QAAQ2jC,SAAS/iC,EAAM,SAAUA,GAChCA,GAGFkoB,EAAQ5gB,OAAO5W,MAYvByC,EAAQiR,UAAU0hC,SAAW,SAAU/d,GACrC,MAAOA,GAASvwB,MAAQnH,KAAK+O,QAAQ5H,OAASuwB,EAASvnB,IAAM,QAAU,QAUzErN,EAAQiR,UAAUohC,YAAc,SAAUzd,GACxC,GAAIvwB,GAAOnH,KAAKy1C,SAAS/d,EACzB,OAAY,cAARvwB,GAA0CN,QAAlB6wB,EAASnlB,MAC7BmhC,EAGC1zC,KAAKy2B,WAAaiB,EAASnlB,MAAQkhC,GAS9C3wC,EAAQiR,UAAUg/B,UAAY,SAASh9B,GACrC,GAAIhB,GAAK/U,IAET+V,GAAInN,QAAQ,SAAUvI,GACpB,GAAIq3B,GAAW3iB,EAAGyhB,UAAU1gB,IAAIzV,EAAI0U,EAAG69B,aACnCjjC,EAAOoF,EAAG9S,MAAM5B,GAChB8G,EAAO4N,EAAG0gC,SAAS/d,GAEnB/wB,EAAc7D,EAAQgV,MAAM3Q,EAchC,IAZIwI,IAEGhJ,GAAiBgJ,YAAgBhJ,GAMpCoO,EAAGc,YAAYlG,EAAM+nB,IAJrB3iB,EAAG2gC,YAAY/lC,GACfA,EAAO,QAONA,EAAM,CAET,IAAIhJ,EAKC,KAEG,IAAID,WAFK,iBAARS,EAEa,4HAIA,sBAAwBA,EAAO,IAVnDwI,GAAO,GAAIhJ,GAAY+wB,EAAU3iB,EAAGkmB,WAAYlmB,EAAGhG,SACnDY,EAAKtP,GAAKA,EACV0U,EAAGC,SAASrF,MAalB3P,KAAKu1C,SACLv1C,KAAKuzC,YAAa,EAClBvzC,KAAKo1B,KAAKE,QAAQhH,KAAK,UAAWta,OAAO,KAQ3ClR,EAAQiR,UAAU++B,OAAShwC,EAAQiR,UAAUg/B,UAO7CjwC,EAAQiR,UAAUi/B,UAAY,SAASj9B,GACrC,GAAI6B,GAAQ,EACR7C,EAAK/U,IACT+V,GAAInN,QAAQ,SAAUvI,GACpB,GAAIsP,GAAOoF,EAAG9S,MAAM5B,EAChBsP,KACFiI,IACA7C,EAAG2gC,YAAY/lC,MAIfiI,IAEF5X,KAAKu1C,SACLv1C,KAAKuzC,YAAa,EAClBvzC,KAAKo1B,KAAKE,QAAQhH,KAAK,UAAWta,OAAO,MAQ7ClR,EAAQiR,UAAUwhC,OAAS,WAGzB50C,EAAKiI,QAAQ5I,KAAK40B,OAAQ,SAAUriB,GAClCA,EAAM8D,WASVvT,EAAQiR,UAAUo/B,gBAAkB,SAASp9B,GAC3C/V,KAAKkzC,aAAan9B,IAQpBjT,EAAQiR,UAAUm/B,aAAe,SAASn9B,GACxC,GAAIhB,GAAK/U,IAET+V,GAAInN,QAAQ,SAAUvI,GACpB,GAAIyvC,GAAY/6B,EAAG0hB,WAAW3gB,IAAIzV,GAC9BkS,EAAQwC,EAAG6f,OAAOv0B,EAEtB,IAAKkS,EA6BHA,EAAMqG,QAAQk3B,OA7BJ,CAEV,GAAIzvC,GAAMozC,GAAapzC,GAAMqzC,EAC3B,KAAM,IAAI9vC,OAAM,qBAAuBvD,EAAK,qBAG9C,IAAIs1C,GAAe/uC,OAAO+H,OAAOoG,EAAGhG,QACpCpO,GAAKgF,OAAOgwC,GACVviC,OAAQ,OAGVb,EAAQ,GAAI3P,GAAMvC,EAAIyvC,EAAW/6B,GACjCA,EAAG6f,OAAOv0B,GAAMkS,CAGhB,KAAK,GAAI4D,KAAUpB,GAAG9S,MACpB,GAAI8S,EAAG9S,MAAMkE,eAAegQ,GAAS,CACnC,GAAIxG,GAAOoF,EAAG9S,MAAMkU,EAChBxG,GAAK2D,KAAKf,OAASlS,GACrBkS,EAAMsB,IAAIlE,GAKhB4C,EAAM8D,QACN9D,EAAM0zB,UAQVjmC,KAAKo1B,KAAKE,QAAQhH,KAAK,UAAWta,OAAO,KAQ3ClR,EAAQiR,UAAUq/B,gBAAkB,SAASr9B,GAC3C,GAAI6e,GAAS50B,KAAK40B,MAClB7e,GAAInN,QAAQ,SAAUvI,GACpB,GAAIkS,GAAQqiB,EAAOv0B,EAEfkS,KACFA,EAAMyzB,aACCpR,GAAOv0B,MAIlBL,KAAK82B,YAEL92B,KAAKo1B,KAAKE,QAAQhH,KAAK,UAAWta,OAAO,KAQ3ClR,EAAQiR,UAAUsgC,aAAe,WAC/B,GAAIr0C,KAAKy2B,WAAY,CAEnB,GAAI4c,GAAWrzC,KAAKy2B,WAAWhgB,QAC7BJ,MAAOrW,KAAK+O,QAAQsjC,aAGlBpS,GAAWt/B,EAAKsG,WAAWosC,EAAUrzC,KAAKqzC,SAC9C,IAAIpT,EAAS,CAEX,GAAIrL,GAAS50B,KAAK40B,MAClBye,GAASzqC,QAAQ,SAAUuvB,GACzBvD,EAAOuD,GAAS6N,SAIlBqN,EAASzqC,QAAQ,SAAUuvB,GACzBvD,EAAOuD,GAAS8N,SAGlBjmC,KAAKqzC,SAAWA,EAGlB,MAAOpT,GAGP,OAAO,GASXn9B,EAAQiR,UAAUiB,SAAW,SAASrF,GACpC3P,KAAKiC,MAAM0N,EAAKtP,IAAMsP,CAGtB,IAAIwoB,GAAUn4B,KAAKm1C,YAAYxlC,EAAK2D,MAChCf,EAAQvS,KAAK40B,OAAOuD,EACpB5lB,IAAOA,EAAMsB,IAAIlE,IASvB7M,EAAQiR,UAAU8B,YAAc,SAASlG,EAAM+nB,GAC7C,GAAIke,GAAajmC,EAAK2D,KAAKf,KAM3B,IAHA5C,EAAKiJ,QAAQ8e,GAGTke,GAAcjmC,EAAK2D,KAAKf,MAAO,CACjC,GAAIsjC,GAAW71C,KAAK40B,OAAOghB,EACvBC,IAAUA,EAAS5+B,OAAOtH,EAE9B,IAAIwoB,GAAUn4B,KAAKm1C,YAAYxlC,EAAK2D,MAChCf,EAAQvS,KAAK40B,OAAOuD,EACpB5lB,IAAOA,EAAMsB,IAAIlE,KAUzB7M,EAAQiR,UAAU2hC,YAAc,SAAS/lC,GAEvCA,EAAKq2B,aAGEhmC,MAAKiC,MAAM0N,EAAKtP,GAGvB,IAAIqI,GAAQ1I,KAAKszC,UAAUtsC,QAAQ2I,EAAKtP,GAC3B,KAATqI,GAAa1I,KAAKszC,UAAU3qC,OAAOD,EAAO,GAG9CiH,EAAK61B,QAAU71B,EAAK61B,OAAOvuB,OAAOtH,IASpC7M,EAAQiR,UAAU+hC,qBAAuB,SAAS/sC,GAGhD,IAAK,GAFD2oC,MAEK7rC,EAAI,EAAGA,EAAIkD,EAAM/C,OAAQH,IAC5BkD,EAAMlD,YAAcvD,IACtBovC,EAASnpC,KAAKQ,EAAMlD,GAGxB,OAAO6rC,IAYT5uC,EAAQiR,UAAUmrB,SAAW,SAAUr1B,GAErC7J,KAAKwzC,YAAY7jC,KAAO7M,EAAQizC,eAAelsC,IAQjD/G,EAAQiR,UAAU8qB,aAAe,SAAUh1B,GACzC,GAAK7J,KAAK+O,QAAQw3B,SAASgC,YAAevoC,KAAK+O,QAAQw3B,SAASmF,YAAhE,CAIA,GAEIrlC,GAFAsJ,EAAO3P,KAAKwzC,YAAY7jC,MAAQ,KAChCoF,EAAK/U,IAGT,IAAI2P,GAAQA,EAAK81B,SAAU,CACzB,GAAIgD,GAAe5+B,EAAMG,OAAOy+B,aAC5BE,EAAgB9+B,EAAMG,OAAO2+B,aAE7BF,IACFpiC,GACEsJ,KAAM84B,EACNuN,SAAUnsC,EAAM22B,QAAQ5T,OAAOnP,SAG7B1I,EAAGhG,QAAQw3B,SAASgC,aACtBliC,EAAM6J,MAAQP,EAAK2D,KAAKpD,MAAM7I,WAE5B0N,EAAGhG,QAAQw3B,SAASmF,aAClB,SAAW/7B,GAAK2D,OAAMjN,EAAMkM,MAAQ5C,EAAK2D,KAAKf,OAGpDvS,KAAKwzC,YAAYyC,WAAa5vC,IAEvBsiC,GACPtiC,GACEsJ,KAAMg5B,EACNqN,SAAUnsC,EAAM22B,QAAQ5T,OAAOnP,SAG7B1I,EAAGhG,QAAQw3B,SAASgC,aACtBliC,EAAM8J,IAAMR,EAAK2D,KAAKnD,IAAI9I,WAExB0N,EAAGhG,QAAQw3B,SAASmF,aAClB,SAAW/7B,GAAK2D,OAAMjN,EAAMkM,MAAQ5C,EAAK2D,KAAKf,OAGpDvS,KAAKwzC,YAAYyC,WAAa5vC,IAG9BrG,KAAKwzC,YAAYyC,UAAYj2C,KAAKy3B,eAAe9pB,IAAI,SAAUtN,GAC7D,GAAIsP,GAAOoF,EAAG9S,MAAM5B,GAChBgG,GACFsJ,KAAMA,EACNqmC,SAAUnsC,EAAM22B,QAAQ5T,OAAOnP,QAkBjC,OAfI1I,GAAGhG,QAAQw3B,SAASgC,YAClB,SAAW54B,GAAK2D,OAClBjN,EAAM6J,MAAQP,EAAK2D,KAAKpD,MAAM7I,UAE1B,OAASsI,GAAK2D,OAGhBjN,EAAM+J,SAAWT,EAAK2D,KAAKnD,IAAI9I,UAAYhB,EAAM6J,QAInD6E,EAAGhG,QAAQw3B,SAASmF,aAClB,SAAW/7B,GAAK2D,OAAMjN,EAAMkM,MAAQ5C,EAAK2D,KAAKf,OAG7ClM,IAIXwD,EAAM88B,sBAEC3mC,MAAK+O,QAAQw3B,SAAS1yB,KAAOhK,EAAM22B,QAAQ0V,SAASC,SAE3Dn2C,KAAKo2C,oBAAoBvsC,KAS7B/G,EAAQiR,UAAUqiC,oBAAsB,SAAUvsC,GAChD,GAAI86B,GAAO3kC,KAAK+O,QAAQ41B,MAAQ,KAC5B0R,EAAO11C,EAAK+G,gBAAgB1H,KAAKwwB,IAAIrQ,OACrC9N,EAAIxI,EAAM22B,QAAQ5T,OAAO0S,MAAQ+W,EAAO,GACxCrb,EAAOh7B,KAAKo1B,KAAKz0B,KAAKo1B,OAAO1jB,GAC7B9N,EAAQvE,KAAKo1B,KAAKz0B,KAAK80B,WACvBzM,EAAOhpB,KAAKo1B,KAAKz0B,KAAKg0B,UACtBzkB,EAAQy0B,EAAOA,EAAK3J,EAAMz2B,EAAOykB,GAAQ9Y,EACzCC,EAAMD,EAENwnB,GACFvwB,KAAM,QACN+I,MAAOA,EACPC,IAAKA,EACL6C,QAAS,YAGP3S,EAAKM,EAAK2E,YACdoyB,GAAS13B,KAAKw2B,UAAU/iB,UAAYpT,CAEpC,IAAIkS,GAAQvS,KAAKs2C,gBAAgBzsC,EAC7B0I,KACFmlB,EAASnlB,MAAQA,EAAM4lB,QAGzB,IAAIoe,GAAU,GAAIj0C,GAAUo1B,EAAU13B,KAAKi7B,WAAYj7B,KAAK+O,QAC5DwnC,GAAQl2C,GAAKA,EACbL,KAAKgV,SAASuhC,EAEd,IAAIlwC,IACFsJ,KAAM4mC,EACNpmC,IAAKA,EAAI9I,UACT2uC,SAAUnsC,EAAM22B,QAAQ5T,OAAOnP,QAEjCzd,MAAKwzC,YAAYyC,WAAa5vC,GAE9BwD,EAAM88B,mBAQR7jC,EAAQiR,UAAU+qB,QAAU,SAAUj1B,GAGpC,GAFAA,EAAMD,iBAEF5J,KAAKwzC,YAAYyC,UAAW,CAC9B,GAAIlhC,GAAK/U,KACL2kC,EAAO3kC,KAAK+O,QAAQ41B,MAAQ,KAC5B7xB,EAAU9S,KAAKo1B,KAAK5E,IAAI9wB,KAAKsxC,WAAahxC,KAAKo1B,KAAKC,SAASxtB,KAAKsL,MAClE5O,EAAQvE,KAAKo1B,KAAKz0B,KAAK80B,WACvBzM,EAAOhpB,KAAKo1B,KAAKz0B,KAAKg0B,SAG1B30B,MAAKwzC,YAAYyC,UAAUrtC,QAAQ,SAAUvC,GAC3C,GAAImwC,MACA7b,EAAU5lB,EAAGqgB,KAAKz0B,KAAKo1B,OAAOlsB,EAAM22B,QAAQ5T,OAAOnP,QAAU3K,GAC7D2jC,EAAU1hC,EAAGqgB,KAAKz0B,KAAKo1B,OAAO1vB,EAAM2vC,SAAWljC,GAC/CyX,EAASoQ,EAAU8b,CAEvB,IAAI,SAAWpwC,GAAO,CACpB,GAAI6J,GAAQ,GAAItL,MAAKyB,EAAM6J,MAAQqa,EACnCisB,GAAStmC,MAAQy0B,EAAOA,EAAKz0B,EAAO3L,EAAOykB,GAAQ9Y,EAGrD,GAAI,OAAS7J,GAAO,CAClB,GAAI8J,GAAM,GAAIvL,MAAKyB,EAAM8J,IAAMoa,EAC/BisB,GAASrmC,IAAMw0B,EAAOA,EAAKx0B,EAAK5L,EAAOykB,GAAQ7Y,MAExC,YAAc9J,KACrBmwC,EAASrmC,IAAM,GAAIvL,MAAK4xC,EAAStmC,MAAM7I,UAAYhB,EAAM+J,UAG3D,IAAI,SAAW/J,GAAO,CAEpB,GAAIkM,GAAQwC,EAAGuhC,gBAAgBzsC,EAC/B2sC,GAASjkC,MAAQA,GAASA,EAAM4lB,QAIlC,GAAIT,GAAW/2B,EAAKgF,UAAWU,EAAMsJ,KAAK2D,KAAMkjC,EAChDzhC,GAAGhG,QAAQ4jC,SAASjb,EAAU,SAAUA,GAClCA,GACF3iB,EAAG2hC,iBAAiBrwC,EAAMsJ,KAAM+nB,OAKtC13B,KAAKuzC,YAAa,EAClBvzC,KAAKo1B,KAAKE,QAAQhH,KAAK,UAEvBzkB,EAAM88B,oBAUV7jC,EAAQiR,UAAU2iC,iBAAmB,SAAS/mC,EAAMtJ,GAE9C,SAAWA,KACbsJ,EAAK2D,KAAKpD,MAAQ7J,EAAM6J,OAEtB,OAAS7J,GACXsJ,EAAK2D,KAAKnD,IAAM9J,EAAM8J,IAEf,YAAc9J,KACrBsJ,EAAK2D,KAAKnD,IAAM,GAAIvL,MAAKyB,EAAM6J,MAAM7I,UAAYhB,EAAM+J,WAErD,SAAW/J,IAASsJ,EAAK2D,KAAKf,OAASlM,EAAMkM,OAC/CvS,KAAK22C,aAAahnC,EAAMtJ,EAAMkM,QAUlCzP,EAAQiR,UAAU4iC,aAAe,SAAShnC,EAAMwoB,GAC9C,GAAI5lB,GAAQvS,KAAK40B,OAAOuD,EACxB,IAAI5lB,GAASA,EAAM4lB,SAAWxoB,EAAK2D,KAAKf,MAAO,CAC7C,GAAIsjC,GAAWlmC,EAAK61B,MACpBqQ,GAAS5+B,OAAOtH,GAChBkmC,EAASx/B,QACT9D,EAAMsB,IAAIlE,GACV4C,EAAM8D,QAEN1G,EAAK2D,KAAKf,MAAQA,EAAM4lB,UAS5Br1B,EAAQiR,UAAUgrB,WAAa,SAAUl1B,GAGvC,GAFAA,EAAMD,iBAEF5J,KAAKwzC,YAAYyC,UAAW,CAE9B,GAAIW,MACA7hC,EAAK/U,KACL63B,EAAU73B,KAAKw2B,UAAU9f,aAEzBu/B,EAAYj2C,KAAKwzC,YAAYyC,SACjCj2C,MAAKwzC,YAAYyC,UAAY,KAC7BA,EAAUrtC,QAAQ,SAAUvC,GAC1B,GAAIhG,GAAKgG,EAAMsJ,KAAKtP,GAChBq3B,EAAW3iB,EAAGyhB,UAAU1gB,IAAIzV,EAAI0U,EAAG69B,YAEvC,IAAKlb,EAaA,CAEH,GAAIuI,IAAU,CACV,UAAW55B,GAAMsJ,KAAK2D,OACxB2sB,EAAW55B,EAAM6J,OAAS7J,EAAMsJ,KAAK2D,KAAKpD,MAAM7I,UAChDqwB,EAASxnB,MAAQvP,EAAKuG,QAAQb,EAAMsJ,KAAK2D,KAAKpD,MAC1C2nB,EAAQtkB,SAASpM,MAAQ0wB,EAAQtkB,SAASpM,KAAK+I,OAAS,SAE1D,OAAS7J,GAAMsJ,KAAK2D,OACtB2sB,EAAUA,GAAa55B,EAAM8J,KAAO9J,EAAMsJ,KAAK2D,KAAKnD,IAAI9I,UACxDqwB,EAASvnB,IAAMxP,EAAKuG,QAAQb,EAAMsJ,KAAK2D,KAAKnD,IACxC0nB,EAAQtkB,SAASpM,MAAQ0wB,EAAQtkB,SAASpM,KAAKgJ,KAAO,SAExD,SAAW9J,GAAMsJ,KAAK2D,OACxB2sB,EAAUA,GAAa55B,EAAMkM,OAASlM,EAAMsJ,KAAK2D,KAAKf,MACtDmlB,EAASnlB,MAAQlM,EAAMsJ,KAAK2D,KAAKf,OAI/B0tB,GACFlrB,EAAGhG,QAAQ0jC,OAAO/a,EAAU,SAAUA,GAChCA,GAEFA,EAASG,EAAQpkB,UAAYpT,EAC7Bu2C,EAAQruC,KAAKmvB,KAIb3iB,EAAG2hC,iBAAiBrwC,EAAMsJ,KAAMtJ,GAEhC0O,EAAGw+B,YAAa,EAChBx+B,EAAGqgB,KAAKE,QAAQhH,KAAK,iBA1C3BvZ,GAAGhG,QAAQwjC,MAAMlsC,EAAMsJ,KAAK2D,KAAM,SAAUokB,GAC1C3iB,EAAG2gC,YAAYrvC,EAAMsJ,MACjB+nB,GACF3iB,EAAGyhB,UAAU9f,aAAa7C,IAAI6jB,GAIhC3iB,EAAGw+B,YAAa,EAChBx+B,EAAGqgB,KAAKE,QAAQhH,KAAK,cA0CvBsoB,EAAQ5wC,QACV6xB,EAAQpiB,OAAOmhC,GAGjB/sC,EAAM88B,oBASV7jC,EAAQiR,UAAU8/B,cAAgB,SAAUhqC,GAC1C,GAAK7J,KAAK+O,QAAQujC,WAAlB,CAEA,GAAI6D,GAAWtsC,EAAM22B,QAAQ0V,UAAYrsC,EAAM22B,QAAQ0V,SAASC,QAC5DU,EAAWhtC,EAAM22B,QAAQ0V,UAAYrsC,EAAM22B,QAAQ0V,SAASW,QAChE,IAAIV,GAAWU,EAEb,WADA72C,MAAK8zC,mBAAmBjqC,EAI1B,IAAIitC,GAAe92C,KAAKy3B,eAEpB9nB,EAAO7M,EAAQizC,eAAelsC,GAC9BypC,EAAY3jC,GAAQA,EAAKtP,MAC7BL,MAAKu3B,aAAa+b,EAElB,IAAIyD,GAAe/2C,KAAKy3B,gBAIpBsf,EAAa/wC,OAAS,GAAK8wC,EAAa9wC,OAAS,IACnDhG,KAAKo1B,KAAKE,QAAQhH,KAAK,UACrBrsB,MAAO80C,MAUbj0C,EAAQiR,UAAUggC,WAAa,SAAUlqC,GACvC,GAAK7J,KAAK+O,QAAQujC,YACbtyC,KAAK+O,QAAQw3B,SAAS1yB,IAA3B,CAEA,GAAIkB,GAAK/U,KACL2kC,EAAO3kC,KAAK+O,QAAQ41B,MAAQ,KAC5Bh1B,EAAO7M,EAAQizC,eAAelsC,EAElC,IAAI8F,EAAM,CAIR,GAAI+nB,GAAW3iB,EAAGyhB,UAAU1gB,IAAInG,EAAKtP,GACrCL,MAAK+O,QAAQyjC,SAAS9a,EAAU,SAAUA,GACpCA,GACF3iB,EAAGyhB,UAAU9f,aAAajB,OAAOiiB,SAIlC,CAEH,GAAI2e,GAAO11C,EAAK+G,gBAAgB1H,KAAKwwB,IAAIrQ,OACrC9N,EAAIxI,EAAM22B,QAAQ5T,OAAO0S,MAAQ+W,EACjCnmC,EAAQlQ,KAAKo1B,KAAKz0B,KAAKo1B,OAAO1jB,GAC9B9N,EAAQvE,KAAKo1B,KAAKz0B,KAAK80B,WACvBzM,EAAOhpB,KAAKo1B,KAAKz0B,KAAKg0B,UAEtB4hB,GACFrmC,MAAOy0B,EAAOA,EAAKz0B,EAAO3L,EAAOykB,GAAQ9Y,EACzC8C,QAAS,WAIX,IAA0B,UAAtBhT,KAAK+O,QAAQ5H,KAAkB,CACjC,GAAIgJ,GAAMnQ,KAAKo1B,KAAKz0B,KAAKo1B,OAAO1jB,EAAIrS,KAAKqG,MAAM8M,MAAQ,EACvDojC,GAAQpmC,IAAMw0B,EAAOA,EAAKx0B,EAAK5L,EAAOykB,GAAQ7Y,EAGhDomC,EAAQv2C,KAAKw2B,UAAU/iB,UAAY9S,EAAK2E,YAExC,IAAIiN,GAAQvS,KAAKs2C,gBAAgBzsC,EAC7B0I,KACFgkC,EAAQhkC,MAAQA,EAAM4lB,SAIxBn4B,KAAK+O,QAAQwjC,MAAMgE,EAAS,SAAU5mC,GAChCA,GACFoF,EAAGyhB,UAAU9f,aAAa7C,IAAIlE;MAYtC7M,EAAQiR,UAAU+/B,mBAAqB,SAAUjqC,GAC/C,GAAK7J,KAAK+O,QAAQujC,WAAlB,CAEA,GAAIgB,GACA3jC,EAAO7M,EAAQizC,eAAelsC,EAElC,IAAI8F,EAAM,CAER2jC,EAAYtzC,KAAKy3B,cAEjB,IAAIof,GAAWhtC,EAAM22B,QAAQW,QAAQ,IAAMt3B,EAAM22B,QAAQW,QAAQ,GAAG0V,WAAY,CAChF,IAAIA,EAAU,CAIZvD,EAAU/qC,KAAKoH,EAAKtP,GACpB,IAAI81B,GAAQrzB,EAAQk0C,cAAch3C,KAAKw2B,UAAU1gB,IAAIw9B,EAAWtzC,KAAK4yC,aAGrEU,KACA,KAAK,GAAIjzC,KAAML,MAAKiC,MAClB,GAAIjC,KAAKiC,MAAMkE,eAAe9F,GAAK,CACjC,GAAI42C,GAAQj3C,KAAKiC,MAAM5B,GACnB6P,EAAQ+mC,EAAM3jC,KAAKpD,MACnBC,EAA0BtJ,SAAnBowC,EAAM3jC,KAAKnD,IAAqB8mC,EAAM3jC,KAAKnD,IAAMD,CAExDA,IAASimB,EAAMhyB,KAAOgM,GAAOgmB,EAAM/xB,KACrCkvC,EAAU/qC,KAAK0uC,EAAM52C,SAKxB,CAEH,GAAIqI,GAAQ4qC,EAAUtsC,QAAQ2I,EAAKtP,GACtB,KAATqI,EAEF4qC,EAAU/qC,KAAKoH,EAAKtP,IAIpBizC,EAAU3qC,OAAOD,EAAO,GAI5B1I,KAAKu3B,aAAa+b,GAElBtzC,KAAKo1B,KAAKE,QAAQhH,KAAK,UACrBrsB,MAAOjC,KAAKy3B,oBAWlB30B,EAAQk0C,cAAgB,SAASxgB,GAC/B,GAAIpyB,GAAM,KACND,EAAM,IAmBV,OAjBAqyB,GAAU5tB,QAAQ,SAAU0K,IACf,MAAPnP,GAAemP,EAAKpD,MAAQ/L,KAC9BA,EAAMmP,EAAKpD,OAGGrJ,QAAZyM,EAAKnD,KACI,MAAP/L,GAAekP,EAAKnD,IAAM/L,KAC5BA,EAAMkP,EAAKnD,MAIF,MAAP/L,GAAekP,EAAKpD,MAAQ9L,KAC9BA,EAAMkP,EAAKpD,UAMf/L,IAAKA,EACLC,IAAKA,IAUTtB,EAAQizC,eAAiB,SAASlsC,GAEhC,IADA,GAAIG,GAASH,EAAMG,OACZA,GAAQ,CACb,GAAIA,EAAO7D,eAAe,iBACxB,MAAO6D,GAAO,gBAEhBA,GAASA,EAAOG,WAGlB,MAAO,OASTrH,EAAQiR,UAAUuiC,gBAAkB,SAASzsC,GAY3C,IAAK,GADD+T,GAAU/T,EAAM22B,QAAQ5T,OAAOhP,QAC1B/X,EAAI,EAAGA,EAAI7F,KAAKqzC,SAASrtC,OAAQH,IAAK,CAC7C,GAAIsyB,GAAUn4B,KAAKqzC,SAASxtC,GACxB0M,EAAQvS,KAAK40B,OAAOuD,GACpB0P,EAAat1B,EAAMie,IAAIqX,WACvB5/B,EAAMtH,EAAKqH,eAAe6/B,EAC9B,IAAIjqB,EAAU3V,GAAO2V,EAAU3V,EAAM4/B,EAAW9W,aAC9C,MAAOxe,EAGT,IAAiC,QAA7BvS,KAAK+O,QAAQimB,aACf,GAAInvB,IAAM7F,KAAKqzC,SAASrtC,OAAS,GAAK4X,EAAU3V,EAC9C,MAAOsK,OAIT,IAAU,IAAN1M,GAAW+X,EAAU3V,EAAM4/B,EAAWtd,OACxC,MAAOhY,GAKb,MAAO,OASTzP,EAAQo0C,kBAAoB,SAASrtC,GAEnC,IADA,GAAIG,GAASH,EAAMG,OACZA,GAAQ,CACb,GAAIA,EAAO7D,eAAe,oBACxB,MAAO6D,GAAO,mBAEhBA,GAASA,EAAOG,WAGlB,MAAO,OAGTtK,EAAOD,QAAUkD,GAKb,SAASjD,EAAQD,EAASM,GAS9B,QAAS6C,GAAOqyB,EAAMrmB,EAASooC,EAAMpN,GACnC/pC,KAAKo1B,KAAOA,EACZp1B,KAAK80B,gBACH9lB,SAAS,EACTk7B,OAAO,EACPkN,SAAU,GACVC,YAAa,EACbxvC,MACEyhB,SAAS,EACT7E,SAAU,YAEZyD,OACEoB,SAAS,EACT7E,SAAU,aAGdzkB,KAAKm3C,KAAOA,EACZn3C,KAAK+O,QAAUpO,EAAKgF,UAAU3F,KAAK80B,gBACnC90B,KAAK+pC,iBAAmBA,EAExB/pC,KAAKmrC,eACLnrC,KAAKwwB,OACLxwB,KAAK40B,UACL50B,KAAKqrC,eAAiB,EACtBrrC,KAAKm1B,UAELn1B,KAAK8T,WAAW/E,GAjClB,GAAIpO,GAAOT,EAAoB,GAC3BU,EAAUV,EAAoB,GAC9BqC,EAAYrC,EAAoB,GAkCpC6C,GAAOgR,UAAY,GAAIxR,GAEvBQ,EAAOgR,UAAUsD,MAAQ,WACvBrX,KAAK40B,UACL50B,KAAKqrC,eAAiB,GAGxBtoC,EAAOgR,UAAUy3B,SAAW,SAAS34B,EAAO44B,GAErCzrC,KAAK40B,OAAOzuB,eAAe0M,KAC9B7S,KAAK40B,OAAO/hB,GAAS44B,GAEvBzrC,KAAKqrC,gBAAkB,GAGzBtoC,EAAOgR,UAAU23B,YAAc,SAAS74B,EAAO44B,GAC7CzrC,KAAK40B,OAAO/hB,GAAS44B,GAGvB1oC,EAAOgR,UAAU43B,YAAc,SAAS94B,GAClC7S,KAAK40B,OAAOzuB,eAAe0M,WACtB7S,MAAK40B,OAAO/hB,GACnB7S,KAAKqrC,gBAAkB,IAI3BtoC,EAAOgR,UAAUohB,QAAU,WACzBn1B,KAAKwwB,IAAIrQ,MAAQtO,SAASM,cAAc,OACxCnS,KAAKwwB,IAAIrQ,MAAM/X,UAAY,SAC3BpI,KAAKwwB,IAAIrQ,MAAM5S,MAAMkX,SAAW,WAChCzkB,KAAKwwB,IAAIrQ,MAAM5S,MAAMtF,IAAM,OAC3BjI,KAAKwwB,IAAIrQ,MAAM5S,MAAMq+B,QAAU,QAE/B5rC,KAAKwwB,IAAI8mB,SAAWzlC,SAASM,cAAc,OAC3CnS,KAAKwwB,IAAI8mB,SAASlvC,UAAY,aAC9BpI,KAAKwwB,IAAI8mB,SAAS/pC,MAAMkX,SAAW,WACnCzkB,KAAKwwB,IAAI8mB,SAAS/pC,MAAMtF,IAAM,MAE9BjI,KAAK8pC,IAAMj4B,SAASC,gBAAgB,6BAA6B,OACjE9R,KAAK8pC,IAAIv8B,MAAMkX,SAAW,WAC1BzkB,KAAK8pC,IAAIv8B,MAAMtF,IAAM,MACrBjI,KAAK8pC,IAAIv8B,MAAM4F,MAAQnT,KAAK+O,QAAQqoC,SAAW,EAAI,KACnDp3C,KAAK8pC,IAAIv8B,MAAM6F,OAAS,OAExBpT,KAAKwwB,IAAIrQ,MAAMpO,YAAY/R,KAAK8pC,KAChC9pC,KAAKwwB,IAAIrQ,MAAMpO,YAAY/R,KAAKwwB,IAAI8mB,WAMtCv0C,EAAOgR,UAAUiyB,KAAO,WAElBhmC,KAAKwwB,IAAIrQ,MAAMhW,YACjBnK,KAAKwwB,IAAIrQ,MAAMhW,WAAWsH,YAAYzR,KAAKwwB,IAAIrQ,QAQnDpd,EAAOgR,UAAUkyB,KAAO,WAEjBjmC,KAAKwwB,IAAIrQ,MAAMhW,YAClBnK,KAAKo1B,KAAK5E,IAAI5D,OAAO7a,YAAY/R,KAAKwwB,IAAIrQ,QAI9Cpd,EAAOgR,UAAUD,WAAa,SAAS/E,GACrC,GAAIP,IAAU,UAAU,cAAc,QAAQ,OAAO,QACrD7N,GAAK6F,oBAAoBgI,EAAQxO,KAAK+O,QAASA,IAGjDhM,EAAOgR,UAAUuO,OAAS,WACxB,GAAI6pB,GAAe,CACnB,KAAK,GAAIhU,KAAWn4B,MAAK40B,OACnB50B,KAAK40B,OAAOzuB,eAAegyB,KACO,GAAhCn4B,KAAK40B,OAAOuD,GAAS7O,SAAkEziB,SAA9C7G,KAAK+pC,iBAAiB1R,WAAWF,IAAuE,GAA7Cn4B,KAAK+pC,iBAAiB1R,WAAWF,IACvIgU,IAKN,IAAuC,GAAnCnsC,KAAK+O,QAAQ/O,KAAKm3C,MAAM7tB,SAA2C,GAAvBtpB,KAAKqrC,gBAA+C,GAAxBrrC,KAAK+O,QAAQC,SAAoC,GAAhBm9B,EAC3GnsC,KAAKgmC,WAEF,CAqBH,GApBAhmC,KAAKimC,OACmC,YAApCjmC,KAAK+O,QAAQ/O,KAAKm3C,MAAM1yB,UAA8D,eAApCzkB,KAAK+O,QAAQ/O,KAAKm3C,MAAM1yB,UAC5EzkB,KAAKwwB,IAAIrQ,MAAM5S,MAAM1F,KAAO,MAC5B7H,KAAKwwB,IAAIrQ,MAAM5S,MAAM4b,UAAY,OACjCnpB,KAAKwwB,IAAI8mB,SAAS/pC,MAAM4b,UAAY,OACpCnpB,KAAKwwB,IAAI8mB,SAAS/pC,MAAM1F,KAAQ7H,KAAK+O,QAAQqoC,SAAW,GAAM,KAC9Dp3C,KAAKwwB,IAAI8mB,SAAS/pC,MAAM2a,MAAQ,GAChCloB,KAAK8pC,IAAIv8B,MAAM1F,KAAO,MACtB7H,KAAK8pC,IAAIv8B,MAAM2a,MAAQ,KAGvBloB,KAAKwwB,IAAIrQ,MAAM5S,MAAM2a,MAAQ,MAC7BloB,KAAKwwB,IAAIrQ,MAAM5S,MAAM4b,UAAY,QACjCnpB,KAAKwwB,IAAI8mB,SAAS/pC,MAAM4b,UAAY,QACpCnpB,KAAKwwB,IAAI8mB,SAAS/pC,MAAM2a,MAASloB,KAAK+O,QAAQqoC,SAAW,GAAM,KAC/Dp3C,KAAKwwB,IAAI8mB,SAAS/pC,MAAM1F,KAAO,GAC/B7H,KAAK8pC,IAAIv8B,MAAM2a,MAAQ,MACvBloB,KAAK8pC,IAAIv8B,MAAM1F,KAAO,IAGgB,YAApC7H,KAAK+O,QAAQ/O,KAAKm3C,MAAM1yB,UAA8D,aAApCzkB,KAAK+O,QAAQ/O,KAAKm3C,MAAM1yB,SAC5EzkB,KAAKwwB,IAAIrQ,MAAM5S,MAAMtF,IAAM,EAAIhE,OAAOjE,KAAKo1B,KAAK5E,IAAI5D,OAAOrf,MAAMtF,IAAI6C,QAAQ,KAAK,KAAO,KACzF9K,KAAKwwB,IAAIrQ,MAAM5S,MAAM4W,OAAS,OAE3B,CACH,GAAIozB,GAAmBv3C,KAAKo1B,KAAKC,SAASzI,OAAOxZ,OAASpT,KAAKo1B,KAAKC,SAASqD,gBAAgBtlB,MAC7FpT,MAAKwwB,IAAIrQ,MAAM5S,MAAM4W,OAAS,EAAIozB,EAAmBtzC,OAAOjE,KAAKo1B,KAAK5E,IAAI5D,OAAOrf,MAAMtF,IAAI6C,QAAQ,KAAK,KAAO,KAC/G9K,KAAKwwB,IAAIrQ,MAAM5S,MAAMtF,IAAM,GAGH,GAAtBjI,KAAK+O,QAAQm7B,OACflqC,KAAKwwB,IAAIrQ,MAAM5S,MAAM4F,MAAQnT,KAAKwwB,IAAI8mB,SAASzmB,YAAc,GAAK,KAClE7wB,KAAKwwB,IAAI8mB,SAAS/pC,MAAM2a,MAAQ,GAChCloB,KAAKwwB,IAAI8mB,SAAS/pC,MAAM1F,KAAO,GAC/B7H,KAAK8pC,IAAIv8B,MAAM4F,MAAQ,QAGvBnT,KAAKwwB,IAAIrQ,MAAM5S,MAAM4F,MAAQnT,KAAK+O,QAAQqoC,SAAW,GAAKp3C,KAAKwwB,IAAI8mB,SAASzmB,YAAc,GAAK,KAC/F7wB,KAAKw3C,kBAGP,IAAIxkC,GAAU,EACd,KAAK,GAAImlB,KAAWn4B,MAAK40B,OACnB50B,KAAK40B,OAAOzuB,eAAegyB,KACO,GAAhCn4B,KAAK40B,OAAOuD,GAAS7O,SAAkEziB,SAA9C7G,KAAK+pC,iBAAiB1R,WAAWF,IAAuE,GAA7Cn4B,KAAK+pC,iBAAiB1R,WAAWF,KACvInlB,GAAWhT,KAAK40B,OAAOuD,GAASnlB,QAAU,UAIhDhT,MAAKwwB,IAAI8mB,SAASxyB,UAAY9R,EAC9BhT,KAAKwwB,IAAI8mB,SAAS/pC,MAAMyjB,WAAe,IAAOhxB,KAAK+O,QAAQqoC,SAAYp3C,KAAK+O,QAAQsoC,YAAe,OAIvGt0C,EAAOgR,UAAUyjC,gBAAkB,WACjC,GAAIx3C,KAAKwwB,IAAIrQ,MAAMhW,WAAY,CAC7BvJ,EAAQuQ,gBAAgBnR,KAAKmrC,YAC7B,IAAItmB,GAAU/c,OAAO2/B,iBAAiBznC,KAAKwwB,IAAIrQ,OAAOs3B,WAClD1L,EAAa9nC,OAAO4gB,EAAQ/Z,QAAQ,KAAK,KACzCuH,EAAI05B,EACJxB,EAAYvqC,KAAK+O,QAAQqoC,SACzBtL,EAAa,IAAO9rC,KAAK+O,QAAQqoC,SACjC9kC,EAAIy5B,EAAa,GAAMD,EAAa,CAExC9rC,MAAK8pC,IAAIv8B,MAAM4F,MAAQo3B,EAAY,EAAIwB,EAAa,IAEpD,KAAK,GAAI5T,KAAWn4B,MAAK40B,OACnB50B,KAAK40B,OAAOzuB,eAAegyB,KACO,GAAhCn4B,KAAK40B,OAAOuD,GAAS7O,SAAkEziB,SAA9C7G,KAAK+pC,iBAAiB1R,WAAWF,IAAuE,GAA7Cn4B,KAAK+pC,iBAAiB1R,WAAWF,KACvIn4B,KAAK40B,OAAOuD,GAAS6T,SAAS35B,EAAGC,EAAGtS,KAAKmrC,YAAanrC,KAAK8pC,IAAKS,EAAWuB,GAC3Ex5B,GAAKw5B,EAAa9rC,KAAK+O,QAAQsoC,aAKrCz2C,GAAQ4Q,gBAAgBxR,KAAKmrC,eAIjCtrC,EAAOD,QAAUmD,GAKb,SAASlD,EAAQD,EAASM,GAqB9B,QAAS8C,GAAUoyB,EAAMrmB,GACvB/O,KAAKK,GAAKM,EAAK2E,aACftF,KAAKo1B,KAAOA,EAEZp1B,KAAK80B,gBACH8a,iBAAkB,OAClB8H,aAAc,UACd5gC,MAAM,EACN6gC,UAAU,EACVC,YAAa,QACbrI,QACEvgC,SAAS,EACTgmB,YAAa,UAEfznB,MAAO,OACPsqC,UACE1kC,MAAO,GACP2kC,cAAe,UACfhQ,MAAO,UAETiH,YACE//B,SAAS,EACTggC,gBAAiB,cACjBC,MAAO,IAETv8B,YACE1D,SAAS,EACT4D,KAAM,EACNrF,MAAO,UAETwqC,UACE/N,iBAAiB,EACjBC,iBAAiB,EACjBC,OAAO,EACP/2B,MAAO,OACPmW,SAAS,EACT8S,YAAY,EACZD,aACEt0B,MAAO1D,IAAI0C,OAAWzC,IAAIyC,QAC1BqhB,OAAQ/jB,IAAI0C,OAAWzC,IAAIyC,UAkB/BmxC,QACEhpC,SAAS,EACTk7B,OAAO,EACPriC,MACEyhB,SAAS,EACT7E,SAAU,YAEZyD,OACEoB,SAAS,EACT7E,SAAU,cAGdmQ,QACEyD,gBAKJr4B,KAAK+O,QAAUpO,EAAKgF,UAAW3F,KAAK80B,gBACpC90B,KAAKwwB,OACLxwB,KAAKqG,SACLrG,KAAK8D,OAAS,KACd9D,KAAK40B,UACL50B,KAAKi4C,oBAAqB,EAC1Bj4C,KAAKk4C,iBAAkB,EACvBl4C,KAAKm4C,yBAA0B,CAE/B,IAAIpjC,GAAK/U,IACTA,MAAKw2B,UAAY,KACjBx2B,KAAKy2B,WAAa,KAGlBz2B,KAAK6yC,eACHh/B,IAAO,SAAUhK,EAAO6K,GACtBK,EAAG+9B,OAAOp+B,EAAOzS,QAEnBwT,OAAU,SAAU5L,EAAO6K,GACzBK,EAAGg+B,UAAUr+B,EAAOzS,QAEtBgV,OAAU,SAAUpN,EAAO6K,GACzBK,EAAGi+B,UAAUt+B,EAAOzS,SAKxBjC,KAAKizC,gBACHp/B,IAAO,SAAUhK,EAAO6K,GACtBK,EAAGm+B,aAAax+B,EAAOzS,QAEzBwT,OAAU,SAAU5L,EAAO6K,GACzBK,EAAGo+B,gBAAgBz+B,EAAOzS,QAE5BgV,OAAU,SAAUpN,EAAO6K,GACzBK,EAAGq+B,gBAAgB1+B,EAAOzS,SAI9BjC,KAAKiC,SACLjC,KAAKszC,aACLtzC,KAAKo4C,UAAYp4C,KAAKo1B,KAAKe,MAAMjmB,MACjClQ,KAAKwzC,eAELxzC,KAAKmrC,eACLnrC,KAAK8T,WAAW/E,GAChB/O,KAAKwuC,0BAA4B,GACjCxuC,KAAKq4C,QAAU,EACfr4C,KAAKo1B,KAAKE,QAAQnhB,GAAG,eAAgB,WACnCY,EAAGqjC,UAAYrjC,EAAGqgB,KAAKe,MAAMjmB,MAC7B6E,EAAG+0B,IAAIv8B,MAAM1F,KAAOlH,EAAKyJ,OAAOK,QAAQsK,EAAG1O,MAAM8M,OACjD4B,EAAGuN,OAAO/hB,KAAKwU,GAAG,KAIpB/U,KAAKm1B,UACLn1B,KAAKgwC,WAAalG,IAAK9pC,KAAK8pC,IAAKqB,YAAanrC,KAAKmrC,YAAap8B,QAAS/O,KAAK+O,QAAS6lB,OAAQ50B,KAAK40B,QACpG50B,KAAKo1B,KAAKE,QAAQhH,KAAK,UAvJzB,GAAI3tB,GAAOT,EAAoB,GAC3BU,EAAUV,EAAoB,GAC9BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/BqC,EAAYrC,EAAoB,IAChCwC,EAAWxC,EAAoB,IAC/ByC,EAAazC,EAAoB,IACjC6C,EAAS7C,EAAoB,IAC7Bo4C,EAAoBp4C,EAAoB,IAExCuzC,EAAY,eAiJhBzwC,GAAU+Q,UAAY,GAAIxR,GAK1BS,EAAU+Q,UAAUohB,QAAU,WAC5B,GAAIhV,GAAQtO,SAASM,cAAc,MACnCgO,GAAM/X,UAAY,YAClBpI,KAAKwwB,IAAIrQ,MAAQA,EAGjBngB,KAAK8pC,IAAMj4B,SAASC,gBAAgB,6BAA6B,OACjE9R,KAAK8pC,IAAIv8B,MAAMkX,SAAW,WAC1BzkB,KAAK8pC,IAAIv8B,MAAM6F,QAAU,GAAKpT,KAAK+O,QAAQ6oC,aAAa9sC,QAAQ,KAAK,IAAM,KAC3E9K,KAAK8pC,IAAIv8B,MAAMq+B,QAAU,QACzBzrB,EAAMpO,YAAY/R,KAAK8pC,KAGvB9pC,KAAK+O,QAAQgpC,SAAS/iB,YAAc,OACpCh1B,KAAKu4C,UAAY,GAAI71C,GAAS1C,KAAKo1B,KAAMp1B,KAAK+O,QAAQgpC,SAAU/3C,KAAK8pC,IAAK9pC,KAAK+O,QAAQ6lB,QAEvF50B,KAAK+O,QAAQgpC,SAAS/iB,YAAc,QACpCh1B,KAAKw4C,WAAa,GAAI91C,GAAS1C,KAAKo1B,KAAMp1B,KAAK+O,QAAQgpC,SAAU/3C,KAAK8pC,IAAK9pC,KAAK+O,QAAQ6lB,cACjF50B,MAAK+O,QAAQgpC,SAAS/iB,YAG7Bh1B,KAAKy4C,WAAa,GAAI11C,GAAO/C,KAAKo1B,KAAMp1B,KAAK+O,QAAQipC,OAAQ,OAAQh4C,KAAK+O,QAAQ6lB,QAClF50B,KAAK04C,YAAc,GAAI31C,GAAO/C,KAAKo1B,KAAMp1B,KAAK+O,QAAQipC,OAAQ,QAASh4C,KAAK+O,QAAQ6lB,QAEpF50B,KAAKimC,QAOPjjC,EAAU+Q,UAAUD,WAAa,SAAS/E,GACxC,GAAIA,EAAS,CACX,GAAIP,IAAU,WAAW,eAAe,SAAS,cAAc,mBAAmB,QAAQ,WAAW,WAAW,OAAO,SAC3F3H,UAAxBkI,EAAQ6oC,aAAgD/wC,SAAnBkI,EAAQqE,QAAsEvM,SAA9C7G,KAAKo1B,KAAKC,SAASqD,gBAAgBtlB,QAC1GpT,KAAKk4C,iBAAkB,EACvBl4C,KAAKm4C,yBAA0B,GAEsBtxC,SAA9C7G,KAAKo1B,KAAKC,SAASqD,gBAAgBtlB,QAAgDvM,SAAxBkI,EAAQ6oC,aACtE1sC,UAAU6D,EAAQ6oC,YAAc,IAAI9sC,QAAQ,KAAK,KAAO9K,KAAKo1B,KAAKC,SAASqD,gBAAgBtlB,SAC7FpT,KAAKk4C,iBAAkB,GAG3Bv3C,EAAK6F,oBAAoBgI,EAAQxO,KAAK+O,QAASA,GAC/CpO,EAAKkO,aAAa7O,KAAK+O,QAASA,EAAQ,cACxCpO,EAAKkO,aAAa7O,KAAK+O,QAASA,EAAQ,cACxCpO,EAAKkO,aAAa7O,KAAK+O,QAASA,EAAQ,UACxCpO,EAAKkO,aAAa7O,KAAK+O,QAASA,EAAQ,UAEpCA,EAAQggC,YACuB,gBAAtBhgC,GAAQggC,YACbhgC,EAAQggC,WAAWC,kBACqB,WAAtCjgC,EAAQggC,WAAWC,gBACrBhvC,KAAK+O,QAAQggC,WAAWE,MAAQ,EAEa,WAAtClgC,EAAQggC,WAAWC,gBAC1BhvC,KAAK+O,QAAQggC,WAAWE,MAAQ,GAGhCjvC,KAAK+O,QAAQggC,WAAWC,gBAAkB,cAC1ChvC,KAAK+O,QAAQggC,WAAWE,MAAQ,KAMpCjvC,KAAKu4C,WACkB1xC,SAArBkI,EAAQgpC,WACV/3C,KAAKu4C,UAAUzkC,WAAW9T,KAAK+O,QAAQgpC,UACvC/3C,KAAKw4C,WAAW1kC,WAAW9T,KAAK+O,QAAQgpC,WAIxC/3C,KAAKy4C,YACgB5xC,SAAnBkI,EAAQipC,SACVh4C,KAAKy4C,WAAW3kC,WAAW9T,KAAK+O,QAAQipC,QACxCh4C,KAAK04C,YAAY5kC,WAAW9T,KAAK+O,QAAQipC,SAIzCh4C,KAAK40B,OAAOzuB,eAAestC,IAC7BzzC,KAAK40B,OAAO6e,GAAW3/B,WAAW/E,GAKlC/O,KAAKwwB,IAAIrQ,OACXngB,KAAKsiB,QAAO,IAOhBtf,EAAU+Q,UAAUiyB,KAAO,WAErBhmC,KAAKwwB,IAAIrQ,MAAMhW,YACjBnK,KAAKwwB,IAAIrQ,MAAMhW,WAAWsH,YAAYzR,KAAKwwB,IAAIrQ,QASnDnd,EAAU+Q,UAAUkyB,KAAO,WAEpBjmC,KAAKwwB,IAAIrQ,MAAMhW,YAClBnK,KAAKo1B,KAAK5E,IAAI5D,OAAO7a,YAAY/R,KAAKwwB,IAAIrQ,QAS9Cnd,EAAU+Q,UAAU4iB,SAAW,SAAS10B,GACtC,GACE8T,GADEhB,EAAK/U,KAEPq1C,EAAer1C,KAAKw2B,SAGtB,IAAKv0B,EAGA,CAAA,KAAIA,YAAiBpB,IAAWoB,YAAiBnB,IAIpD,KAAM,IAAI4F,WAAU,kDAHpB1G,MAAKw2B,UAAYv0B,MAHjBjC,MAAKw2B,UAAY,IAoBnB,IAXI6e,IAEF10C,EAAKiI,QAAQ5I,KAAK6yC,cAAe,SAAUhqC,EAAUgB,GACnDwrC,EAAa/gC,IAAIzK,EAAOhB,KAI1BkN,EAAMs/B,EAAa5+B,SACnBzW,KAAKgzC,UAAUj9B,IAGb/V,KAAKw2B,UAAW,CAElB,GAAIn2B,GAAKL,KAAKK,EACdM,GAAKiI,QAAQ5I,KAAK6yC,cAAe,SAAUhqC,EAAUgB,GACnDkL,EAAGyhB,UAAUriB,GAAGtK,EAAOhB,EAAUxI,KAInC0V,EAAM/V,KAAKw2B,UAAU/f,SACrBzW,KAAK8yC,OAAO/8B,GAEd/V,KAAK2zC,mBAEL3zC,KAAKsiB,QAAO,IAQdtf,EAAU+Q,UAAU2iB,UAAY,SAAS9B,GACvC,GACI7e,GADAhB,EAAK/U,IAgBT,IAZIA,KAAKy2B,aACP91B,EAAKiI,QAAQ5I,KAAKizC,eAAgB,SAAUpqC,EAAUgB,GACpDkL,EAAG0hB,WAAWjiB,YAAY3K,EAAOhB,KAInCkN,EAAM/V,KAAKy2B,WAAWhgB,SACtBzW,KAAKy2B,WAAa,KAClBz2B,KAAKozC,gBAAgBr9B,IAIlB6e,EAGA,CAAA,KAAIA,YAAkB/zB,IAAW+zB,YAAkB9zB,IAItD,KAAM,IAAI4F,WAAU,kDAHpB1G,MAAKy2B,WAAa7B,MAHlB50B,MAAKy2B,WAAa,IASpB,IAAIz2B,KAAKy2B,WAAY,CAEnB,GAAIp2B,GAAKL,KAAKK,EACdM,GAAKiI,QAAQ5I,KAAKizC,eAAgB,SAAUpqC,EAAUgB,GACpDkL,EAAG0hB,WAAWtiB,GAAGtK,EAAOhB,EAAUxI,KAIpC0V,EAAM/V,KAAKy2B,WAAWhgB,SACtBzW,KAAKkzC,aAAan9B,GAEpB/V,KAAK+yC,aASP/vC,EAAU+Q,UAAUg/B,UAAY,WAC9B/yC,KAAK2zC,mBACL3zC,KAAK24C,sBAEL34C,KAAKsiB,QAAO,IAEdtf,EAAU+Q,UAAU++B,OAAkB,SAAU/8B,GAAM/V,KAAK+yC,UAAUh9B,IACrE/S,EAAU+Q,UAAUi/B,UAAkB,SAAUj9B,GAAM/V,KAAK+yC,UAAUh9B,IACrE/S,EAAU+Q,UAAUo/B,gBAAmB,SAAUE,GAC/C,IAAK,GAAIxtC,GAAI,EAAGA,EAAIwtC,EAASrtC,OAAQH,IAAK,CACxC,GAAI0M,GAAQvS,KAAKy2B,WAAW3gB,IAAIu9B,EAASxtC,GACzC7F,MAAK44C,aAAarmC,EAAO8gC,EAASxtC,IAIpC7F,KAAKsiB,QAAO,IAEdtf,EAAU+Q,UAAUm/B,aAAe,SAAUG,GAAWrzC,KAAKmzC,gBAAgBE,IAQ7ErwC,EAAU+Q,UAAUq/B,gBAAkB,SAAUC,GAC9C,IAAK,GAAIxtC,GAAI,EAAGA,EAAIwtC,EAASrtC,OAAQH,IAC/B7F,KAAK40B,OAAOzuB,eAAektC,EAASxtC,MACmB,SAArD7F,KAAK40B,OAAOye,EAASxtC,IAAIkJ,QAAQ6gC,kBACnC5vC,KAAKw4C,WAAW7M,YAAY0H,EAASxtC,IACrC7F,KAAK04C,YAAY/M,YAAY0H,EAASxtC,IACtC7F,KAAK04C,YAAYp2B,WAGjBtiB,KAAKu4C,UAAU5M,YAAY0H,EAASxtC,IACpC7F,KAAKy4C,WAAW9M,YAAY0H,EAASxtC,IACrC7F,KAAKy4C,WAAWn2B,gBAEXtiB,MAAK40B,OAAOye,EAASxtC,IAGhC7F,MAAK2zC,mBAEL3zC,KAAKsiB,QAAO,IAWdtf,EAAU+Q,UAAU6kC,aAAe,SAAUrmC,EAAO4lB,GAC7Cn4B,KAAK40B,OAAOzuB,eAAegyB,IAY9Bn4B,KAAK40B,OAAOuD,GAAS1iB,OAAOlD,GACyB,SAAjDvS,KAAK40B,OAAOuD,GAASppB,QAAQ6gC,kBAC/B5vC,KAAKw4C,WAAW9M,YAAYvT,EAASn4B,KAAK40B,OAAOuD,IACjDn4B,KAAK04C,YAAYhN,YAAYvT,EAASn4B,KAAK40B,OAAOuD,MAGlDn4B,KAAKu4C,UAAU7M,YAAYvT,EAASn4B,KAAK40B,OAAOuD,IAChDn4B,KAAKy4C,WAAW/M,YAAYvT,EAASn4B,KAAK40B,OAAOuD,OAlBnDn4B,KAAK40B,OAAOuD,GAAW,GAAIx1B,GAAW4P,EAAO4lB,EAASn4B,KAAK+O,QAAS/O,KAAKwuC,0BACpB,SAAjDxuC,KAAK40B,OAAOuD,GAASppB,QAAQ6gC,kBAC/B5vC,KAAKw4C,WAAWhN,SAASrT,EAASn4B,KAAK40B,OAAOuD,IAC9Cn4B,KAAK04C,YAAYlN,SAASrT,EAASn4B,KAAK40B,OAAOuD,MAG/Cn4B,KAAKu4C,UAAU/M,SAASrT,EAASn4B,KAAK40B,OAAOuD,IAC7Cn4B,KAAKy4C,WAAWjN,SAASrT,EAASn4B,KAAK40B,OAAOuD,MAclDn4B,KAAKy4C,WAAWn2B,SAChBtiB,KAAK04C,YAAYp2B,UASnBtf,EAAU+Q,UAAU4kC,oBAAsB,WACxC,GAAsB,MAAlB34C,KAAKw2B,UAAmB,CAC1B,GACI2B,GADA0gB,IAEJ,KAAK1gB,IAAWn4B,MAAK40B,OACf50B,KAAK40B,OAAOzuB,eAAegyB,KAC7B0gB,EAAc1gB,MAGlB,KAAK,GAAIhiB,KAAUnW,MAAKw2B,UAAUhjB,MAChC,GAAIxT,KAAKw2B,UAAUhjB,MAAMrN,eAAegQ,GAAS,CAC/C,GAAIxG,GAAO3P,KAAKw2B,UAAUhjB,MAAM2C,EAChC,IAAkCtP,SAA9BgyC,EAAclpC,EAAK4C,OACrB,KAAM,IAAI3O,OAAM,4IAElB+L,GAAK0C,EAAI1R,EAAKuG,QAAQyI,EAAK0C,EAAE,QAC7BwmC,EAAclpC,EAAK4C,OAAOhK,KAAKoH,GAGnC,IAAKwoB,IAAWn4B,MAAK40B,OACf50B,KAAK40B,OAAOzuB,eAAegyB,IAC7Bn4B,KAAK40B,OAAOuD,GAASxB,SAASkiB,EAAc1gB,MAYpDn1B,EAAU+Q,UAAU4/B,iBAAmB,WACrC,GAAI3zC,KAAKw2B,WAA+B,MAAlBx2B,KAAKw2B,UAAmB,CAC5C,GAAIsiB,GAAmB,CACvB,KAAK,GAAI3iC,KAAUnW,MAAKw2B,UAAUhjB,MAChC,GAAIxT,KAAKw2B,UAAUhjB,MAAMrN,eAAegQ,GAAS,CAC/C,GAAIxG,GAAO3P,KAAKw2B,UAAUhjB,MAAM2C,EACpBtP,SAAR8I,IACEA,EAAKxJ,eAAe,SACHU,SAAf8I,EAAK4C,QACP5C,EAAK4C,MAAQkhC,GAIf9jC,EAAK4C,MAAQkhC,EAEfqF,EAAmBnpC,EAAK4C,OAASkhC,EAAYqF,EAAmB,EAAIA,GAK1E,GAAwB,GAApBA,QACK94C,MAAK40B,OAAO6e,GACnBzzC,KAAKy4C,WAAW9M,YAAY8H,GAC5BzzC,KAAK04C,YAAY/M,YAAY8H,GAC7BzzC,KAAKu4C,UAAU5M,YAAY8H,GAC3BzzC,KAAKw4C,WAAW7M,YAAY8H,OAEzB,CACH,GAAIlhC,IAASlS,GAAIozC,EAAWzgC,QAAShT,KAAK+O,QAAQ2oC,aAClD13C,MAAK44C,aAAarmC,EAAOkhC,eAIpBzzC,MAAK40B,OAAO6e,GACnBzzC,KAAKy4C,WAAW9M,YAAY8H,GAC5BzzC,KAAK04C,YAAY/M,YAAY8H,GAC7BzzC,KAAKu4C,UAAU5M,YAAY8H,GAC3BzzC,KAAKw4C,WAAW7M,YAAY8H,EAG9BzzC,MAAKy4C,WAAWn2B,SAChBtiB,KAAK04C,YAAYp2B,UAQnBtf,EAAU+Q,UAAUuO,OAAS,SAASy2B,GACpC,GAAIlQ,IAAU,CAGd7oC,MAAKqG,MAAM8M,MAAQnT,KAAKwwB,IAAIrQ,MAAM0Q,YAClC7wB,KAAKqG,MAAM+M,OAASpT,KAAKo1B,KAAKC,SAASqD,gBAAgBtlB,OAGhCvM,SAAnB7G,KAAKy0C,WAA2Bz0C,KAAKqG,MAAM8M,QAC7C4lC,GAAmB,GAIrBlQ,EAAU7oC,KAAK4oC,cAAgBC,CAG/B,IAAIyL,GAAkBt0C,KAAKo1B,KAAKe,MAAMhmB,IAAMnQ,KAAKo1B,KAAKe,MAAMjmB,MACxDqkC,EAAUD,GAAmBt0C,KAAKw0C,mBA6BtC,IA5BAx0C,KAAKw0C,oBAAsBF,EAKZ,GAAXzL,IACF7oC,KAAK8pC,IAAIv8B,MAAM4F,MAAQxS,EAAKyJ,OAAOK,OAAO,EAAEzK,KAAKqG,MAAM8M,OACvDnT,KAAK8pC,IAAIv8B,MAAM1F,KAAOlH,EAAKyJ,OAAOK,QAAQzK,KAAKqG,MAAM8M,QAGN,KAA1CnT,KAAK+O,QAAQqE,OAAS,IAAIpM,QAAQ,MAA8C,GAAhChH,KAAKm4C,2BACxDn4C,KAAKk4C,iBAAkB,IAKC,GAAxBl4C,KAAKk4C,iBACHl4C,KAAK+O,QAAQ6oC,aAAe53C,KAAKo1B,KAAKC,SAASqD,gBAAgBtlB,OAAS,OAC1EpT,KAAK+O,QAAQ6oC,YAAc53C,KAAKo1B,KAAKC,SAASqD,gBAAgBtlB,OAAS,KACvEpT,KAAK8pC,IAAIv8B,MAAM6F,OAASpT,KAAKo1B,KAAKC,SAASqD,gBAAgBtlB,OAAS,MAEtEpT,KAAKk4C,iBAAkB,GAGvBl4C,KAAK8pC,IAAIv8B,MAAM6F,QAAU,GAAKpT,KAAK+O,QAAQ6oC,aAAa9sC,QAAQ,KAAK,IAAM,KAI9D,GAAX+9B,GAA6B,GAAV0L,GAA6C,GAA3Bv0C,KAAKi4C,oBAAkD,GAApBc,EAC1ElQ,EAAU7oC,KAAKg5C,gBAAkBnQ,MAIjC,IAAsB,GAAlB7oC,KAAKo4C,UAAgB,CACvB,GAAI7tB,GAASvqB,KAAKo1B,KAAKe,MAAMjmB,MAAQlQ,KAAKo4C,UACtCjiB,EAAQn2B,KAAKo1B,KAAKe,MAAMhmB,IAAMnQ,KAAKo1B,KAAKe,MAAMjmB,KAClD,IAAwB,GAApBlQ,KAAKqG,MAAM8M,MAAY,CACzB,GAAI8lC,GAAmBj5C,KAAKqG,MAAM8M,MAAMgjB,EACpCrjB,EAAUyX,EAAS0uB,CACvBj5C,MAAK8pC,IAAIv8B,MAAM1F,MAAS7H,KAAKqG,MAAM8M,MAAQL,EAAW,MAO5D,MAFA9S,MAAKy4C,WAAWn2B,SAChBtiB,KAAK04C,YAAYp2B,SACVumB,GAQT7lC,EAAU+Q,UAAUilC,aAAe,WAGjC,GADAp4C,EAAQuQ,gBAAgBnR,KAAKmrC,aACL,GAApBnrC,KAAKqG,MAAM8M,OAAgC,MAAlBnT,KAAKw2B,UAAmB,CACnD,GAAIjkB,GAAO1M,EACPqzC,KACAC,KACAC,KACAC,GAAe,EAGfhG,IACJ,KAAK,GAAIlb,KAAWn4B,MAAK40B,OACnB50B,KAAK40B,OAAOzuB,eAAegyB,KAC7B5lB,EAAQvS,KAAK40B,OAAOuD,GACC,GAAjB5lB,EAAM+W,SAAgEziB,SAA5C7G,KAAK+O,QAAQ6lB,OAAOyD,WAAWF,IAAqE,GAA3Cn4B,KAAK+O,QAAQ6lB,OAAOyD,WAAWF,IACpHkb,EAAS9qC,KAAK4vB,GAIpB,IAAIkb,EAASrtC,OAAS,EAAG,CAEvB,GAAIszC,GAAUt5C,KAAKo1B,KAAKz0B,KAAKs1B,cAAcj2B,KAAKo1B,KAAKC,SAAS31B,KAAKyT,OAC/DomC,EAAUv5C,KAAKo1B,KAAKz0B,KAAKs1B,aAAa,EAAIj2B,KAAKo1B,KAAKC,SAAS31B,KAAKyT,OAClEsjB,IAQJ,KANAz2B,KAAKw5C,iBAAiBnG,EAAU5c,EAAY6iB,EAASC,GAGrDv5C,KAAKy5C,eAAepG,EAAU5c,GAGzB5wB,EAAI,EAAGA,EAAIwtC,EAASrtC,OAAQH,IAC/BqzC,EAAsB7F,EAASxtC,IAAM7F,KAAK05C,qBAAqBjjB,EAAW4c,EAASxtC,IAIrF7F,MAAK25C,YAAYtG,EAAU6F,EAAuBE,GAIlDC,EAAer5C,KAAK45C,aAAavG,EAAU+F,EAC3C,IAAIS,GAAa,CACjB,IAAoB,GAAhBR,GAAwBr5C,KAAKq4C,QAAUwB,EAKzC,MAJAj5C,GAAQ4Q,gBAAgBxR,KAAKmrC,aAC7BnrC,KAAKi4C,oBAAqB,EAC1Bj4C,KAAKq4C,UACLr4C,KAAKo1B,KAAKE,QAAQhH,KAAK,WAChB,CAUP,KAPItuB,KAAKq4C,QAAUwB,GACjBrgB,QAAQpF,IAAI,6EAEdp0B,KAAKq4C,QAAU,EACfr4C,KAAKi4C,oBAAqB,EAGrBpyC,EAAI,EAAGA,EAAIwtC,EAASrtC,OAAQH,IAC/B0M,EAAQvS,KAAK40B,OAAOye,EAASxtC,IAC7BszC,EAAmB9F,EAASxtC,IAAM7F,KAAK85C,qBAAqBrjB,EAAW4c,EAASxtC,IAAK0M,EAIvF,KAAK1M,EAAI,EAAGA,EAAIwtC,EAASrtC,OAAQH,IAC/B0M,EAAQvS,KAAK40B,OAAOye,EAASxtC,IACF,OAAvB0M,EAAMxD,QAAQxB,OAChBgF,EAAMw9B,KAAKoJ,EAAmB9F,EAASxtC,IAAK0M,EAAOvS,KAAKgwC,UAG5DsI,GAAkBvI,KAAKsD,EAAU8F,EAAoBn5C,KAAKgwC,YAOhE,MADApvC,GAAQ4Q,gBAAgBxR,KAAKmrC,cACtB,GAiBTnoC,EAAU+Q,UAAUylC,iBAAmB,SAAUnG,EAAU5c,EAAY6iB,EAASC,GAC9E,GAAIhnC,GAAO1M,EAAGymB,EAAG3c,CACjB,IAAI0jC,EAASrtC,OAAS,EACpB,IAAKH,EAAI,EAAGA,EAAIwtC,EAASrtC,OAAQH,IAAK,CACpC0M,EAAQvS,KAAK40B,OAAOye,EAASxtC,IAC7B4wB,EAAW4c,EAASxtC,MACpB,IAAIk0C,GAAgBtjB,EAAW4c,EAASxtC,GAExC,IAA0B,GAAtB0M,EAAMxD,QAAQ+H,KAAc,CAC9B,GAAIkjC,GAAQx1C,KAAKJ,IAAI,EAAGzD,EAAKkP,kBAAkB0C,EAAMikB,UAAW8iB,EAAS,IAAK,UAC9E,KAAKhtB,EAAI0tB,EAAO1tB,EAAI/Z,EAAMikB,UAAUxwB,OAAQsmB,IAE1C,GADA3c,EAAO4C,EAAMikB,UAAUlK,GACVzlB,SAAT8I,EAAoB,CACtB,GAAIA,EAAK0C,EAAIknC,EAAS,CACpBQ,EAAcxxC,KAAKoH,EACnB,OAGAoqC,EAAcxxC,KAAKoH,QAMzB,KAAK2c,EAAI,EAAGA,EAAI/Z,EAAMikB,UAAUxwB,OAAQsmB,IACtC3c,EAAO4C,EAAMikB,UAAUlK,GACVzlB,SAAT8I,GACEA,EAAK0C,EAAIinC,GAAW3pC,EAAK0C,EAAIknC,GAC/BQ,EAAcxxC,KAAKoH,KAgBjC3M,EAAU+Q,UAAU0lC,eAAiB,SAAUpG,EAAU5c,GACvD,GAAIlkB,EACJ,IAAI8gC,EAASrtC,OAAS,EACpB,IAAK,GAAIH,GAAI,EAAGA,EAAIwtC,EAASrtC,OAAQH,IAEnC,GADA0M,EAAQvS,KAAK40B,OAAOye,EAASxtC,IACC,GAA1B0M,EAAMxD,QAAQ4oC,SAAkB,CAClC,GAAIoC,GAAgBtjB,EAAW4c,EAASxtC,GACxC,IAAIk0C,EAAc/zC,OAAS,EAAG,CAC5B,GAAIi0C,GAAY,EACZC,EAAiBH,EAAc/zC,OAI/Bm0C,EAAYn6C,KAAKo1B,KAAKz0B,KAAKk1B,eAAekkB,EAAcA,EAAc/zC,OAAS,GAAGqM,GAAKrS,KAAKo1B,KAAKz0B,KAAKk1B,eAAekkB,EAAc,GAAG1nC,GACtI+nC,EAAiBF,EAAiBC,CACtCF,GAAYz1C,KAAKL,IAAIK,KAAK61C,KAAK,GAAMH,GAAiB11C,KAAKJ,IAAI,EAAGI,KAAK4pB,MAAMgsB,IAG7E,KAAK,GADDE,MACKhuB,EAAI,EAAO4tB,EAAJ5tB,EAAoBA,GAAK2tB,EACvCK,EAAY/xC,KAAKwxC,EAAcztB,GAGjCmK,GAAW4c,EAASxtC,IAAMy0C,KAgBpCt3C,EAAU+Q,UAAU4lC,YAAc,SAAUtG,EAAU5c,EAAY2iB,GAChE,GAAItJ,GAAWv9B,EAAO1M,EAGlBkJ,EAFAwrC,KACAC,IAEJ,IAAInH,EAASrtC,OAAS,EAAG,CACvB,IAAKH,EAAI,EAAGA,EAAIwtC,EAASrtC,OAAQH,IAC/BiqC,EAAYrZ,EAAW4c,EAASxtC,IAChCkJ,EAAU/O,KAAK40B,OAAOye,EAASxtC,IAAIkJ,QAC/B+gC,EAAU9pC,OAAS,IACrBuM,EAAQvS,KAAK40B,OAAOye,EAASxtC,IAES,SAAlCkJ,EAAQ8oC,SAASC,eAA6C,OAAjB/oC,EAAQxB,MACvB,QAA5BwB,EAAQ6gC,iBAA6B2K,EAAuBA,EAAoB3lC,OAAOrC,EAAMs9B,UAAUC,IAClE0K,EAAuBA,EAAqB5lC,OAAOrC,EAAMs9B,UAAUC,IAG5GsJ,EAAY/F,EAASxtC,IAAM0M,EAAMs9B,UAAUC,EAAUuD,EAASxtC,IAMpEyyC,GAAkBmC,oBAAoBF,EAAsBnB,EAAa/F,EAAU,iBAAmB,QACtGiF,EAAkBmC,oBAAoBD,EAAsBpB,EAAa/F,EAAU,kBAAmB,WAW1GrwC,EAAU+Q,UAAU6lC,aAAe,SAAUvG,EAAU+F,GACrD,GAGoEsB,GAAQC,EAHxE9R,GAAU,EACV+R,GAAgB,EAChBC,GAAiB,EACjBC,EAAU,IAAKC,EAAW,IAAKC,EAAU,KAAMC,EAAW,IAE9D,IAAI5H,EAASrtC,OAAS,EAAG,CAEvB,IAAK,GAAIH,GAAI,EAAGA,EAAIwtC,EAASrtC,OAAQH,IAAK,CACxC,GAAI0M,GAAQvS,KAAK40B,OAAOye,EAASxtC,GAC7B0M,IAA2C,SAAlCA,EAAMxD,QAAQ6gC,kBACzBgL,GAAgB,EAChBE,EAAU,EACVE,EAAU,GAEHzoC,GAASA,EAAMxD,QAAQ6gC,mBAC9BiL,GAAiB,EACjBE,EAAW,EACXE,EAAW,GAKf,IAAK,GAAIp1C,GAAI,EAAGA,EAAIwtC,EAASrtC,OAAQH,IAC/BuzC,EAAYjzC,eAAektC,EAASxtC,KAClCuzC,EAAY/F,EAASxtC,IAAIq1C,UAAW,IACtCR,EAAStB,EAAY/F,EAASxtC,IAAI1B,IAClCw2C,EAASvB,EAAY/F,EAASxtC,IAAIzB,IAEe,SAA7Cg1C,EAAY/F,EAASxtC,IAAI+pC,kBAC3BgL,GAAgB,EAChBE,EAAUA,EAAUJ,EAASA,EAASI,EACtCE,EAAoBL,EAAVK,EAAmBL,EAASK,IAGtCH,GAAiB,EACjBE,EAAWA,EAAWL,EAASA,EAASK,EACxCE,EAAsBN,EAAXM,EAAoBN,EAASM,GAM3B,IAAjBL,GACF56C,KAAKu4C,UAAUvkB,SAAS8mB,EAASE,GAEb,GAAlBH,GACF76C,KAAKw4C,WAAWxkB,SAAS+mB,EAAUE,GAoCvC,MAjCApS,GAAU7oC,KAAKm7C,qBAAqBP,EAAgB56C,KAAKu4C,YAAe1P,EACxEA,EAAU7oC,KAAKm7C,qBAAqBN,EAAgB76C,KAAKw4C,aAAe3P,EAElD,GAAlBgS,GAA2C,GAAjBD,GAC5B56C,KAAKu4C,UAAU6C,WAAY,EAC3Bp7C,KAAKw4C,WAAW4C,WAAY,IAG5Bp7C,KAAKu4C,UAAU6C,WAAY,EAC3Bp7C,KAAKw4C,WAAW4C,WAAY,GAE9Bp7C,KAAKw4C,WAAWtN,QAAU0P,EACI,GAA1B56C,KAAKw4C,WAAWtN,QACWlrC,KAAKu4C,UAAUtN,WAAtB,GAAlB4P,EAAqD76C,KAAKw4C,WAAWrlC,MAChB,EAEzD01B,EAAU7oC,KAAKu4C,UAAUj2B,UAAYumB,EACrC7oC,KAAKw4C,WAAWzN,iBAAmB/qC,KAAKu4C,UAAUzN,WAClD9qC,KAAKw4C,WAAWxN,aAAehrC,KAAKu4C,UAAUvN,aAC9CnC,EAAU7oC,KAAKw4C,WAAWl2B,UAAYumB,GAGtCA,EAAU7oC,KAAKw4C,WAAWl2B,UAAYumB,EAIE,IAAtCwK,EAASrsC,QAAQ,mBACnBqsC,EAAS1qC,OAAO0qC,EAASrsC,QAAQ,kBAAkB,GAEV,IAAvCqsC,EAASrsC,QAAQ,oBACnBqsC,EAAS1qC,OAAO0qC,EAASrsC,QAAQ,mBAAmB,GAG/C6hC,GAYT7lC,EAAU+Q,UAAUonC,qBAAuB,SAAUE,EAAUtZ,GAC7D,GAAI9B,IAAU,CAad,OAZgB,IAAZob,EACEtZ,EAAKvR,IAAIrQ,MAAMhW,YAA6B,GAAf43B,EAAKhI,SACpCgI,EAAKiE,OACL/F,GAAU,GAIP8B,EAAKvR,IAAIrQ,MAAMhW,YAA6B,GAAf43B,EAAKhI,SACrCgI,EAAKkE,OACLhG,GAAU,GAGPA,GAaTj9B,EAAU+Q,UAAU2lC,qBAAuB,SAAU4B,GAKnD,IAAK,GAHDC,GAAQC,EADRC,KAEA9lB,EAAW31B,KAAKo1B,KAAKz0B,KAAKg1B,SAErB9vB,EAAI,EAAGA,EAAIy1C,EAAWt1C,OAAQH,IACrC01C,EAAS5lB,EAAS2lB,EAAWz1C,GAAGwM,GAAKrS,KAAKqG,MAAM8M,MAChDqoC,EAASF,EAAWz1C,GAAGyM,EACvBmpC,EAAclzC,MAAM8J,EAAGkpC,EAAQjpC,EAAGkpC,GAGpC,OAAOC,IAcTz4C,EAAU+Q,UAAU+lC,qBAAuB,SAAUwB,EAAY/oC,GAC/D,GACIgpC,GAAQC,EADRC,KAEA9lB,EAAW31B,KAAKo1B,KAAKz0B,KAAKg1B,SAC1BoM,EAAO/hC,KAAKu4C,UACZmD,EAAYz3C,OAAOjE,KAAK8pC,IAAIv8B,MAAM6F,OAAOtI,QAAQ,KAAK,IACpB,UAAlCyH,EAAMxD,QAAQ6gC,mBAChB7N,EAAO/hC,KAAKw4C,WAGd,KAAK,GAAI3yC,GAAI,EAAGA,EAAIy1C,EAAWt1C,OAAQH,IAAK,CAC1C,GAAI81C,EAOJA,GAAaL,EAAWz1C,GAAGgN,MAAQyoC,EAAWz1C,GAAGgN,MAAQ,KACzD0oC,EAAS5lB,EAAS2lB,EAAWz1C,GAAGwM,GAAKrS,KAAKqG,MAAM8M,MAChDqoC,EAASh3C,KAAK4pB,MAAM2T,EAAK0L,aAAa6N,EAAWz1C,GAAGyM,IACpDmpC,EAAclzC,MAAM8J,EAAGkpC,EAAQjpC,EAAGkpC,EAAQ3oC,MAAM8oC,IAKlD,MAFAppC,GAAMu8B,gBAAgBtqC,KAAKL,IAAIu3C,EAAW3Z,EAAK0L,aAAa,KAErDgO,GAIT57C,EAAOD,QAAUoD,GAKb,SAASnD,EAAQD,EAASM,GAgB9B,QAAS+C,GAAUmyB,EAAMrmB,GACvB/O,KAAKwwB,KACHqX,WAAY,KACZ6C,SACAkR,cACAC,cACAvqC,WACEo5B,SACAkR,cACAC,gBAGJ77C,KAAKqG,OACH8vB,OACEjmB,MAAO,EACPC,IAAK,EACL8rB,YAAa,GAEf6f,QAAS,GAGX97C,KAAK80B,gBACHE,YAAa,SAEbgV,iBAAiB,EACjBC,iBAAiB,EACjB1H,OAAQ,KACR7M,SAAU,MAEZ11B,KAAK+O,QAAUpO,EAAKgF,UAAW3F,KAAK80B,gBAEpC90B,KAAKo1B,KAAOA,EAGZp1B,KAAKm1B,UAELn1B,KAAK8T,WAAW/E,GAlDlB,GAAIpO,GAAOT,EAAoB,GAC3BqC,EAAYrC,EAAoB,IAChC6B,EAAW7B,EAAoB,IAC/ByB,EAAWzB,EAAoB,IAC/B2D,EAAS3D,EAAoB,GAiDjC+C,GAAS8Q,UAAY,GAAIxR,GAUzBU,EAAS8Q,UAAUD,WAAa,SAAS/E,GACnCA,IAEFpO,EAAKyF,iBACH,cACA,kBACA,kBACA,cACA,SACA,YACCpG,KAAK+O,QAASA,GAIb,UAAYA,KACe,kBAAlBlL,GAAOwhC,OAEhBxhC,EAAOwhC,OAAOt2B,EAAQs2B,QAGtBxhC,EAAOyhC,KAAKv2B,EAAQs2B,WAS5BpiC,EAAS8Q,UAAUohB,QAAU,WAC3Bn1B,KAAKwwB,IAAIqX,WAAah2B,SAASM,cAAc,OAC7CnS,KAAKwwB,IAAI9jB,WAAamF,SAASM,cAAc,OAE7CnS,KAAKwwB,IAAIqX,WAAWz/B,UAAY,sBAChCpI,KAAKwwB,IAAI9jB,WAAWtE,UAAY,uBAMlCnF,EAAS8Q,UAAUG,QAAU,WAEvBlU,KAAKwwB,IAAIqX,WAAW19B,YACtBnK,KAAKwwB,IAAIqX,WAAW19B,WAAWsH,YAAYzR,KAAKwwB,IAAIqX,YAElD7nC,KAAKwwB,IAAI9jB,WAAWvC,YACtBnK,KAAKwwB,IAAI9jB,WAAWvC,WAAWsH,YAAYzR,KAAKwwB,IAAI9jB,YAGtD1M,KAAKo1B,KAAO,MAOdnyB,EAAS8Q,UAAUuO,OAAS,WAC1B,GAAIvT,GAAU/O,KAAK+O,QACf1I,EAAQrG,KAAKqG,MACbwhC,EAAa7nC,KAAKwwB,IAAIqX,WACtBn7B,EAAa1M,KAAKwwB,IAAI9jB,WAGtB84B,EAAiC,OAAvBz2B,EAAQimB,YAAwBh1B,KAAKo1B,KAAK5E,IAAIvoB,IAAMjI,KAAKo1B,KAAK5E,IAAIrM,OAC5E43B,EAAiBlU,EAAW19B,aAAeq7B,CAG/CxlC,MAAKosC,oBAGL,IACIpC,IADchqC,KAAK+O,QAAQimB,YACTh1B,KAAK+O,QAAQi7B,iBAC/BC,EAAkBjqC,KAAK+O,QAAQk7B,eAGnC5jC,GAAMgmC,iBAAmBrC,EAAkB3jC,EAAMimC,gBAAkB,EACnEjmC,EAAMkmC,iBAAmBtC,EAAkB5jC,EAAMmmC,gBAAkB,EACnEnmC,EAAM+M,OAAS/M,EAAMgmC,iBAAmBhmC,EAAMkmC,iBAC9ClmC,EAAM8M,MAAQ00B,EAAWhX,YAEzBxqB,EAAMqmC,gBAAkB1sC,KAAKo1B,KAAKC,SAAS31B,KAAK0T,OAAS/M,EAAMkmC,kBACnC,OAAvBx9B,EAAQimB,YAAuBh1B,KAAKo1B,KAAKC,SAASlR,OAAO/Q,OAASpT,KAAKo1B,KAAKC,SAASptB,IAAImL,QAC9F/M,EAAMomC,eAAiB,EACvBpmC,EAAMumC,gBAAkBvmC,EAAMqmC,gBAAkBrmC,EAAMkmC,iBACtDlmC,EAAMsmC,eAAiB,CAGvB,IAAIqP,GAAwBnU,EAAWoU,YACnCC,EAAwBxvC,EAAWuvC,WAsBvC,OArBApU,GAAW19B,YAAc09B,EAAW19B,WAAWsH,YAAYo2B,GAC3Dn7B,EAAWvC,YAAcuC,EAAWvC,WAAWsH,YAAY/E,GAE3Dm7B,EAAWt6B,MAAM6F,OAASpT,KAAKqG,MAAM+M,OAAS,KAE9CpT,KAAKm8C,iBAGDH,EACFxW,EAAOtzB,aAAa21B,EAAYmU,GAGhCxW,EAAOzzB,YAAY81B,GAEjBqU,EACFl8C,KAAKo1B,KAAK5E,IAAI0Y,mBAAmBh3B,aAAaxF,EAAYwvC,GAG1Dl8C,KAAKo1B,KAAK5E,IAAI0Y,mBAAmBn3B,YAAYrF,GAGxC1M,KAAK4oC,cAAgBmT,GAO9B94C,EAAS8Q,UAAUooC,eAAiB,WAClC,GAAInnB,GAAch1B,KAAK+O,QAAQimB,YAG3B9kB,EAAQvP,EAAKuG,QAAQlH,KAAKo1B,KAAKe,MAAMjmB,MAAO,UAC5CC,EAAMxP,EAAKuG,QAAQlH,KAAKo1B,KAAKe,MAAMhmB,IAAK,UACxCisC,EAAgBp8C,KAAKo1B,KAAKz0B,KAAKo1B,OAA2C,GAAnC/1B,KAAKqG,MAAM0nC,gBAAkB,KAAS1mC,UAC7E40B,EAAcmgB,EAAgBz6C,EAAS+5B,wBAAwB17B,KAAKo1B,KAAKI,YAAax1B,KAAKo1B,KAAKe,MAAOimB,EAC3GngB,IAAej8B,KAAKo1B,KAAKz0B,KAAKo1B,OAAO,GAAG1uB,SAExC,IAAI2hB,GAAO,GAAIjnB,GAAS,GAAI6C,MAAKsL,GAAQ,GAAItL,MAAKuL,GAAM8rB,EAAaj8B,KAAKo1B,KAAKI,YAC3Ex1B,MAAK+O,QAAQwzB,QACfvZ,EAAKga,UAAUhjC,KAAK+O,QAAQwzB,QAE1BviC,KAAK+O,QAAQ2mB,UACf1M,EAAKib,SAASjkC,KAAK+O,QAAQ2mB,UAE7B11B,KAAKgpB,KAAOA,CAKZ,IAAIwH,GAAMxwB,KAAKwwB,GACfA,GAAIlf,UAAUo5B,MAAQla,EAAIka,MAC1Bla,EAAIlf,UAAUsqC,WAAaprB,EAAIorB,WAC/BprB,EAAIlf,UAAUuqC,WAAarrB,EAAIqrB,WAC/BrrB,EAAIka,SACJla,EAAIorB,cACJprB,EAAIqrB,aAEJ,IAAIQ,GAEAte,EAGAue,EAGAl0C,EAPAiK,EAAI,EAEJkqC,EAAQ,EACRppC,EAAQ,EAERqpC,EAAmB31C,OACnBzC,EAAM,CAIV,KADA4kB,EAAKka,QACEla,EAAK0U,WAAmB,IAANt5B,GACvBA,IAEAi4C,EAAMrzB,EAAKC,aACX8U,EAAU/U,EAAK+U,UACf31B,EAAY4gB,EAAK8b,eAEjByX,EAAQlqC,EACRA,EAAIrS,KAAKo1B,KAAKz0B,KAAKg1B,SAAS0mB,GAC5BlpC,EAAQd,EAAIkqC,EACRD,IACFA,EAAS/uC,MAAM4F,MAAQA,EAAQ,MAG7BnT,KAAK+O,QAAQi7B,iBACfhqC,KAAKy8C,kBAAkBpqC,EAAG2W,EAAK4b,gBAAiB5P,EAAa5sB,GAG3D21B,GAAW/9B,KAAK+O,QAAQk7B,iBACtB53B,EAAI,IACkBxL,QAApB21C,IACFA,EAAmBnqC,GAErBrS,KAAK08C,kBAAkBrqC,EAAG2W,EAAK6b,gBAAiB7P,EAAa5sB,IAE/Dk0C,EAAWt8C,KAAK28C,kBAAkBtqC,EAAG2iB,EAAa5sB,IAGlDk0C,EAAWt8C,KAAK48C,kBAAkBvqC,EAAG2iB,EAAa5sB,GAGpD4gB,EAAKE,MAIP,IAAIlpB,KAAK+O,QAAQk7B,gBAAiB,CAChC,GAAI4S,GAAW78C,KAAKo1B,KAAKz0B,KAAKo1B,OAAO,GACjC+mB,EAAW9zB,EAAK6b,cAAcgY,GAC9BE,EAAYD,EAAS92C,QAAUhG,KAAKqG,MAAMynC,gBAAkB,IAAM,IAE9CjnC,QAApB21C,GAA6CA,EAAZO,IACnC/8C,KAAK08C,kBAAkB,EAAGI,EAAU9nB,EAAa5sB,GAKrDzH,EAAKiI,QAAQ5I,KAAKwwB,IAAIlf,UAAW,SAAU0rC,GACzC,KAAOA,EAAIh3C,QAAQ,CACjB,GAAI2B,GAAOq1C,EAAIC,KACXt1C,IAAQA,EAAKwC,YACfxC,EAAKwC,WAAWsH,YAAY9J,OAcpC1E,EAAS8Q,UAAU0oC,kBAAoB,SAAUpqC,EAAG8X,EAAM6K,EAAa5sB,GAErE,GAAIyK,GAAQ7S,KAAKwwB,IAAIlf,UAAUuqC,WAAWjqC,OAE1C,KAAKiB,EAAO,CAEV,GAAIG,GAAUnB,SAASo8B,eAAe,GACtCp7B,GAAQhB,SAASM,cAAc,OAC/BU,EAAMd,YAAYiB,GAClBhT,KAAKwwB,IAAIqX,WAAW91B,YAAYc,GAElC7S,KAAKwwB,IAAIqrB,WAAWtzC,KAAKsK,GAEzBA,EAAMqqC,WAAW,GAAGC,UAAYhzB,EAEhCtX,EAAMtF,MAAMtF,IAAsB,OAAf+sB,EAAyBh1B,KAAKqG,MAAMkmC,iBAAmB,KAAQ,IAClF15B,EAAMtF,MAAM1F,KAAOwK,EAAI,KACvBQ,EAAMzK,UAAY,cAAgBA,GAYpCnF,EAAS8Q,UAAU2oC,kBAAoB,SAAUrqC,EAAG8X,EAAM6K,EAAa5sB,GAErE,GAAIyK,GAAQ7S,KAAKwwB,IAAIlf,UAAUsqC,WAAWhqC,OAE1C,KAAKiB,EAAO,CAEV,GAAIG,GAAUnB,SAASo8B,eAAe9jB,EACtCtX,GAAQhB,SAASM,cAAc,OAC/BU,EAAMd,YAAYiB,GAClBhT,KAAKwwB,IAAIqX,WAAW91B,YAAYc,GAElC7S,KAAKwwB,IAAIorB,WAAWrzC,KAAKsK,GAEzBA,EAAMqqC,WAAW,GAAGC,UAAYhzB,EAChCtX,EAAMzK,UAAY,cAAgBA,EAGlCyK,EAAMtF,MAAMtF,IAAsB,OAAf+sB,EAAwB,IAAOh1B,KAAKqG,MAAMgmC,iBAAoB,KACjFx5B,EAAMtF,MAAM1F,KAAOwK,EAAI,MAWzBpP,EAAS8Q,UAAU6oC,kBAAoB,SAAUvqC,EAAG2iB,EAAa5sB,GAE/D,GAAIkoB,GAAOtwB,KAAKwwB,IAAIlf,UAAUo5B,MAAM94B,OAC/B0e,KAEHA,EAAOze,SAASM,cAAc,OAC9BnS,KAAKwwB,IAAI9jB,WAAWqF,YAAYue,IAElCtwB,KAAKwwB,IAAIka,MAAMniC,KAAK+nB,EAEpB,IAAIjqB,GAAQrG,KAAKqG,KAYjB,OAVEiqB,GAAK/iB,MAAMtF,IADM,OAAf+sB,EACe3uB,EAAMkmC,iBAAmB,KAGzBvsC,KAAKo1B,KAAKC,SAASptB,IAAImL,OAAS,KAEnDkd,EAAK/iB,MAAM6F,OAAS/M,EAAMqmC,gBAAkB,KAC5Cpc,EAAK/iB,MAAM1F,KAAQwK,EAAIhM,EAAMomC,eAAiB,EAAK,KAEnDnc,EAAKloB,UAAY,uBAAyBA,EAEnCkoB,GAWTrtB,EAAS8Q,UAAU4oC,kBAAoB,SAAUtqC,EAAG2iB,EAAa5sB,GAE/D,GAAIkoB,GAAOtwB,KAAKwwB,IAAIlf,UAAUo5B,MAAM94B,OAC/B0e,KAEHA,EAAOze,SAASM,cAAc,OAC9BnS,KAAKwwB,IAAI9jB,WAAWqF,YAAYue,IAElCtwB,KAAKwwB,IAAIka,MAAMniC,KAAK+nB,EAEpB,IAAIjqB,GAAQrG,KAAKqG,KAYjB,OAVEiqB,GAAK/iB,MAAMtF,IADM,OAAf+sB,EACe,IAGAh1B,KAAKo1B,KAAKC,SAASptB,IAAImL,OAAS,KAEnDkd,EAAK/iB,MAAM1F,KAAQwK,EAAIhM,EAAMsmC,eAAiB,EAAK,KACnDrc,EAAK/iB,MAAM6F,OAAS/M,EAAMumC,gBAAkB,KAE5Ctc,EAAKloB,UAAY,uBAAyBA,EAEnCkoB,GAQTrtB,EAAS8Q,UAAUq4B,mBAAqB,WAKjCpsC,KAAKwwB,IAAI0d,mBACZluC,KAAKwwB,IAAI0d,iBAAmBr8B,SAASM,cAAc,OACnDnS,KAAKwwB,IAAI0d,iBAAiB9lC,UAAY,qBACtCpI,KAAKwwB,IAAI0d,iBAAiB3gC,MAAMkX,SAAW,WAE3CzkB,KAAKwwB,IAAI0d,iBAAiBn8B,YAAYF,SAASo8B,eAAe,MAC9DjuC,KAAKwwB,IAAIqX,WAAW91B,YAAY/R,KAAKwwB,IAAI0d,mBAE3CluC,KAAKqG,MAAMimC,gBAAkBtsC,KAAKwwB,IAAI0d,iBAAiBxoB,aACvD1lB,KAAKqG,MAAM0nC,eAAiB/tC,KAAKwwB,IAAI0d,iBAAiB7tB,YAGjDrgB,KAAKwwB,IAAI4d,mBACZpuC,KAAKwwB,IAAI4d,iBAAmBv8B,SAASM,cAAc,OACnDnS,KAAKwwB,IAAI4d,iBAAiBhmC,UAAY,qBACtCpI,KAAKwwB,IAAI4d,iBAAiB7gC,MAAMkX,SAAW,WAE3CzkB,KAAKwwB,IAAI4d,iBAAiBr8B,YAAYF,SAASo8B,eAAe,MAC9DjuC,KAAKwwB,IAAIqX,WAAW91B,YAAY/R,KAAKwwB,IAAI4d,mBAE3CpuC,KAAKqG,MAAMmmC,gBAAkBxsC,KAAKwwB,IAAI4d,iBAAiB1oB,aACvD1lB,KAAKqG,MAAMynC,eAAiB9tC,KAAKwwB,IAAI4d,iBAAiB/tB,aAGxDxgB,EAAOD,QAAUqD,GAKb,SAASpD,EAAQD,EAASM,GAkC9B,QAASgD,GAASmX,EAAW/G,EAAMvE,GACjC,KAAM/O,eAAgBkD,IACpB,KAAM,IAAIoX,aAAY,mDAGxBta,MAAKo9C,0BACLp9C,KAAKq9C,0BAGLr9C,KAAKua,iBAAmBF,EAGxBra,KAAKs9C,kBAAoB,GACzBt9C,KAAKu9C,eAAiB,IAAOv9C,KAAKs9C,kBAClCt9C,KAAKw9C,WAAa,EAClBx9C,KAAKy9C,YAAc,EACnBz9C,KAAK09C,gBAAiB,EACtB19C,KAAK29C,wBAA0B,GAE/B39C,KAAK49C,cAAe,EAEpB59C,KAAK69C,kBAAoBhqC,IAAI,KAAKiqC,KAAK,KAAKC,SAAS,KAAKC,QAAQ,KAAKC,IAAI,KAE3E,IAAIC,GAAwB,SAAU/5C,EAAIC,EAAIC,EAAMC,GAClD,GAAIF,GAAOD,EACT,MAAO,EAGP,IAAII,GAAQ,GAAKH,EAAMD,EACvB,OAAOK,MAAKJ,IAAI,GAAGE,EAAQH,GAAKI,GAIpCvE,MAAK80B,gBACHqpB,OACED,sBAAuBA,EACvBE,KAAM,EACNC,UAAW,GACXC,UAAW,GACXnyB,OAAQ,GACRoyB,MAAO,UACPC,MAAO33C,OACPkhB,SAAU,GACVC,SAAU,GACVy2B,UAAW,QACXC,SAAU,GACVC,SAAU,UACVC,SAAU/3C,OACVg4C,gBAAiB,EACjBC,gBAAiB,UACjBC,kBAAmB,EACnBC,oBAAoB,EACpBC,YAAa,GACbC,YAAa,GACbC,mBAAoB,GACpBC,MAAO,GACPh0C,OACIuB,OAAQ,UACRD,WAAY,UACdE,WACED,OAAQ,UACRD,WAAY,WAEdG,OACEF,OAAQ,UACRD,WAAY,YAGhB6F,MAAO1L,OACPga,YAAa,EACbw+B,oBAAqBx4C,QAEvBy4C,OACEpB,sBAAuBA,EACvBn2B,SAAU,EACVC,SAAU,GACV7U,MAAO,EACPosC,yBAA0B,EAC1BC,WAAY,IACZjyC,MAAO,OACPnC,OACEA,MAAM,UACNwB,UAAU,UACVC,MAAO,WAETxB,QAAQ,EACRozC,UAAW,UACXC,SAAU,GACVC,SAAU,QACVC,SAAU,QACVC,gBAAiB,EACjBC,gBAAiB,QACjBW,eAAe,aACfC,iBAAkB,EAClBC,MACE35C,OAAQ,GACR45C,IAAK,EACLC,UAAWh5C,QAEbi5C,aAAc,OACdC,cAAc,GAEhBC,kBAAiB,EACjBC,SACEC,WACElxC,SAAS,EACTmxC,cAAe,EACfC,sBAAuB,KACvBC,eAAgB,GAChBC,aAAc,GACdC,eAAgB,IAChBC,QAAS,KAEXC,WACEJ,eAAgB,EAChBC,aAAc,IACdC,eAAgB,IAChBG,aAAc,IACdF,QAAS,KAEXG,uBACE3xC,SAAS,EACTqxC,eAAgB,EAChBC,aAAc,IACdC,eAAgB,IAChBG,aAAc,IACdF,QAAS,KAEXA,QAAS,KACTH,eAAgB,KAChBC,aAAc,KACdC,eAAgB,MAElBK,YACE5xC,SAAS,EACT6xC,gBAAiB,IACjBC,iBAAiB,IACjBC,cAAc,IACdC,eAAgB,GAChBC,qBAAsB,GACtBC,gBAAiB,IACjBC,oBAAqB,GACrBC,mBAAoB,EACpBC,YAAa,IACbC,mBAAoB,GACpBC,sBAAuB,GACvBC,WAAY,GACZC,aAActuC,MAAQ,EACRC,OAAQ,EACR+Y,OAAQ,GACtBu1B,sBAAuB,IACvBC,kBAAmB,GACnBC,uBAAwB,EACxBC,eAAe,GAEjBC,YACE9yC,SAAS,GAEX+yC,UACE/yC,SAAS,EACTgzC,OAAQ3vC,EAAG,GAAIC,EAAG,GAAI4uB,KAAM,KAC5B+gB,cAAc,GAEhBC,kBACElzC,SAAS,EACTmzC,kBAAkB,GAEpBC,oBACEpzC,SAAQ,EACRqzC,gBAAiB,IACjBC,YAAa,IACbvmB,UAAW,KACXwmB,OAAQ,WAEVC,wBAAwB,EACxBC,cACEzzC,SAAS,EACT0zC,SAAS,EACTv7C,KAAM,aACNw7C,UAAW,IAEbC,YAAc,GACdC,YAAc,GACdC,WAAW,EACXC,wBAAyB,IACzBC,uBAAuB,EACvB3d,OAAQ,KACR4D,QAASA,EACThiB,SACE3N,MAAO,IACPmlC,UAAW,QACXC,SAAU,GACVC,SAAU,UACVvzC,OACEuB,OAAQ,OACRD,WAAY,YAGhBu2C,aAAa,EACbC,WAAW,EACX1kB,UAAU,EACV3xB,OAAO,EACPs2C,iBAAiB,EACjBC,iBAAiB,EACjBjwC,MAAQ,OACRC,OAAS,OACTk/B,YAAY,EACZ+Q,kBAAkB,GAEpBrjD,KAAKsjD,UAAY3iD,EAAKgF,UAAW3F,KAAK80B,gBACtC90B,KAAKujD,WAAa,EAGlBvjD,KAAKwjD,UAAYrF,SAASmB,UAC1Bt/C,KAAKyjD,oBAAqB,EAC1BzjD,KAAK0jD,qBACL1jD,KAAK2jD,uBAGL3jD,KAAK4jD,eAAiB,EAAE5jD,KAAKs9C,kBAC7Bt9C,KAAK6jD,wBAA0B,iBAC/B7jD,KAAK8jD,WAAY,EACjB9jD,KAAK+jD,WAAa,EAClB/jD,KAAKgkD,YAAc,EACnBhkD,KAAKikD,YAAc,EACnBjkD,KAAKkkD,kBAAoB,EACzBlkD,KAAKmkD,kBAAoB,EACzBnkD,KAAKokD,eAAiB,KACtBpkD,KAAKqkD,mBAAqB,KAC1BrkD,KAAKskD,UAAY,EACjBtkD,KAAKukD,iBAAkB,CAGvB,IAAIphD,GAAUnD,IACdA,MAAK40B,OAAS,GAAIvxB,GAClBrD,KAAKwkD,OAAS,GAAIlhD,GAClBtD,KAAKwkD,OAAOC,kBAAkB,WAC5BthD,EAAQuhD,mBAIV1kD,KAAK2kD,WAAa,EAClB3kD,KAAK4kD,WAAa,EAClB5kD,KAAK6kD,cAAgB,EAIrB7kD,KAAK8kD,qBAEL9kD,KAAKm1B,UAELn1B,KAAK+kD,oBAEL/kD,KAAKglD,qBAELhlD,KAAKilD,uBAELjlD,KAAKklD,uBAILllD,KAAKmlD,gBAAgBnlD,KAAKmgB,MAAME,YAAc,EAAGrgB,KAAKmgB,MAAMuF,aAAe,GAC3E1lB,KAAK8d,UAAU,GACf9d,KAAK8T,WAAW/E,GAGhB/O,KAAKolD,yBAA0B,EAC/BplD,KAAKqlD,mBACLrlD,KAAKslD,sBAAuB,EAC5BtlD,KAAKulD,YAAa,EAClBvlD,KAAK+iD,wBAA0B,KAC/B/iD,KAAKwlD,eAAgB,EAGrBxlD,KAAKylD,oBACLzlD,KAAK0lD,0BACL1lD,KAAK2lD,eACL3lD,KAAKm+C,SACLn+C,KAAKs/C,SAGLt/C,KAAK4lD,eAAqBvzC,EAAK,EAAEC,EAAK,GACtCtS,KAAK6lD,mBAAqBxzC,EAAK,EAAEC,EAAK,GACtCtS,KAAK8lD,iBAAmBzzC,EAAK,EAAEC,EAAK,GACpCtS,KAAK+lD,cACL/lD,KAAKuE,MAAQ,EACbvE,KAAKgmD,cAAgBhmD,KAAKuE,MAG1BvE,KAAKimD,UAAY,KACjBjmD,KAAKkmD,UAAY,KAGjBlmD,KAAKmmD,gBACHtyC,IAAO,SAAUhK,EAAO6K,GACtBvR,EAAQijD,UAAU1xC,EAAOzS,OACzBkB,EAAQ+M,SAEVuF,OAAU,SAAU5L,EAAO6K,GACzBvR,EAAQkjD,aAAa3xC,EAAOzS,OAC5BkB,EAAQ+M,SAEV+G,OAAU,SAAUpN,EAAO6K,GACzBvR,EAAQmjD,aAAa5xC,EAAOzS,OAC5BkB,EAAQ+M,UAGZlQ,KAAKumD,gBACH1yC,IAAO,SAAUhK,EAAO6K,GACtBvR,EAAQqjD,UAAU9xC,EAAOzS,OACzBkB,EAAQ+M,SAEVuF,OAAU,SAAU5L,EAAO6K,GACzBvR,EAAQsjD,aAAa/xC,EAAOzS,OAC5BkB,EAAQ+M,SAEV+G,OAAU,SAAUpN,EAAO6K,GACzBvR,EAAQujD,aAAahyC,EAAOzS,OAC5BkB,EAAQ+M,UAKZlQ,KAAK2mD,QAAS,EACd3mD,KAAK4mD,MAAQ//C,OAGb7G,KAAK4Y,QAAQtF,EAAKtT,KAAKsjD,UAAU1C,WAAW5xC,SAAWhP,KAAKsjD,UAAUlB,mBAAmBpzC,SAGzFhP,KAAK49C,cAAe,EAC6B,GAA7C59C,KAAKsjD,UAAUlB,mBAAmBpzC,QACpChP,KAAK6mD,2BAI2B,GAA5B7mD,KAAKsjD,UAAUR,WACjB9iD,KAAK8mD,YAAY12C,SAAS,IAAI,EAAMpQ,KAAKsjD,UAAU1C,WAAW5xC,SAK9DhP,KAAKsjD,UAAU1C,WAAW5xC,SAC5BhP,KAAK+mD,sBAvXT,GAAIlpC,GAAU3d,EAAoB,IAC9B0lC,EAAS1lC,EAAoB,IAC7B8mD,EAAW9mD,EAAoB,IAC/BS,EAAOT,EAAoB,GAC3Bs/B,EAAat/B,EAAoB,IACjCW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/BuD,EAAYvD,EAAoB,IAChCwD,EAAcxD,EAAoB,IAClCmD,EAASnD,EAAoB,IAC7BoD,EAASpD,EAAoB,IAC7BqD,EAAOrD,EAAoB,IAC3BkD,EAAOlD,EAAoB,IAC3BsD,EAAQtD,EAAoB,IAC5B+mD,EAAc/mD,EAAoB,IAClCgnD,EAAYhnD,EAAoB,IAChC+oC,EAAU/oC,EAAoB,GAGlCA,GAAoB,IAyWpB2d,EAAQ3a,EAAQ6Q,WAOhB7Q,EAAQ6Q,UAAUqpC,wBAA0B,WAC1C,GAAI+J,GAAc59C,UAAUC,UAAU+7B,aACtCvlC,MAAKonD,iBAAkB,EACgB,IAAnCD,EAAYngD,QAAQ,YACtBhH,KAAKonD,iBAAkB,EAEiB,IAAjCD,EAAYngD,QAAQ,WACvBmgD,EAAYngD,QAAQ,WAAa,KACnChH,KAAKonD,iBAAkB,IAa7BlkD,EAAQ6Q,UAAUszC,eAAiB,WAIjC,IAAK,GAHDC,GAAUz1C,SAAS01C,qBAAsB,UAGpC1hD,EAAI,EAAGA,EAAIyhD,EAAQthD,OAAQH,IAAK,CACvC,GAAI2hD,GAAMF,EAAQzhD,GAAG2hD,IACjB3iD,EAAQ2iD,GAAO,qBAAqBziD,KAAKyiD,EAC7C,IAAI3iD,EAEF,MAAO2iD,GAAIpe,UAAU,EAAGoe,EAAIxhD,OAASnB,EAAM,GAAGmB,QAIlD,MAAO,OAQT9C,EAAQ6Q,UAAU0zC,UAAY,SAASC,GACrC,GAAsDC,GAAlDC,EAAO,IAAKC,EAAO,KAAMC,EAAO,IAAKC,EAAO,IAChD,IAAIL,EAAc1hD,OAAS,EACzB,IAAK,GAAIH,GAAI,EAAGA,EAAI6hD,EAAc1hD,OAAQH,IACxC8hD,EAAO3nD,KAAKm+C,MAAMuJ,EAAc7hD,IAC5BiiD,EAAQH,EAAKK,YAAgB,OAC/BF,EAAOH,EAAKK,YAAYngD,MAEtBkgD,EAAQJ,EAAKK,YAAiB,QAChCD,EAAOJ,EAAKK,YAAY9/B,OAEtB0/B,EAAQD,EAAKK,YAAkB,SACjCJ,EAAOD,EAAKK,YAAY//C,KAEtB4/C,EAAQF,EAAKK,YAAe,MAC9BH,EAAOF,EAAKK,YAAY7jC,YAK5B,KAAK,GAAI8jC,KAAUjoD,MAAKm+C,MAClBn+C,KAAKm+C,MAAMh4C,eAAe8hD,KAC5BN,EAAO3nD,KAAKm+C,MAAM8J,GACdH,EAAQH,EAAKK,YAAgB,OAC/BF,EAAOH,EAAKK,YAAYngD,MAEtBkgD,EAAQJ,EAAKK,YAAiB,QAChCD,EAAOJ,EAAKK,YAAY9/B,OAEtB0/B,EAAQD,EAAKK,YAAkB,SACjCJ,EAAOD,EAAKK,YAAY//C,KAEtB4/C,EAAQF,EAAKK,YAAe,MAC9BH,EAAOF,EAAKK,YAAY7jC,QAShC;MAHY,MAAR2jC,GAAuB,MAARC,GAAwB,KAARH,GAAuB,MAARC,IAChDD,EAAO,EAAGC,EAAO,EAAGC,EAAO,EAAGC,EAAO,IAE/BD,KAAMA,EAAMC,KAAMA,EAAMH,KAAMA,EAAMC,KAAMA,IASpD3kD,EAAQ6Q,UAAUm0C,YAAc,SAAS/xB,GACvC,OAAQ9jB,EAAI,IAAO8jB,EAAM4xB,KAAO5xB,EAAM2xB,MAC9Bx1C,EAAI,IAAO6jB,EAAM0xB,KAAO1xB,EAAMyxB,QAUxC1kD,EAAQ6Q,UAAU+yC,WAAa,SAAS/3C,EAASo5C,EAAaC,GAC5DpoD,KAAK42B,SAAQ,GAEY/vB,SAArBshD,IAAiCA,GAAc,GAC1BthD,SAArBuhD,IAAiCA,GAAe,GACpCvhD,SAAZkI,IAAwBA,GAAWovC,WACjBt3C,SAAlBkI,EAAQovC,QACVpvC,EAAQovC,SAGV,IAAIhoB,GACAkyB,CAEJ,IAAmB,GAAfF,EAAqB,CAEvB,GAAIG,GAAkB,CACtB,KAAK,GAAIL,KAAUjoD,MAAKm+C,MACtB,GAAIn+C,KAAKm+C,MAAMh4C,eAAe8hD,GAAS,CACrC,GAAIN,GAAO3nD,KAAKm+C,MAAM8J,EACS,IAA3BN,EAAKY,qBACPD,GAAmB,GAIzB,GAAIA,EAAkB,GAAMtoD,KAAK2lD,YAAY3/C,OAE3C,WADAhG,MAAK8mD,WAAW/3C,GAAQ,EAAMq5C,EAIhCjyB,GAAQn2B,KAAKynD,UAAU14C,EAAQovC,MAE/B,IAAIqK,GAAgBxoD,KAAK2lD,YAAY3/C,MAIjCqiD,GAH+B,GAA/BroD,KAAKsjD,UAAUb,aACwB,GAArCziD,KAAKsjD,UAAU1C,WAAW5xC,SAC5Bw5C,GAAiBxoD,KAAKsjD,UAAU1C,WAAWC,gBAC/B,UAAY2H,EAAgB,WAAa,SAGzC,QAAUA,EAAgB,QAAU,SAIT,GAArCxoD,KAAKsjD,UAAU1C,WAAW5xC,SAC1Bw5C,GAAiBxoD,KAAKsjD,UAAU1C,WAAWC,gBACjC,YAAc2H,EAAgB,YAAc,cAG5C,YAAcA,EAAgB,aAAe,SAK7D,IAAIC,GAASjkD,KAAKL,IAAInE,KAAKmgB,MAAMC,OAAOC,YAAc,IAAKrgB,KAAKmgB,MAAMC,OAAOsF,aAAe,IAC5F2iC,IAAaI,MAEV,CACHtyB,EAAQn2B,KAAKynD,UAAU14C,EAAQovC,MAC/B,IAAIhE,GAAgD,IAApC31C,KAAK+mB,IAAI4K,EAAM4xB,KAAO5xB,EAAM2xB,MACxCY,EAAgD,IAApClkD,KAAK+mB,IAAI4K,EAAM0xB,KAAO1xB,EAAMyxB,MAExCe,EAAa3oD,KAAKmgB,MAAMC,OAAOC,YAAe85B,EAC9CyO,EAAa5oD,KAAKmgB,MAAMC,OAAOsF,aAAegjC,CAClDL,GAA2BO,GAAdD,EAA4BA,EAAaC,EAGpDP,EAAY,IACdA,EAAY,EAId,IAAIz7B,GAAS5sB,KAAKkoD,YAAY/xB,EAC9B,IAAoB,GAAhBiyB,EAAuB,CACzB,GAAIr5C,IAAW0V,SAAUmI,EAAQroB,MAAO8jD,EAAWQ,UAAW95C,EAC9D/O,MAAK0oB,OAAO3Z,GACZ/O,KAAK2mD,QAAS,EACd3mD,KAAKkQ,YAGL0c,GAAOva,GAAKg2C,EACZz7B,EAAOta,GAAK+1C,EACZz7B,EAAOva,GAAK,GAAMrS,KAAKmgB,MAAMC,OAAOC,YACpCuM,EAAOta,GAAK,GAAMtS,KAAKmgB,MAAMC,OAAOsF,aACpC1lB,KAAK8d,UAAUuqC,GACfroD,KAAKmlD,iBAAiBv4B,EAAOva,GAAGua,EAAOta,IAS3CpP,EAAQ6Q,UAAU+0C,qBAAuB,WACvC9oD,KAAK+oD,qBACL,KAAK,GAAIC,KAAOhpD,MAAKm+C,MACfn+C,KAAKm+C,MAAMh4C,eAAe6iD,IAC5BhpD,KAAK2lD,YAAYp9C,KAAKygD,IAiB5B9lD,EAAQ6Q,UAAU6E,QAAU,SAAStF,EAAM80C,GAWzC,GAVqBvhD,SAAjBuhD,IACFA,GAAe,GAIjBpoD,KAAKipD,cAAa,GAGlBjpD,KAAK49C,cAAe,EAEhBtqC,GAAQA,EAAKid,MAAQjd,EAAK6qC,OAAS7qC,EAAKgsC,OAC1C,KAAM,IAAIhlC,aAAY,iGAYxB,IAP+C,GAA3Cta,KAAKsjD,UAAUpB,iBAAiBlzC,SAClChP,KAAKkpD,wBAIPlpD,KAAK8T,WAAWR,GAAQA,EAAKvE,SAEzBuE,GAAQA,EAAKid,KAEf,GAAGjd,GAAQA,EAAKid,IAAK,CACnB,GAAI44B,GAAU1lD,EAAU2lD,WAAW91C,EAAKid,IAExC,YADAvwB,MAAK4Y,QAAQuwC,QAIZ,IAAI71C,GAAQA,EAAK+1C,OAEpB,GAAG/1C,GAAQA,EAAK+1C,MAAO,CACrB,GAAIC,GAAY5lD,EAAY6lD,WAAWj2C,EAAK+1C,MAE5C,YADArpD,MAAK4Y,QAAQ0wC,QAKftpD,MAAKwpD,UAAUl2C,GAAQA,EAAK6qC,OAC5Bn+C,KAAKypD,UAAUn2C,GAAQA,EAAKgsC,MAE9Bt/C,MAAK0pD,mBACe,GAAhBtB,IAC+C,GAA7CpoD,KAAKsjD,UAAUlB,mBAAmBpzC,SACpChP,KAAK2pD,eACL3pD,KAAK6mD,4BAI2B,GAA5B7mD,KAAKsjD,UAAUR,WACjB9iD,KAAK4pD,aAGT5pD,KAAKkQ,SAEPlQ,KAAK49C,cAAe,GAOtB16C,EAAQ6Q,UAAUD,WAAa,SAAU/E,GACvC,GAAIA,EAAS,CACX,GAAI7I,GACAsI,GAAU,QAAQ,QAAQ,eAAe,qBAAqB,aAAa,aAC7E,WAAW,mBAAmB,QAAQ,SAAS,aAAa,YAAY,WAAW,aAQrF,IALA7N,EAAKoG,uBAAuByH,EAAOxO,KAAKsjD,UAAWv0C,GACnDpO,EAAKoG,wBAAwB,SAAS/G,KAAKsjD,UAAUnF,MAAOpvC,EAAQovC,OACpEx9C,EAAKoG,wBAAwB,QAAQ,UAAU/G,KAAKsjD,UAAUhE,MAAOvwC,EAAQuwC,OAE7Et/C,KAAK40B,OAAOyuB,iBAAmBrjD,KAAKsjD,UAAUD,iBAC1Ct0C,EAAQkxC,UACVt/C,EAAKkO,aAAa7O,KAAKsjD,UAAUrD,QAASlxC,EAAQkxC,QAAQ,aAC1Dt/C,EAAKkO,aAAa7O,KAAKsjD,UAAUrD,QAASlxC,EAAQkxC,QAAQ,aAEtDlxC,EAAQkxC,QAAQU,uBAAuB,CACzC3gD,KAAKsjD,UAAUlB,mBAAmBpzC,SAAU,EAC5ChP,KAAKsjD,UAAUrD,QAAQU,sBAAsB3xC,SAAU,EACvDhP,KAAKsjD,UAAUrD,QAAQC,UAAUlxC,SAAU,CAC3C,KAAK9I,IAAQ6I,GAAQkxC,QAAQU,sBACvB5xC,EAAQkxC,QAAQU,sBAAsBx6C,eAAeD,KACvDlG,KAAKsjD,UAAUrD,QAAQU,sBAAsBz6C,GAAQ6I,EAAQkxC,QAAQU,sBAAsBz6C,IAkDnG,GA5CI6I,EAAQwjC,QAAQvyC,KAAK69C,iBAAiBhqC,IAAM9E,EAAQwjC,OACpDxjC,EAAQ86C,SAAS7pD,KAAK69C,iBAAiBC,KAAO/uC,EAAQ86C,QACtD96C,EAAQ+6C,aAAa9pD,KAAK69C,iBAAiBE,SAAWhvC,EAAQ+6C,YAC9D/6C,EAAQg7C,YAAY/pD,KAAK69C,iBAAiBG,QAAUjvC,EAAQg7C,WAC5Dh7C,EAAQi7C,WAAWhqD,KAAK69C,iBAAiBI,IAAMlvC,EAAQi7C,UAE3DrpD,EAAKkO,aAAa7O,KAAKsjD,UAAWv0C,EAAQ,gBAC1CpO,EAAKkO,aAAa7O,KAAKsjD,UAAWv0C,EAAQ,sBAC1CpO,EAAKkO,aAAa7O,KAAKsjD,UAAWv0C,EAAQ,cAC1CpO,EAAKkO,aAAa7O,KAAKsjD,UAAWv0C,EAAQ,cAC1CpO,EAAKkO,aAAa7O,KAAKsjD,UAAWv0C,EAAQ,YAC1CpO,EAAKkO,aAAa7O,KAAKsjD,UAAWv0C,EAAQ,oBAGtCA,EAAQmzC,mBACVliD,KAAKiqD,SAAWjqD,KAAKsjD,UAAUpB,iBAAiBC,kBAK9CpzC,EAAQuwC,QACkBz4C,SAAxBkI,EAAQuwC,MAAMl0C,QACZzK,EAAK8D,SAASsK,EAAQuwC,MAAMl0C,QAC9BpL,KAAKsjD,UAAUhE,MAAMl0C,SACrBpL,KAAKsjD,UAAUhE,MAAMl0C,MAAMA,MAAQ2D,EAAQuwC,MAAMl0C,MACjDpL,KAAKsjD,UAAUhE,MAAMl0C,MAAMwB,UAAYmC,EAAQuwC,MAAMl0C,MACrDpL,KAAKsjD,UAAUhE,MAAMl0C,MAAMyB,MAAQkC,EAAQuwC,MAAMl0C,QAGfvE,SAA9BkI,EAAQuwC,MAAMl0C,MAAMA,QAA0BpL,KAAKsjD,UAAUhE,MAAMl0C,MAAMA,MAAQ2D,EAAQuwC,MAAMl0C,MAAMA,OACnEvE,SAAlCkI,EAAQuwC,MAAMl0C,MAAMwB,YAA0B5M,KAAKsjD,UAAUhE,MAAMl0C,MAAMwB,UAAYmC,EAAQuwC,MAAMl0C,MAAMwB,WAC3E/F,SAA9BkI,EAAQuwC,MAAMl0C,MAAMyB,QAA0B7M,KAAKsjD,UAAUhE,MAAMl0C,MAAMyB,MAAQkC,EAAQuwC,MAAMl0C,MAAMyB,QAE3G7M,KAAKsjD,UAAUhE,MAAMQ,cAAe,GAGjC/wC,EAAQuwC,MAAMb,WACW53C,SAAxBkI,EAAQuwC,MAAMl0C,QACZzK,EAAK8D,SAASsK,EAAQuwC,MAAMl0C,OAAmBpL,KAAKsjD,UAAUhE,MAAMb,UAAY1vC,EAAQuwC,MAAMl0C,MAC3DvE,SAA9BkI,EAAQuwC,MAAMl0C,MAAMA,QAAsBpL,KAAKsjD,UAAUhE,MAAMb,UAAY1vC,EAAQuwC,MAAMl0C,MAAMA,SAK1G2D,EAAQovC,OACNpvC,EAAQovC,MAAM/yC,MAAO,CACvB,GAAI8+C,GAAcvpD,EAAKkL,WAAWkD,EAAQovC,MAAM/yC,MAChDpL,MAAKsjD,UAAUnF,MAAM/yC,MAAMsB,WAAaw9C,EAAYx9C,WACpD1M,KAAKsjD,UAAUnF,MAAM/yC,MAAMuB,OAASu9C,EAAYv9C,OAChD3M,KAAKsjD,UAAUnF,MAAM/yC,MAAMwB,UAAUF,WAAaw9C,EAAYt9C,UAAUF,WACxE1M,KAAKsjD,UAAUnF,MAAM/yC,MAAMwB,UAAUD,OAASu9C,EAAYt9C,UAAUD,OACpE3M,KAAKsjD,UAAUnF,MAAM/yC,MAAMyB,MAAMH,WAAaw9C,EAAYr9C,MAAMH,WAChE1M,KAAKsjD,UAAUnF,MAAM/yC,MAAMyB,MAAMF,OAASu9C,EAAYr9C,MAAMF,OAGhE,GAAIoC,EAAQ6lB,OACV,IAAK,GAAIu1B,KAAap7C,GAAQ6lB,OAC5B,GAAI7lB,EAAQ6lB,OAAOzuB,eAAegkD,GAAY,CAC5C,GAAI53C,GAAQxD,EAAQ6lB,OAAOu1B,EAC3BnqD,MAAK40B,OAAO/gB,IAAIs2C,EAAW53C,GAKjC,GAAIxD,EAAQkY,QAAS,CACnB,IAAK/gB,IAAQ6I,GAAQkY,QACflY,EAAQkY,QAAQ9gB,eAAeD,KACjClG,KAAKsjD,UAAUr8B,QAAQ/gB,GAAQ6I,EAAQkY,QAAQ/gB,GAG/C6I,GAAQkY,QAAQ7b,QAClBpL,KAAKsjD,UAAUr8B,QAAQ7b,MAAQzK,EAAKkL,WAAWkD,EAAQkY,QAAQ7b,QAmBnE,GAfI,cAAgB2D,KACdA,EAAQq7C,WACLpqD,KAAKqqD,YACRrqD,KAAKqqD,UAAY,GAAInD,GAAUlnD,KAAKmgB,OACpCngB,KAAKqqD,UAAUl2C,GAAG,SAAUnU,KAAKsqD,gBAAgB/0B,KAAKv1B,QAIpDA,KAAKqqD,YACPrqD,KAAKqqD,UAAUn2C,gBACRlU,MAAKqqD,YAKdt7C,EAAQ47B,OACV,KAAM,IAAI/mC,OAAM,6EAMlB5D,MAAK8kD,qBAEL9kD,KAAKuqD,0BAELvqD,KAAKwqD,0BAELxqD,KAAKyqD,yBAGLzqD,KAAK0qD,cAGL1qD,KAAKsqD,kBAELtqD,KAAK2qD,uBACL3qD,KAAKwlB,QAAQxlB,KAAKsjD,UAAUnwC,MAAOnT,KAAKsjD,UAAUlwC,QAClDpT,KAAK2mD,QAAS,EACmC,GAA7C3mD,KAAKsjD,UAAUlB,mBAAmBpzC,SAAwC,GAArBhP,KAAK49C,eAC5D59C,KAAK2pD,eACL3pD,KAAK6mD,4BAEP7mD,KAAKkQ,UAaThN,EAAQ6Q,UAAUohB,QAAU,WAE1B,KAAOn1B,KAAKua,iBAAiBgK,iBAC3BvkB,KAAKua,iBAAiB9I,YAAYzR,KAAKua,iBAAiBiK,WAgB1D,IAbAxkB,KAAKmgB,MAAQtO,SAASM,cAAc,OACpCnS,KAAKmgB,MAAM/X,UAAY,oBACvBpI,KAAKmgB,MAAM5S,MAAMkX,SAAW,WAC5BzkB,KAAKmgB,MAAM5S,MAAMmX,SAAW,SAC5B1kB,KAAKmgB,MAAMyqC,SAAW,IAKtB5qD,KAAKmgB,MAAMC,OAASvO,SAASM,cAAc,UAC3CnS,KAAKmgB,MAAMC,OAAO7S,MAAMkX,SAAW,WACnCzkB,KAAKmgB,MAAMpO,YAAY/R,KAAKmgB,MAAMC,QAE7BpgB,KAAKmgB,MAAMC,OAAOyH,WAQlB,CACH,GAAID,GAAM5nB,KAAKmgB,MAAMC,OAAOyH,WAAW,KACvC7nB,MAAKujD,YAAcz7C,OAAO+iD,kBAAoB,IAAMjjC,EAAIkjC,8BAC9CljC,EAAImjC,2BACJnjC,EAAIojC,0BACJpjC,EAAIqjC,yBACJrjC,EAAIsjC,wBAA0B,GAGxClrD,KAAKmgB,MAAMC,OAAOyH,WAAW,MAAMsjC,aAAanrD,KAAKujD,WAAY,EAAG,EAAGvjD,KAAKujD,WAAY,EAAG,OAjB1D,CACjC,GAAI5+B,GAAW9S,SAASM,cAAe,MACvCwS,GAASpX,MAAMnC,MAAQ,MACvBuZ,EAASpX,MAAMqX,WAAc,OAC7BD,EAASpX,MAAMsX,QAAW,OAC1BF,EAASG,UAAa,mDACtB9kB,KAAKmgB,MAAMC,OAAOrO,YAAY4S,GAchC3kB,KAAK0qD,eAQPxnD,EAAQ6Q,UAAU22C,YAAc,WAC9B,GAAI31C,GAAK/U,IACW6G,UAAhB7G,KAAK8D,QACP9D,KAAK8D,OAAOsnD,UAEdprD,KAAK0pC,QACL1pC,KAAKqrD,SACLrrD,KAAK8D,OAAS8hC,EAAO5lC,KAAKmgB,MAAMC,QAC9BupB,iBAAiB,IAEnB3pC,KAAK8D,OAAOqQ,GAAG,MAAaY,EAAGu2C,OAAO/1B,KAAKxgB,IAC3C/U,KAAK8D,OAAOqQ,GAAG,YAAaY,EAAGw2C,aAAah2B,KAAKxgB,IACjD/U,KAAK8D,OAAOqQ,GAAG,OAAaY,EAAGiqB,QAAQzJ,KAAKxgB,IAC5C/U,KAAK8D,OAAOqQ,GAAG,QAAaY,EAAGmqB,SAAS3J,KAAKxgB,IAC7C/U,KAAK8D,OAAOqQ,GAAG,YAAaY,EAAG8pB,aAAatJ,KAAKxgB,IACjD/U,KAAK8D,OAAOqQ,GAAG,OAAaY,EAAG+pB,QAAQvJ,KAAKxgB,IAC5C/U,KAAK8D,OAAOqQ,GAAG,UAAaY,EAAGgqB,WAAWxJ,KAAKxgB,IAEhB,GAA3B/U,KAAKsjD,UAAU9kB,WACjBx+B,KAAK8D,OAAOqQ,GAAG,aAAmBY,EAAGkqB,cAAc1J,KAAKxgB,IACxD/U,KAAK8D,OAAOqQ,GAAG,iBAAmBY,EAAGkqB,cAAc1J,KAAKxgB,IACxD/U,KAAK8D,OAAOqQ,GAAG,QAAmBY,EAAGoqB,SAAS5J,KAAKxgB,KAGrD/U,KAAK8D,OAAOqQ,GAAG,YAAaY,EAAGy2C,kBAAkBj2B,KAAKxgB,IAEtD/U,KAAKyrD,YAAc7lB,EAAO5lC,KAAKmgB,OAC7BwpB,iBAAiB,IAEnB3pC,KAAKyrD,YAAYt3C,GAAG,UAAWY,EAAG22C,WAAWn2B,KAAKxgB,IAGlD/U,KAAKua,iBAAiBxI,YAAY/R,KAAKmgB,QAOzCjd,EAAQ6Q,UAAUu2C,gBAAkB,WAClC,GAAIv1C,GAAK/U,IACa6G,UAAlB7G,KAAKgnD,UACPhnD,KAAKgnD,SAAS9yC,UAIdlU,KAAKgnD,SAAWA,EAD0B,GAAxChnD,KAAKsjD,UAAUvB,SAASE,cACA5nC,UAAWvS,OAAQ8B,gBAAgB,IAGnCyQ,UAAWra,KAAKmgB,MAAOvW,gBAAgB,IAGnE5J,KAAKgnD,SAAS2E,QAEV3rD,KAAKsjD,UAAUvB,SAAS/yC,SAAWhP,KAAK4rD,aAC1C5rD,KAAKgnD,SAASzxB,KAAK,KAAQv1B,KAAK6rD,QAAQt2B,KAAKxgB,GAAQ,WACrD/U,KAAKgnD,SAASzxB,KAAK,KAAQv1B,KAAK8rD,aAAav2B,KAAKxgB,GAAK,SACvD/U,KAAKgnD,SAASzxB,KAAK,OAAQv1B,KAAK+rD,UAAUx2B,KAAKxgB,GAAM,WACrD/U,KAAKgnD,SAASzxB,KAAK,OAAQv1B,KAAK8rD,aAAav2B,KAAKxgB,GAAK,SACvD/U,KAAKgnD,SAASzxB,KAAK,OAAQv1B,KAAKgsD,UAAUz2B,KAAKxgB,GAAM,WACrD/U,KAAKgnD,SAASzxB,KAAK,OAAQv1B,KAAKisD,aAAa12B,KAAKxgB,GAAK,SACvD/U,KAAKgnD,SAASzxB,KAAK,QAAQv1B,KAAKksD,WAAW32B,KAAKxgB,GAAK,WACrD/U,KAAKgnD,SAASzxB,KAAK,QAAQv1B,KAAKisD,aAAa12B,KAAKxgB,GAAK,SACvD/U,KAAKgnD,SAASzxB,KAAK,IAAQv1B,KAAKmsD,QAAQ52B,KAAKxgB,GAAQ,WACrD/U,KAAKgnD,SAASzxB,KAAK,IAAQv1B,KAAKosD,UAAU72B,KAAKxgB,GAAQ,SACvD/U,KAAKgnD,SAASzxB,KAAK,OAAQv1B,KAAKmsD,QAAQ52B,KAAKxgB,GAAQ,WACrD/U,KAAKgnD,SAASzxB,KAAK,OAAQv1B,KAAKosD,UAAU72B,KAAKxgB,GAAQ,SACvD/U,KAAKgnD,SAASzxB,KAAK,OAAQv1B,KAAKqsD,SAAS92B,KAAKxgB,GAAO,WACrD/U,KAAKgnD,SAASzxB,KAAK,OAAQv1B,KAAKosD,UAAU72B,KAAKxgB,GAAQ,SACvD/U,KAAKgnD,SAASzxB,KAAK,IAAQv1B,KAAKqsD,SAAS92B,KAAKxgB,GAAO,WACrD/U,KAAKgnD,SAASzxB,KAAK,IAAQv1B,KAAKosD,UAAU72B,KAAKxgB,GAAQ,SACvD/U,KAAKgnD,SAASzxB,KAAK,IAAQv1B,KAAKmsD,QAAQ52B,KAAKxgB,GAAQ,WACrD/U,KAAKgnD,SAASzxB,KAAK,IAAQv1B,KAAKosD,UAAU72B,KAAKxgB,GAAQ,SACvD/U,KAAKgnD,SAASzxB,KAAK,IAAQv1B,KAAKqsD,SAAS92B,KAAKxgB,GAAO,WACrD/U,KAAKgnD,SAASzxB,KAAK,IAAQv1B,KAAKosD,UAAU72B,KAAKxgB,GAAQ,SACvD/U,KAAKgnD,SAASzxB,KAAK,SAASv1B,KAAKmsD,QAAQ52B,KAAKxgB,GAAO,WACrD/U,KAAKgnD,SAASzxB,KAAK,SAASv1B,KAAKosD,UAAU72B,KAAKxgB,GAAO,SACvD/U,KAAKgnD,SAASzxB,KAAK,WAAWv1B,KAAKqsD,SAAS92B,KAAKxgB,GAAI,WACrD/U,KAAKgnD,SAASzxB,KAAK,WAAWv1B,KAAKosD,UAAU72B,KAAKxgB,GAAK,UAGV,GAA3C/U,KAAKsjD,UAAUpB,iBAAiBlzC,UAClChP,KAAKgnD,SAASzxB,KAAK,MAAMv1B,KAAKkpD,sBAAsB3zB,KAAKxgB,IACzD/U,KAAKgnD,SAASzxB,KAAK,SAASv1B,KAAKssD,gBAAgB/2B,KAAKxgB,MAU1D7R,EAAQ6Q,UAAUG,QAAU,WAC1BlU,KAAKkQ,MAAQ,aACblQ,KAAKsiB,OAAS,aACdtiB,KAAK4mD,OAAQ,EAGb5mD,KAAKusD,+BAGLvsD,KAAKgnD,SAAS2E,QAGd3rD,KAAK8D,OAAOsnD,UAGZprD,KAAKsU,MAELtU,KAAKwsD,oBAAoBxsD,KAAKua,mBAGhCrX,EAAQ6Q,UAAUy4C,oBAAsB,SAASC,GAC/C,KAAoC,GAA7BA,EAAUloC,iBACfvkB,KAAKwsD,oBAAoBC,EAAUjoC,YACnCioC,EAAUh7C,YAAYg7C,EAAUjoC,aAUpCthB,EAAQ6Q,UAAU24C,YAAc,SAAU/tB,GACxC,OACEtsB,EAAGssB,EAAMW,MAAQ3+B,EAAK+G,gBAAgB1H,KAAKmgB,MAAMC,QACjD9N,EAAGqsB,EAAMY,MAAQ5+B,EAAKqH,eAAehI,KAAKmgB,MAAMC,UASpDld,EAAQ6Q,UAAUmrB,SAAW,SAAUr1B,IACjC,GAAIjF,OAAOyC,UAAYrH,KAAKskD,UAAY,MAC1CtkD,KAAK0pC,KAAK3I,QAAU/gC,KAAK0sD,YAAY7iD,EAAM22B,QAAQ5T,QACnD5sB,KAAK0pC,KAAKijB,SAAU,EACpB3sD,KAAKqrD,MAAM9mD,MAAQvE,KAAK4sD,YAGxB5sD,KAAKskD,WAAY,GAAI1/C,OAAOyC,UAE5BrH,KAAK6sD,aAAa7sD,KAAK0pC,KAAK3I,WAQhC79B,EAAQ6Q,UAAU8qB,aAAe,SAAUh1B,GACzC7J,KAAK8sD,iBAAiBjjD,IAUxB3G,EAAQ6Q,UAAU+4C,iBAAmB,SAASjjD,GAElBhD,SAAtB7G,KAAK0pC,KAAK3I,SACZ/gC,KAAKk/B,SAASr1B,EAGhB,IAAI89C,GAAO3nD,KAAK+sD,WAAW/sD,KAAK0pC,KAAK3I,QASrC,IANA/gC,KAAK0pC,KAAK3J,UAAW,EACrB//B,KAAK0pC,KAAK4J,aACVtzC,KAAK0pC,KAAKprB,YAActe,KAAKgtD,kBAC7BhtD,KAAK0pC,KAAKue,OAAS,KACnBjoD,KAAKwlD,eAAgB,EAET,MAARmC,GAA4C,GAA5B3nD,KAAKsjD,UAAUJ,UAAmB,CACpDljD,KAAKwlD,eAAgB,EACrBxlD,KAAK0pC,KAAKue,OAASN,EAAKtnD,GAEnBsnD,EAAKsF,cACRjtD,KAAKktD,cAAcvF,GAAK,GAG1B3nD,KAAKsuB,KAAK,aAAa6+B,QAAQntD,KAAKy3B,eAAe0mB,OAGnD,KAAK,GAAIiP,KAAYptD,MAAKqtD,aAAalP,MACrC,GAAIn+C,KAAKqtD,aAAalP,MAAMh4C,eAAeinD,GAAW,CACpD,GAAIppD,GAAShE,KAAKqtD,aAAalP,MAAMiP,GACjChhD,GACF/L,GAAI2D,EAAO3D,GACXsnD,KAAM3jD,EAGNqO,EAAGrO,EAAOqO,EACVC,EAAGtO,EAAOsO,EACVg7C,OAAQtpD,EAAOspD,OACfC,OAAQvpD,EAAOupD,OAGjBvpD,GAAOspD,QAAS,EAChBtpD,EAAOupD,QAAS,EAEhBvtD,KAAK0pC,KAAK4J,UAAU/qC,KAAK6D,MAWjClJ,EAAQ6Q,UAAU+qB,QAAU,SAAUj1B,GACpC7J,KAAKwtD,cAAc3jD,IAUrB3G,EAAQ6Q,UAAUy5C,cAAgB,SAAS3jD,GACzC,IAAI7J,KAAK0pC,KAAKijB,QAAd,CAKA3sD,KAAKytD,aAEL,IAAI1sB,GAAU/gC,KAAK0sD,YAAY7iD,EAAM22B,QAAQ5T,QACzC7X,EAAK/U,KACL0pC,EAAO1pC,KAAK0pC,KACZ4J,EAAY5J,EAAK4J,SACrB,IAAIA,GAAaA,EAAUttC,QAAsC,GAA5BhG,KAAKsjD,UAAUJ,UAAmB,CAErE,GAAIziB,GAASM,EAAQ1uB,EAAIq3B,EAAK3I,QAAQ1uB,EAClCquB,EAASK,EAAQzuB,EAAIo3B,EAAK3I,QAAQzuB,CAGtCghC,GAAU1qC,QAAQ,SAAUwD,GAC1B,GAAIu7C,GAAOv7C,EAAEu7C,IAERv7C,GAAEkhD,SACL3F,EAAKt1C,EAAI0C,EAAG24C,qBAAqB34C,EAAG44C,qBAAqBvhD,EAAEiG,GAAKouB,IAG7Dr0B,EAAEmhD,SACL5F,EAAKr1C,EAAIyC,EAAG64C,qBAAqB74C,EAAG84C,qBAAqBzhD,EAAEkG,GAAKouB,MAM/D1gC,KAAK2mD,SACR3mD,KAAK2mD,QAAS,EACd3mD,KAAKkQ,aAKP,IAAkC,GAA9BlQ,KAAKsjD,UAAUL,YAAqB,CAEtC,GAA0Bp8C,SAAtB7G,KAAK0pC,KAAK3I,QAEZ,WADA/gC,MAAK8sD,iBAAiBjjD,EAGxB,IAAIikB,GAAQiT,EAAQ1uB,EAAIrS,KAAK0pC,KAAK3I,QAAQ1uB,EACtC0b,EAAQgT,EAAQzuB,EAAItS,KAAK0pC,KAAK3I,QAAQzuB,CAE1CtS,MAAKmlD,gBACHnlD,KAAK0pC,KAAKprB,YAAYjM,EAAIyb,EAC1B9tB,KAAK0pC,KAAKprB,YAAYhM,EAAIyb,GAE5B/tB,KAAK42B,aASX1zB,EAAQ6Q,UAAUgrB,WAAa,SAAUl1B,GACvC7J,KAAK8tD,eAAejkD,IAItB3G,EAAQ6Q,UAAU+5C,eAAiB,WACjC9tD,KAAK0pC,KAAK3J,UAAW,CACrB,IAAIuT,GAAYtzC,KAAK0pC,KAAK4J,SACtBA,IAAaA,EAAUttC,QACzBstC,EAAU1qC,QAAQ,SAAUwD,GAE1BA,EAAEu7C,KAAK2F,OAASlhD,EAAEkhD,OAClBlhD,EAAEu7C,KAAK4F,OAASnhD,EAAEmhD,SAEpBvtD,KAAK2mD,QAAS,EACd3mD,KAAKkQ,SAGLlQ,KAAK42B,UAEmB,GAAtB52B,KAAKwlD,cACPxlD,KAAKsuB,KAAK,WAAW6+B,aAGrBntD,KAAKsuB,KAAK,WAAW6+B,QAAQntD,KAAKy3B,eAAe0mB,SAQrDj7C,EAAQ6Q,UAAUu3C,OAAS,SAAUzhD,GACnC,GAAIk3B,GAAU/gC,KAAK0sD,YAAY7iD,EAAM22B,QAAQ5T,OAC7C5sB,MAAK8lD,gBAAkB/kB,EACvB/gC,KAAK+tD,WAAWhtB,IASlB79B,EAAQ6Q,UAAUw3C,aAAe,SAAU1hD,GACzC,GAAIk3B,GAAU/gC,KAAK0sD,YAAY7iD,EAAM22B,QAAQ5T,OAC7C5sB,MAAKguD,iBAAiBjtB,IAQxB79B,EAAQ6Q,UAAUirB,QAAU,SAAUn1B,GACpC,GAAIk3B,GAAU/gC,KAAK0sD,YAAY7iD,EAAM22B,QAAQ5T,OAC7C5sB,MAAK8lD,gBAAkB/kB,EACvB/gC,KAAKiuD,cAAcltB,IAQrB79B,EAAQ6Q,UAAU23C,WAAa,SAAU7hD,GACvC,GAAIk3B,GAAU/gC,KAAK0sD,YAAY7iD,EAAM22B,QAAQ5T,OAC7C5sB,MAAKkuD,iBAAiBntB,IAQxB79B,EAAQ6Q,UAAUorB,SAAW,SAAUt1B,GACrC,GAAIk3B,GAAU/gC,KAAK0sD,YAAY7iD,EAAM22B,QAAQ5T,OAE7C5sB,MAAK0pC,KAAKijB,SAAU,EACd,SAAW3sD,MAAKqrD,QACpBrrD,KAAKqrD,MAAM9mD,MAAQ,EAIrB,IAAIA,GAAQvE,KAAKqrD,MAAM9mD,MAAQsF,EAAM22B,QAAQj8B,KAC7CvE,MAAKmuD,MAAM5pD,EAAOw8B,IAUpB79B,EAAQ6Q,UAAUo6C,MAAQ,SAAS5pD,EAAOw8B,GACxC,GAA+B,GAA3B/gC,KAAKsjD,UAAU9kB,SAAkB,CACnC,GAAI4vB,GAAWpuD,KAAK4sD,WACR,MAARroD,IACFA,EAAQ,MAENA,EAAQ,KACVA,EAAQ,GAGV,IAAI8pD,GAAsB,IACRxnD,UAAd7G,KAAK0pC,MACmB,GAAtB1pC,KAAK0pC,KAAK3J,WACZsuB,EAAsBruD,KAAKsuD,YAAYtuD,KAAK0pC,KAAK3I,SAIrD,IAAIziB,GAActe,KAAKgtD,kBAEnBuB,EAAYhqD,EAAQ6pD,EACpBI,GAAM,EAAID,GAAaxtB,EAAQ1uB,EAAIiM,EAAYjM,EAAIk8C,EACnDE,GAAM,EAAIF,GAAaxtB,EAAQzuB,EAAIgM,EAAYhM,EAAIi8C,CASvD,IAPAvuD,KAAK+lD,YAAc1zC,EAAMrS,KAAK0tD,qBAAqB3sB,EAAQ1uB,GACxCC,EAAMtS,KAAK4tD,qBAAqB7sB,EAAQzuB,IAE3DtS,KAAK8d,UAAUvZ,GACfvE,KAAKmlD,gBAAgBqJ,EAAIC,GACzBzuD,KAAK0uD,wBAEsB,MAAvBL,EAA6B,CAC/B,GAAIM,GAAuB3uD,KAAK4uD,YAAYP,EAC5CruD,MAAK0pC,KAAK3I,QAAQ1uB,EAAIs8C,EAAqBt8C,EAC3CrS,KAAK0pC,KAAK3I,QAAQzuB,EAAIq8C,EAAqBr8C,EAY7C,MATAtS,MAAK42B,UAEUryB,EAAX6pD,EACFpuD,KAAKsuB,KAAK,QAASyN,UAAU,MAG7B/7B,KAAKsuB,KAAK,QAASyN,UAAU,MAGxBx3B,IAYXrB,EAAQ6Q,UAAUkrB,cAAgB,SAASp1B,GAEzC,GAAIslB,GAAQ,CAYZ,IAXItlB,EAAMulB,WACRD,EAAQtlB,EAAMulB,WAAW,IAChBvlB,EAAMwlB,SAGfF,GAAStlB,EAAMwlB,OAAO,GAMpBF,EAAO,CAGT,GAAI5qB,GAAQvE,KAAK4sD,YACb1rB,EAAO/R,EAAQ,EACP,GAARA,IACF+R,GAAe,EAAIA,GAErB38B,GAAU,EAAI28B,CAGd,IAAIV,GAAUhB,EAAWsB,YAAY9gC,KAAM6J,GACvCk3B,EAAU/gC,KAAK0sD,YAAYlsB,EAAQ5T,OAGvC5sB,MAAKmuD,MAAM5pD,EAAOw8B,GAIpBl3B,EAAMD,kBASR1G,EAAQ6Q,UAAUy3C,kBAAoB,SAAU3hD,GAC9C,GAAI22B,GAAUhB,EAAWsB,YAAY9gC,KAAM6J,GACvCk3B,EAAU/gC,KAAK0sD,YAAYlsB,EAAQ5T,QACnCiiC,GAAe,CAsBnB,IAnBmBhoD,SAAf7G,KAAK8uD,QACH9uD,KAAK8uD,MAAM/0B,UAAW,GACxB/5B,KAAK+uD,gBAAgBhuB,GAInB/gC,KAAK8uD,MAAM/0B,UAAW,IACxB80B,GAAe,EACf7uD,KAAK8uD,MAAME,YAAYjuB,EAAQ1uB,EAAI,EAAE0uB,EAAQzuB,EAAI,GACjDtS,KAAK8uD,MAAM7oB,SAK6B,GAAxCjmC,KAAKsjD,UAAUvB,SAASE,cAA4D,GAAnCjiD,KAAKsjD,UAAUvB,SAAS/yC,SAC3EhP,KAAKmgB,MAAMqX,QAITq3B,KAAiB,EAAO,CAC1B,GAAI95C,GAAK/U,KACLivD,EAAY,WACdl6C,EAAGm6C,gBAAgBnuB,GAEjB/gC,MAAKmvD,YACPj8B,cAAclzB,KAAKmvD,YAEhBnvD,KAAK0pC,KAAK3J,WACb//B,KAAKmvD,WAAa/0C,WAAW60C,EAAWjvD,KAAKsjD,UAAUr8B,QAAQ3N,QAOnE,GAA4B,GAAxBtZ,KAAKsjD,UAAUz2C,MAAe,CAEhC,IAAK,GAAIuiD,KAAUpvD,MAAKwjD,SAASlE,MAC3Bt/C,KAAKwjD,SAASlE,MAAMn5C,eAAeipD,KACrCpvD,KAAKwjD,SAASlE,MAAM8P,GAAQviD,OAAQ,QAC7B7M,MAAKwjD,SAASlE,MAAM8P,GAK/B,IAAIxrC,GAAM5jB,KAAK+sD,WAAWhsB,EACf,OAAPnd,IACFA,EAAM5jB,KAAKqvD,WAAWtuB,IAEb,MAAPnd,GACF5jB,KAAKsvD,aAAa1rC,EAIpB,KAAK,GAAIqkC,KAAUjoD,MAAKwjD,SAASrF,MAC3Bn+C,KAAKwjD,SAASrF,MAAMh4C,eAAe8hD,KACjCrkC,YAAergB,IAAQqgB,EAAIvjB,IAAM4nD,GAAUrkC,YAAexgB,IAAe,MAAPwgB,KACpE5jB,KAAKuvD,YAAYvvD,KAAKwjD,SAASrF,MAAM8J,UAC9BjoD,MAAKwjD,SAASrF,MAAM8J,GAIjCjoD,MAAKsiB,WAYTpf,EAAQ6Q,UAAUm7C,gBAAkB,SAAUnuB,GAC5C,GAOI1gC,GAPAujB,GACF/b,KAAQ7H,KAAK0tD,qBAAqB3sB,EAAQ1uB,GAC1CpK,IAAQjI,KAAK4tD,qBAAqB7sB,EAAQzuB,GAC1C4V,MAAQloB,KAAK0tD,qBAAqB3sB,EAAQ1uB,GAC1C8R,OAAQnkB,KAAK4tD,qBAAqB7sB,EAAQzuB,IAIxCk9C,EAAuC3oD,SAAlB7G,KAAKyvD,SAAyB,GAAKzvD,KAAKyvD,SAASpvD,GACtEqvD,GAAkB,EAClBC,EAAY,MAEhB,IAAqB9oD,QAAjB7G,KAAKyvD,SAAuB,CAE9B,GAAItR,GAAQn+C,KAAKm+C,MACbyR,IACJ,KAAKvvD,IAAM89C,GACT,GAAIA,EAAMh4C,eAAe9F,GAAK,CAC5B,GAAIsnD,GAAOxJ,EAAM99C,EACbsnD,GAAKkI,kBAAkBjsC,IACD/c,SAApB8gD,EAAKmI,YACPF,EAAiBrnD,KAAKlI,GAM1BuvD,EAAiB5pD,OAAS,IAG5BhG,KAAKyvD,SAAWzvD,KAAKm+C,MAAMyR,EAAiBA,EAAiB5pD,OAAS,IAEtE0pD,GAAkB,GAItB,GAAsB7oD,SAAlB7G,KAAKyvD,UAA6C,GAAnBC,EAA0B,CAE3D,GAAIpQ,GAAQt/C,KAAKs/C,MACbyQ,IACJ,KAAK1vD,IAAMi/C,GACT,GAAIA,EAAMn5C,eAAe9F,GAAK,CAC5B,GAAI2vD,GAAO1Q,EAAMj/C,EACb2vD,GAAKC,WAAkCppD,SAApBmpD,EAAKF,YACxBE,EAAKH,kBAAkBjsC,IACzBmsC,EAAiBxnD,KAAKlI,GAKxB0vD,EAAiB/pD,OAAS,IAC5BhG,KAAKyvD,SAAWzvD,KAAKs/C,MAAMyQ,EAAiBA,EAAiB/pD,OAAS,IACtE2pD,EAAY,QAIZ3vD,KAAKyvD,SAEHzvD,KAAKyvD,SAASpvD,IAAMmvD,IACH3oD,SAAf7G,KAAK8uD,QACP9uD,KAAK8uD,MAAQ,GAAItrD,GAAMxD,KAAKmgB,MAAOngB,KAAKsjD,UAAUr8B,UAGpDjnB,KAAK8uD,MAAMoB,gBAAkBP,EAC7B3vD,KAAK8uD,MAAMqB,cAAgBnwD,KAAKyvD,SAASpvD,GAKzCL,KAAK8uD,MAAME,YAAYjuB,EAAQ1uB,EAAI,EAAG0uB,EAAQzuB,EAAI,GAClDtS,KAAK8uD,MAAMsB,QAAQpwD,KAAKyvD,SAASK,YACjC9vD,KAAK8uD,MAAM7oB,QAITjmC,KAAK8uD,OACP9uD,KAAK8uD,MAAM9oB,QAYjB9iC,EAAQ6Q,UAAUg7C,gBAAkB,SAAUhuB,GAC5C,GAAIsvB,IACFxoD,KAAQ7H,KAAK0tD,qBAAqB3sB,EAAQ1uB,GAC1CpK,IAAQjI,KAAK4tD,qBAAqB7sB,EAAQzuB,GAC1C4V,MAAQloB,KAAK0tD,qBAAqB3sB,EAAQ1uB,GAC1C8R,OAAQnkB,KAAK4tD,qBAAqB7sB,EAAQzuB,IAGxCg+C,GAAa,CACjB,IAAkC,QAA9BtwD,KAAK8uD,MAAMoB,iBAEb,GADAI,EAAatwD,KAAKm+C,MAAMn+C,KAAK8uD,MAAMqB,eAAeN,kBAAkBQ,GAChEC,KAAe,EAAM,CACvB,GAAIC,GAAWvwD,KAAK+sD,WAAWhsB,EAC/BuvB,GAAaC,EAASlwD,IAAML,KAAK8uD,MAAMqB,mBAIR,QAA7BnwD,KAAK+sD,WAAWhsB,KAClBuvB,EAAatwD,KAAKs/C,MAAMt/C,KAAK8uD,MAAMqB,eAAeN,kBAAkBQ,GAKpEC,MAAe,IACjBtwD,KAAKyvD,SAAW5oD,OAChB7G,KAAK8uD,MAAM9oB,SAYf9iC,EAAQ6Q,UAAUyR,QAAU,SAASrS,EAAOC,GAC1C,GAAIo9C,IAAY,EACZC,EAAWzwD,KAAKmgB,MAAMC,OAAOjN,MAC7Bu9C,EAAY1wD,KAAKmgB,MAAMC,OAAOhN,MAC9BD,IAASnT,KAAKsjD,UAAUnwC,OAASC,GAAUpT,KAAKsjD,UAAUlwC,QAAUpT,KAAKmgB,MAAM5S,MAAM4F,OAASA,GAASnT,KAAKmgB,MAAM5S,MAAM6F,QAAUA,GACpIpT,KAAKmgB,MAAM5S,MAAM4F,MAAQA,EACzBnT,KAAKmgB,MAAM5S,MAAM6F,OAASA,EAE1BpT,KAAKmgB,MAAMC,OAAO7S,MAAM4F,MAAQ,OAChCnT,KAAKmgB,MAAMC,OAAO7S,MAAM6F,OAAS,OAEjCpT,KAAKmgB,MAAMC,OAAOjN,MAAQnT,KAAKmgB,MAAMC,OAAOC,YAAcrgB,KAAKujD,WAC/DvjD,KAAKmgB,MAAMC,OAAOhN,OAASpT,KAAKmgB,MAAMC,OAAOsF,aAAe1lB,KAAKujD,WAEjEvjD,KAAKsjD,UAAUnwC,MAAQA,EACvBnT,KAAKsjD,UAAUlwC,OAASA,EAExBo9C,GAAY,IAMRxwD,KAAKmgB,MAAMC,OAAOjN,OAASnT,KAAKmgB,MAAMC,OAAOC,YAAcrgB,KAAKujD,aAClEvjD,KAAKmgB,MAAMC,OAAOjN,MAAQnT,KAAKmgB,MAAMC,OAAOC,YAAcrgB,KAAKujD,WAC/DiN,GAAY,GAEVxwD,KAAKmgB,MAAMC,OAAOhN,QAAUpT,KAAKmgB,MAAMC,OAAOsF,aAAe1lB,KAAKujD,aACpEvjD,KAAKmgB,MAAMC,OAAOhN,OAASpT,KAAKmgB,MAAMC,OAAOsF,aAAe1lB,KAAKujD,WACjEiN,GAAY,IAIC,GAAbA,GACFxwD,KAAKsuB,KAAK,UAAWnb,MAAMnT,KAAKmgB,MAAMC,OAAOjN,MAAQnT,KAAKujD,WAAWnwC,OAAOpT,KAAKmgB,MAAMC,OAAOhN,OAASpT,KAAKujD,WAAYkN,SAAUA,EAAWzwD,KAAKujD,WAAYmN,UAAWA,EAAY1wD,KAAKujD,cAS9LrgD,EAAQ6Q,UAAUy1C,UAAY,SAASrL,GACrC,GAAIwS,GAAe3wD,KAAKimD,SAExB,IAAI9H,YAAiBt9C,IAAWs9C,YAAiBr9C,GAC/Cd,KAAKimD,UAAY9H,MAEd,IAAI73C,MAAMC,QAAQ43C,GACrBn+C,KAAKimD,UAAY,GAAIplD,GACrBb,KAAKimD,UAAUpyC,IAAIsqC,OAEhB,CAAA,GAAKA,EAIR,KAAM,IAAIz3C,WAAU,4BAHpB1G,MAAKimD,UAAY,GAAIplD,GAgBvB,GAVI8vD,GAEFhwD,EAAKiI,QAAQ5I,KAAKmmD,eAAgB,SAAUt9C,EAAUgB,GACpD8mD,EAAar8C,IAAIzK,EAAOhB,KAK5B7I,KAAKm+C,SAEDn+C,KAAKimD,UAAW,CAElB,GAAIlxC,GAAK/U,IACTW,GAAKiI,QAAQ5I,KAAKmmD,eAAgB,SAAUt9C,EAAUgB,GACpDkL,EAAGkxC,UAAU9xC,GAAGtK,EAAOhB,IAIzB,IAAIkN,GAAM/V,KAAKimD,UAAUxvC,QACzBzW,MAAKomD,UAAUrwC,GAEjB/V,KAAK4wD,oBAQP1tD,EAAQ6Q,UAAUqyC,UAAY,SAASrwC,GAErC,IAAK,GADD1V,GACKwF,EAAI,EAAGC,EAAMiQ,EAAI/P,OAAYF,EAAJD,EAASA,IAAK,CAC9CxF,EAAK0V,EAAIlQ,EACT,IAAIyN,GAAOtT,KAAKimD,UAAUnwC,IAAIzV,GAC1BsnD,EAAO,GAAIpkD,GAAK+P,EAAMtT,KAAKwkD,OAAQxkD,KAAK40B,OAAQ50B,KAAKsjD,UAEzD,IADAtjD,KAAKm+C,MAAM99C,GAAMsnD,IACG,GAAfA,EAAK2F,QAAkC,GAAf3F,EAAK4F,QAAgC,OAAX5F,EAAKt1C,GAAyB,OAAXs1C,EAAKr1C,GAAa,CAC1F,GAAI6Z,GAAS,EAASpW,EAAI/P,OAAS,GAC/B6qD,EAAQ,EAAIrsD,KAAK6nB,GAAK7nB,KAAKiB,QACZ,IAAfkiD,EAAK2F,SAAkB3F,EAAKt1C,EAAI8Z,EAAS3nB,KAAK4a,IAAIyxC,IACnC,GAAflJ,EAAK4F,SAAkB5F,EAAKr1C,EAAI6Z,EAAS3nB,KAAKya,IAAI4xC,IAExD7wD,KAAK2mD,QAAS,EAGhB3mD,KAAK8oD,uBAC4C,GAA7C9oD,KAAKsjD,UAAUlB,mBAAmBpzC,SAAwC,GAArBhP,KAAK49C,eAC5D59C,KAAK2pD,eACL3pD,KAAK6mD,4BAEP7mD,KAAK8wD,0BACL9wD,KAAK+wD,kBACL/wD,KAAKgxD,kBAAkBhxD,KAAKm+C,OAC5Bn+C,KAAKixD,gBAQP/tD,EAAQ6Q,UAAUsyC,aAAe,SAAStwC,GAIxC,IAAK,GAHDkwC,GAAYjmD,KAAKimD,UAAUnwC,IAAIC,GAC/BooC,EAAQn+C,KAAKm+C,MAERt4C,EAAI,EAAGC,EAAMiQ,EAAI/P,OAAYF,EAAJD,EAASA,IAAK,CAC9C,GAAIxF,GAAK0V,EAAIlQ,GACT8hD,EAAOxJ,EAAM99C,GACbiT,EAAO2yC,EAAUpgD,EACjB8hD,GAEFA,EAAKuJ,cAAc59C,EAAMtT,KAAKsjD,YAI9BqE,EAAO,GAAIpkD,GAAK4tD,WAAYnxD,KAAKwkD,OAAQxkD,KAAK40B,OAAQ50B,KAAKsjD,WAC3DnF,EAAM99C,GAAMsnD,GAGhB3nD,KAAK2mD,QAAS,EACmC,GAA7C3mD,KAAKsjD,UAAUlB,mBAAmBpzC,SAAwC,GAArBhP,KAAK49C,eAC5D59C,KAAK2pD,eACL3pD,KAAK6mD,4BAEP7mD,KAAK8oD,uBACL9oD,KAAKgxD,kBAAkB7S,GACvBn+C,KAAK2qD,wBAIPznD,EAAQ6Q,UAAU42C,qBAAuB,WACvC,IAAK,GAAIyE,KAAUpvD,MAAKs/C,MACtBt/C,KAAKs/C,MAAM8P,GAAQgC,YAAa,GASpCluD,EAAQ6Q,UAAUuyC,aAAe,SAASvwC,GAIxC,IAAK,GAHDooC,GAAQn+C,KAAKm+C,MAGRt4C,EAAI,EAAGC,EAAMiQ,EAAI/P,OAAYF,EAAJD,EAASA,IACDgB,SAApC7G,KAAKqtD,aAAalP,MAAMpoC,EAAIlQ,MAC9B7F,KAAKm+C,MAAMpoC,EAAIlQ,IAAIigC,WACnB9lC,KAAKqxD,qBAAqBrxD,KAAKm+C,MAAMpoC,EAAIlQ,KAI7C,KAAK,GAAIA,GAAI,EAAGC,EAAMiQ,EAAI/P,OAAYF,EAAJD,EAASA,IAAK,CAC9C,GAAIxF,GAAK0V,EAAIlQ,SACNs4C,GAAM99C,GAKfL,KAAK8oD,uBAC4C,GAA7C9oD,KAAKsjD,UAAUlB,mBAAmBpzC,SAAwC,GAArBhP,KAAK49C,eAC5D59C,KAAK2pD,eACL3pD,KAAK6mD,4BAEP7mD,KAAK8wD,0BACL9wD,KAAK+wD,kBACL/wD,KAAK4wD,mBACL5wD,KAAKgxD,kBAAkB7S,IASzBj7C,EAAQ6Q,UAAU01C,UAAY,SAASnK,GACrC,GAAIgS,GAAetxD,KAAKkmD,SAExB,IAAI5G,YAAiBz+C,IAAWy+C,YAAiBx+C,GAC/Cd,KAAKkmD,UAAY5G,MAEd,IAAIh5C,MAAMC,QAAQ+4C,GACrBt/C,KAAKkmD,UAAY,GAAIrlD,GACrBb,KAAKkmD,UAAUryC,IAAIyrC,OAEhB,CAAA,GAAKA,EAIR,KAAM,IAAI54C,WAAU,4BAHpB1G,MAAKkmD,UAAY,GAAIrlD,GAgBvB,GAVIywD,GAEF3wD,EAAKiI,QAAQ5I,KAAKumD,eAAgB,SAAU19C,EAAUgB,GACpDynD,EAAah9C,IAAIzK,EAAOhB,KAK5B7I,KAAKs/C,SAEDt/C,KAAKkmD,UAAW,CAElB,GAAInxC,GAAK/U,IACTW,GAAKiI,QAAQ5I,KAAKumD,eAAgB,SAAU19C,EAAUgB,GACpDkL,EAAGmxC,UAAU/xC,GAAGtK,EAAOhB,IAIzB,IAAIkN,GAAM/V,KAAKkmD,UAAUzvC,QACzBzW,MAAKwmD,UAAUzwC,GAGjB/V,KAAK+wD,mBAQP7tD,EAAQ6Q,UAAUyyC,UAAY,SAAUzwC,GAItC,IAAK,GAHDupC,GAAQt/C,KAAKs/C,MACb4G,EAAYlmD,KAAKkmD,UAEZrgD,EAAI,EAAGC,EAAMiQ,EAAI/P,OAAYF,EAAJD,EAASA,IAAK,CAC9C,GAAIxF,GAAK0V,EAAIlQ,GAET0rD,EAAUjS,EAAMj/C,EAChBkxD,IACFA,EAAQC,YAGV,IAAIl+C,GAAO4yC,EAAUpwC,IAAIzV,GAAKoxD,iBAAoB,GAClDnS,GAAMj/C,GAAM,GAAI+C,GAAKkQ,EAAMtT,KAAMA,KAAKsjD,WAExCtjD,KAAK2mD,QAAS,EACd3mD,KAAKgxD,kBAAkB1R,GACvBt/C,KAAK0xD,qBACL1xD,KAAK8wD,0BAC4C,GAA7C9wD,KAAKsjD,UAAUlB,mBAAmBpzC,SAAwC,GAArBhP,KAAK49C,eAC5D59C,KAAK2pD,eACL3pD,KAAK6mD,6BAST3jD,EAAQ6Q,UAAU0yC,aAAe,SAAU1wC,GAGzC,IAAK,GAFDupC,GAAQt/C,KAAKs/C,MACb4G,EAAYlmD,KAAKkmD,UACZrgD,EAAI,EAAGC,EAAMiQ,EAAI/P,OAAYF,EAAJD,EAASA,IAAK,CAC9C,GAAIxF,GAAK0V,EAAIlQ,GAETyN,EAAO4yC,EAAUpwC,IAAIzV,GACrB2vD,EAAO1Q,EAAMj/C,EACb2vD,IAEFA,EAAKwB,aACLxB,EAAKkB,cAAc59C,EAAMtT,KAAKsjD,WAC9B0M,EAAKhS,YAILgS,EAAO,GAAI5sD,GAAKkQ,EAAMtT,KAAMA,KAAKsjD,WACjCtjD,KAAKs/C,MAAMj/C,GAAM2vD,GAIrBhwD,KAAK0xD,qBAC4C,GAA7C1xD,KAAKsjD,UAAUlB,mBAAmBpzC,SAAwC,GAArBhP,KAAK49C,eAC5D59C,KAAK2pD,eACL3pD,KAAK6mD,4BAEP7mD,KAAK2mD,QAAS,EACd3mD,KAAKgxD,kBAAkB1R,IAQzBp8C,EAAQ6Q,UAAU2yC,aAAe,SAAU3wC,GAIzC,IAAK,GAHDupC,GAAQt/C,KAAKs/C,MAGRz5C,EAAI,EAAGC,EAAMiQ,EAAI/P,OAAYF,EAAJD,EAASA,IACDgB,SAApC7G,KAAKqtD,aAAa/N,MAAMvpC,EAAIlQ,MAC9By5C,EAAMvpC,EAAIlQ,IAAIigC,WACd9lC,KAAKqxD,qBAAqB/R,EAAMvpC,EAAIlQ,KAIxC,KAAK,GAAIA,GAAI,EAAGC,EAAMiQ,EAAI/P,OAAYF,EAAJD,EAASA,IAAK,CAC9C,GAAIxF,GAAK0V,EAAIlQ,GACTmqD,EAAO1Q,EAAMj/C,EACb2vD,KACc,MAAZA,EAAK2B,WACA3xD,MAAK4xD,QAAiB,QAAS,MAAE5B,EAAK2B,IAAItxD,IAEnD2vD,EAAKwB,mBACElS,GAAMj/C,IAIjBL,KAAK2mD,QAAS,EACd3mD,KAAKgxD,kBAAkB1R,GAC0B,GAA7Ct/C,KAAKsjD,UAAUlB,mBAAmBpzC,SAAwC,GAArBhP,KAAK49C,eAC5D59C,KAAK2pD,eACL3pD,KAAK6mD,4BAEP7mD,KAAK8wD,2BAOP5tD,EAAQ6Q,UAAUg9C,gBAAkB,WAClC,GAAI1wD,GACA89C,EAAQn+C,KAAKm+C,MACbmB,EAAQt/C,KAAKs/C,KACjB,KAAKj/C,IAAM89C,GACLA,EAAMh4C,eAAe9F,KACvB89C,EAAM99C,GAAIi/C,SACVnB,EAAM99C,GAAIwxD,gBAId,KAAKxxD,IAAMi/C,GACT,GAAIA,EAAMn5C,eAAe9F,GAAK,CAC5B,GAAI2vD,GAAO1Q,EAAMj/C,EACjB2vD,GAAKhmC,KAAO,KACZgmC,EAAK/lC,GAAK,KACV+lC,EAAKhS,YAaX96C,EAAQ6Q,UAAUi9C,kBAAoB,SAASptC,GAC7C,GAAIvjB,GAGA2c,EAAWnW,OACXoW,EAAWpW,OACXirD,EAAa,CACjB,KAAKzxD,IAAMujB,GACT,GAAIA,EAAIzd,eAAe9F,GAAK,CAC1B,GAAIiE,GAAQsf,EAAIvjB,GAAImV,UACN3O,UAAVvC,IACF0Y,EAAyBnW,SAAbmW,EAA0B1Y,EAAQE,KAAKL,IAAIG,EAAO0Y,GAC9DC,EAAyBpW,SAAboW,EAA0B3Y,EAAQE,KAAKJ,IAAIE,EAAO2Y,GAC9D60C,GAAcxtD,GAMpB,GAAiBuC,SAAbmW,GAAuCnW,SAAboW,EAC5B,IAAK5c,IAAMujB,GACLA,EAAIzd,eAAe9F,IACrBujB,EAAIvjB,GAAI0xD,cAAc/0C,EAAUC,EAAU60C,IAUlD5uD,EAAQ6Q,UAAUuO,OAAS,WACzBtiB,KAAKwlB,QAAQxlB,KAAKsjD,UAAUnwC,MAAOnT,KAAKsjD,UAAUlwC,QAClDpT,KAAK42B,WAQP1zB,EAAQ6Q,UAAU2wC,eAAiB,SAAS3qB,GACtC/5B,KAAKukD,mBAAoB,IAC3BvkD,KAAKukD,iBAAkB,EACnBvkD,KAAKonD,mBAAoB,EAC3Bt/C,OAAOsS,WAAWpa,KAAK42B,QAAQrB,KAAKv1B,KAAM+5B,GAAQ,GAGlDjyB,OAAOkqD,sBAAsBhyD,KAAK42B,QAAQrB,KAAKv1B,KAAM+5B,GAAQ,MAKnE72B,EAAQ6Q,UAAU6iB,QAAU,SAASmD,GACpBlzB,SAAXkzB,IACFA,GAAS,GAEX/5B,KAAKukD,iBAAkB,CACvB,IAAI38B,GAAM5nB,KAAKmgB,MAAMC,OAAOyH,WAAW,KAEvCD,GAAIujC,aAAanrD,KAAKujD,WAAY,EAAG,EAAGvjD,KAAKujD,WAAY,EAAG,EAG5D,IAAI0O,GAAIjyD,KAAKmgB,MAAMC,OAAOC,YACtBlU,EAAInM,KAAKmgB,MAAMC,OAAOsF,YAC1BkC,GAAIE,UAAU,EAAG,EAAGmqC,EAAG9lD,GAGvByb,EAAIsqC,OACJtqC,EAAIuqC,UAAUnyD,KAAKse,YAAYjM,EAAGrS,KAAKse,YAAYhM,GACnDsV,EAAIrjB,MAAMvE,KAAKuE,MAAOvE,KAAKuE,OAE3BvE,KAAK4lD,eACHvzC,EAAKrS,KAAK0tD,qBAAqB,GAC/Bp7C,EAAKtS,KAAK4tD,qBAAqB,IAEjC5tD,KAAK6lD,mBACHxzC,EAAKrS,KAAK0tD,qBAAqB1tD,KAAKmgB,MAAMC,OAAOC,aACjD/N,EAAKtS,KAAK4tD,qBAAqB5tD,KAAKmgB,MAAMC,OAAOsF,eAG/CqU,KAAW,IACb/5B,KAAKoyD,gBAAgB,sBAAuBxqC,IAClB,GAAtB5nB,KAAK0pC,KAAK3J,UAA4Cl5B,SAAvB7G,KAAK0pC,KAAK3J,UAA4D,GAAlC//B,KAAKsjD,UAAUH,kBACpFnjD,KAAKoyD,gBAAgB,aAAcxqC,KAIb,GAAtB5nB,KAAK0pC,KAAK3J,UAA4Cl5B,SAAvB7G,KAAK0pC,KAAK3J,UAA4D,GAAlC//B,KAAKsjD,UAAUF,kBACpFpjD,KAAKoyD,gBAAgB,aAAaxqC,GAAI,GAGpCmS,KAAW,GACkB,GAA3B/5B,KAAKyjD,oBACPzjD,KAAKoyD,gBAAgB,oBAAqBxqC,GAQ9CA,EAAIyqC,UAEAt4B,KAAW,GACbnS,EAAIE,UAAU,EAAG,EAAGmqC,EAAG9lD,IAU3BjJ,EAAQ6Q,UAAUoxC,gBAAkB,SAASmN,EAASC,GAC3B1rD,SAArB7G,KAAKse,cACPte,KAAKse,aACHjM,EAAG,EACHC,EAAG,IAISzL,SAAZyrD,IACFtyD,KAAKse,YAAYjM,EAAIigD,GAEPzrD,SAAZ0rD,IACFvyD,KAAKse,YAAYhM,EAAIigD,GAGvBvyD,KAAKsuB,KAAK,gBAQZprB,EAAQ6Q,UAAUi5C,gBAAkB,WAClC,OACE36C,EAAGrS,KAAKse,YAAYjM,EACpBC,EAAGtS,KAAKse,YAAYhM,IASxBpP,EAAQ6Q,UAAU+J,UAAY,SAASvZ,GACrCvE,KAAKuE,MAAQA,GAQfrB,EAAQ6Q,UAAU64C,UAAY,WAC5B,MAAO5sD,MAAKuE,OAUdrB,EAAQ6Q,UAAU25C,qBAAuB,SAASr7C,GAChD,OAAQA,EAAIrS,KAAKse,YAAYjM,GAAKrS,KAAKuE,OAUzCrB,EAAQ6Q,UAAU45C,qBAAuB,SAASt7C,GAChD,MAAOA,GAAIrS,KAAKuE,MAAQvE,KAAKse,YAAYjM,GAU3CnP,EAAQ6Q,UAAU65C,qBAAuB,SAASt7C,GAChD,OAAQA,EAAItS,KAAKse,YAAYhM,GAAKtS,KAAKuE,OAUzCrB,EAAQ6Q,UAAU85C,qBAAuB,SAASv7C,GAChD,MAAOA,GAAItS,KAAKuE,MAAQvE,KAAKse,YAAYhM,GAU3CpP,EAAQ6Q,UAAU66C,YAAc,SAAUxoC,GACxC,OAAQ/T,EAAGrS,KAAK2tD,qBAAqBvnC,EAAI/T,GAAIC,EAAGtS,KAAK6tD,qBAAqBznC,EAAI9T,KAShFpP,EAAQ6Q,UAAUu6C,YAAc,SAAUloC,GACxC,OAAQ/T,EAAGrS,KAAK0tD,qBAAqBtnC,EAAI/T,GAAIC,EAAGtS,KAAK4tD,qBAAqBxnC,EAAI9T,KAUhFpP,EAAQ6Q,UAAUy+C,WAAa,SAAS5qC,EAAI6qC,GACvB5rD,SAAf4rD,IACFA,GAAa,EAIf,IAAItU,GAAQn+C,KAAKm+C,MACb1Y,IAEJ,KAAK,GAAIplC,KAAM89C,GACTA,EAAMh4C,eAAe9F,KACvB89C,EAAM99C,GAAIqyD,eAAe1yD,KAAKuE,MAAMvE,KAAK4lD,cAAc5lD,KAAK6lD,mBACxD1H,EAAM99C,GAAI4sD,aACZxnB,EAASl9B,KAAKlI,IAGV89C,EAAM99C,GAAIsyD,UAAYF,IACxBtU,EAAM99C,GAAI0vC,KAAKnoB,GAOvB,KAAK,GAAIxb,GAAI,EAAGwmD,EAAOntB,EAASz/B,OAAY4sD,EAAJxmD,EAAUA,KAC5C+xC,EAAM1Y,EAASr5B,IAAIumD,UAAYF,IACjCtU,EAAM1Y,EAASr5B,IAAI2jC,KAAKnoB,IAW9B1kB,EAAQ6Q,UAAU8+C,WAAa,SAASjrC,GACtC,GAAI03B,GAAQt/C,KAAKs/C,KACjB,KAAK,GAAIj/C,KAAMi/C,GACb,GAAIA,EAAMn5C,eAAe9F,GAAK,CAC5B,GAAI2vD,GAAO1Q,EAAMj/C,EACjB2vD,GAAK/rB,SAASjkC,KAAKuE,OACfyrD,EAAKC,WACP3Q,EAAMj/C,GAAI0vC,KAAKnoB,KAYvB1kB,EAAQ6Q,UAAU++C,kBAAoB,SAASlrC,GAC7C,GAAI03B,GAAQt/C,KAAKs/C,KACjB,KAAK,GAAIj/C,KAAMi/C,GACTA,EAAMn5C,eAAe9F,IACvBi/C,EAAMj/C,GAAIyyD,kBAAkBlrC,IASlC1kB,EAAQ6Q,UAAU61C,WAAa,WACgB,GAAzC5pD,KAAKsjD,UAAUd,wBACjBxiD,KAAK+yD,qBAKP,KADA,GAAIn7C,GAAQ,EACL5X,KAAK2mD,QAAU/uC,EAAQ5X,KAAKsjD,UAAUP,yBAC3C/iD,KAAKgzD,eACLp7C,GAI0C,IAAxC5X,KAAKsjD,UAAUN,uBACjBhjD,KAAK8mD,YAAY12C,SAAS,IAAI,GAAO,GAGM,GAAzCpQ,KAAKsjD,UAAUd,wBACjBxiD,KAAKizD,sBAGPjzD,KAAKsuB,KAAK,gCASZprB,EAAQ6Q,UAAUg/C,oBAAsB,WACtC,GAAI5U,GAAQn+C,KAAKm+C,KACjB,KAAK,GAAI99C,KAAM89C,GACTA,EAAMh4C,eAAe9F,IACJ,MAAf89C,EAAM99C,GAAIgS,GAA4B,MAAf8rC,EAAM99C,GAAIiS,IACnC6rC,EAAM99C,GAAI6yD,UAAU7gD,EAAI8rC,EAAM99C,GAAIitD,OAClCnP,EAAM99C,GAAI6yD,UAAU5gD,EAAI6rC,EAAM99C,GAAIktD,OAClCpP,EAAM99C,GAAIitD,QAAS,EACnBnP,EAAM99C,GAAIktD,QAAS,IAW3BrqD,EAAQ6Q,UAAUk/C,oBAAsB,WACtC,GAAI9U,GAAQn+C,KAAKm+C,KACjB,KAAK,GAAI99C,KAAM89C,GACTA,EAAMh4C,eAAe9F,IACM,MAAzB89C,EAAM99C,GAAI6yD,UAAU7gD,IACtB8rC,EAAM99C,GAAIitD,OAASnP,EAAM99C,GAAI6yD,UAAU7gD,EACvC8rC,EAAM99C,GAAIktD,OAASpP,EAAM99C,GAAI6yD,UAAU5gD,IAa/CpP,EAAQ6Q,UAAUo/C,UAAY,SAASC,GACrC,GAAIjV,GAAQn+C,KAAKm+C,KACjB,KAAK,GAAI99C,KAAM89C,GACb,GAAkBt3C,SAAds3C,EAAM99C,IACwB,GAA5B89C,EAAM99C,GAAIgzD,SAASD,GACrB,OAAO,CAIb,QAAO,GAUTlwD,EAAQ6Q,UAAUu/C,mBAAqB,WACrC,GAEIrL,GAFAh1B,EAAWjzB,KAAK29C,wBAChBQ,EAAQn+C,KAAKm+C,MAEboV,GAAe,CAEnB,IAAIvzD,KAAKsjD,UAAUV,YAAc,EAC/B,IAAKqF,IAAU9J,GACTA,EAAMh4C,eAAe8hD,KACvB9J,EAAM8J,GAAQuL,oBAAoBvgC,EAAUjzB,KAAKsjD,UAAUV,aAC3D2Q,GAAe,OAKnB,KAAKtL,IAAU9J,GACTA,EAAMh4C,eAAe8hD,KACvB9J,EAAM8J,GAAQwL,aAAaxgC,GAC3BsgC,GAAe,EAKrB,IAAoB,GAAhBA,EAAsB,CACxB,GAAIG,GAAgB1zD,KAAKsjD,UAAUT,YAAcr+C,KAAKJ,IAAIpE,KAAKuE,MAAM,IACrE,OAAImvD,GAAgB,GAAI1zD,KAAKsjD,UAAUV,aAC9B,EAGA5iD,KAAKmzD,UAAUO,GAG1B,OAAO,GAITxwD,EAAQ6Q,UAAU4/C,oBAAsB,WACtC,GAAIxV,GAAQn+C,KAAKm+C,KACjB,KAAK,GAAI8J,KAAU9J,GACbA,EAAMh4C,eAAe8hD,IACvB9J,EAAM8J,GAAQ2L,kBAKpB1wD,EAAQ6Q,UAAU8/C,mBAAqB,WACrC7zD,KAAK8zD,sBAAsB,uBACgB,GAAvC9zD,KAAKsjD,UAAUb,aAAazzC,SAA0D,GAAvChP,KAAKsjD,UAAUb,aAAaC,SAC7E1iD,KAAK+zD,mBAAmB,wBAS5B7wD,EAAQ6Q,UAAUi/C,aAAe,WAC/B,IAAKhzD,KAAKolD,yBACW,GAAfplD,KAAK2mD,OAAgB,CACvB,GAAIqN,IAAmB,EACnBC,GAAsB,CAE1Bj0D,MAAK8zD,sBAAsB,8BAC3B,IAAII,GAAal0D,KAAK8zD,sBAAsB,qBACD,IAAvC9zD,KAAKsjD,UAAUb,aAAazzC,SAA0D,GAAvChP,KAAKsjD,UAAUb,aAAaC,UAC7EuR,EAAsBj0D,KAAK+zD,mBAAmB,sBAIhD,KAAK,GAAIluD,GAAI,EAAGA,EAAIquD,EAAWluD,OAAQH,IACrCmuD,EAAmBE,EAAWruD,IAAMmuD,CAItCh0D,MAAK2mD,OAASqN,GAAoBC,EACf,GAAfj0D,KAAK2mD,OACP3mD,KAAK6zD,qBAI4B,GAA7B7zD,KAAKslD,uBACPtlD,KAAKsuB,KAAK,sBACVtuB,KAAKslD,sBAAuB,GAIhCtlD,KAAK+iD,4BAYX7/C,EAAQ6Q,UAAUogD,eAAiB,WAajC,GAXAn0D,KAAK4mD,MAAQ//C,OAEe,GAAxB7G,KAAKonD,iBAEPpnD,KAAKkQ,QAIPlQ,KAAKo0D,oBAGc,GAAfp0D,KAAK2mD,OAAgB,CACvB,GAAI0N,GAAYzvD,KAAKo5B,KACrBh+B,MAAKgzD,cACL,IAAIvV,GAAc74C,KAAKo5B,MAAQq2B,GAG1Br0D,KAAKu9C,eAAiBv9C,KAAKw9C,WAAa,EAAIC,GAAsC,GAAvBz9C,KAAK09C,iBAA0C,GAAf19C,KAAK2mD,SACnG3mD,KAAKgzD,eAGkB,GAAnBhzD,KAAKw9C,aACPx9C,KAAK09C,gBAAiB,IAK5B,GAAI4W,GAAkB1vD,KAAKo5B,KAC3Bh+B,MAAK42B,UACL52B,KAAKw9C,WAAa54C,KAAKo5B,MAAQs2B,EAEH,GAAxBt0D,KAAKonD,iBAEPpnD,KAAKkQ,SAIa,mBAAXpI,UACTA,OAAOkqD,sBAAwBlqD,OAAOkqD,uBAAyBlqD,OAAOysD,0BACvCzsD,OAAO0sD,6BAA+B1sD,OAAO2sD,yBAM9EvxD,EAAQ6Q,UAAU7D,MAAQ,WAIxB,GAHoC,GAAhClQ,KAAKolD,0BACPplD,KAAK2mD,QAAS,GAEG,GAAf3mD,KAAK2mD,QAAqC,GAAnB3mD,KAAK2kD,YAAsC,GAAnB3kD,KAAK4kD,YAAyC,GAAtB5kD,KAAK6kD,eAAwC,GAAlB7kD,KAAK8jD,UACpG9jD,KAAK4mD,QAEN5mD,KAAK4mD,MADqB,GAAxB5mD,KAAKonD,gBACMt/C,OAAOsS,WAAWpa,KAAKm0D,eAAe5+B,KAAKv1B,MAAOA,KAAKu9C,gBAGvDz1C,OAAOkqD,sBAAsBhyD,KAAKm0D,eAAe5+B,KAAKv1B,YAOvE,IAFAA,KAAK0kD,iBAED1kD,KAAK+iD,wBAA0B,EAAG,CAKpC,GAAIhuC,GAAK/U,KACL0U,GACFggD,WAAY3/C,EAAGguC,wBAEjB/iD,MAAK+iD,wBAA0B,EAC/B/iD,KAAKslD,sBAAuB,EAC5BlrC,WAAW,WACTrF,EAAGuZ,KAAK,aAAc5Z,IACrB,OAGH1U,MAAK+iD,wBAA0B,GAWrC7/C,EAAQ6Q,UAAUqgD,kBAAoB,WACpC,GAAuB,GAAnBp0D,KAAK2kD,YAAsC,GAAnB3kD,KAAK4kD,WAAiB,CAChD,GAAItmC,GAActe,KAAKgtD,iBACvBhtD,MAAKmlD,gBAAgB7mC,EAAYjM,EAAErS,KAAK2kD,WAAYrmC,EAAYhM,EAAEtS,KAAK4kD,YAEzE,GAA0B,GAAtB5kD,KAAK6kD,cAAoB,CAC3B,GAAIj4B,IACFva,EAAGrS,KAAKmgB,MAAMC,OAAOC,YAAc,EACnC/N,EAAGtS,KAAKmgB,MAAMC,OAAOsF,aAAe,EAEtC1lB,MAAKmuD,MAAMnuD,KAAKuE,OAAO,EAAIvE,KAAK6kD,eAAgBj4B,KAQpD1pB,EAAQ6Q,UAAU4gD,iBAAmB,SAASC,GAC9B,GAAVA,GACF50D,KAAKolD,yBAA0B,EAC/BplD,KAAK2mD,QAAS,IAGd3mD,KAAKolD,yBAA0B,EAC/BplD,KAAK2mD,QAAS,EACd3mD,KAAKkQ,UAWThN,EAAQ6Q,UAAU02C,uBAAyB,SAASrC,GAIlD,GAHqBvhD,SAAjBuhD,IACFA,GAAe,GAE0B,GAAvCpoD,KAAKsjD,UAAUb,aAAazzC,SAA0D,GAAvChP,KAAKsjD,UAAUb,aAAaC,QAAiB,CAC9F1iD,KAAK0xD,oBAEL,KAAK,GAAIzJ,KAAUjoD,MAAK4xD,QAAiB,QAAS,MAC5C5xD,KAAK4xD,QAAiB,QAAS,MAAEzrD,eAAe8hD,IACwBphD,SAAtE7G,KAAKs/C,MAAMt/C,KAAK4xD,QAAiB,QAAS,MAAE3J,GAAQ4M,qBAC/C70D,MAAK4xD,QAAiB,QAAS,MAAE3J,OAK3C,CAEHjoD,KAAK4xD,QAAiB,QAAS,QAC/B,KAAK,GAAIxC,KAAUpvD,MAAKs/C,MAClBt/C,KAAKs/C,MAAMn5C,eAAeipD,KAC5BpvD,KAAKs/C,MAAM8P,GAAQuC,IAAM,MAM/B3xD,KAAK8wD,0BACA1I,IACHpoD,KAAK2mD,QAAS,EACd3mD,KAAKkQ,UAWThN,EAAQ6Q,UAAU29C,mBAAqB,WACrC,GAA2C,GAAvC1xD,KAAKsjD,UAAUb,aAAazzC,SAA0D,GAAvChP,KAAKsjD,UAAUb,aAAaC,QAC7E,IAAK,GAAI0M,KAAUpvD,MAAKs/C,MACtB,GAAIt/C,KAAKs/C,MAAMn5C,eAAeipD,GAAS,CACrC,GAAIY,GAAOhwD,KAAKs/C,MAAM8P,EACtB,IAAgB,MAAZY,EAAK2B,IAAa,CACpB,GAAI1J,GAAS,UAAUrzC,OAAOo7C,EAAK3vD,GACnCL,MAAK4xD,QAAiB,QAAS,MAAE3J,GAAU,GAAI1kD,IACtClD,GAAG4nD,EACF7J,KAAK,EACLG,MAAM,SACNC,MAAM,GACNsW,mBAAmB,SACb90D,KAAKsjD,WACrB0M,EAAK2B,IAAM3xD,KAAK4xD,QAAiB,QAAS,MAAE3J,GAC5C+H,EAAK2B,IAAIkD,aAAe7E,EAAK3vD,GAC7B2vD,EAAK+E,wBAYf7xD,EAAQ6Q,UAAUspC,wBAA0B,WAC1C,IAAK,GAAI2X,KAAS/N,GACZA,EAAY9gD,eAAe6uD,KAC7B9xD,EAAQ6Q,UAAUihD,GAAS/N,EAAY+N,KAQ7C9xD,EAAQ6Q,UAAUkhD,cAAgB,WAChCz7B,QAAQpF,IAAI,mEACZp0B,KAAKk1D,kBAMPhyD,EAAQ6Q,UAAUmhD,eAAiB,WACjC,GAAIC,KACJ,KAAK,GAAIlN,KAAUjoD,MAAKm+C,MACtB,GAAIn+C,KAAKm+C,MAAMh4C,eAAe8hD,GAAS,CACrC,GAAIN,GAAO3nD,KAAKm+C,MAAM8J,GAClBmN,GAAkBp1D,KAAKm+C,MAAMmP,OAC7B+H,GAAkBr1D,KAAKm+C,MAAMoP,QAC7BvtD,KAAKimD,UAAUzyC,MAAMy0C,GAAQ51C,GAAK7N,KAAK4pB,MAAMu5B,EAAKt1C,IAAMrS,KAAKimD,UAAUzyC,MAAMy0C,GAAQ31C,GAAK9N,KAAK4pB,MAAMu5B,EAAKr1C,KAC5G6iD,EAAU5sD,MAAMlI,GAAG4nD,EAAO51C,EAAE7N,KAAK4pB,MAAMu5B,EAAKt1C,GAAGC,EAAE9N,KAAK4pB,MAAMu5B,EAAKr1C,GAAG8iD,eAAeA,EAAeC,eAAeA,IAIvHr1D,KAAKimD,UAAUxwC,OAAO0/C,IAMxBjyD,EAAQ6Q,UAAUuhD,aAAe,SAASv/C,GACxC,GAAIo/C,KACJ,IAAYtuD,SAARkP,GACF,GAA0B,GAAtBzP,MAAMC,QAAQwP,IAChB,IAAK,GAAIlQ,GAAI,EAAGA,EAAIkQ,EAAI/P,OAAQH,IAC9B,GAA2BgB,SAAvB7G,KAAKm+C,MAAMpoC,EAAIlQ,IAAmB,CACpC,GAAI8hD,GAAO3nD,KAAKm+C,MAAMpoC,EAAIlQ,GAC1BsvD,GAAUp/C,EAAIlQ,KAAOwM,EAAG7N,KAAK4pB,MAAMu5B,EAAKt1C,GAAIC,EAAG9N,KAAK4pB,MAAMu5B,EAAKr1C,SAKnE,IAAwBzL,SAApB7G,KAAKm+C,MAAMpoC,GAAoB,CACjC,GAAI4xC,GAAO3nD,KAAKm+C,MAAMpoC,EACtBo/C,GAAUp/C,IAAQ1D,EAAG7N,KAAK4pB,MAAMu5B,EAAKt1C,GAAIC,EAAG9N,KAAK4pB,MAAMu5B,EAAKr1C,SAKhE,KAAK,GAAI21C,KAAUjoD,MAAKm+C,MACtB,GAAIn+C,KAAKm+C,MAAMh4C,eAAe8hD,GAAS,CACrC,GAAIN,GAAO3nD,KAAKm+C,MAAM8J,EACtBkN,GAAUlN,IAAW51C,EAAG7N,KAAK4pB,MAAMu5B,EAAKt1C,GAAIC,EAAG9N,KAAK4pB,MAAMu5B,EAAKr1C,IAIrE,MAAO6iD,IAWTjyD,EAAQ6Q,UAAUwhD,YAAc,SAAUtN,EAAQl5C,GAChD,GAAI/O,KAAKm+C,MAAMh4C,eAAe8hD,GAAS,CACrBphD,SAAZkI,IACFA,KAEF,IAAIymD,IAAgBnjD,EAAGrS,KAAKm+C,MAAM8J,GAAQ51C,EAAGC,EAAGtS,KAAKm+C,MAAM8J,GAAQ31C,EACnEvD,GAAQ0V,SAAW+wC,EACnBzmD,EAAQ0mD,aAAexN,EAEvBjoD,KAAK0oB,OAAO3Z,OAGZyqB,SAAQpF,IAAI,iCAWhBlxB,EAAQ6Q,UAAU2U,OAAS,SAAU3Z,GACnC,MAAgBlI,UAAZkI,OACFA,OAGwBlI,SAAtBkI,EAAQwb,SAAoCxb,EAAQwb,QAAalY,EAAG,EAAGC,EAAG,IACpDzL,SAAtBkI,EAAQwb,OAAOlY,IAA6BtD,EAAQwb,OAAOlY,EAAK,GAC1CxL,SAAtBkI,EAAQwb,OAAOjY,IAA6BvD,EAAQwb,OAAOjY,EAAK,GAC1CzL,SAAtBkI,EAAQxK,QAAoCwK,EAAQxK,MAAYvE,KAAK4sD,aAC/C/lD,SAAtBkI,EAAQ0V,WAAoC1V,EAAQ0V,SAAYzkB,KAAKgtD,mBAC/CnmD,SAAtBkI,EAAQ85C,YAAoC95C,EAAQ85C,WAAaz4C,SAAS,IAC1ErB,EAAQ85C,aAAc,IAAsB95C,EAAQ85C,WAAaz4C,SAAS,IAC1ErB,EAAQ85C,aAAc,IAAsB95C,EAAQ85C,cACrBhiD,SAA/BkI,EAAQ85C,UAAUz4C,WAA0BrB,EAAQ85C,UAAUz4C,SAAW,KACpCvJ,SAArCkI,EAAQ85C,UAAU6M,iBAAgC3mD,EAAQ85C,UAAU6M,eAAiB,qBAEzF11D,MAAK21D,YAAY5mD,KAcnB7L,EAAQ6Q,UAAU4hD,YAAc,SAAU5mD,GACxC,GAAgBlI,SAAZkI,EAEF,YADAA,KAKF/O,MAAKytD,cACiB,GAAlB1+C,EAAQ6mD,SACV51D,KAAKokD,eAAiBr1C,EAAQ0mD,aAC9Bz1D,KAAKqkD,mBAAqBt1C,EAAQwb,QAIb,GAAnBvqB,KAAK+jD,YACP/jD,KAAK61D,kBAAkB,GAGzB71D,KAAKgkD,YAAchkD,KAAK4sD,YACxB5sD,KAAKkkD,kBAAoBlkD,KAAKgtD,kBAC9BhtD,KAAKikD,YAAcl1C,EAAQxK,MAI3BvE,KAAK8d,UAAU9d,KAAKikD,YACpB;GAAI6R,GAAa91D,KAAKsuD,aAAaj8C,EAAG,GAAMrS,KAAKmgB,MAAMC,OAAOC,YAAa/N,EAAG,GAAMtS,KAAKmgB,MAAMC,OAAOsF,eAClGqwC,GACF1jD,EAAGyjD,EAAWzjD,EAAItD,EAAQ0V,SAASpS,EACnCC,EAAGwjD,EAAWxjD,EAAIvD,EAAQ0V,SAASnS,EAErCtS,MAAKmkD,mBACH9xC,EAAGrS,KAAKkkD,kBAAkB7xC,EAAI0jD,EAAmB1jD,EAAIrS,KAAKikD,YAAcl1C,EAAQwb,OAAOlY,EACvFC,EAAGtS,KAAKkkD,kBAAkB5xC,EAAIyjD,EAAmBzjD,EAAItS,KAAKikD,YAAcl1C,EAAQwb,OAAOjY,GAIvD,GAA9BvD,EAAQ85C,UAAUz4C,SACO,MAAvBpQ,KAAKokD,gBACPpkD,KAAKg2D,eAAiBh2D,KAAK42B,QAC3B52B,KAAK42B,QAAU52B,KAAKi2D,gBAGpBj2D,KAAK8d,UAAU9d,KAAKikD,aACpBjkD,KAAKmlD,gBAAgBnlD,KAAKmkD,kBAAkB9xC,EAAGrS,KAAKmkD,kBAAkB7xC,GACtEtS,KAAK42B,YAIP52B,KAAK8jD,WAAY,EACjB9jD,KAAK4jD,eAAiB,GAAK5jD,KAAKs9C,kBAAoBvuC,EAAQ85C,UAAUz4C,SAAW,OAAU,EAAIpQ,KAAKs9C,kBACpGt9C,KAAK6jD,wBAA0B90C,EAAQ85C,UAAU6M,eACjD11D,KAAKg2D,eAAiBh2D,KAAK42B,QAC3B52B,KAAK42B,QAAU52B,KAAK61D,kBACpB71D,KAAK42B,UACL52B,KAAKkQ,UAQThN,EAAQ6Q,UAAUkiD,cAAgB,WAChC,GAAIT,IAAgBnjD,EAAGrS,KAAKm+C,MAAMn+C,KAAKokD,gBAAgB/xC,EAAGC,EAAGtS,KAAKm+C,MAAMn+C,KAAKokD,gBAAgB9xC,GACzFwjD,EAAa91D,KAAKsuD,aAAaj8C,EAAG,GAAMrS,KAAKmgB,MAAMC,OAAOC,YAAa/N,EAAG,GAAMtS,KAAKmgB,MAAMC,OAAOsF,eAClGqwC,GACF1jD,EAAGyjD,EAAWzjD,EAAImjD,EAAanjD,EAC/BC,EAAGwjD,EAAWxjD,EAAIkjD,EAAaljD,GAE7B4xC,EAAoBlkD,KAAKgtD,kBACzB7I,GACF9xC,EAAG6xC,EAAkB7xC,EAAI0jD,EAAmB1jD,EAAIrS,KAAKuE,MAAQvE,KAAKqkD,mBAAmBhyC,EACrFC,EAAG4xC,EAAkB5xC,EAAIyjD,EAAmBzjD,EAAItS,KAAKuE,MAAQvE,KAAKqkD,mBAAmB/xC,EAGvFtS,MAAKmlD,gBAAgBhB,EAAkB9xC,EAAE8xC,EAAkB7xC,GAC3DtS,KAAKg2D,kBAGP9yD,EAAQ6Q,UAAU05C,YAAc,WACH,MAAvBztD,KAAKokD,iBACPpkD,KAAK42B,QAAU52B,KAAKg2D,eACpBh2D,KAAKokD,eAAiB,KACtBpkD,KAAKqkD,mBAAqB,OAS9BnhD,EAAQ6Q,UAAU8hD,kBAAoB,SAAU9R,GAC9C/jD,KAAK+jD,WAAaA,GAAc/jD,KAAK+jD,WAAa/jD,KAAK4jD,eACvD5jD,KAAK+jD,YAAc/jD,KAAK4jD,cAExB,IAAI1xB,GAAWvxB,EAAK2P,gBAAgBtQ,KAAK6jD,yBAAyB7jD,KAAK+jD,WAEvE/jD,MAAK8d,UAAU9d,KAAKgkD,aAAehkD,KAAKikD,YAAcjkD,KAAKgkD,aAAe9xB,GAC1ElyB,KAAKmlD,gBACHnlD,KAAKkkD,kBAAkB7xC,GAAKrS,KAAKmkD,kBAAkB9xC,EAAIrS,KAAKkkD,kBAAkB7xC,GAAK6f,EACnFlyB,KAAKkkD,kBAAkB5xC,GAAKtS,KAAKmkD,kBAAkB7xC,EAAItS,KAAKkkD,kBAAkB5xC,GAAK4f,GAGrFlyB,KAAKg2D,iBAGDh2D,KAAK+jD,YAAc,IACrB/jD,KAAK8jD,WAAY,EACjB9jD,KAAK+jD,WAAa,EAEhB/jD,KAAK42B,QADoB,MAAvB52B,KAAKokD,eACQpkD,KAAKi2D,cAGLj2D,KAAKg2D,eAEtBh2D,KAAKsuB,KAAK,uBAIdprB,EAAQ6Q,UAAUiiD,eAAiB,aAQnC9yD,EAAQ6Q,UAAU63C,SAAW,WAC3B,OAAQ5rD,KAAKqqD,WAAarqD,KAAKqqD,UAAU6L,QAQ3ChzD,EAAQ6Q,UAAUkwB,SAAW,WAC3B,MAAOjkC,MAAK8d,aAQd5a,EAAQ6Q,UAAU0hB,SAAW,WAC3B,MAAOz1B,MAAK4sD,aAQd1pD,EAAQ6Q,UAAUoiD,qBAAuB,WACvC,MAAOn2D,MAAKsuD,aAAaj8C,EAAG,GAAMrS,KAAKmgB,MAAMC,OAAOC,YAAa/N,EAAG,GAAMtS,KAAKmgB,MAAMC,OAAOsF,gBAI9FxiB,EAAQ6Q,UAAUqiD,eAAiB,SAASnO,GAC1C,MAA2BphD,UAAvB7G,KAAKm+C,MAAM8J,GACNjoD,KAAKm+C,MAAM8J,GAAQD,YAD5B,QAKF9kD,EAAQ6Q,UAAUsiD,kBAAoB,SAASpO,GAC7C,GAAIqO,KACJ,IAA2BzvD,SAAvB7G,KAAKm+C,MAAM8J,GAGb,IAAK,GAFDN,GAAO3nD,KAAKm+C,MAAM8J,GAClBsO,GAAWtO,QAAS,GACfpiD,EAAI,EAAGA,EAAI8hD,EAAKrI,MAAMt5C,OAAQH,IAAK,CAC1C,GAAImqD,GAAOrI,EAAKrI,MAAMz5C,EAClBmqD,GAAKwG,MAAQvO,EACcphD,SAAzB0vD,EAAQvG,EAAKyG,UACfH,EAAS/tD,KAAKynD,EAAKyG,QACnBF,EAAQvG,EAAKyG,SAAU,GAGlBzG,EAAKyG,QAAUxO,GACKphD,SAAvB0vD,EAAQvG,EAAKwG,QACfF,EAAS/tD,KAAKynD,EAAKwG,MACnBD,EAAQvG,EAAKwG,OAAQ,GAK7B,MAAOF,IAITpzD,EAAQ6Q,UAAU2iD,iBAAmB,SAASzO,GAC5C,GAAI0O,KACJ,IAA2B9vD,SAAvB7G,KAAKm+C,MAAM8J,GAEb,IAAK,GADDN,GAAO3nD,KAAKm+C,MAAM8J,GACbpiD,EAAI,EAAGA,EAAI8hD,EAAKrI,MAAMt5C,OAAQH,IACrC8wD,EAAUpuD,KAAKo/C,EAAKrI,MAAMz5C,GAAGxF,GAGjC,OAAOs2D,IAGTzzD,EAAQ6Q,UAAU6iD,oBAAsB,SAASxrD,GAC/C,MAAOzK,GAAKkL,WAAWT,IAIzBvL,EAAOD,QAAUsD,GAKb,SAASrD,EAAQD,EAASM,GAoB9B,QAASkD,GAAM+tD,EAAYhuD,EAAS0zD,GAClC,IAAK1zD,EACH,KAAM,qBAER,IAAIqL,IAAU,QAAQ,WAClB80C,EAAY3iD,EAAK4N,sBAAsBC,EAAOqoD,EAClD72D,MAAK+O,QAAUu0C,EAAUhE,MACzBt/C,KAAKigD,QAAUqD,EAAUrD,QACzBjgD,KAAK+O,QAAsB,aAAI8nD,EAA+B,aAG9D72D,KAAKmD,QAAUA,EAGfnD,KAAKK,GAASwG,OACd7G,KAAKy2D,OAAS5vD,OACd7G,KAAKw2D,KAAS3vD,OACd7G,KAAKymC,MAAS5/B,OACd7G,KAAK82D,cAAgB92D,KAAK+O,QAAQoE,MAAQnT,KAAK+O,QAAQwwC,yBACvDv/C,KAAKsE,MAASuC,OACd7G,KAAKylC,UAAW,EAChBzlC,KAAK6M,OAAQ,EACb7M,KAAK+2D,iBAAmB9uD,IAAI,EAAEJ,KAAK,EAAEsL,MAAM,EAAEC,OAAO,EAAE4jD,MAAM,GAC5Dh3D,KAAKi3D,YAAa,EAClBj3D,KAAKoxD,YAAa,EAElBpxD,KAAKgqB,KAAO,KACZhqB,KAAKiqB,GAAK,KACVjqB,KAAK2xD,IAAM,KAEX3xD,KAAKk3D,WAAa,KAClBl3D,KAAKm3D,SAAW,KAIhBn3D,KAAKo3D,kBACLp3D,KAAKq3D,gBAELr3D,KAAKiwD,WAAY,EAEjBjwD,KAAKs3D,YAAc,EACnBt3D,KAAKu3D,aAAc,EAEnBv3D,KAAKkxD,cAAcC,GAEnBnxD,KAAKw3D,qBAAsB,EAC3Bx3D,KAAKy3D,cAAgBztC,KAAK,KAAMC,GAAG,KAAMytC,cACzC13D,KAAK23D,cAAgB,KAjEvB,GAAIh3D,GAAOT,EAAoB,GAC3BqD,EAAOrD,EAAoB,GAwE/BkD,GAAK2Q,UAAUm9C,cAAgB,SAASC,GAEtC,GADAnxD,KAAKoxD,YAAa,EACbD,EAAL,CAIA,GAAI3iD,IAAU,QAAQ,WAAW,WAAW,YAAY,WAAW,kBAAkB,kBAAkB,QACrG,2BAA2B,aAAa,mBAAmB,OAAO,eAAe,iBAAkB,UACnG,wBAAwB,eAsC1B,QApCA7N,EAAK6F,oBAAoBgI,EAAQxO,KAAK+O,QAASoiD,GAEvBtqD,SAApBsqD,EAAWnnC,OAA+BhqB,KAAKy2D,OAAStF,EAAWnnC,MACjDnjB,SAAlBsqD,EAAWlnC,KAA+BjqB,KAAKw2D,KAAOrF,EAAWlnC,IAE/CpjB,SAAlBsqD,EAAW9wD,KAA+BL,KAAKK,GAAK8wD,EAAW9wD,IAC1CwG,SAArBsqD,EAAWt+C,QAA+B7S,KAAK6S,MAAQs+C,EAAWt+C,MAAO7S,KAAKi3D,YAAa,GAEtEpwD,SAArBsqD,EAAW1qB,QAA6BzmC,KAAKymC,MAAQ0qB,EAAW1qB,OAC3C5/B,SAArBsqD,EAAW7sD,QAA6BtE,KAAKsE,MAAQ6sD,EAAW7sD,OAC1CuC,SAAtBsqD,EAAWnrD,SAA6BhG,KAAKigD,QAAQK,aAAe6Q,EAAWnrD,QAE1Da,SAArBsqD,EAAW/lD,QACbpL,KAAK+O,QAAQ+wC,cAAe,EACxBn/C,EAAK8D,SAAS0sD,EAAW/lD,QAC3BpL,KAAK+O,QAAQ3D,MAAMA,MAAQ+lD,EAAW/lD,MACtCpL,KAAK+O,QAAQ3D,MAAMwB,UAAYukD,EAAW/lD,QAGXvE,SAA3BsqD,EAAW/lD,MAAMA,QAA0BpL,KAAK+O,QAAQ3D,MAAMA,MAAQ+lD,EAAW/lD,MAAMA,OACxDvE,SAA/BsqD,EAAW/lD,MAAMwB,YAA0B5M,KAAK+O,QAAQ3D,MAAMwB,UAAYukD,EAAW/lD,MAAMwB,WAChE/F,SAA3BsqD,EAAW/lD,MAAMyB,QAA0B7M,KAAK+O,QAAQ3D,MAAMyB,MAAQskD,EAAW/lD,MAAMyB,SAO/F7M,KAAKg+C,UAELh+C,KAAKs3D,WAAat3D,KAAKs3D,YAAoCzwD,SAArBsqD,EAAWh+C,MACjDnT,KAAKu3D,YAAcv3D,KAAKu3D,aAAsC1wD,SAAtBsqD,EAAWnrD,OAEnDhG,KAAK82D,cAAgB92D,KAAK+O,QAAQoE,MAAOnT,KAAK+O,QAAQwwC,yBAG9Cv/C,KAAK+O,QAAQxB,OACnB,IAAK,OAAiBvN,KAAK+vC,KAAO/vC,KAAK43D,SAAW,MAClD,KAAK,QAAiB53D,KAAK+vC,KAAO/vC,KAAK63D,UAAY,MACnD,KAAK,eAAiB73D,KAAK+vC,KAAO/vC,KAAK83D,gBAAkB,MACzD,KAAK,YAAiB93D,KAAK+vC,KAAO/vC,KAAK+3D,aAAe,MACtD,SAAsB/3D,KAAK+vC,KAAO/vC,KAAK43D,aAQ3Cx0D,EAAK2Q,UAAUiqC,QAAU,WACvBh+C,KAAKwxD,aAELxxD,KAAKgqB,KAAOhqB,KAAKmD,QAAQg7C,MAAMn+C,KAAKy2D,SAAW,KAC/Cz2D,KAAKiqB,GAAKjqB,KAAKmD,QAAQg7C,MAAMn+C,KAAKw2D,OAAS,KAC3Cx2D,KAAKiwD,UAAajwD,KAAKgqB,MAAQhqB,KAAKiqB,GAEhCjqB,KAAKiwD,WACPjwD,KAAKgqB,KAAKguC,WAAWh4D,MACrBA,KAAKiqB,GAAG+tC,WAAWh4D,QAGfA,KAAKgqB,MACPhqB,KAAKgqB,KAAKiuC,WAAWj4D,MAEnBA,KAAKiqB,IACPjqB,KAAKiqB,GAAGguC,WAAWj4D,QAQzBoD,EAAK2Q,UAAUy9C,WAAa,WACtBxxD,KAAKgqB,OACPhqB,KAAKgqB,KAAKiuC,WAAWj4D,MACrBA,KAAKgqB,KAAO,MAEVhqB,KAAKiqB,KACPjqB,KAAKiqB,GAAGguC,WAAWj4D,MACnBA,KAAKiqB,GAAK,MAGZjqB,KAAKiwD,WAAY,GAQnB7sD,EAAK2Q,UAAU+7C,SAAW,WACxB,MAA6B,kBAAf9vD,MAAKymC,MAAuBzmC,KAAKymC,QAAUzmC,KAAKymC,OAQhErjC,EAAK2Q,UAAUyB,SAAW,WACxB,MAAOxV,MAAKsE,OASdlB,EAAK2Q,UAAUg+C,cAAgB,SAAS5tD,EAAKC,EAAKC,GAChD,IAAKrE,KAAKs3D,YAA6BzwD,SAAf7G,KAAKsE,MAAqB,CAChD,GAAIC,GAAQvE,KAAK+O,QAAQmvC,sBAAsB/5C,EAAKC,EAAKC,EAAOrE,KAAKsE,OACjE4zD,EAAYl4D,KAAK+O,QAAQiZ,SAAWhoB,KAAK+O,QAAQgZ,QACrD/nB,MAAK+O,QAAQoE,MAAQnT,KAAK+O,QAAQgZ,SAAWxjB,EAAQ2zD,EACrDl4D,KAAK82D,cAAgB92D,KAAK+O,QAAQoE,MAAOnT,KAAK+O,QAAQwwC,2BAU1Dn8C,EAAK2Q,UAAUg8B,KAAO,WACpB,KAAM,uCAQR3sC,EAAK2Q,UAAU87C,kBAAoB,SAASjsC,GAC1C,GAAI5jB,KAAKiwD,UAAW,CAClB,GAAIngC,GAAU,GACVqoC,EAAQn4D,KAAKgqB,KAAK3X,EAClB+lD,EAAQp4D,KAAKgqB,KAAK1X,EAClB+lD,EAAMr4D,KAAKiqB,GAAG5X,EACdimD,EAAMt4D,KAAKiqB,GAAG3X,EACdimD,EAAO30C,EAAI/b,KACX2wD,EAAO50C,EAAI3b,IAEX2jB,EAAO5rB,KAAKy4D,mBAAmBN,EAAOC,EAAOC,EAAKC,EAAKC,EAAMC,EAEjE,OAAe1oC,GAAPlE,EAGR,OAAO,GAIXxoB,EAAK2Q,UAAU2kD,UAAY,SAAS9wC,GAClC,GAAI+wC,GAAW34D,KAAK+O,QAAQ3D,KAC5B,IAAiC,GAA7BpL,KAAK+O,QAAQgxC,aAAsB,CACrC,GACI6Y,GAAWC,EADXC,EAAMlxC,EAAImxC,qBAAqB/4D,KAAKgqB,KAAK3X,EAAGrS,KAAKgqB,KAAK1X,EAAGtS,KAAKiqB,GAAG5X,EAAGrS,KAAKiqB,GAAG3X,EAkBhF,OAhBAsmD,GAAY54D,KAAKgqB,KAAKjb,QAAQ3D,MAAMwB,UAAUD,OAC9CksD,EAAU74D,KAAKiqB,GAAGlb,QAAQ3D,MAAMwB,UAAUD,OAGhB,GAAtB3M,KAAKgqB,KAAKyb,UAAyC,GAApBzlC,KAAKiqB,GAAGwb,UACzCmzB,EAAYj4D,EAAKwK,gBAAgBnL,KAAKgqB,KAAKjb,QAAQ3D,MAAMuB,OAAQ3M,KAAK+O,QAAQ1D,SAC9EwtD,EAAUl4D,EAAKwK,gBAAgBnL,KAAKiqB,GAAGlb,QAAQ3D,MAAMuB,OAAQ3M,KAAK+O,QAAQ1D,UAE7C,GAAtBrL,KAAKgqB,KAAKyb,UAAwC,GAApBzlC,KAAKiqB,GAAGwb,SAC7CozB,EAAU74D,KAAKiqB,GAAGlb,QAAQ3D,MAAMuB,OAEH,GAAtB3M,KAAKgqB,KAAKyb,UAAyC,GAApBzlC,KAAKiqB,GAAGwb,WAC9CmzB,EAAY54D,KAAKgqB,KAAKjb,QAAQ3D,MAAMuB,QAEtCmsD,EAAIE,aAAa,EAAGJ,GACpBE,EAAIE,aAAa,EAAGH,GACbC,EAwBT,MArBI94D,MAAKoxD,cAAe,IACW,MAA7BpxD,KAAK+O,QAAQ+wC,aACf6Y,GACE/rD,UAAW5M,KAAKiqB,GAAGlb,QAAQ3D,MAAMwB,UAAUD,OAC3CE,MAAO7M,KAAKiqB,GAAGlb,QAAQ3D,MAAMyB,MAAMF,OACnCvB,MAAOzK,EAAKwK,gBAAgBnL,KAAKgqB,KAAKjb,QAAQ3D,MAAMuB,OAAQ3M,KAAK+O,QAAQ1D,WAGvC,QAA7BrL,KAAK+O,QAAQ+wC,cAAuD,GAA7B9/C,KAAK+O,QAAQ+wC,gBAC3D6Y,GACE/rD,UAAW5M,KAAKgqB,KAAKjb,QAAQ3D,MAAMwB,UAAUD,OAC7CE,MAAO7M,KAAKgqB,KAAKjb,QAAQ3D,MAAMyB,MAAMF,OACrCvB,MAAOzK,EAAKwK,gBAAgBnL,KAAKgqB,KAAKjb,QAAQ3D,MAAMuB,OAAQ3M,KAAK+O,QAAQ1D,WAG7ErL,KAAK+O,QAAQ3D,MAAQutD,EACrB34D,KAAKoxD,YAAa,GAKC,GAAjBpxD,KAAKylC,SAA4BkzB,EAAS/rD,UACvB,GAAd5M,KAAK6M,MAAuB8rD,EAAS9rD,MACT8rD,EAASvtD,OAWhDhI,EAAK2Q,UAAU6jD,UAAY,SAAShwC,GAKlC,GAHAA,EAAIY,YAAcxoB,KAAK04D,UAAU9wC,GACjCA,EAAIO,UAAcnoB,KAAKi5D,gBAEnBj5D,KAAKgqB,MAAQhqB,KAAKiqB,GAAI,CAExB,GAGIxX,GAHAk/C,EAAM3xD,KAAKk5D,MAAMtxC,EAIrB,IAAI5nB,KAAK6S,MAAO,CACd,GAAyC,GAArC7S,KAAK+O,QAAQ0zC,aAAazzC,SAA0B,MAAP2iD,EAAa,CAC5D,GAAIwH,GAAY,IAAK,IAAKn5D,KAAKgqB,KAAK3X,EAAIs/C,EAAIt/C,GAAK,IAAKrS,KAAKiqB,GAAG5X,EAAIs/C,EAAIt/C,IAClE+mD,EAAY,IAAK,IAAKp5D,KAAKgqB,KAAK1X,EAAIq/C,EAAIr/C,GAAK,IAAKtS,KAAKiqB,GAAG3X,EAAIq/C,EAAIr/C,GACtEG,IAASJ,EAAE8mD,EAAW7mD,EAAE8mD,OAGxB3mD,GAAQzS,KAAKq5D,aAAa,GAE5Br5D,MAAKs5D,OAAO1xC,EAAK5nB,KAAK6S,MAAOJ,EAAMJ,EAAGI,EAAMH,QAG3C,CACH,GAAID,GAAGC,EACH6Z,EAASnsB,KAAKigD,QAAQK,aAAe,EACrCqH,EAAO3nD,KAAKgqB,IACX29B,GAAKx0C,OACRw0C,EAAK4R,OAAO3xC,GAEV+/B,EAAKx0C,MAAQw0C,EAAKv0C,QACpBf,EAAIs1C,EAAKt1C,EAAIs1C,EAAKx0C,MAAQ,EAC1Bb,EAAIq1C,EAAKr1C,EAAI6Z,IAGb9Z,EAAIs1C,EAAKt1C,EAAI8Z,EACb7Z,EAAIq1C,EAAKr1C,EAAIq1C,EAAKv0C,OAAS,GAE7BpT,KAAKw5D,QAAQ5xC,EAAKvV,EAAGC,EAAG6Z,GACxB1Z,EAAQzS,KAAKy5D,eAAepnD,EAAGC,EAAG6Z,EAAQ,IAC1CnsB,KAAKs5D,OAAO1xC,EAAK5nB,KAAK6S,MAAOJ,EAAMJ,EAAGI,EAAMH,KAUhDlP,EAAK2Q,UAAUklD,cAAgB,WAC7B,MAAqB,IAAjBj5D,KAAKylC,SACCjhC,KAAKJ,IAAII,KAAKL,IAAInE,KAAK82D,cAAe92D,KAAK+O,QAAQiZ,UAAW,GAAIhoB,KAAK05D,iBAG7D,GAAd15D,KAAK6M,MACArI,KAAKJ,IAAII,KAAKL,IAAInE,KAAK+O,QAAQywC,WAAYx/C,KAAK+O,QAAQiZ,UAAW,GAAIhoB,KAAK05D,iBAG5El1D,KAAKJ,IAAIpE,KAAK+O,QAAQoE,MAAO,GAAInT,KAAK05D,kBAKnDt2D,EAAK2Q,UAAU4lD,mBAAqB,WAClC,GAAyC,GAArC35D,KAAK+O,QAAQ0zC,aAAaC,SAAwD,GAArC1iD,KAAK+O,QAAQ0zC,aAAazzC,QACzE,MAAOhP,MAAK2xD,GAET,IAAyC,GAArC3xD,KAAK+O,QAAQ0zC,aAAazzC,QACjC,OAAQqD,EAAE,EAAEC,EAAE,EAGd,IAAIsnD,GAAO,KACPC,EAAO,KACPpR,EAASzoD,KAAK+O,QAAQ0zC,aAAaE,UACnCx7C,EAAOnH,KAAK+O,QAAQ0zC,aAAat7C,KACjCsY,EAAKjb,KAAK+mB,IAAIvrB,KAAKgqB,KAAK3X,EAAIrS,KAAKiqB,GAAG5X,GACpCqN,EAAKlb,KAAK+mB,IAAIvrB,KAAKgqB,KAAK1X,EAAItS,KAAKiqB,GAAG3X,EACxC,IAAY,YAARnL,GAA8B,iBAARA,EACpB3C,KAAK+mB,IAAIvrB,KAAKgqB,KAAK3X,EAAIrS,KAAKiqB,GAAG5X,GAAK7N,KAAK+mB,IAAIvrB,KAAKgqB,KAAK1X,EAAItS,KAAKiqB,GAAG3X,IACjEtS,KAAKgqB,KAAK1X,EAAItS,KAAKiqB,GAAG3X,EACpBtS,KAAKgqB,KAAK3X,EAAIrS,KAAKiqB,GAAG5X,GACxBunD,EAAO55D,KAAKgqB,KAAK3X,EAAIo2C,EAAS/oC,EAC9Bm6C,EAAO75D,KAAKgqB,KAAK1X,EAAIm2C,EAAS/oC,GAEvB1f,KAAKgqB,KAAK3X,EAAIrS,KAAKiqB,GAAG5X,IAC7BunD,EAAO55D,KAAKgqB,KAAK3X,EAAIo2C,EAAS/oC,EAC9Bm6C,EAAO75D,KAAKgqB,KAAK1X,EAAIm2C,EAAS/oC,GAGzB1f,KAAKgqB,KAAK1X,EAAItS,KAAKiqB,GAAG3X,IACzBtS,KAAKgqB,KAAK3X,EAAIrS,KAAKiqB,GAAG5X,GACxBunD,EAAO55D,KAAKgqB,KAAK3X,EAAIo2C,EAAS/oC,EAC9Bm6C,EAAO75D,KAAKgqB,KAAK1X,EAAIm2C,EAAS/oC,GAEvB1f,KAAKgqB,KAAK3X,EAAIrS,KAAKiqB,GAAG5X,IAC7BunD,EAAO55D,KAAKgqB,KAAK3X,EAAIo2C,EAAS/oC,EAC9Bm6C,EAAO75D,KAAKgqB,KAAK1X,EAAIm2C,EAAS/oC,IAGtB,YAARvY,IACFyyD,EAAYnR,EAAS/oC,EAAdD,EAAmBzf,KAAKgqB,KAAK3X,EAAIunD,IAGnCp1D,KAAK+mB,IAAIvrB,KAAKgqB,KAAK3X,EAAIrS,KAAKiqB,GAAG5X,GAAK7N,KAAK+mB,IAAIvrB,KAAKgqB,KAAK1X,EAAItS,KAAKiqB,GAAG3X,KACtEtS,KAAKgqB,KAAK1X,EAAItS,KAAKiqB,GAAG3X,EACpBtS,KAAKgqB,KAAK3X,EAAIrS,KAAKiqB,GAAG5X,GACxBunD,EAAO55D,KAAKgqB,KAAK3X,EAAIo2C,EAAShpC,EAC9Bo6C,EAAO75D,KAAKgqB,KAAK1X,EAAIm2C,EAAShpC,GAEvBzf,KAAKgqB,KAAK3X,EAAIrS,KAAKiqB,GAAG5X,IAC7BunD,EAAO55D,KAAKgqB,KAAK3X,EAAIo2C,EAAShpC,EAC9Bo6C,EAAO75D,KAAKgqB,KAAK1X,EAAIm2C,EAAShpC,GAGzBzf,KAAKgqB,KAAK1X,EAAItS,KAAKiqB,GAAG3X,IACzBtS,KAAKgqB,KAAK3X,EAAIrS,KAAKiqB,GAAG5X,GACxBunD,EAAO55D,KAAKgqB,KAAK3X,EAAIo2C,EAAShpC,EAC9Bo6C,EAAO75D,KAAKgqB,KAAK1X,EAAIm2C,EAAShpC,GAEvBzf,KAAKgqB,KAAK3X,EAAIrS,KAAKiqB,GAAG5X,IAC7BunD,EAAO55D,KAAKgqB,KAAK3X,EAAIo2C,EAAShpC,EAC9Bo6C,EAAO75D,KAAKgqB,KAAK1X,EAAIm2C,EAAShpC,IAGtB,YAARtY,IACF0yD,EAAYpR,EAAShpC,EAAdC,EAAmB1f,KAAKgqB,KAAK1X,EAAIunD,QAIzC,IAAY,iBAAR1yD,EACH3C,KAAK+mB,IAAIvrB,KAAKgqB,KAAK3X,EAAIrS,KAAKiqB,GAAG5X,GAAK7N,KAAK+mB,IAAIvrB,KAAKgqB,KAAK1X,EAAItS,KAAKiqB,GAAG3X,IACrEsnD,EAAO55D,KAAKgqB,KAAK3X,EAEfwnD,EADE75D,KAAKgqB,KAAK1X,EAAItS,KAAKiqB,GAAG3X,EACjBtS,KAAKiqB,GAAG3X,GAAK,EAAIm2C,GAAU/oC,EAG3B1f,KAAKiqB,GAAG3X,GAAK,EAAIm2C,GAAU/oC,GAG7Blb,KAAK+mB,IAAIvrB,KAAKgqB,KAAK3X,EAAIrS,KAAKiqB,GAAG5X,GAAK7N,KAAK+mB,IAAIvrB,KAAKgqB,KAAK1X,EAAItS,KAAKiqB,GAAG3X,KAExEsnD,EADE55D,KAAKgqB,KAAK3X,EAAIrS,KAAKiqB,GAAG5X,EACjBrS,KAAKiqB,GAAG5X,GAAK,EAAIo2C,GAAUhpC,EAG3Bzf,KAAKiqB,GAAG5X,GAAK,EAAIo2C,GAAUhpC,EAEpCo6C,EAAO75D,KAAKgqB,KAAK1X,OAGhB,IAAY,cAARnL,EAELyyD,EADE55D,KAAKgqB,KAAK3X,EAAIrS,KAAKiqB,GAAG5X,EACjBrS,KAAKiqB,GAAG5X,GAAK,EAAIo2C,GAAUhpC,EAG3Bzf,KAAKiqB,GAAG5X,GAAK,EAAIo2C,GAAUhpC,EAEpCo6C,EAAO75D,KAAKgqB,KAAK1X,MAEd,IAAY,YAARnL,EACPyyD,EAAO55D,KAAKgqB,KAAK3X,EAEfwnD,EADE75D,KAAKgqB,KAAK1X,EAAItS,KAAKiqB,GAAG3X,EACjBtS,KAAKiqB,GAAG3X,GAAK,EAAIm2C,GAAU/oC,EAG3B1f,KAAKiqB,GAAG3X,GAAK,EAAIm2C,GAAU/oC,MAGjC,IAAY,YAARvY,EAAoB,CAC3B,GAAIsY,GAAKzf,KAAKiqB,GAAG5X,EAAIrS,KAAKgqB,KAAK3X,EAC3BqN,EAAK1f,KAAKgqB,KAAK1X,EAAItS,KAAKiqB,GAAG3X,EAC3B6Z,EAAS3nB,KAAK6rB,KAAK5Q,EAAGA,EAAKC,EAAGA,GAC9Bo6C,EAAKt1D,KAAK6nB,GAEV0tC,EAAgBv1D,KAAKw1D,MAAMt6C,EAAGD,GAC9Bw6C,GAAWF,GAA2B,GAATtR,EAAgB,IAAOqR,IAAO,EAAIA,EAEnEF,GAAO55D,KAAKgqB,KAAK3X,GAAY,GAAPo2C,EAAa,IAAKt8B,EAAO3nB,KAAKya,IAAIg7C,GACxDJ,EAAO75D,KAAKgqB,KAAK1X,GAAY,GAAPm2C,EAAa,IAAKt8B,EAAO3nB,KAAK4a,IAAI66C,OAErD,IAAY,aAAR9yD,EAAqB,CAC5B,GAAIsY,GAAKzf,KAAKiqB,GAAG5X,EAAIrS,KAAKgqB,KAAK3X,EAC3BqN,EAAK1f,KAAKgqB,KAAK1X,EAAItS,KAAKiqB,GAAG3X,EAC3B6Z,EAAS3nB,KAAK6rB,KAAK5Q,EAAGA,EAAKC,EAAGA,GAC9Bo6C,EAAKt1D,KAAK6nB,GAEV0tC,EAAgBv1D,KAAKw1D,MAAMt6C,EAAGD,GAC9Bw6C,GAAWF,GAA4B,IAATtR,EAAgB,IAAOqR,IAAO,EAAIA,EAEpEF,GAAO55D,KAAKgqB,KAAK3X,GAAY,GAAPo2C,EAAa,IAAKt8B,EAAO3nB,KAAKya,IAAIg7C,GACxDJ,EAAO75D,KAAKgqB,KAAK1X,GAAY,GAAPm2C,EAAa,IAAKt8B,EAAO3nB,KAAK4a,IAAI66C,OAGpDz1D,MAAK+mB,IAAIvrB,KAAKgqB,KAAK3X,EAAIrS,KAAKiqB,GAAG5X,GAAK7N,KAAK+mB,IAAIvrB,KAAKgqB,KAAK1X,EAAItS,KAAKiqB,GAAG3X,GACjEtS,KAAKgqB,KAAK1X,EAAItS,KAAKiqB,GAAG3X,EACpBtS,KAAKgqB,KAAK3X,EAAIrS,KAAKiqB,GAAG5X,GACxBunD,EAAO55D,KAAKgqB,KAAK3X,EAAIo2C,EAAS/oC,EAC9Bm6C,EAAO75D,KAAKgqB,KAAK1X,EAAIm2C,EAAS/oC,EAC9Bk6C,EAAO55D,KAAKiqB,GAAG5X,EAAIunD,EAAO55D,KAAKiqB,GAAG5X,EAAIunD,GAE/B55D,KAAKgqB,KAAK3X,EAAIrS,KAAKiqB,GAAG5X,IAC7BunD,EAAO55D,KAAKgqB,KAAK3X,EAAIo2C,EAAS/oC,EAC9Bm6C,EAAO75D,KAAKgqB,KAAK1X,EAAIm2C,EAAS/oC,EAC9Bk6C,EAAO55D,KAAKiqB,GAAG5X,EAAIunD,EAAO55D,KAAKiqB,GAAG5X,EAAIunD,GAGjC55D,KAAKgqB,KAAK1X,EAAItS,KAAKiqB,GAAG3X,IACzBtS,KAAKgqB,KAAK3X,EAAIrS,KAAKiqB,GAAG5X,GACxBunD,EAAO55D,KAAKgqB,KAAK3X,EAAIo2C,EAAS/oC,EAC9Bm6C,EAAO75D,KAAKgqB,KAAK1X,EAAIm2C,EAAS/oC,EAC9Bk6C,EAAO55D,KAAKiqB,GAAG5X,EAAIunD,EAAO55D,KAAKiqB,GAAG5X,EAAIunD,GAE/B55D,KAAKgqB,KAAK3X,EAAIrS,KAAKiqB,GAAG5X,IAC7BunD,EAAO55D,KAAKgqB,KAAK3X,EAAIo2C,EAAS/oC,EAC9Bm6C,EAAO75D,KAAKgqB,KAAK1X,EAAIm2C,EAAS/oC,EAC9Bk6C,EAAO55D,KAAKiqB,GAAG5X,EAAIunD,EAAO55D,KAAKiqB,GAAG5X,EAAIunD,IAInCp1D,KAAK+mB,IAAIvrB,KAAKgqB,KAAK3X,EAAIrS,KAAKiqB,GAAG5X,GAAK7N,KAAK+mB,IAAIvrB,KAAKgqB,KAAK1X,EAAItS,KAAKiqB,GAAG3X,KACtEtS,KAAKgqB,KAAK1X,EAAItS,KAAKiqB,GAAG3X,EACpBtS,KAAKgqB,KAAK3X,EAAIrS,KAAKiqB,GAAG5X,GACxBunD,EAAO55D,KAAKgqB,KAAK3X,EAAIo2C,EAAShpC,EAC9Bo6C,EAAO75D,KAAKgqB,KAAK1X,EAAIm2C,EAAShpC,EAC9Bo6C,EAAO75D,KAAKiqB,GAAG3X,EAAIunD,EAAO75D,KAAKiqB,GAAG3X,EAAIunD,GAE/B75D,KAAKgqB,KAAK3X,EAAIrS,KAAKiqB,GAAG5X,IAC7BunD,EAAO55D,KAAKgqB,KAAK3X,EAAIo2C,EAAShpC,EAC9Bo6C,EAAO75D,KAAKgqB,KAAK1X,EAAIm2C,EAAShpC,EAC9Bo6C,EAAO75D,KAAKiqB,GAAG3X,EAAIunD,EAAO75D,KAAKiqB,GAAG3X,EAAIunD,GAGjC75D,KAAKgqB,KAAK1X,EAAItS,KAAKiqB,GAAG3X,IACzBtS,KAAKgqB,KAAK3X,EAAIrS,KAAKiqB,GAAG5X,GACxBunD,EAAO55D,KAAKgqB,KAAK3X,EAAIo2C,EAAShpC,EAC9Bo6C,EAAO75D,KAAKgqB,KAAK1X,EAAIm2C,EAAShpC,EAC9Bo6C,EAAO75D,KAAKiqB,GAAG3X,EAAIunD,EAAO75D,KAAKiqB,GAAG3X,EAAIunD,GAE/B75D,KAAKgqB,KAAK3X,EAAIrS,KAAKiqB,GAAG5X,IAC7BunD,EAAO55D,KAAKgqB,KAAK3X,EAAIo2C,EAAShpC,EAC9Bo6C,EAAO75D,KAAKgqB,KAAK1X,EAAIm2C,EAAShpC,EAC9Bo6C,EAAO75D,KAAKiqB,GAAG3X,EAAIunD,EAAO75D,KAAKiqB,GAAG3X,EAAIunD,IAO9C,QAAQxnD,EAAGunD,EAAMtnD,EAAGunD,IASxBz2D,EAAK2Q,UAAUmlD,MAAQ,SAAUtxC,GAI/B,GAFAA,EAAIa,YACJb,EAAIc,OAAO1oB,KAAKgqB,KAAK3X,EAAGrS,KAAKgqB,KAAK1X,GACO,GAArCtS,KAAK+O,QAAQ0zC,aAAazzC,QAAiB,CAC7C,GAAyC,GAArChP,KAAK+O,QAAQ0zC,aAAaC,QAAkB,CAC9C,GAAIiP,GAAM3xD,KAAK25D,oBACf,OAAa,OAAThI,EAAIt/C,GACNuV,EAAIe,OAAO3oB,KAAKiqB,GAAG5X,EAAGrS,KAAKiqB,GAAG3X,GAC9BsV,EAAIlH,SACG,OAKPkH,EAAIsyC,iBAAiBvI,EAAIt/C,EAAEs/C,EAAIr/C,EAAEtS,KAAKiqB,GAAG5X,EAAGrS,KAAKiqB,GAAG3X,GACpDsV,EAAIlH,SAGGixC,GAMT,MAFA/pC,GAAIsyC,iBAAiBl6D,KAAK2xD,IAAIt/C,EAAErS,KAAK2xD,IAAIr/C,EAAEtS,KAAKiqB,GAAG5X,EAAGrS,KAAKiqB,GAAG3X,GAC9DsV,EAAIlH,SACG1gB,KAAK2xD,IAMd,MAFA/pC,GAAIe,OAAO3oB,KAAKiqB,GAAG5X,EAAGrS,KAAKiqB,GAAG3X,GAC9BsV,EAAIlH,SACG,MAYXtd,EAAK2Q,UAAUylD,QAAU,SAAU5xC,EAAKvV,EAAGC,EAAG6Z,GAE5CvE,EAAIa,YACJb,EAAIwE,IAAI/Z,EAAGC,EAAG6Z,EAAQ,EAAG,EAAI3nB,KAAK6nB,IAAI,GACtCzE,EAAIlH,UAWNtd,EAAK2Q,UAAUulD,OAAS,SAAU1xC,EAAKuC,EAAM9X,EAAGC,GAC9C,GAAI6X,EAAM,CACRvC,EAAIQ,MAASpoB,KAAKgqB,KAAKyb,UAAYzlC,KAAKiqB,GAAGwb,SAAY,QAAU,IACjEzlC,KAAK+O,QAAQ2vC,SAAW,MAAQ1+C,KAAK+O,QAAQ4vC,QAC7C,IAAIqY,EAEJ,IAAuB,GAAnBh3D,KAAKi3D,WAAoB,CAC3B,GAAIvsB,GAAQhmC,OAAOylB,GAAM7hB,MAAM,MAC3B6xD,EAAYzvB,EAAM1kC,OAClB04C,EAAWz6C,OAAOjE,KAAK+O,QAAQ2vC,SACnCsY,GAAQ1kD,GAAK,EAAI6nD,GAAa,EAAIzb,CAGlC,KAAK,GADDvrC,GAAQyU,EAAIwyC,YAAY1vB,EAAM,IAAIv3B,MAC7BtN,EAAI,EAAOs0D,EAAJt0D,EAAeA,IAAK,CAClC,GAAIsiB,GAAYP,EAAIwyC,YAAY1vB,EAAM7kC,IAAIsN,KAC1CA,GAAQgV,EAAYhV,EAAQgV,EAAYhV,EAE1C,GAAIC,GAASpT,KAAK+O,QAAQ2vC,SAAWyb,EACjCtyD,EAAOwK,EAAIc,EAAQ,EACnBlL,EAAMqK,EAAIc,EAAS,CAGvBpT,MAAK+2D,iBAAmB9uD,IAAIA,EAAIJ,KAAKA,EAAKsL,MAAMA,EAAMC,OAAOA,EAAO4jD,MAAMA,GAG/E,GAAIA,GAAQh3D,KAAK+2D,gBAAgBC,KAEjCpvC,GAAIsqC,OAE+B,cAA/BlyD,KAAK+O,QAAQ0wC,iBAChB73B,EAAIuqC,UAAU9/C,EAAG2kD,GACjBh3D,KAAKq6D,yBAAyBzyC,GAC9BvV,EAAI,EACJ2kD,EAAQ,GAITh3D,KAAKs6D,eAAe1yC,GACpB5nB,KAAKu6D,eAAe3yC,EAAIvV,EAAE2kD,EAAOtsB,EAAOyvB,EAAWzb,GAEnD92B,EAAIyqC,YASLjvD,EAAK2Q,UAAUsmD,yBAA2B,SAASzyC,GAClD,GAAIlI,GAAK1f,KAAKgqB,KAAK1X,EAAItS,KAAKiqB,GAAG3X,EAC3BmN,EAAKzf,KAAKgqB,KAAK3X,EAAIrS,KAAKiqB,GAAG5X,EAC3BmoD,EAAiBh2D,KAAKw1D,MAAMt6C,EAAID,IAGf,GAAjB+6C,GAA4B,EAAL/6C,GAAY+6C,EAAiB,GAAU,EAAL/6C,KAC5D+6C,GAAkCh2D,KAAK6nB,IAGxCzE,EAAI6yC,OAAOD,IASZp3D,EAAK2Q,UAAUumD,eAAiB,SAAS1yC,GACxC,GAA8B/gB,SAA1B7G,KAAK+O,QAAQ6vC,UAAoD,OAA1B5+C,KAAK+O,QAAQ6vC,UAA+C,SAA1B5+C,KAAK+O,QAAQ6vC,SAAqB,CAC9Gh3B,EAAIiB,UAAY7oB,KAAK+O,QAAQ6vC,QAE7B,IAAI8b,GAAa,CAEoB,gBAA/B16D,KAAK+O,QAAQ0wC,eACf73B,EAAI+yC,SAAuC,IAA7B36D,KAAK+2D,gBAAgB5jD,MAA4C,IAA9BnT,KAAK+2D,gBAAgB3jD,OAAcpT,KAAK+2D,gBAAgB5jD,MAAOnT,KAAK+2D,gBAAgB3jD,QAE/F,cAA/BpT,KAAK+O,QAAQ0wC,eACpB73B,EAAI+yC,SAAuC,IAA7B36D,KAAK+2D,gBAAgB5jD,QAAenT,KAAK+2D,gBAAgB3jD,OAASsnD,GAAa16D,KAAK+2D,gBAAgB5jD,MAAOnT,KAAK+2D,gBAAgB3jD,QAExG,cAA/BpT,KAAK+O,QAAQ0wC,eACpB73B,EAAI+yC,SAAuC,IAA7B36D,KAAK+2D,gBAAgB5jD,MAAaunD,EAAY16D,KAAK+2D,gBAAgB5jD,MAAOnT,KAAK+2D,gBAAgB3jD,QAG7GwU,EAAI+yC,SAAS36D,KAAK+2D,gBAAgBlvD,KAAM7H,KAAK+2D,gBAAgB9uD,IAAKjI,KAAK+2D,gBAAgB5jD,MAAOnT,KAAK+2D,gBAAgB3jD,UAezHhQ,EAAK2Q,UAAUwmD,eAAiB,SAAS3yC,EAAKvV,EAAG2kD,EAAOtsB,EAAOyvB,EAAWzb,GAMxE,GAJD92B,EAAIiB,UAAY7oB,KAAK+O,QAAQ0vC,WAAa,QAC1C72B,EAAIuB,UAAY,SAGoB,cAA/BnpB,KAAK+O,QAAQ0wC,eAAgC,CAC/C,GAAIib,GAAa,CACkB,eAA/B16D,KAAK+O,QAAQ0wC,gBACf73B,EAAIwB,aAAe,aACnB4tC,GAAS,EAAI0D,GAEyB,cAA/B16D,KAAK+O,QAAQ0wC,gBACpB73B,EAAIwB,aAAe,UACnB4tC,GAAS,EAAI0D,GAGb9yC,EAAIwB,aAAe,aAIrBxB,GAAIwB,aAAe,QAIjBppB,MAAK+O,QAAQ8vC,gBAAkB,IACjCj3B,EAAIO,UAAcnoB,KAAK+O,QAAQ8vC,gBAC/Bj3B,EAAIY,YAAcxoB,KAAK+O,QAAQ+vC,gBAC/Bl3B,EAAIgzC,SAAc,QAErB,KAAK,GAAI/0D,GAAI,EAAOs0D,EAAJt0D,EAAeA,IACzB7F,KAAK+O,QAAQ8vC,gBAAkB,GAChCj3B,EAAIizC,WAAWnwB,EAAM7kC,GAAIwM,EAAG2kD,GAEhCpvC,EAAIyB,SAASqhB,EAAM7kC,GAAIwM,EAAG2kD,GAC1BA,GAAStY,GAaXt7C,EAAK2Q,UAAUgkD,cAAgB,SAASnwC,GAEtCA,EAAIY,YAAcxoB,KAAK04D,UAAU9wC,GACjCA,EAAIO,UAAYnoB,KAAKi5D,eAErB,IAAItH,GAAM,IAEV,IAAwB9qD,SAApB+gB,EAAIkzC,YAA2B,CACjClzC,EAAIsqC,MAEJ,IAAI6I,IAAW,EAEbA,GAD+Bl0D,SAA7B7G,KAAK+O,QAAQ4wC,KAAK35C,QAAkDa,SAA1B7G,KAAK+O,QAAQ4wC,KAAKC,KACnD5/C,KAAK+O,QAAQ4wC,KAAK35C,OAAOhG,KAAK+O,QAAQ4wC,KAAKC,MAG3C,EAAE,GAIfh4B,EAAIkzC,YAAYC,GAChBnzC,EAAIozC,eAAiB,EAGrBrJ,EAAM3xD,KAAKk5D,MAAMtxC,GAGjBA,EAAIkzC,aAAa,IACjBlzC,EAAIozC,eAAiB,EACrBpzC,EAAIyqC,cAIJzqC,GAAIa,YACJb,EAAIqzC,QAAU,QACsBp0D,SAAhC7G,KAAK+O,QAAQ4wC,KAAKE,UAEpBj4B,EAAIszC,WAAWl7D,KAAKgqB,KAAK3X,EAAErS,KAAKgqB,KAAK1X,EAAEtS,KAAKiqB,GAAG5X,EAAErS,KAAKiqB,GAAG3X,GACpDtS,KAAK+O,QAAQ4wC,KAAK35C,OAAOhG,KAAK+O,QAAQ4wC,KAAKC,IAAI5/C,KAAK+O,QAAQ4wC,KAAKE,UAAU7/C,KAAK+O,QAAQ4wC,KAAKC,MAE9D/4C,SAA7B7G,KAAK+O,QAAQ4wC,KAAK35C,QAAkDa,SAA1B7G,KAAK+O,QAAQ4wC,KAAKC,IAEnEh4B,EAAIszC,WAAWl7D,KAAKgqB,KAAK3X,EAAErS,KAAKgqB,KAAK1X,EAAEtS,KAAKiqB,GAAG5X,EAAErS,KAAKiqB,GAAG3X,GACpDtS,KAAK+O,QAAQ4wC,KAAK35C,OAAOhG,KAAK+O,QAAQ4wC,KAAKC,OAIhDh4B,EAAIc,OAAO1oB,KAAKgqB,KAAK3X,EAAGrS,KAAKgqB,KAAK1X,GAClCsV,EAAIe,OAAO3oB,KAAKiqB,GAAG5X,EAAGrS,KAAKiqB,GAAG3X,IAEhCsV,EAAIlH,QAIN,IAAI1gB,KAAK6S,MAAO,CACd,GAAIJ,EACJ,IAAyC,GAArCzS,KAAK+O,QAAQ0zC,aAAazzC,SAA0B,MAAP2iD,EAAa,CAC5D,GAAIwH,GAAY,IAAK,IAAKn5D,KAAKgqB,KAAK3X,EAAIs/C,EAAIt/C,GAAK,IAAKrS,KAAKiqB,GAAG5X,EAAIs/C,EAAIt/C,IAClE+mD,EAAY,IAAK,IAAKp5D,KAAKgqB,KAAK1X,EAAIq/C,EAAIr/C,GAAK,IAAKtS,KAAKiqB,GAAG3X,EAAIq/C,EAAIr/C,GACtEG,IAASJ,EAAE8mD,EAAW7mD,EAAE8mD,OAGxB3mD,GAAQzS,KAAKq5D,aAAa,GAE5Br5D,MAAKs5D,OAAO1xC,EAAK5nB,KAAK6S,MAAOJ,EAAMJ,EAAGI,EAAMH,KAUhDlP,EAAK2Q,UAAUslD,aAAe,SAAU8B,GACtC,OACE9oD,GAAI,EAAI8oD,GAAcn7D,KAAKgqB,KAAK3X,EAAI8oD,EAAan7D,KAAKiqB,GAAG5X,EACzDC,GAAI,EAAI6oD,GAAcn7D,KAAKgqB,KAAK1X,EAAI6oD,EAAan7D,KAAKiqB,GAAG3X,IAa7DlP,EAAK2Q,UAAU0lD,eAAiB,SAAUpnD,EAAGC,EAAG6Z,EAAQgvC,GACtD,GAAItK,GAA6B,GAApBsK,EAAa,EAAE,GAAS32D,KAAK6nB,EAC1C,QACEha,EAAGA,EAAI8Z,EAAS3nB,KAAK4a,IAAIyxC,GACzBv+C,EAAGA,EAAI6Z,EAAS3nB,KAAKya,IAAI4xC,KAW7BztD,EAAK2Q,UAAU+jD,iBAAmB,SAASlwC,GACzC,GAAInV,EAMJ,IAJAmV,EAAIY,YAAcxoB,KAAK04D,UAAU9wC,GACjCA,EAAIiB,UAAYjB,EAAIY,YACpBZ,EAAIO,UAAYnoB,KAAKi5D,gBAEjBj5D,KAAKgqB,MAAQhqB,KAAKiqB,GAAI,CAExB,GAAI0nC,GAAM3xD,KAAKk5D,MAAMtxC,GAEjBipC,EAAQrsD,KAAKw1D,MAAOh6D,KAAKiqB,GAAG3X,EAAItS,KAAKgqB,KAAK1X,EAAKtS,KAAKiqB,GAAG5X,EAAIrS,KAAKgqB,KAAK3X,GACrErM,GAAU,GAAK,EAAIhG,KAAK+O,QAAQoE,OAASnT,KAAK+O,QAAQ2wC,gBAE1D,IAAyC,GAArC1/C,KAAK+O,QAAQ0zC,aAAazzC,SAA0B,MAAP2iD,EAAa,CAC5D,GAAIwH,GAAY,IAAK,IAAKn5D,KAAKgqB,KAAK3X,EAAIs/C,EAAIt/C,GAAK,IAAKrS,KAAKiqB,GAAG5X,EAAIs/C,EAAIt/C,IAClE+mD,EAAY,IAAK,IAAKp5D,KAAKgqB,KAAK1X,EAAIq/C,EAAIr/C,GAAK,IAAKtS,KAAKiqB,GAAG3X,EAAIq/C,EAAIr/C,GACtEG,IAASJ,EAAE8mD,EAAW7mD,EAAE8mD,OAGxB3mD,GAAQzS,KAAKq5D,aAAa,GAG5BzxC,GAAIwzC,MAAM3oD,EAAMJ,EAAGI,EAAMH,EAAGu+C,EAAO7qD,GACnC4hB,EAAInH,OACJmH,EAAIlH,SAGA1gB,KAAK6S,OACP7S,KAAKs5D,OAAO1xC,EAAK5nB,KAAK6S,MAAOJ,EAAMJ,EAAGI,EAAMH,OAG3C,CAEH,GAAID,GAAGC,EACH6Z,EAAS,IAAO3nB,KAAKJ,IAAI,IAAIpE,KAAKigD,QAAQK,cAC1CqH,EAAO3nD,KAAKgqB,IACX29B,GAAKx0C,OACRw0C,EAAK4R,OAAO3xC,GAEV+/B,EAAKx0C,MAAQw0C,EAAKv0C,QACpBf,EAAIs1C,EAAKt1C,EAAiB,GAAbs1C,EAAKx0C,MAClBb,EAAIq1C,EAAKr1C,EAAI6Z,IAGb9Z,EAAIs1C,EAAKt1C,EAAI8Z,EACb7Z,EAAIq1C,EAAKr1C,EAAkB,GAAdq1C,EAAKv0C,QAEpBpT,KAAKw5D,QAAQ5xC,EAAKvV,EAAGC,EAAG6Z,EAGxB,IAAI0kC,GAAQ,GAAMrsD,KAAK6nB,GACnBrmB,GAAU,GAAK,EAAIhG,KAAK+O,QAAQoE,OAASnT,KAAK+O,QAAQ2wC,gBAC1DjtC,GAAQzS,KAAKy5D,eAAepnD,EAAGC,EAAG6Z,EAAQ,IAC1CvE,EAAIwzC,MAAM3oD,EAAMJ,EAAGI,EAAMH,EAAGu+C,EAAO7qD,GACnC4hB,EAAInH,OACJmH,EAAIlH,SAGA1gB,KAAK6S,QACPJ,EAAQzS,KAAKy5D,eAAepnD,EAAGC,EAAG6Z,EAAQ,IAC1CnsB,KAAKs5D,OAAO1xC,EAAK5nB,KAAK6S,MAAOJ,EAAMJ,EAAGI,EAAMH,MAKlDlP,EAAK2Q,UAAUsnD,eAAiB,SAASjtD,GACvC,GAAIujD,GAAM3xD,KAAK25D,qBAEXtnD,EAAI7N,KAAK+vB,IAAI,EAAEnmB,EAAE,GAAGpO,KAAKgqB,KAAK3X,EAAK,EAAEjE,GAAG,EAAIA,GAAIujD,EAAIt/C,EAAI7N,KAAK+vB,IAAInmB,EAAE,GAAGpO,KAAKiqB,GAAG5X,EAC9EC,EAAI9N,KAAK+vB,IAAI,EAAEnmB,EAAE,GAAGpO,KAAKgqB,KAAK1X,EAAK,EAAElE,GAAG,EAAIA,GAAIujD,EAAIr/C,EAAI9N,KAAK+vB,IAAInmB,EAAE,GAAGpO,KAAKiqB,GAAG3X,CAElF,QAAQD,EAAEA,EAAEC,EAAEA,IAWhBlP,EAAK2Q,UAAUunD,oBAAsB,SAAStxC,EAAKpC,GACjD,GAIIxB,GAAIyqC,EAAM0K,EAAkBC,EAAiBC,EAJ7CnsD,EAAgB,GAChBC,EAAY,EACZC,EAAM,EACNC,EAAO,EAEPisD,EAAY,GACZ/T,EAAO3nD,KAAKiqB,EAKhB,KAJY,GAARD,IACF29B,EAAO3nD,KAAKgqB,MAGAva,GAAPD,GAA2BF,EAAZC,GAA2B,CAC/C,GAAIG,GAAwB,IAAdF,EAAMC,EAOpB,IALA2W,EAAMpmB,KAAKq7D,eAAe3rD,GAC1BmhD,EAAQrsD,KAAKw1D,MAAOrS,EAAKr1C,EAAI8T,EAAI9T,EAAKq1C,EAAKt1C,EAAI+T,EAAI/T,GACnDkpD,EAAmB5T,EAAK4T,iBAAiB3zC,EAAIipC,GAC7C2K,EAAkBh3D,KAAK6rB,KAAK7rB,KAAK+vB,IAAInO,EAAI/T,EAAEs1C,EAAKt1C,EAAE,GAAK7N,KAAK+vB,IAAInO,EAAI9T,EAAEq1C,EAAKr1C,EAAE,IAC7EmpD,EAAaF,EAAmBC,EAC5Bh3D,KAAK+mB,IAAIkwC,GAAcC,EACzB,KAEoB,GAAbD,EACK,GAARzxC,EACFxa,EAAME,EAGND,EAAOC,EAIG,GAARsa,EACFva,EAAOC,EAGPF,EAAME,EAIVH,IAIF,MAFA6W,GAAIhY,EAAIsB,EAED0W,GAUThjB,EAAK2Q,UAAU8jD,WAAa,SAASjwC,GAEnCA,EAAIY,YAAcxoB,KAAK04D,UAAU9wC,GACjCA,EAAIiB,UAAYjB,EAAIY,YACpBZ,EAAIO,UAAYnoB,KAAKi5D,eAGrB,IAAIpI,GAAO7qD,EAAQ21D,CAGnB,IAAI37D,KAAKgqB,MAAQhqB,KAAKiqB,GAAI,CAKxB,GAHAjqB,KAAKk5D,MAAMtxC,GAG8B,GAArC5nB,KAAK+O,QAAQ0zC,aAAazzC,QAAiB,CAC7C,GAAI2iD,GAAM3xD,KAAK25D,oBACfgC,GAAW37D,KAAKs7D,qBAAoB,EAAO1zC,EAC3C,IAAIg0C,GAAW57D,KAAKq7D,eAAe72D,KAAKJ,IAAI,EAAKu3D,EAASvtD,EAAI,IAC9DyiD,GAAQrsD,KAAKw1D,MAAO2B,EAASrpD,EAAIspD,EAAStpD,EAAKqpD,EAAStpD,EAAIupD,EAASvpD,OAElE,CACHw+C,EAAQrsD,KAAKw1D,MAAOh6D,KAAKiqB,GAAG3X,EAAItS,KAAKgqB,KAAK1X,EAAKtS,KAAKiqB,GAAG5X,EAAIrS,KAAKgqB,KAAK3X,EACrE,IAAIoN,GAAMzf,KAAKiqB,GAAG5X,EAAIrS,KAAKgqB,KAAK3X,EAC5BqN,EAAM1f,KAAKiqB,GAAG3X,EAAItS,KAAKgqB,KAAK1X,EAC5BupD,EAAoBr3D,KAAK6rB,KAAK5Q,EAAKA,EAAKC,EAAKA,GAC7Co8C,EAAe97D,KAAKiqB,GAAGsxC,iBAAiB3zC,EAAKipC,GAC7CkL,GAAiBF,EAAoBC,GAAgBD,CAEzDF,MACAA,EAAStpD,GAAK,EAAI0pD,GAAiB/7D,KAAKgqB,KAAK3X,EAAI0pD,EAAgB/7D,KAAKiqB,GAAG5X,EACzEspD,EAASrpD,GAAK,EAAIypD,GAAiB/7D,KAAKgqB,KAAK1X,EAAIypD,EAAgB/7D,KAAKiqB,GAAG3X,EAU3E,GANAtM,GAAU,GAAK,EAAIhG,KAAK+O,QAAQoE,OAASnT,KAAK+O,QAAQ2wC,iBACtD93B,EAAIwzC,MAAMO,EAAStpD,EAAEspD,EAASrpD,EAAGu+C,EAAO7qD,GACxC4hB,EAAInH,OACJmH,EAAIlH,SAGA1gB,KAAK6S,MAAO,CACd,GAAIJ,EAEFA,GADuC,GAArCzS,KAAK+O,QAAQ0zC,aAAazzC,SAA0B,MAAP2iD,EACvC3xD,KAAKq7D,eAAe,IAGpBr7D,KAAKq5D,aAAa,IAE5Br5D,KAAKs5D,OAAO1xC,EAAK5nB,KAAK6S,MAAOJ,EAAMJ,EAAGI,EAAMH,QAG3C,CAEH,GACID,GAAGC,EAAG8oD,EADNzT,EAAO3nD,KAAKgqB,KAEZmC,EAAS,IAAO3nB,KAAKJ,IAAI,IAAIpE,KAAKigD,QAAQK,aACzCqH,GAAKx0C,OACRw0C,EAAK4R,OAAO3xC,GAEV+/B,EAAKx0C,MAAQw0C,EAAKv0C,QACpBf,EAAIs1C,EAAKt1C,EAAiB,GAAbs1C,EAAKx0C,MAClBb,EAAIq1C,EAAKr1C,EAAI6Z,EACbivC,GACE/oD,EAAGA,EACHC,EAAGq1C,EAAKr1C,EACRu+C,MAAO,GAAMrsD,KAAK6nB,MAIpBha,EAAIs1C,EAAKt1C,EAAI8Z,EACb7Z,EAAIq1C,EAAKr1C,EAAkB,GAAdq1C,EAAKv0C,OAClBgoD,GACE/oD,EAAGs1C,EAAKt1C,EACRC,EAAGA,EACHu+C,MAAO,GAAMrsD,KAAK6nB,KAGtBzE,EAAIa,YAEJb,EAAIwE,IAAI/Z,EAAGC,EAAG6Z,EAAQ,EAAG,EAAI3nB,KAAK6nB,IAAI,GACtCzE,EAAIlH,QAGJ,IAAI1a,IAAU,GAAK,EAAIhG,KAAK+O,QAAQoE,OAASnT,KAAK+O,QAAQ2wC,gBAC1D93B,GAAIwzC,MAAMA,EAAM/oD,EAAG+oD,EAAM9oD,EAAG8oD,EAAMvK,MAAO7qD,GACzC4hB,EAAInH,OACJmH,EAAIlH,SAGA1gB,KAAK6S,QACPJ,EAAQzS,KAAKy5D,eAAepnD,EAAGC,EAAG6Z,EAAQ,IAC1CnsB,KAAKs5D,OAAO1xC,EAAK5nB,KAAK6S,MAAOJ,EAAMJ,EAAGI,EAAMH,MAiBlDlP,EAAK2Q,UAAU0kD,mBAAqB,SAAUuD,EAAGC,EAAIC,EAAGC,EAAIC,EAAGC,GAC7D,GAAIvyD,GAAc,CAClB,IAAI9J,KAAKgqB,MAAQhqB,KAAKiqB,GACpB,GAAyC,GAArCjqB,KAAK+O,QAAQ0zC,aAAazzC,QAAiB,CAC7C,GAAI4qD,GAAMC,CACV,IAAyC,GAArC75D,KAAK+O,QAAQ0zC,aAAazzC,SAAwD,GAArChP,KAAK+O,QAAQ0zC,aAAaC,QACzEkX,EAAO55D,KAAK2xD,IAAIt/C,EAChBwnD,EAAO75D,KAAK2xD,IAAIr/C,MAEb,CACH,GAAIq/C,GAAM3xD,KAAK25D,oBACfC,GAAOjI,EAAIt/C,EACXwnD,EAAOlI,EAAIr/C,EAEb,GACIkU,GACA3gB,EAAEuI,EAAEiE,EAAEC,EAAGgqD,EAAOC,EAFhBC,EAAc,GAGlB,KAAK32D,EAAI,EAAO,GAAJA,EAAQA,IAClBuI,EAAI,GAAIvI,EACRwM,EAAI7N,KAAK+vB,IAAI,EAAEnmB,EAAE,GAAG4tD,EAAM,EAAE5tD,GAAG,EAAIA,GAAIwrD,EAAOp1D,KAAK+vB,IAAInmB,EAAE,GAAG8tD,EAC5D5pD,EAAI9N,KAAK+vB,IAAI,EAAEnmB,EAAE,GAAG6tD,EAAM,EAAE7tD,GAAG,EAAIA,GAAIyrD,EAAOr1D,KAAK+vB,IAAInmB,EAAE,GAAG+tD,EACxDt2D,EAAI,IACN2gB,EAAWxmB,KAAKy8D,mBAAmBH,EAAMC,EAAMlqD,EAAEC,EAAG8pD,EAAGC,GACvDG,EAAyBA,EAAXh2C,EAAyBA,EAAWg2C,GAEpDF,EAAQjqD,EAAGkqD,EAAQjqD,CAErBxI,GAAc0yD,MAGd1yD,GAAc9J,KAAKy8D,mBAAmBT,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,OAGpD,CACH,GAAIhqD,GAAGC,EAAGmN,EAAIC,EACVyM,EAAS,IAAOnsB,KAAKigD,QAAQK,aAC7BqH,EAAO3nD,KAAKgqB,IACZ29B,GAAKx0C,MAAQw0C,EAAKv0C,QACpBf,EAAIs1C,EAAKt1C,EAAI,GAAMs1C,EAAKx0C,MACxBb,EAAIq1C,EAAKr1C,EAAI6Z,IAGb9Z,EAAIs1C,EAAKt1C,EAAI8Z,EACb7Z,EAAIq1C,EAAKr1C,EAAI,GAAMq1C,EAAKv0C,QAE1BqM,EAAKpN,EAAI+pD,EACT18C,EAAKpN,EAAI+pD,EACTvyD,EAActF,KAAK+mB,IAAI/mB,KAAK6rB,KAAK5Q,EAAGA,EAAKC,EAAGA,GAAMyM,GAGpD,MAAInsB,MAAK+2D,gBAAgBlvD,KAAOu0D,GAC9Bp8D,KAAK+2D,gBAAgBlvD,KAAO7H,KAAK+2D,gBAAgB5jD,MAAQipD,GACzDp8D,KAAK+2D,gBAAgB9uD,IAAMo0D,GAC3Br8D,KAAK+2D,gBAAgB9uD,IAAMjI,KAAK+2D,gBAAgB3jD,OAASipD,EAClD,EAGAvyD,GAIX1G,EAAK2Q,UAAU0oD,mBAAqB,SAAST,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,GAC1D,GAAIK,GAAKR,EAAGF,EACVW,EAAKR,EAAGF,EACRW,EAAYF,EAAGA,EAAKC,EAAGA,EACvBE,IAAOT,EAAKJ,GAAMU,GAAML,EAAKJ,GAAMU,GAAMC,CAEvCC,GAAI,EACNA,EAAI,EAEO,EAAJA,IACPA,EAAI,EAGN,IAAIxqD,GAAI2pD,EAAKa,EAAIH,EACfpqD,EAAI2pD,EAAKY,EAAIF,EACbl9C,EAAKpN,EAAI+pD,EACT18C,EAAKpN,EAAI+pD,CAQX,OAAO73D,MAAK6rB,KAAK5Q,EAAGA,EAAKC,EAAGA,IAQ9Btc,EAAK2Q,UAAUkwB,SAAW,SAAS1/B,GACjCvE,KAAK05D,gBAAkB,EAAIn1D,GAI7BnB,EAAK2Q,UAAU8xB,OAAS,WACtB7lC,KAAKylC,UAAW,GAGlBriC,EAAK2Q,UAAU+xB,SAAW,WACxB9lC,KAAKylC,UAAW,GAGlBriC,EAAK2Q,UAAUghD,mBAAqB,WACjB,OAAb/0D,KAAK2xD,KAA8B,OAAd3xD,KAAKgqB,MAA6B,OAAZhqB,KAAKiqB,IAClDjqB,KAAK2xD,IAAIt/C,EAAI,IAAOrS,KAAKgqB,KAAK3X,EAAIrS,KAAKiqB,GAAG5X,GAC1CrS,KAAK2xD,IAAIr/C,EAAI,IAAOtS,KAAKgqB,KAAK1X,EAAItS,KAAKiqB,GAAG3X,IAEtB,OAAbtS,KAAK2xD,MACZ3xD,KAAK2xD,IAAIt/C,EAAI,EACbrS,KAAK2xD,IAAIr/C,EAAI,IASjBlP,EAAK2Q,UAAU++C,kBAAoB,SAASlrC,GAC1C,GAAgC,GAA5B5nB,KAAKw3D,oBAA6B,CACpC,GAA+B,OAA3Bx3D,KAAKy3D,aAAaztC,MAA0C,OAAzBhqB,KAAKy3D,aAAaxtC,GAAa,CACpE,GAAI6yC,GAAa,cAAcloD,OAAO5U,KAAKK,IACvC08D,EAAW,YAAYnoD,OAAO5U,KAAKK,IACnCijD,GACYnF,OAAO5rC,MAAM,GAAI4Z,OAAO,EAAGtL,YAAY,EAAGw+B,oBAAqB,GAC/DY,SAASO,QAAQ,GACjBI,YAAac,sBAAuB,EAAGD,aAActuC,MAAM,EAAGC,OAAQ,EAAG+Y,OAAO,IAEhGnsB,MAAKy3D,aAAaztC,KAAO,GAAIzmB,IAC1BlD,GAAGy8D,EACFve,MAAM,MACJnzC,OAAOsB,WAAW,UAAWC,OAAO,UAAWC,WAAYF,WAAW,mBAClE42C,GACVtjD,KAAKy3D,aAAaxtC,GAAK,GAAI1mB,IACxBlD,GAAG08D,EACFxe,MAAM,MACNnzC,OAAOsB,WAAW,UAAWC,OAAO,UAAWC,WAAYF,WAAW,mBAChE42C,GAGZtjD,KAAKy3D,aAAaC,aACqB,GAAnC13D,KAAKy3D,aAAaztC,KAAKyb,WACzBzlC,KAAKy3D,aAAaC,UAAU1tC,KAAOhqB,KAAKg9D,2BAA2Bp1C,GACnE5nB,KAAKy3D,aAAaztC,KAAK3X,EAAIrS,KAAKy3D,aAAaC,UAAU1tC,KAAK3X,EAC5DrS,KAAKy3D,aAAaztC,KAAK1X,EAAItS,KAAKy3D,aAAaC,UAAU1tC,KAAK1X,GAEzB,GAAjCtS,KAAKy3D,aAAaxtC,GAAGwb,WACvBzlC,KAAKy3D,aAAaC,UAAUztC,GAAKjqB,KAAKi9D,yBAAyBr1C,GAC/D5nB,KAAKy3D,aAAaxtC,GAAG5X,EAAIrS,KAAKy3D,aAAaC,UAAUztC,GAAG5X,EACxDrS,KAAKy3D,aAAaxtC,GAAG3X,EAAItS,KAAKy3D,aAAaC,UAAUztC,GAAG3X,GAG1DtS,KAAKy3D,aAAaztC,KAAK+lB,KAAKnoB,GAC5B5nB,KAAKy3D,aAAaxtC,GAAG8lB,KAAKnoB,OAG1B5nB,MAAKy3D,cAAgBztC,KAAK,KAAMC,GAAG,KAAMytC,eAQ7Ct0D,EAAK2Q,UAAUmpD,oBAAsB,WACnCl9D,KAAKk3D,WAAal3D,KAAKgqB,KACvBhqB,KAAKm3D,SAAWn3D,KAAKiqB,GACrBjqB,KAAKw3D,qBAAsB,GAO7Bp0D,EAAK2Q,UAAUopD,qBAAuB,WACpCn9D,KAAKy2D,OAASz2D,KAAKgqB,KAAK3pB,GACxBL,KAAKw2D,KAAOx2D,KAAKiqB,GAAG5pB,GAChBL,KAAKy2D,QAAUz2D,KAAKk3D,WAAW72D,GACjCL,KAAKk3D,WAAWe,WAAWj4D,MAEpBA,KAAKw2D,MAAQx2D,KAAKm3D,SAAS92D,IAClCL,KAAKm3D,SAASc,WAAWj4D,MAG3BA,KAAKk3D,WAAa,KAClBl3D,KAAKm3D,SAAW,KAChBn3D,KAAKw3D,qBAAsB,GAW7Bp0D,EAAK2Q,UAAUqpD,wBAA0B,SAAS/qD,EAAEC,GAClD,GAAIolD,GAAY13D,KAAKy3D,aAAaC,UAC9B2F,EAAe74D,KAAK6rB,KAAK7rB,KAAK+vB,IAAIliB,EAAIqlD,EAAU1tC,KAAK3X,EAAE,GAAK7N,KAAK+vB,IAAIjiB,EAAIolD,EAAU1tC,KAAK1X,EAAE,IAC1FgrD,EAAe94D,KAAK6rB,KAAK7rB,KAAK+vB,IAAIliB,EAAIqlD,EAAUztC,GAAG5X,EAAI,GAAK7N,KAAK+vB,IAAIjiB,EAAIolD,EAAUztC,GAAG3X,EAAI,GAE9F,OAAmB,IAAf+qD,GACFr9D,KAAK23D,cAAgB33D,KAAKgqB,KAC1BhqB,KAAKgqB,KAAOhqB,KAAKy3D,aAAaztC,KACvBhqB,KAAKy3D,aAAaztC,MAEL,GAAbszC,GACPt9D,KAAK23D,cAAgB33D,KAAKiqB,GAC1BjqB,KAAKiqB,GAAKjqB,KAAKy3D,aAAaxtC,GACrBjqB,KAAKy3D,aAAaxtC,IAGlB,MASX7mB,EAAK2Q,UAAUwpD,qBAAuB,WACG,GAAnCv9D,KAAKy3D,aAAaztC,KAAKyb,UACzBzlC,KAAKgqB,KAAOhqB,KAAK23D,cACjB33D,KAAK23D,cAAgB,KACrB33D,KAAKy3D,aAAaztC,KAAK8b,YAEiB,GAAjC9lC,KAAKy3D,aAAaxtC,GAAGwb,WAC5BzlC,KAAKiqB,GAAKjqB,KAAK23D,cACf33D,KAAK23D,cAAgB,KACrB33D,KAAKy3D,aAAaxtC,GAAG6b,aAUzB1iC,EAAK2Q,UAAUipD,2BAA6B,SAASp1C,GAEnD,GAAI41C,EACJ,IAAyC,GAArCx9D,KAAK+O,QAAQ0zC,aAAazzC,QAC5BwuD,EAAqBx9D,KAAKs7D,qBAAoB,EAAM1zC,OAEjD,CACH,GAAIipC,GAAQrsD,KAAKw1D,MAAOh6D,KAAKiqB,GAAG3X,EAAItS,KAAKgqB,KAAK1X,EAAKtS,KAAKiqB,GAAG5X,EAAIrS,KAAKgqB,KAAK3X,GACrEoN,EAAMzf,KAAKiqB,GAAG5X,EAAIrS,KAAKgqB,KAAK3X,EAC5BqN,EAAM1f,KAAKiqB,GAAG3X,EAAItS,KAAKgqB,KAAK1X,EAC5BupD,EAAoBr3D,KAAK6rB,KAAK5Q,EAAKA,EAAKC,EAAKA,GAE7C+9C,EAAiBz9D,KAAKgqB,KAAKuxC,iBAAiB3zC,EAAKipC,EAAQrsD,KAAK6nB,IAC9DqxC,GAAmB7B,EAAoB4B,GAAkB5B,CAC7D2B,MACAA,EAAmBnrD,EAAI,EAAoBrS,KAAKgqB,KAAK3X,GAAK,EAAIqrD,GAAmB19D,KAAKiqB,GAAG5X,EACzFmrD,EAAmBlrD,EAAI,EAAoBtS,KAAKgqB,KAAK1X,GAAK,EAAIorD,GAAmB19D,KAAKiqB,GAAG3X,EAG3F,MAAOkrD,IASTp6D,EAAK2Q,UAAUkpD,yBAA2B,SAASr1C,GAEjD,GAAuB+1C,EACvB,IAAyC,GAArC39D,KAAK+O,QAAQ0zC,aAAazzC,QAC5B2uD,EAAmB39D,KAAKs7D,qBAAoB,EAAO1zC,OAEhD,CACH,GAAIipC,GAAQrsD,KAAKw1D,MAAOh6D,KAAKiqB,GAAG3X,EAAItS,KAAKgqB,KAAK1X,EAAKtS,KAAKiqB,GAAG5X,EAAIrS,KAAKgqB,KAAK3X,GACrEoN,EAAMzf,KAAKiqB,GAAG5X,EAAIrS,KAAKgqB,KAAK3X,EAC5BqN,EAAM1f,KAAKiqB,GAAG3X,EAAItS,KAAKgqB,KAAK1X,EAC5BupD,EAAoBr3D,KAAK6rB,KAAK5Q,EAAKA,EAAKC,EAAKA,GAC7Co8C,EAAe97D,KAAKiqB,GAAGsxC,iBAAiB3zC,EAAKipC,GAC7CkL,GAAiBF,EAAoBC,GAAgBD,CAEzD8B,MACAA,EAAiBtrD,GAAK,EAAI0pD,GAAiB/7D,KAAKgqB,KAAK3X,EAAI0pD,EAAgB/7D,KAAKiqB,GAAG5X,EACjFsrD,EAAiBrrD,GAAK,EAAIypD,GAAiB/7D,KAAKgqB,KAAK1X,EAAIypD,EAAgB/7D,KAAKiqB,GAAG3X,EAGnF,MAAOqrD,IAGT99D,EAAOD,QAAUwD,GAIb,SAASvD,EAAQD,EAASM,GAQ9B,QAASmD,KACPrD,KAAKqX,QACLrX,KAAK49D,aAAe,EACpB59D,KAAK69D,eACL79D,KAAK89D,WAAa,EAClB99D,KAAKqjD,kBAAmB,EAXfnjD,EAAoB,EAkB/BmD,GAAO06D,UACJpxD,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAO3Ir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"} \ No newline at end of file diff --git a/dist/vis.min.js b/dist/vis.min.js index a17f6851..0166401d 100644 --- a/dist/vis.min.js +++ b/dist/vis.min.js @@ -23,17 +23,17 @@ * Vis.js may be distributed under either license. */ "use strict";!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):"object"==typeof exports?exports.vis=e():t.vis=e()}(this,function(){return function(t){function e(s){if(i[s])return i[s].exports;var o=i[s]={exports:{},id:s,loaded:!1};return t[s].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){e.util=i(1),e.DOMutil=i(2),e.DataSet=i(3),e.DataView=i(4),e.Queue=i(5),e.Graph3d=i(6),e.graph3d={Camera:i(7),Filter:i(8),Point2d:i(9),Point3d:i(10),Slider:i(11),StepNumber:i(12)},e.Timeline=i(13),e.Graph2d=i(14),e.timeline={DateUtil:i(15),DataStep:i(16),Range:i(17),stack:i(18),TimeStep:i(19),components:{items:{Item:i(20),BackgroundItem:i(21),BoxItem:i(22),PointItem:i(23),RangeItem:i(24)},Component:i(25),CurrentTime:i(26),CustomTime:i(27),DataAxis:i(28),GraphGroup:i(29),Group:i(30),BackgroundGroup:i(31),ItemSet:i(32),Legend:i(33),LineGraph:i(34),TimeAxis:i(35)}},e.Network=i(36),e.network={Edge:i(37),Groups:i(38),Images:i(39),Node:i(40),Popup:i(41),dotparser:i(42),gephiParser:i(43)},e.Graph=function(){throw new Error("Graph is renamed to Network. Please create a graph as new vis.Network(...)")},e.moment=i(44),e.hammer=i(45)},function(t,e,i){var s=i(44);e.isNumber=function(t){return t instanceof Number||"number"==typeof t},e.giveRange=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)},e.isString=function(t){return t instanceof String||"string"==typeof t},e.isDate=function(t){if(t instanceof Date)return!0;if(e.isString(t)){var i=o.exec(t);if(i)return!0;if(!isNaN(Date.parse(t)))return!0}return!1},e.isDataTable=function(t){return"undefined"!=typeof google&&google.visualization&&google.visualization.DataTable&&t instanceof google.visualization.DataTable},e.randomUUID=function(){var t=function(){return Math.floor(65536*Math.random()).toString(16)};return t()+t()+"-"+t()+"-"+t()+"-"+t()+"-"+t()+t()+t()},e.extend=function(t){for(var e=1,i=arguments.length;i>e;e++){var s=arguments[e];for(var o in s)s.hasOwnProperty(o)&&(t[o]=s[o])}return t},e.selectiveExtend=function(t,e){if(!Array.isArray(t))throw new Error("Array with property names expected as first argument");for(var i=2;ii;i++)if(t[i]!=e[i])return!1;return!0},e.convert=function(t,i){var n;if(void 0===t)return void 0;if(null===t)return null;if(!i)return t;if("string"!=typeof i&&!(i instanceof String))throw new Error("Type must be a string");switch(i){case"boolean":case"Boolean":return Boolean(t);case"number":case"Number":return Number(t.valueOf());case"string":case"String":return String(t);case"Date":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return new Date(t.valueOf());if(s.isMoment(t))return new Date(t.valueOf());if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])):s(t).toDate();throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"Moment":if(e.isNumber(t))return s(t);if(t instanceof Date)return s(t.valueOf());if(s.isMoment(t))return s(t);if(e.isString(t))return n=o.exec(t),s(n?Number(n[1]):t);throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"ISODate":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return t.toISOString();if(s.isMoment(t))return t.toDate().toISOString();if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])).toISOString():new Date(t).toISOString();throw new Error("Cannot convert object of type "+e.getType(t)+" to type ISODate");case"ASPDate":if(e.isNumber(t))return"/Date("+t+")/";if(t instanceof Date)return"/Date("+t.valueOf()+")/";if(e.isString(t)){n=o.exec(t);var r;return r=n?new Date(Number(n[1])).valueOf():new Date(t).valueOf(),"/Date("+r+")/"}throw new Error("Cannot convert object of type "+e.getType(t)+" to type ASPDate");default:throw new Error('Unknown type "'+i+'"')}};var o=/^\/?Date\((\-?\d+)/i;e.getType=function(t){var e=typeof t;return"object"==e?null==t?"null":t instanceof Boolean?"Boolean":t instanceof Number?"Number":t instanceof String?"String":Array.isArray(t)?"Array":t instanceof Date?"Date":"Object":"number"==e?"Number":"boolean"==e?"Boolean":"string"==e?"String":e},e.getAbsoluteLeft=function(t){return t.getBoundingClientRect().left+window.pageXOffset},e.getAbsoluteTop=function(t){return t.getBoundingClientRect().top+window.pageYOffset},e.addClassName=function(t,e){var i=t.className.split(" ");-1==i.indexOf(e)&&(i.push(e),t.className=i.join(" "))},e.removeClassName=function(t,e){var i=t.className.split(" "),s=i.indexOf(e);-1!=s&&(i.splice(s,1),t.className=i.join(" "))},e.forEach=function(t,e){var i,s;if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)e(t[i],i,t);else for(i in t)t.hasOwnProperty(i)&&e(t[i],i,t)},e.toArray=function(t){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},e.updateProperty=function(t,e,i){return t[e]!==i?(t[e]=i,!0):!1},e.addEventListener=function(t,e,i,s){t.addEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,s)):t.attachEvent("on"+e,i)},e.removeEventListener=function(t,e,i,s){t.removeEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,s)):t.detachEvent("on"+e,i)},e.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},e.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},e.option={},e.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},e.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},e.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},e.option.asSize=function(t,i){return"function"==typeof t&&(t=t()),e.isString(t)?t:e.isNumber(t)?t+"px":i||null},e.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},e.hexToRGB=function(t){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;t=t.replace(e,function(t,e,i,s){return e+e+i+i+s+s});var i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return i?{r:parseInt(i[1],16),g:parseInt(i[2],16),b:parseInt(i[3],16)}:null},e.overrideOpacity=function(t,i){if(-1!=t.indexOf("rgb")){var s=t.substr(t.indexOf("(")+1).replace(")","").split(",");return"rgba("+s[0]+","+s[1]+","+s[2]+","+i+")"}var s=e.hexToRGB(t);return null==s?t:"rgba("+s.r+","+s.g+","+s.b+","+i+")"},e.RGBToHex=function(t,e,i){return"#"+((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1)},e.parseColor=function(t){var i;if(e.isString(t)){if(e.isValidRGB(t)){var s=t.substr(4).substr(0,t.length-5).split(",");t=e.RGBToHex(s[0],s[1],s[2])}if(e.isValidHex(t)){var o=e.hexToHSV(t),n={h:o.h,s:.45*o.s,v:Math.min(1,1.05*o.v)},r={h:o.h,s:Math.min(1,1.25*o.v),v:.6*o.v},a=e.HSVToHex(r.h,r.h,r.v),h=e.HSVToHex(n.h,n.s,n.v);i={background:t,border:a,highlight:{background:h,border:a},hover:{background:h,border:a}}}else i={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else i={},i.background=t.background||"white",i.border=t.border||i.background,e.isString(t.highlight)?i.highlight={border:t.highlight,background:t.highlight}:(i.highlight={},i.highlight.background=t.highlight&&t.highlight.background||i.background,i.highlight.border=t.highlight&&t.highlight.border||i.border),e.isString(t.hover)?i.hover={border:t.hover,background:t.hover}:(i.hover={},i.hover.background=t.hover&&t.hover.background||i.background,i.hover.border=t.hover&&t.hover.border||i.border);return i},e.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var s=Math.min(t,Math.min(e,i)),o=Math.max(t,Math.max(e,i));if(s==o)return{h:0,s:0,v:s};var n=t==s?e-i:i==s?t-e:i-t,r=t==s?3:i==s?1:5,a=60*(r-n/(o-s))/360,h=(o-s)/o,d=o;return{h:a,s:h,v:d}};var n={split:function(t){var e={};return t.split(";").forEach(function(t){if(""!=t.trim()){var i=t.split(":"),s=i[0].trim(),o=i[1].trim();e[s]=o}}),e},join:function(t){return Object.keys(t).map(function(e){return e+": "+t[e]}).join("; ")}};e.addCssText=function(t,i){var s=n.split(t.style.cssText),o=n.split(i),r=e.extend(s,o);t.style.cssText=n.join(r)},e.removeCssText=function(t,e){var i=n.split(t.style.cssText),s=n.split(e);for(var o in s)s.hasOwnProperty(o)&&delete i[o];t.style.cssText=n.join(i)},e.HSVToRGB=function(t,e,i){var s,o,n,r=Math.floor(6*t),a=6*t-r,h=i*(1-e),d=i*(1-a*e),l=i*(1-(1-a)*e);switch(r%6){case 0:s=i,o=l,n=h;break;case 1:s=d,o=i,n=h;break;case 2:s=h,o=i,n=l;break;case 3:s=h,o=d,n=i;break;case 4:s=l,o=h,n=i;break;case 5:s=i,o=h,n=d}return{r:Math.floor(255*s),g:Math.floor(255*o),b:Math.floor(255*n)}},e.HSVToHex=function(t,i,s){var o=e.HSVToRGB(t,i,s);return e.RGBToHex(o.r,o.g,o.b)},e.hexToHSV=function(t){var i=e.hexToRGB(t);return e.RGBToHSV(i.r,i.g,i.b)},e.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},e.isValidRGB=function(t){t=t.replace(" ","");var e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t);return e},e.selectiveBridgeObject=function(t,i){if("object"==typeof i){for(var s=Object.create(i),o=0;o=r&&o>n;){var h=Math.floor((r+a)/2),d=t[h],l=void 0===s?d[i]:d[i][s],c=e(l);if(0==c)return h;-1==c?r=h+1:a=h-1,n++}return-1},e.binarySearchValue=function(t,e,i,s){for(var o,n,r,a,h=1e4,d=0,l=0,c=t.length-1;c>=l&&h>d;){if(a=Math.floor(.5*(c+l)),o=t[Math.max(0,a-1)][i],n=t[a][i],r=t[Math.min(t.length-1,a+1)][i],n==e)return a;if(e>o&&n>e)return"before"==s?Math.max(0,a-1):a;if(e>n&&r>e)return"before"==s?a:Math.min(t.length-1,a+1);e>n?l=a+1:c=a-1,d++}return-1},e.easeInOutQuad=function(t,e,i,s){var o=i-e;return t/=s/2,1>t?o/2*t*t+e:(t--,-o/2*(t*(t-2)-1)+e)},e.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return.5>t?2*t*t:-1+(4-2*t)*t},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return.5>t?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return.5>t?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return.5>t?16*t*t*t*t*t:1+16*--t*t*t*t*t}}},function(t,e){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i0?(s=e[t].redundant[0],e[t].redundant.shift()):(s=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(s)):(s=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(s)),e[t].used.push(s),s},e.getDOMElement=function(t,e,i,s){var o;return e.hasOwnProperty(t)?e[t].redundant.length>0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElement(t),void 0!==s?i.insertBefore(o,s):i.appendChild(o)):(o=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==s?i.insertBefore(o,s):i.appendChild(o)),e[t].used.push(o),o},e.drawPoint=function(t,i,s,o,n,r){var a;"circle"==s.options.drawPoints.style?(a=e.getSVGElement("circle",o,n),a.setAttributeNS(null,"cx",t),a.setAttributeNS(null,"cy",i),a.setAttributeNS(null,"r",.5*s.options.drawPoints.size)):(a=e.getSVGElement("rect",o,n),a.setAttributeNS(null,"x",t-.5*s.options.drawPoints.size),a.setAttributeNS(null,"y",i-.5*s.options.drawPoints.size),a.setAttributeNS(null,"width",s.options.drawPoints.size),a.setAttributeNS(null,"height",s.options.drawPoints.size)),void 0!==s.options.drawPoints.styles&&a.setAttributeNS(null,"style",s.group.options.drawPoints.styles),a.setAttributeNS(null,"class",s.className+" point");var h=e.getSVGElement("text",o,n);return r&&(r.xOffset&&(t+=r.xOffset),r.yOffset&&(i+=r.yOffset),r.content&&(h.textContent=r.content),r.className&&h.setAttributeNS(null,"class",r.className+" label")),h.setAttributeNS(null,"x",t),h.setAttributeNS(null,"y",i),a},e.drawBar=function(t,i,s,o,n,r,a){if(0!=o){0>o&&(o*=-1,i-=o);var h=e.getSVGElement("rect",r,a);h.setAttributeNS(null,"x",t-.5*s),h.setAttributeNS(null,"y",i),h.setAttributeNS(null,"width",s),h.setAttributeNS(null,"height",o),h.setAttributeNS(null,"class",n)}}},function(t,e,i){function s(t,e){if(!t||Array.isArray(t)||o.isDataTable(t)||(e=t,t=null),this._options=e||{},this._data={},this.length=0,this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i in this._options.type)if(this._options.type.hasOwnProperty(i)){var s=this._options.type[i];this._type[i]="Date"==s||"ISODate"==s||"ASPDate"==s?"Date":s}if(this._options.convert)throw new Error('Option "convert" is deprecated. Use "type" instead.');this._subscribers={},t&&this.add(t),this.setOptions(e)}var o=i(1),n=i(5);s.prototype.setOptions=function(t){t&&void 0!==t.queue&&(t.queue===!1?this._queue&&(this._queue.destroy(),delete this._queue):(this._queue||(this._queue=n.extend(this,{replace:["add","update","remove"]})),"object"==typeof t.queue&&this._queue.setOptions(t.queue)))},s.prototype.on=function(t,e){var i=this._subscribers[t];i||(i=[],this._subscribers[t]=i),i.push({callback:e})},s.prototype.subscribe=s.prototype.on,s.prototype.off=function(t,e){var i=this._subscribers[t];i&&(this._subscribers[t]=i.filter(function(t){return t.callback!=e}))},s.prototype.unsubscribe=s.prototype.off,s.prototype._trigger=function(t,e,i){if("*"==t)throw new Error("Cannot trigger event *");var s=[];t in this._subscribers&&(s=s.concat(this._subscribers[t])),"*"in this._subscribers&&(s=s.concat(this._subscribers["*"]));for(var o=0;or;r++)i=n._addItem(t[r]),s.push(i);else if(o.isDataTable(t))for(var h=this._getColumnNames(t),d=0,l=t.getNumberOfRows();l>d;d++){for(var c={},p=0,u=h.length;u>p;p++){var m=h[p];c[m]=t.getValue(d,p)}i=n._addItem(c),s.push(i)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");i=n._addItem(t),s.push(i)}return s.length&&this._trigger("add",{items:s},e),s},s.prototype.update=function(t,e){var i=[],s=[],n=[],r=this,a=r._fieldId,h=function(t){var e=t[a];r._data[e]?(e=r._updateItem(t),s.push(e),n.push(t)):(e=r._addItem(t),i.push(e))};if(Array.isArray(t))for(var d=0,l=t.length;l>d;d++)h(t[d]);else if(o.isDataTable(t))for(var c=this._getColumnNames(t),p=0,u=t.getNumberOfRows();u>p;p++){for(var m={},f=0,g=c.length;g>f;f++){var v=c[f];m[v]=t.getValue(p,f)}h(m)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");h(t)}return i.length&&this._trigger("add",{items:i},e),s.length&&this._trigger("update",{items:s,data:n},e),i.concat(s)},s.prototype.get=function(){var t,e,i,s,n=this,r=o.getType(arguments[0]);"String"==r||"Number"==r?(t=arguments[0],i=arguments[1],s=arguments[2]):"Array"==r?(e=arguments[0],i=arguments[1],s=arguments[2]):(i=arguments[0],s=arguments[1]);var a;if(i&&i.returnType){var h=["DataTable","Array","Object"];if(a=-1==h.indexOf(i.returnType)?"Array":i.returnType,s&&a!=o.getType(s))throw new Error('Type of parameter "data" ('+o.getType(s)+") does not correspond with specified options.type ("+i.type+")");if("DataTable"==a&&!o.isDataTable(s))throw new Error('Parameter "data" must be a DataTable when options.type is "DataTable"')}else a=s&&"DataTable"==o.getType(s)?"DataTable":"Array";var d,l,c,p,u=i&&i.type||this._options.type,m=i&&i.filter,f=[];if(void 0!=t)d=n._getItem(t,u),m&&!m(d)&&(d=null);else if(void 0!=e)for(c=0,p=e.length;p>c;c++)d=n._getItem(e[c],u),(!m||m(d))&&f.push(d);else for(l in this._data)this._data.hasOwnProperty(l)&&(d=n._getItem(l,u),(!m||m(d))&&f.push(d));if(i&&i.order&&void 0==t&&this._sort(f,i.order),i&&i.fields){var g=i.fields;if(void 0!=t)d=this._filterFields(d,g);else for(c=0,p=f.length;p>c;c++)f[c]=this._filterFields(f[c],g)}if("DataTable"==a){var v=this._getColumnNames(s);if(void 0!=t)n._appendRow(s,v,d);else for(c=0;cc;c++)s.push(f[c]);return s}return f},s.prototype.getIds=function(t){var e,i,s,o,n,r=this._data,a=t&&t.filter,h=t&&t.order,d=t&&t.type||this._options.type,l=[];if(a)if(h){n=[];for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&n.push(o));for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&l.push(o[this._fieldId]));else if(h){n=[];for(s in r)r.hasOwnProperty(s)&&n.push(r[s]);for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=r[s],l.push(o[this._fieldId]));return l},s.prototype.getDataSet=function(){return this},s.prototype.forEach=function(t,e){var i,s,o=e&&e.filter,n=e&&e.type||this._options.type,r=this._data;if(e&&e.order)for(var a=this.get(e),h=0,d=a.length;d>h;h++)i=a[h],s=i[this._fieldId],t(i,s);else for(s in r)r.hasOwnProperty(s)&&(i=this._getItem(s,n),(!o||o(i))&&t(i,s))},s.prototype.map=function(t,e){var i,s=e&&e.filter,o=e&&e.type||this._options.type,n=[],r=this._data;for(var a in r)r.hasOwnProperty(a)&&(i=this._getItem(a,o),(!s||s(i))&&n.push(t(i,a)));return e&&e.order&&this._sort(n,e.order),n},s.prototype._filterFields=function(t,e){if(!t)return t;var i={};for(var s in t)t.hasOwnProperty(s)&&-1!=e.indexOf(s)&&(i[s]=t[s]);return i},s.prototype._sort=function(t,e){if(o.isString(e)){var i=e;t.sort(function(t,e){var s=t[i],o=e[i];return s>o?1:o>s?-1:0})}else{if("function"!=typeof e)throw new TypeError("Order must be a function or a string");t.sort(e)}},s.prototype.remove=function(t,e){var i,s,o,n=[];if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)o=this._remove(t[i]),null!=o&&n.push(o);else o=this._remove(t),null!=o&&n.push(o);return n.length&&this._trigger("remove",{items:n},e),n},s.prototype._remove=function(t){if(o.isNumber(t)||o.isString(t)){if(this._data[t])return delete this._data[t],this.length--,t}else if(t instanceof Object){var e=t[this._fieldId];if(e&&this._data[e])return delete this._data[e],this.length--,e}return null},s.prototype.clear=function(t){var e=Object.keys(this._data);return this._data={},this.length=0,this._trigger("remove",{items:e},t),e},s.prototype.max=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||r>s)&&(i=n,s=r)}return i},s.prototype.min=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||s>r)&&(i=n,s=r)}return i},s.prototype.distinct=function(t){var e,i=this._data,s=[],n=this._options.type&&this._options.type[t]||null,r=0;for(var a in i)if(i.hasOwnProperty(a)){var h=i[a],d=h[t],l=!1;for(e=0;r>e;e++)if(s[e]==d){l=!0;break}l||void 0===d||(s[r]=d,r++)}if(n)for(e=0;ei;i++)e[i]=t.getColumnId(i)||t.getColumnLabel(i);return e},s.prototype._appendRow=function(t,e,i){for(var s=t.addRow(),o=0,n=e.length;n>o;o++){var r=e[o];t.setValue(s,o,i[r])}},t.exports=s},function(t,e,i){function s(t,e){this._data=null,this._ids={},this.length=0,this._options=e||{},this._fieldId="id",this._subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(t)}var o=i(1),n=i(3);s.prototype.setData=function(t){var e,i,s;if(this._data){this._data.unsubscribe&&this._data.unsubscribe("*",this.listener),e=[];for(var o in this._ids)this._ids.hasOwnProperty(o)&&e.push(o);this._ids={},this.length=0,this._trigger("remove",{items:e})}if(this._data=t,this._data){for(this._fieldId=this._options.fieldId||this._data&&this._data.options&&this._data.options.fieldId||"id",e=this._data.getIds({filter:this._options&&this._options.filter}),i=0,s=e.length;s>i;i++)o=e[i],this._ids[o]=!0;this.length=e.length,this._trigger("add",{items:e}),this._data.on&&this._data.on("*",this.listener)}},s.prototype.refresh=function(){for(var t,e=this._data.getIds({filter:this._options&&this._options.filter}),i={},s=[],o=[],n=0;ns;s++)n=a[s],r=this.get(n),r&&(this._ids[n]=!0,l.push(n));break;case"update":for(s=0,o=a.length;o>s;s++)n=a[s],r=this.get(n),r?this._ids[n]?(c.push(n),d.push(e.data[s])):(this._ids[n]=!0,l.push(n)):this._ids[n]&&(delete this._ids[n],p.push(n));break;case"remove":for(s=0,o=a.length;o>s;s++)n=a[s],this._ids[n]&&(delete this._ids[n],p.push(n))}this.length+=l.length-p.length,l.length&&this._trigger("add",{items:l},i),c.length&&this._trigger("update",{items:c,data:d},i),p.length&&this._trigger("remove",{items:p},i)}},s.prototype.on=n.prototype.on,s.prototype.off=n.prototype.off,s.prototype._trigger=n.prototype._trigger,s.prototype.subscribe=s.prototype.on,s.prototype.unsubscribe=s.prototype.off,t.exports=s},function(t){function e(t){this.delay=null,this.max=1/0,this._queue=[],this._timeout=null,this._extended=null,this.setOptions(t)}e.prototype.setOptions=function(t){t&&"undefined"!=typeof t.delay&&(this.delay=t.delay),t&&"undefined"!=typeof t.max&&(this.max=t.max),this._flushIfNeeded()},e.extend=function(t,i){var s=new e(i);if(void 0!==t.flush)throw new Error("Target object already has a property flush");t.flush=function(){s.flush()};var o=[{name:"flush",original:void 0}];if(i&&i.replace)for(var n=0;nthis.max&&this.flush(),clearTimeout(this._timeout),this.queue.length>0&&"number"==typeof this.delay){var t=this;this._timeout=setTimeout(function(){t.flush()},this.delay)}},e.prototype.flush=function(){for(;this._queue.length>0;){var t=this._queue.shift();t.fn.apply(t.context||t.fn,t.args||[])}},t.exports=e},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this.containerElement=t,this.width="400px",this.height="400px",this.margin=10,this.defaultXCenter="55%",this.defaultYCenter="50%",this.xLabel="x",this.yLabel="y",this.zLabel="z";var o=function(t){return t};this.xValueLabel=o,this.yValueLabel=o,this.zValueLabel=o,this.filterLabel="time",this.legendLabel="value",this.style=s.STYLE.DOT,this.showPerspective=!0,this.showGrid=!0,this.keepAspectRatio=!0,this.showShadow=!1,this.showGrayBottom=!1,this.showTooltip=!1,this.verticalRatio=.5,this.animationInterval=1e3,this.animationPreload=!1,this.camera=new p,this.eye=new l(0,0,-1),this.dataTable=null,this.dataPoints=null,this.colX=void 0,this.colY=void 0,this.colZ=void 0,this.colValue=void 0,this.colFilter=void 0,this.xMin=0,this.xStep=void 0,this.xMax=1,this.yMin=0,this.yStep=void 0,this.yMax=1,this.zMin=0,this.zStep=void 0,this.zMax=1,this.valueMin=0,this.valueMax=1,this.xBarWidth=1,this.yBarWidth=1,this.colorAxis="#4D4D4D",this.colorGrid="#D3D3D3",this.colorDot="#7DC1FF",this.colorDotBorder="#3267D2",this.create(),this.setOptions(i),e&&this.setData(e)}function o(t){return"clientX"in t?t.clientX:t.targetTouches[0]&&t.targetTouches[0].clientX||0}function n(t){return"clientY"in t?t.clientY:t.targetTouches[0]&&t.targetTouches[0].clientY||0}var r=i(56),a=i(3),h=i(4),d=i(1),l=i(10),c=i(9),p=i(7),u=i(8),m=i(11),f=i(12);r(s.prototype),s.prototype._setScale=function(){this.scale=new l(1/(this.xMax-this.xMin),1/(this.yMax-this.yMin),1/(this.zMax-this.zMin)),this.keepAspectRatio&&(this.scale.x3&&(this.colFilter=3);else{if(this.style!==s.STYLE.DOTCOLOR&&this.style!==s.STYLE.DOTSIZE&&this.style!==s.STYLE.BARCOLOR&&this.style!==s.STYLE.BARSIZE)throw'Unknown style "'+this.style+'"';this.colX=0,this.colY=1,this.colZ=2,this.colValue=3,t.getNumberOfColumns()>4&&(this.colFilter=4)}},s.prototype.getNumberOfRows=function(t){return t.length},s.prototype.getNumberOfColumns=function(t){var e=0;for(var i in t[0])t[0].hasOwnProperty(i)&&e++;return e},s.prototype.getDistinctValues=function(t,e){for(var i=[],s=0;st[s][e]&&(i.min=t[s][e]),i.maxt;t++){var m=(t-p)/(u-p),g=240*m,v=this._hsv2rgb(g,1,1);c.strokeStyle=v,c.beginPath(),c.moveTo(h,r+t),c.lineTo(a,r+t),c.stroke()}c.strokeStyle=this.colorAxis,c.strokeRect(h,r,i,n)}if(this.style===s.STYLE.DOTSIZE&&(c.strokeStyle=this.colorAxis,c.fillStyle=this.colorDot,c.beginPath(),c.moveTo(h,r),c.lineTo(a,r),c.lineTo(a-i+e,d),c.lineTo(h,d),c.closePath(),c.fill(),c.stroke()),this.style===s.STYLE.DOTCOLOR||this.style===s.STYLE.DOTSIZE){var y=5,b=new f(this.valueMin,this.valueMax,(this.valueMax-this.valueMin)/5,!0);for(b.start(),b.getCurrent()0?this.yMin:this.yMax,o=this._convert3Dto2D(new l(x,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.xValueLabel(i.getCurrent())+" ",o.x,o.y),i.next()}for(g.lineWidth=1,s=void 0===this.defaultYStep,i=new f(this.yMin,this.yMax,this.yStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,o=this._convert3Dto2D(new l(n,i.getCurrent(),this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.yValueLabel(i.getCurrent())+" ",o.x,o.y),i.next();for(g.lineWidth=1,s=void 0===this.defaultZStep,i=new f(this.zMin,this.zMax,this.zStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax;!i.end();)t=this._convert3Dto2D(new l(n,r,i.getCurrent())),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(t.x-b,t.y),g.stroke(),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(this.zValueLabel(i.getCurrent())+" ",t.x-5,t.y),i.next();g.lineWidth=1,t=this._convert3Dto2D(new l(n,r,this.zMin)),e=this._convert3Dto2D(new l(n,r,this.zMax)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),g.lineWidth=1,p=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),p=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),g.lineWidth=1,t=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),t=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke();var w=this.xLabel;w.length>0&&(c=.1/this.scale.y,n=(this.xMin+this.xMax)/2,r=Math.cos(_)>0?this.yMin-c:this.yMax+c,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(w,o.x,o.y));var M=this.yLabel;M.length>0&&(d=.1/this.scale.x,n=Math.sin(_)>0?this.xMin-d:this.xMax+d,r=(this.yMin+this.yMax)/2,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(M,o.x,o.y));var D=this.zLabel;D.length>0&&(h=30,n=Math.cos(_)>0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax,a=(this.zMin+this.zMax)/2,o=this._convert3Dto2D(new l(n,r,a)),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(D,o.x-h,o.y))},s.prototype._hsv2rgb=function(t,e,i){var s,o,n,r,a,h;switch(r=i*e,a=Math.floor(t/60),h=r*(1-Math.abs(t/60%2-1)),a){case 0:s=r,o=h,n=0;break;case 1:s=h,o=r,n=0;break;case 2:s=0,o=r,n=h;break;case 3:s=0,o=h,n=r;break;case 4:s=h,o=0,n=r;break;case 5:s=r,o=0,n=h;break;default:s=0,o=0,n=0}return"RGB("+parseInt(255*s)+","+parseInt(255*o)+","+parseInt(255*n)+")"},s.prototype._redrawDataGrid=function(){var t,e,i,o,n,r,a,h,d,c,p,u,m,f=this.frame.canvas,g=f.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(n=0;n0}else r=!0;r?(m=(t.point.z+e.point.z+i.point.z+o.point.z)/4,c=240*(1-(m-this.zMin)*this.scale.z/this.verticalRatio),p=1,this.showShadow?(u=Math.min(1+M.x/D/2,1),a=this._hsv2rgb(c,p,u),h=a):(u=1,a=this._hsv2rgb(c,p,u),h=this.colorAxis)):(a="gray",h=this.colorAxis),d=.5,g.lineWidth=d,g.fillStyle=a,g.strokeStyle=h,g.beginPath(),g.moveTo(t.screen.x,t.screen.y),g.lineTo(e.screen.x,e.screen.y),g.lineTo(o.screen.x,o.screen.y),g.lineTo(i.screen.x,i.screen.y),g.closePath(),g.fill(),g.stroke()}}else for(n=0;np&&(p=0);var u,m,f;this.style===s.STYLE.DOTCOLOR?(u=240*(1-(d.point.value-this.valueMin)*this.scale.value),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)):this.style===s.STYLE.DOTSIZE?(m=this.colorDot,f=this.colorDotBorder):(u=240*(1-(d.point.z-this.zMin)*this.scale.z/this.verticalRatio),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)),i.lineWidth=1,i.strokeStyle=f,i.fillStyle=m,i.beginPath(),i.arc(d.screen.x,d.screen.y,p,0,2*Math.PI,!0),i.fill(),i.stroke()}}},s.prototype._redrawDataBar=function(){var t,e,i,o,n=this.frame.canvas,r=n.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(t=0;t0&&(t=this.dataPoints[0],s.lineWidth=1,s.strokeStyle="blue",s.beginPath(),s.moveTo(t.screen.x,t.screen.y)),e=1;e0&&s.stroke()}},s.prototype._onMouseDown=function(t){if(t=t||window.event,this.leftButtonDown&&this._onMouseUp(t),this.leftButtonDown=t.which?1===t.which:1===t.button,this.leftButtonDown||this.touchDown){this.startMouseX=o(t),this.startMouseY=n(t),this.startStart=new Date(this.start),this.startEnd=new Date(this.end),this.startArmRotation=this.camera.getArmRotation(),this.frame.style.cursor="move";var e=this;this.onmousemove=function(t){e._onMouseMove(t)},this.onmouseup=function(t){e._onMouseUp(t)},d.addEventListener(document,"mousemove",e.onmousemove),d.addEventListener(document,"mouseup",e.onmouseup),d.preventDefault(t)}},s.prototype._onMouseMove=function(t){t=t||window.event;var e=parseFloat(o(t))-this.startMouseX,i=parseFloat(n(t))-this.startMouseY,s=this.startArmRotation.horizontal+e/200,r=this.startArmRotation.vertical+i/200,a=4,h=Math.sin(a/360*2*Math.PI);Math.abs(Math.sin(s))0?1:0>t?-1:0}var s=e[0],o=e[1],n=e[2],r=i((o.x-s.x)*(t.y-s.y)-(o.y-s.y)*(t.x-s.x)),a=i((n.x-o.x)*(t.y-o.y)-(n.y-o.y)*(t.x-o.x)),h=i((s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x));return!(0!=r&&0!=a&&r!=a||0!=a&&0!=h&&a!=h||0!=r&&0!=h&&r!=h)},s.prototype._dataPointFromXY=function(t,e){var i,o=100,n=null,r=null,a=null,h=new c(t,e);if(this.style===s.STYLE.BAR||this.style===s.STYLE.BARCOLOR||this.style===s.STYLE.BARSIZE)for(i=this.dataPoints.length-1;i>=0;i--){n=this.dataPoints[i];var d=n.surfaces;if(d)for(var l=d.length-1;l>=0;l--){var p=d[l],u=p.corners,m=[u[0].screen,u[1].screen,u[2].screen],f=[u[2].screen,u[3].screen,u[0].screen];if(this._insideTriangle(h,m)||this._insideTriangle(h,f))return n}}else for(i=0;ib)&&o>b&&(a=b,r=n)}}return r},s.prototype._showTooltip=function(t){var e,i,s;this.tooltip?(e=this.tooltip.dom.content,i=this.tooltip.dom.line,s=this.tooltip.dom.dot):(e=document.createElement("div"),e.style.position="absolute",e.style.padding="10px",e.style.border="1px solid #4d4d4d",e.style.color="#1a1a1a",e.style.background="rgba(255,255,255,0.7)",e.style.borderRadius="2px",e.style.boxShadow="5px 5px 10px rgba(128,128,128,0.5)",i=document.createElement("div"),i.style.position="absolute",i.style.height="40px",i.style.width="0",i.style.borderLeft="1px solid #4d4d4d",s=document.createElement("div"),s.style.position="absolute",s.style.height="0",s.style.width="0",s.style.border="5px solid #4d4d4d",s.style.borderRadius="5px",this.tooltip={dataPoint:null,dom:{content:e,line:i,dot:s}}),this._hideTooltip(),this.tooltip.dataPoint=t,e.innerHTML="function"==typeof this.showTooltip?this.showTooltip(t.point):"
x:"+t.point.x+"
y:"+t.point.y+"
z:"+t.point.z+"
",e.style.left="0",e.style.top="0",this.frame.appendChild(e),this.frame.appendChild(i),this.frame.appendChild(s);var o=e.offsetWidth,n=e.offsetHeight,r=i.offsetHeight,a=s.offsetWidth,h=s.offsetHeight,d=t.screen.x-o/2;d=Math.min(Math.max(d,10),this.frame.clientWidth-10-o),i.style.left=t.screen.x+"px",i.style.top=t.screen.y-r+"px",e.style.left=d+"px",e.style.top=t.screen.y-r-n+"px",s.style.left=t.screen.x-a/2+"px",s.style.top=t.screen.y-h/2+"px"},s.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var t in this.tooltip.dom)if(this.tooltip.dom.hasOwnProperty(t)){var e=this.tooltip.dom[t];e&&e.parentNode&&e.parentNode.removeChild(e)}}},t.exports=s},function(t,e,i){function s(){this.armLocation=new o,this.armRotation={},this.armRotation.horizontal=0,this.armRotation.vertical=0,this.armLength=1.7,this.cameraLocation=new o,this.cameraRotation=new o(.5*Math.PI,0,0),this.calculateCameraOrientation()}var o=i(10);s.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},s.prototype.setArmRotation=function(t,e){void 0!==t&&(this.armRotation.horizontal=t),void 0!==e&&(this.armRotation.vertical=e,this.armRotation.vertical<0&&(this.armRotation.vertical=0),this.armRotation.vertical>.5*Math.PI&&(this.armRotation.vertical=.5*Math.PI)),(void 0!==t||void 0!==e)&&this.calculateCameraOrientation()},s.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},s.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.calculateCameraOrientation())},s.prototype.getArmLength=function(){return this.armLength},s.prototype.getCameraLocation=function(){return this.cameraLocation},s.prototype.getCameraRotation=function(){return this.cameraRotation},s.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical),this.cameraRotation.x=Math.PI/2-this.armRotation.vertical,this.cameraRotation.y=0,this.cameraRotation.z=-this.armRotation.horizontal},t.exports=s},function(t,e,i){function s(t,e,i){this.data=t,this.column=e,this.graph=i,this.index=void 0,this.value=void 0,this.values=i.getDistinctValues(t.get(),this.column),this.values.sort(function(t,e){return t>e?1:e>t?-1:0}),this.values.length>0&&this.selectValue(0),this.dataPoints=[],this.loaded=!1,this.onLoadCallback=void 0,i.animationPreload?(this.loaded=!1,this.loadInBackground()):this.loaded=!0}var o=i(4);s.prototype.isLoaded=function(){return this.loaded},s.prototype.getLoadedProgress=function(){for(var t=this.values.length,e=0;this.dataPoints[e];)e++;return Math.round(e/t*100)},s.prototype.getLabel=function(){return this.graph.filterLabel},s.prototype.getColumn=function(){return this.column},s.prototype.getSelectedValue=function(){return void 0===this.index?void 0:this.values[this.index]},s.prototype.getValues=function(){return this.values},s.prototype.getValue=function(t){if(t>=this.values.length)throw"Error: index out of range";return this.values[t]},s.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[]; +if(i=t.get(),0!=i.length){this.dataSet=t,this.dataTable=i,this._onChange=function(){e.setData(e.dataSet)},this.dataSet.on("*",this._onChange),this.colX="x",this.colY="y",this.colZ="z",this.colValue="style",this.colFilter="filter",i[0].hasOwnProperty("filter")&&void 0===this.dataFilter&&(this.dataFilter=new u(t,this.colFilter,this),this.dataFilter.setOnLoadCallback(function(){e.redraw()}));var o=this.style==s.STYLE.BAR||this.style==s.STYLE.BARCOLOR||this.style==s.STYLE.BARSIZE;if(o){if(void 0!==this.defaultXBarWidth)this.xBarWidth=this.defaultXBarWidth;else{var n=this.getDistinctValues(i,this.colX);this.xBarWidth=n[1]-n[0]||1}if(void 0!==this.defaultYBarWidth)this.yBarWidth=this.defaultYBarWidth;else{var r=this.getDistinctValues(i,this.colY);this.yBarWidth=r[1]-r[0]||1}}var d=this.getColumnRange(i,this.colX);o&&(d.min-=this.xBarWidth/2,d.max+=this.xBarWidth/2),this.xMin=void 0!==this.defaultXMin?this.defaultXMin:d.min,this.xMax=void 0!==this.defaultXMax?this.defaultXMax:d.max,this.xMax<=this.xMin&&(this.xMax=this.xMin+1),this.xStep=void 0!==this.defaultXStep?this.defaultXStep:(this.xMax-this.xMin)/5;var l=this.getColumnRange(i,this.colY);o&&(l.min-=this.yBarWidth/2,l.max+=this.yBarWidth/2),this.yMin=void 0!==this.defaultYMin?this.defaultYMin:l.min,this.yMax=void 0!==this.defaultYMax?this.defaultYMax:l.max,this.yMax<=this.yMin&&(this.yMax=this.yMin+1),this.yStep=void 0!==this.defaultYStep?this.defaultYStep:(this.yMax-this.yMin)/5;var c=this.getColumnRange(i,this.colZ);if(this.zMin=void 0!==this.defaultZMin?this.defaultZMin:c.min,this.zMax=void 0!==this.defaultZMax?this.defaultZMax:c.max,this.zMax<=this.zMin&&(this.zMax=this.zMin+1),this.zStep=void 0!==this.defaultZStep?this.defaultZStep:(this.zMax-this.zMin)/5,void 0!==this.colValue){var p=this.getColumnRange(i,this.colValue);this.valueMin=void 0!==this.defaultValueMin?this.defaultValueMin:p.min,this.valueMax=void 0!==this.defaultValueMax?this.defaultValueMax:p.max,this.valueMax<=this.valueMin&&(this.valueMax=this.valueMin+1)}this._setScale()}}},s.prototype._getDataPoints=function(t){var e,i,o,n,r,a,h=[];if(this.style===s.STYLE.GRID||this.style===s.STYLE.SURFACE){var d=[],c=[];for(o=0;ot;t++){var m=(t-p)/(u-p),g=240*m,v=this._hsv2rgb(g,1,1);c.strokeStyle=v,c.beginPath(),c.moveTo(h,r+t),c.lineTo(a,r+t),c.stroke()}c.strokeStyle=this.colorAxis,c.strokeRect(h,r,i,n)}if(this.style===s.STYLE.DOTSIZE&&(c.strokeStyle=this.colorAxis,c.fillStyle=this.colorDot,c.beginPath(),c.moveTo(h,r),c.lineTo(a,r),c.lineTo(a-i+e,d),c.lineTo(h,d),c.closePath(),c.fill(),c.stroke()),this.style===s.STYLE.DOTCOLOR||this.style===s.STYLE.DOTSIZE){var y=5,b=new f(this.valueMin,this.valueMax,(this.valueMax-this.valueMin)/5,!0);for(b.start(),b.getCurrent()0?this.yMin:this.yMax,o=this._convert3Dto2D(new l(x,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.xValueLabel(i.getCurrent())+" ",o.x,o.y),i.next()}for(g.lineWidth=1,s=void 0===this.defaultYStep,i=new f(this.yMin,this.yMax,this.yStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,o=this._convert3Dto2D(new l(n,i.getCurrent(),this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.yValueLabel(i.getCurrent())+" ",o.x,o.y),i.next();for(g.lineWidth=1,s=void 0===this.defaultZStep,i=new f(this.zMin,this.zMax,this.zStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax;!i.end();)t=this._convert3Dto2D(new l(n,r,i.getCurrent())),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(t.x-b,t.y),g.stroke(),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(this.zValueLabel(i.getCurrent())+" ",t.x-5,t.y),i.next();g.lineWidth=1,t=this._convert3Dto2D(new l(n,r,this.zMin)),e=this._convert3Dto2D(new l(n,r,this.zMax)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),g.lineWidth=1,p=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),p=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),g.lineWidth=1,t=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),t=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke();var w=this.xLabel;w.length>0&&(c=.1/this.scale.y,n=(this.xMin+this.xMax)/2,r=Math.cos(_)>0?this.yMin-c:this.yMax+c,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(w,o.x,o.y));var D=this.yLabel;D.length>0&&(d=.1/this.scale.x,n=Math.sin(_)>0?this.xMin-d:this.xMax+d,r=(this.yMin+this.yMax)/2,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(D,o.x,o.y));var M=this.zLabel;M.length>0&&(h=30,n=Math.cos(_)>0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax,a=(this.zMin+this.zMax)/2,o=this._convert3Dto2D(new l(n,r,a)),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(M,o.x-h,o.y))},s.prototype._hsv2rgb=function(t,e,i){var s,o,n,r,a,h;switch(r=i*e,a=Math.floor(t/60),h=r*(1-Math.abs(t/60%2-1)),a){case 0:s=r,o=h,n=0;break;case 1:s=h,o=r,n=0;break;case 2:s=0,o=r,n=h;break;case 3:s=0,o=h,n=r;break;case 4:s=h,o=0,n=r;break;case 5:s=r,o=0,n=h;break;default:s=0,o=0,n=0}return"RGB("+parseInt(255*s)+","+parseInt(255*o)+","+parseInt(255*n)+")"},s.prototype._redrawDataGrid=function(){var t,e,i,o,n,r,a,h,d,c,p,u,m,f=this.frame.canvas,g=f.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(n=0;n0}else r=!0;r?(m=(t.point.z+e.point.z+i.point.z+o.point.z)/4,c=240*(1-(m-this.zMin)*this.scale.z/this.verticalRatio),p=1,this.showShadow?(u=Math.min(1+D.x/M/2,1),a=this._hsv2rgb(c,p,u),h=a):(u=1,a=this._hsv2rgb(c,p,u),h=this.colorAxis)):(a="gray",h=this.colorAxis),d=.5,g.lineWidth=d,g.fillStyle=a,g.strokeStyle=h,g.beginPath(),g.moveTo(t.screen.x,t.screen.y),g.lineTo(e.screen.x,e.screen.y),g.lineTo(o.screen.x,o.screen.y),g.lineTo(i.screen.x,i.screen.y),g.closePath(),g.fill(),g.stroke()}}else for(n=0;np&&(p=0);var u,m,f;this.style===s.STYLE.DOTCOLOR?(u=240*(1-(d.point.value-this.valueMin)*this.scale.value),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)):this.style===s.STYLE.DOTSIZE?(m=this.colorDot,f=this.colorDotBorder):(u=240*(1-(d.point.z-this.zMin)*this.scale.z/this.verticalRatio),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)),i.lineWidth=1,i.strokeStyle=f,i.fillStyle=m,i.beginPath(),i.arc(d.screen.x,d.screen.y,p,0,2*Math.PI,!0),i.fill(),i.stroke()}}},s.prototype._redrawDataBar=function(){var t,e,i,o,n=this.frame.canvas,r=n.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(t=0;t0&&(t=this.dataPoints[0],s.lineWidth=1,s.strokeStyle="blue",s.beginPath(),s.moveTo(t.screen.x,t.screen.y)),e=1;e0&&s.stroke()}},s.prototype._onMouseDown=function(t){if(t=t||window.event,this.leftButtonDown&&this._onMouseUp(t),this.leftButtonDown=t.which?1===t.which:1===t.button,this.leftButtonDown||this.touchDown){this.startMouseX=o(t),this.startMouseY=n(t),this.startStart=new Date(this.start),this.startEnd=new Date(this.end),this.startArmRotation=this.camera.getArmRotation(),this.frame.style.cursor="move";var e=this;this.onmousemove=function(t){e._onMouseMove(t)},this.onmouseup=function(t){e._onMouseUp(t)},d.addEventListener(document,"mousemove",e.onmousemove),d.addEventListener(document,"mouseup",e.onmouseup),d.preventDefault(t)}},s.prototype._onMouseMove=function(t){t=t||window.event;var e=parseFloat(o(t))-this.startMouseX,i=parseFloat(n(t))-this.startMouseY,s=this.startArmRotation.horizontal+e/200,r=this.startArmRotation.vertical+i/200,a=4,h=Math.sin(a/360*2*Math.PI);Math.abs(Math.sin(s))0?1:0>t?-1:0}var s=e[0],o=e[1],n=e[2],r=i((o.x-s.x)*(t.y-s.y)-(o.y-s.y)*(t.x-s.x)),a=i((n.x-o.x)*(t.y-o.y)-(n.y-o.y)*(t.x-o.x)),h=i((s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x));return!(0!=r&&0!=a&&r!=a||0!=a&&0!=h&&a!=h||0!=r&&0!=h&&r!=h)},s.prototype._dataPointFromXY=function(t,e){var i,o=100,n=null,r=null,a=null,h=new c(t,e);if(this.style===s.STYLE.BAR||this.style===s.STYLE.BARCOLOR||this.style===s.STYLE.BARSIZE)for(i=this.dataPoints.length-1;i>=0;i--){n=this.dataPoints[i];var d=n.surfaces;if(d)for(var l=d.length-1;l>=0;l--){var p=d[l],u=p.corners,m=[u[0].screen,u[1].screen,u[2].screen],f=[u[2].screen,u[3].screen,u[0].screen];if(this._insideTriangle(h,m)||this._insideTriangle(h,f))return n}}else for(i=0;ib)&&o>b&&(a=b,r=n)}}return r},s.prototype._showTooltip=function(t){var e,i,s;this.tooltip?(e=this.tooltip.dom.content,i=this.tooltip.dom.line,s=this.tooltip.dom.dot):(e=document.createElement("div"),e.style.position="absolute",e.style.padding="10px",e.style.border="1px solid #4d4d4d",e.style.color="#1a1a1a",e.style.background="rgba(255,255,255,0.7)",e.style.borderRadius="2px",e.style.boxShadow="5px 5px 10px rgba(128,128,128,0.5)",i=document.createElement("div"),i.style.position="absolute",i.style.height="40px",i.style.width="0",i.style.borderLeft="1px solid #4d4d4d",s=document.createElement("div"),s.style.position="absolute",s.style.height="0",s.style.width="0",s.style.border="5px solid #4d4d4d",s.style.borderRadius="5px",this.tooltip={dataPoint:null,dom:{content:e,line:i,dot:s}}),this._hideTooltip(),this.tooltip.dataPoint=t,e.innerHTML="function"==typeof this.showTooltip?this.showTooltip(t.point):"
x:"+t.point.x+"
y:"+t.point.y+"
z:"+t.point.z+"
",e.style.left="0",e.style.top="0",this.frame.appendChild(e),this.frame.appendChild(i),this.frame.appendChild(s);var o=e.offsetWidth,n=e.offsetHeight,r=i.offsetHeight,a=s.offsetWidth,h=s.offsetHeight,d=t.screen.x-o/2;d=Math.min(Math.max(d,10),this.frame.clientWidth-10-o),i.style.left=t.screen.x+"px",i.style.top=t.screen.y-r+"px",e.style.left=d+"px",e.style.top=t.screen.y-r-n+"px",s.style.left=t.screen.x-a/2+"px",s.style.top=t.screen.y-h/2+"px"},s.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var t in this.tooltip.dom)if(this.tooltip.dom.hasOwnProperty(t)){var e=this.tooltip.dom[t];e&&e.parentNode&&e.parentNode.removeChild(e)}}},t.exports=s},function(t,e,i){function s(){this.armLocation=new o,this.armRotation={},this.armRotation.horizontal=0,this.armRotation.vertical=0,this.armLength=1.7,this.cameraLocation=new o,this.cameraRotation=new o(.5*Math.PI,0,0),this.calculateCameraOrientation()}var o=i(10);s.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},s.prototype.setArmRotation=function(t,e){void 0!==t&&(this.armRotation.horizontal=t),void 0!==e&&(this.armRotation.vertical=e,this.armRotation.vertical<0&&(this.armRotation.vertical=0),this.armRotation.vertical>.5*Math.PI&&(this.armRotation.vertical=.5*Math.PI)),(void 0!==t||void 0!==e)&&this.calculateCameraOrientation()},s.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},s.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.calculateCameraOrientation())},s.prototype.getArmLength=function(){return this.armLength},s.prototype.getCameraLocation=function(){return this.cameraLocation},s.prototype.getCameraRotation=function(){return this.cameraRotation},s.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical),this.cameraRotation.x=Math.PI/2-this.armRotation.vertical,this.cameraRotation.y=0,this.cameraRotation.z=-this.armRotation.horizontal},t.exports=s},function(t,e,i){function s(t,e,i){this.data=t,this.column=e,this.graph=i,this.index=void 0,this.value=void 0,this.values=i.getDistinctValues(t.get(),this.column),this.values.sort(function(t,e){return t>e?1:e>t?-1:0}),this.values.length>0&&this.selectValue(0),this.dataPoints=[],this.loaded=!1,this.onLoadCallback=void 0,i.animationPreload?(this.loaded=!1,this.loadInBackground()):this.loaded=!0}var o=i(4);s.prototype.isLoaded=function(){return this.loaded},s.prototype.getLoadedProgress=function(){for(var t=this.values.length,e=0;this.dataPoints[e];)e++;return Math.round(e/t*100)},s.prototype.getLabel=function(){return this.graph.filterLabel},s.prototype.getColumn=function(){return this.column},s.prototype.getSelectedValue=function(){return void 0===this.index?void 0:this.values[this.index]},s.prototype.getValues=function(){return this.values},s.prototype.getValue=function(t){if(t>=this.values.length)throw"Error: index out of range";return this.values[t]},s.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[]; var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var s=new o(this.data,{filter:function(t){return t[i.column]==i.value}}).get();e=this.graph._getDataPoints(s),this.dataPoints[t]=e}return e},s.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},s.prototype.selectValue=function(t){if(t>=this.values.length)throw"Error: index out of range";this.index=t,this.value=this.values[t]},s.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0&&(t--,this.setIndex(t))},s.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},s.prototype.setIndex=function(t){if(!(ts&&(s=0),s>this.values.length-1&&(s=this.values.length-1),s},s.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,s=i+3;return s},s.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,s=this.leftToIndex(i);this.setIndex(s),o.preventDefault()},s.prototype._onMouseUp=function(){this.frame.style.cursor="auto",o.removeEventListener(document,"mousemove",this.onmousemove),o.removeEventListener(document,"mouseup",this.onmouseup),o.preventDefault()},t.exports=s},function(t){function e(t,e,i,s){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,s)}e.prototype.setRange=function(t,e,i,s){this._start=t?t:0,this._end=e?e:0,this.setStep(i,s)},e.prototype.setStep=function(t,i){void 0===t||0>=t||(void 0!==i&&(this.prettyStep=i),this._step=this.prettyStep===!0?e.calculatePrettyStep(t):t)},e.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),s=2*Math.pow(10,Math.round(e(t/2))),o=5*Math.pow(10,Math.round(e(t/5))),n=i;return Math.abs(s-t)<=Math.abs(n-t)&&(n=s),Math.abs(o-t)<=Math.abs(n-t)&&(n=o),0>=n&&(n=1),n},e.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},e.prototype.getStep=function(){return this._step},e.prototype.start=function(){this._current=this._start-this._start%this._step},e.prototype.next=function(){this._current+=this._step},e.prototype.end=function(){return this._current>this._end},t.exports=e},function(t,e,i){function s(t,e,i,h){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!(Array.isArray(i)||i instanceof n||i instanceof r)&&i instanceof Object){var u=h;h=i,i=u}var m=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{getScale:function(){return m.timeAxis.step.scale},getStep:function(){return m.timeAxis.step.step},toScreen:m._toScreen.bind(m),toGlobalScreen:m._toGlobalScreen.bind(m),toTime:m._toTime.bind(m),toGlobalTime:m._toGlobalTime.bind(m)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.timeAxis2=null,this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.itemSet=new p(this.body),this.components.push(this.itemSet),this.itemsData=null,this.groupsData=null,h&&this.setOptions(h),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(32);s.prototype=new h,s.prototype.redraw=function(){this.itemSet&&this.itemSet.markDirty({refreshItems:!0}),this._redraw()},s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){if(void 0==this.options.start||void 0==this.options.end)var s=this._getDataRange();var o=void 0!=this.options.start?this.options.start:s.start,a=void 0!=this.options.end?this.options.end:s.end;this.setWindow(o,a,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.itemSet.setGroups(e)},s.prototype.setSelection=function(t,e){this.itemSet&&this.itemSet.setSelection(t),e&&e.focus&&this.focus(t,e)},s.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},s.prototype.focus=function(t,e){if(this.itemsData&&void 0!=t){var i=Array.isArray(t)?t:[t],s=this.itemsData.getDataSet().get(i,{type:{start:"Date",end:"Date"}}),o=null,n=null;if(s.forEach(function(t){var e=t.start.valueOf(),i="end"in t?t.end.valueOf():t.start.valueOf();(null===o||o>e)&&(o=e),(null===n||i>n)&&(n=i)}),null!==o&&null!==n){var r=(o+n)/2,a=Math.max(this.range.end-this.range.start,1.1*(n-o)),h=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(r-a/2,r+a/2,h)}}},s.prototype.getItemRange=function(){var t=this.itemsData.getDataSet(),e=null,i=null;if(t){var s=t.min("start");e=s?o.convert(s.start,"Date").valueOf():null;var n=t.max("start");n&&(i=o.convert(n.start,"Date").valueOf());var r=t.max("end");r&&(i=null==i?o.convert(r.end,"Date").valueOf():Math.max(i,o.convert(r.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},t.exports=s},function(t,e,i){function s(t,e,i,s){if(!(Array.isArray(i)||i instanceof n)&&i instanceof Object){var r=s;s=i,i=r}var h=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{toScreen:h._toScreen.bind(h),toGlobalScreen:h._toGlobalScreen.bind(h),toTime:h._toTime.bind(h),toGlobalTime:h._toGlobalTime.bind(h)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.linegraph=new p(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,s&&this.setOptions(s),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(34);s.prototype=new h,s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var s=void 0!=this.options.start?this.options.start:null,o=void 0!=this.options.end?this.options.end:null;this.setWindow(s,o,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.linegraph.setGroups(e)},s.prototype.getLegend=function(t,e,i){return void 0===e&&(e=15),void 0===i&&(i=15),void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].getLegend(e,i):"cannot find group:"+t},s.prototype.isGroupVisible=function(t){return void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].visible&&(void 0===this.linegraph.options.groups.visibility[t]||1==this.linegraph.options.groups.visibility[t]):!1},s.prototype.getItemRange=function(){var t=null,e=null;for(var i in this.linegraph.groups)if(this.linegraph.groups.hasOwnProperty(i)&&1==this.linegraph.groups[i].visible)for(var s=0;sr?r:t,e=null==e?r:r>e?r:e}return{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},t.exports=s},function(t,e,i){var s=i(44);e.convertHiddenOptions=function(t,e){if(t.hiddenDates=[],e&&1==Array.isArray(e)){for(var i=0;i=4*a){var p=0,u=n.clone();switch(i[h].repeat){case"daily":d.day()!=l.day()&&(p=1),d.dayOfYear(o.dayOfYear()),d.year(o.year()),d.subtract(7,"days"),l.dayOfYear(o.dayOfYear()),l.year(o.year()),l.subtract(7-p,"days"),u.add(1,"weeks");break;case"weekly":var m=l.diff(d,"days"),f=d.day();d.date(o.date()),d.month(o.month()),d.year(o.year()),l=d.clone(),d.day(f),l.day(f),l.add(m,"days"),d.subtract(1,"weeks"),l.subtract(1,"weeks"),u.add(1,"weeks");break;case"monthly":d.month()!=l.month()&&(p=1),d.month(o.month()),d.year(o.year()),d.subtract(1,"months"),l.month(o.month()),l.year(o.year()),l.subtract(1,"months"),l.add(p,"months"),u.add(1,"months");break;case"yearly":d.year()!=l.year()&&(p=1),d.year(o.year()),d.subtract(1,"years"),l.year(o.year()),l.subtract(1,"years"),l.add(p,"years"),u.add(1,"years");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}for(;u>d;)switch(t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()}),i[h].repeat){case"daily":d.add(1,"days"),l.add(1,"days");break;case"weekly":d.add(1,"weeks"),l.add(1,"weeks");break;case"monthly":d.add(1,"months"),l.add(1,"months");break;case"yearly":d.add(1,"y"),l.add(1,"y");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()})}}e.removeDuplicates(t);var g=e.isHidden(t.range.start,t.hiddenDates),v=e.isHidden(t.range.end,t.hiddenDates),y=t.range.start,b=t.range.end;1==g.hidden&&(y=1==t.range.startToFront?g.startDate-1:g.endDate+1),1==v.hidden&&(b=1==t.range.endToFront?v.startDate-1:v.endDate+1),(1==g.hidden||1==v.hidden)&&t.range._applyRange(y,b)}},e.removeDuplicates=function(t){for(var e=t.hiddenDates,i=[],s=0;s=e[s].start&&e[o].end<=e[s].end?e[o].remove=!0:e[o].start>=e[s].start&&e[o].start<=e[s].end?(e[s].end=e[o].end,e[o].remove=!0):e[o].end>=e[s].start&&e[o].end<=e[s].end&&(e[s].start=e[o].start,e[o].remove=!0));for(var s=0;s=r&&a>o){i=!0;break}}if(1==i&&o=e&&i>r&&(s+=r-n)}return s},e.correctTimeForHidden=function(t,i,o){return o=s(o).toDate().valueOf(),o-=e.getHiddenDurationBefore(t,i,o)},e.getHiddenDurationBefore=function(t,e,i){var o=0;i=s(i).toDate().valueOf();for(var n=0;n=e.start&&a=a&&(o+=a-r)}return o},e.getAccumulatedHiddenDuration=function(t,e,i){for(var s=0,o=0,n=e.start,r=0;r=e.start&&h=i)break;s+=h-a}}return s},e.snapAwayFromHidden=function(t,i,s,o){var n=e.isHidden(i,t);return 1==n.hidden?0>s?1==o?n.startDate-(n.endDate-i)-1:n.startDate-1:1==o?n.endDate+(i-n.startDate)+1:n.endDate+1:i},e.isHidden=function(t,e){for(var i=0;i=s&&o>t)return{hidden:!0,startDate:s,endDate:o}}return{hidden:!1,startDate:s,endDate:o}}},function(t){function e(t,e,i,s,o,n){this.current=0,this.autoScale=!0,this.stepIndex=0,this.step=1,this.scale=1,this.marginStart,this.marginEnd,this.deadSpace=0,this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.alignZeros=n,this.setRange(t,e,i,s,o)}e.prototype.setRange=function(t,e,i,s,o){this._start=void 0===o.min?t:o.min,this._end=void 0===o.max?e:o.max,this._start==this._end&&(this._start-=.75,this._end+=1),1==this.autoScale&&this.setMinimumStep(i,s),this.setFirst(o)},e.prototype.setMinimumStep=function(t,e){var i=this._end-this._start,s=1.2*i,o=t*(s/e),n=Math.round(Math.log(s)/Math.LN10),r=-1,a=Math.pow(10,n),h=0;0>n&&(h=n);for(var d=!1,l=h;Math.abs(l)<=Math.abs(n);l++){a=Math.pow(10,l);for(var c=0;c=o){d=!0,r=c;break}}if(1==d)break}this.stepIndex=r,this.scale=a,this.step=a*this.minorSteps[r]},e.prototype.setFirst=function(t){void 0===t&&(t={});var e=void 0===t.min?this._start-2*this.scale*this.minorSteps[this.stepIndex]:t.min,i=void 0===t.max?this._end+this.scale*this.minorSteps[this.stepIndex]:t.max;this.marginEnd=void 0===t.max?this.roundToMinor(i):t.max,this.marginStart=void 0===t.min?this.roundToMinor(e):t.min,1==this.alignZeros&&(this.marginEnd-this.marginStart)%this.step!=0&&(this.marginEnd+=this.marginEnd%this.step),this.deadSpace=this.roundToMinor(i)-i+this.roundToMinor(e)-e,this.marginRange=this.marginEnd-this.marginStart,this.current=this.marginEnd},e.prototype.roundToMinor=function(t){var e=t-t%(this.scale*this.minorSteps[this.stepIndex]);return t%(this.scale*this.minorSteps[this.stepIndex])>.5*this.scale*this.minorSteps[this.stepIndex]?e+this.scale*this.minorSteps[this.stepIndex]:e},e.prototype.hasNext=function(){return this.current>=this.marginStart},e.prototype.next=function(){var t=this.current;this.current-=this.step,this.current==t&&(this.current=this._end)},e.prototype.previous=function(){this.current+=this.step,this.marginEnd+=this.step,this.marginRange=this.marginEnd-this.marginStart},e.prototype.getCurrent=function(t){var e=Math.abs(this.current)0;s--){if("0"!=i[s]){if("."==i[s]||","==i[s]){i=i.slice(0,s);break}break}i=i.slice(0,s)}}else{var o="",n=i.indexOf("e");if(-1!=n&&(o=i.slice(n),i=i.slice(0,n)),n=Math.max(i.indexOf(","),i.indexOf(".")),-1===n?(0!==t&&(i+="."),n=i.length+t):0!==t&&(n+=t+1),n>i.length)for(var r=n-i.length;r>0;r--)i+="0";else i=i.slice(0,n);i+=o}return i},e.prototype.isMajor=function(){return this.current%(this.scale*this.majorSteps[this.stepIndex])==0},t.exports=e},function(t,e,i){function s(t,e){var i=h().hours(0).minutes(0).seconds(0).milliseconds(0);this.start=i.clone().add(-3,"days").valueOf(),this.end=i.clone().add(4,"days").valueOf(),this.body=t,this.deltaDifference=0,this.scaleOffset=0,this.startToFront=!1,this.endToFront=!0,this.defaultOptions={start:null,end:null,direction:"horizontal",moveable:!0,zoomable:!0,min:null,max:null,zoomMin:10,zoomMax:31536e10},this.options=r.extend({},this.defaultOptions),this.props={touch:{}},this.animateTimer=null,this.body.emitter.on("dragstart",this._onDragStart.bind(this)),this.body.emitter.on("drag",this._onDrag.bind(this)),this.body.emitter.on("dragend",this._onDragEnd.bind(this)),this.body.emitter.on("hold",this._onHold.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("DOMMouseScroll",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.setOptions(e)}function o(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}function n(t,e){return{x:t.pageX-r.getAbsoluteLeft(e),y:t.pageY-r.getAbsoluteTop(e)}}var r=i(1),a=i(47),h=i(44),d=i(25),l=i(15);s.prototype=new d,s.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable","activate","hiddenDates"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},s.prototype.setRange=function(t,e,i,s){s!==!0&&(s=!1);var o=void 0!=t?r.convert(t,"Date").valueOf():null,n=void 0!=e?r.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var a=this,h=this.start,d=this.end,c="number"==typeof i?i:500,p=(new Date).valueOf(),u=!1,m=function(){if(!a.props.touch.dragging){var t=(new Date).valueOf(),e=t-p,i=e>c,g=i||null===o?o:r.easeInOutQuad(e,h,o,c),v=i||null===n?n:r.easeInOutQuad(e,d,n,c);f=a._applyRange(g,v),l.updateHiddenDates(a.body,a.options.hiddenDates),u=u||f,f&&a.body.emitter.emit("rangechange",{start:new Date(a.start),end:new Date(a.end),byUser:s}),i?u&&a.body.emitter.emit("rangechanged",{start:new Date(a.start),end:new Date(a.end),byUser:s}):a.animateTimer=setTimeout(m,20)}};return m()}var f=this._applyRange(o,n);if(l.updateHiddenDates(this.body,this.options.hiddenDates),f){var g={start:new Date(this.start),end:new Date(this.end),byUser:s};this.body.emitter.emit("rangechange",g),this.body.emitter.emit("rangechanged",g)}},s.prototype._cancelAnimation=function(){this.animateTimer&&(clearTimeout(this.animateTimer),this.animateTimer=null)},s.prototype._applyRange=function(t,e){var i,s=null!=t?r.convert(t,"Date").valueOf():this.start,o=null!=e?r.convert(e,"Date").valueOf():this.end,n=null!=this.options.max?r.convert(this.options.max,"Date").valueOf():null,a=null!=this.options.min?r.convert(this.options.min,"Date").valueOf():null;if(isNaN(s)||null===s)throw new Error('Invalid start "'+t+'"');if(isNaN(o)||null===o)throw new Error('Invalid end "'+e+'"');if(s>o&&(o=s),null!==a&&a>s&&(i=a-s,s+=i,o+=i,null!=n&&o>n&&(o=n)),null!==n&&o>n&&(i=o-n,s-=i,o-=i,null!=a&&a>s&&(s=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>o-s&&(this.end-this.start===h&&s>this.start&&od&&(d=0),o-s>d&&(this.end-this.start===d&&sthis.end?(s=this.start,o=this.end):(i=o-s-d,s+=i/2,o-=i/2))}var l=this.start!=s||this.end!=o;return s>=this.start&&s<=this.end||o>=this.start&&o<=this.end||this.start>=s&&this.start<=o||this.end>=s&&this.end<=o||this.body.emitter.emit("checkRangedItems"),this.start=s,this.end=o,l},s.prototype.getRange=function(){return{start:this.start,end:this.end}},s.prototype.conversion=function(t,e){return s.conversion(this.start,this.end,t,e)},s.conversion=function(t,e,i,s){return void 0===s&&(s=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-s)}:{offset:0,scale:1}},s.prototype._onDragStart=function(){this.deltaDifference=0,this.previousDelta=0,this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.dragging=!0,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},s.prototype._onDrag=function(t){if(this.options.moveable&&this.props.touch.allowDragging){var e=this.options.direction;o(e);var i="horizontal"==e?t.gesture.deltaX:t.gesture.deltaY;i-=this.deltaDifference;var s=this.props.touch.end-this.props.touch.start,n=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);s-=n;var r="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,a=-i/r*s,h=this.props.touch.start+a,d=this.props.touch.end+a,c=l.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0),p=l.snapAwayFromHidden(this.body.hiddenDates,d,this.previousDelta-i,!0);if(c!=h||p!=d)return this.deltaDifference+=i,this.props.touch.start=c,this.props.touch.end=p,void this._onDrag(t);this.previousDelta=i,this._applyRange(h,d),this.body.emitter.emit("rangechange",{start:new Date(this.start),end:new Date(this.end),byUser:!0})}},s.prototype._onDragEnd=function(){this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.dragging=!1,this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end),byUser:!0}))},s.prototype._onMouseWheel=function(t){if(this.options.zoomable&&this.options.moveable){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i;i=0>e?1-e/5:1/(1+e/5);var s=a.fakeGesture(this,t),o=n(s.center,this.body.dom.center),r=this._pointerToDate(o);this.zoom(i,r,e)}t.preventDefault()}},s.prototype._onTouch=function(){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null,this.scaleOffset=0,this.deltaDifference=0},s.prototype._onHold=function(){this.props.touch.allowDragging=!1},s.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable&&(this.props.touch.allowDragging=!1,t.gesture.touches.length>1)){this.props.touch.center||(this.props.touch.center=n(t.gesture.center,this.body.dom.center));var e=1/(t.gesture.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,i),r=s-o,a=i-o+(this.props.touch.start-(i-o))*e,h=i+r+(this.props.touch.end-(i+r))*e;this.startToFront=1-e>0?!1:!0,this.endToFront=e-1>0?!1:!0;var d=l.snapAwayFromHidden(this.body.hiddenDates,a,1-e,!0),c=l.snapAwayFromHidden(this.body.hiddenDates,h,e-1,!0);(d!=a||c!=h)&&(this.props.touch.start=d,this.props.touch.end=c,this.scaleOffset=1-t.gesture.scale,a=d,h=c),this.setRange(a,h,!1,!0),this.startToFront=!1,this.endToFront=!0}},s.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(o(i),"horizontal"==i)return this.body.util.toTime(t.x).valueOf();var s=this.body.domProps.center.height;return e=this.conversion(s),t.y/e.scale+e.offset},s.prototype.zoom=function(t,e,i){null==e&&(e=(this.start+this.end)/2);var s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,e),n=s-o,r=e-o+(this.start-(e-o))*t,a=e+n+(this.end-(e+n))*t;this.startToFront=i>0?!1:!0,this.endToFront=-i>0?!1:!0;var h=l.snapAwayFromHidden(this.body.hiddenDates,r,i,!0),d=l.snapAwayFromHidden(this.body.hiddenDates,a,-i,!0);(h!=r||d!=a)&&(r=h,a=d),this.setRange(r,a,!1,!0),this.startToFront=!1,this.endToFront=!0},s.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,s=this.end+e*t;this.start=i,this.end=s},s.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,s=this.start-i,o=this.end-i;this.setRange(s,o)},t.exports=s},function(t,e){var i=.001;e.orderByStart=function(t){t.sort(function(t,e){return t.data.start-e.data.start})},e.orderByEnd=function(t){t.sort(function(t,e){var i="end"in t.data?t.data.end:t.data.start,s="end"in e.data?e.data.end:e.data.start;return i-s})},e.stack=function(t,i,s){var o,n;if(s)for(o=0,n=t.length;n>o;o++)t[o].top=null;for(o=0,n=t.length;n>o;o++){var r=t[o];if(r.stack&&null===r.top){r.top=i.axis;do{for(var a=null,h=0,d=t.length;d>h;h++){var l=t[h];if(null!==l.top&&l!==r&&l.stack&&e.collision(r,l,i.item)){a=l;break}}null!=a&&(r.top=a.top+a.height+i.item.vertical)}while(a)}}},e.nostack=function(t,e,i){var s,o,n;for(s=0,o=t.length;o>s;s++)if(void 0!==t[s].data.subgroup){n=e.axis;for(var r in i)i.hasOwnProperty(r)&&1==i[r].visible&&i[r].indexe.left&&t.top-s.vertical+ie.top}},function(t,e,i){function s(t,e,i,o){this.current=new Date,this._start=new Date,this._end=new Date,this.autoScale=!0,this.scale="day",this.step=1,this.setRange(t,e,i),this.switchedDay=!1,this.switchedMonth=!1,this.switchedYear=!1,this.hiddenDates=o,void 0===o&&(this.hiddenDates=[]),this.format=s.FORMAT}var o=i(44),n=i(15),r=i(1);s.FORMAT={minorLabels:{millisecond:"SSS",second:"s",minute:"HH:mm",hour:"HH:mm",weekday:"ddd D",day:"D",month:"MMM",year:"YYYY"},majorLabels:{millisecond:"HH:mm:ss",second:"D MMMM HH:mm",minute:"ddd D MMMM",hour:"ddd D MMMM",weekday:"MMMM YYYY",day:"MMMM YYYY",month:"YYYY",year:""}},s.prototype.setFormat=function(t){var e=r.deepExtend({},s.FORMAT);this.format=r.deepExtend(e,t)},s.prototype.setRange=function(t,e,i){if(!(t instanceof Date&&e instanceof Date))throw"No legal start or end date in method setRange";this._start=void 0!=t?new Date(t.valueOf()):new Date,this._end=void 0!=e?new Date(e.valueOf()):new Date,this.autoScale&&this.setMinimumStep(i)},s.prototype.first=function(){this.current=new Date(this._start.valueOf()),this.roundToMinor()},s.prototype.roundToMinor=function(){switch(this.scale){case"year":this.current.setFullYear(this.step*Math.floor(this.current.getFullYear()/this.step)),this.current.setMonth(0);case"month":this.current.setDate(1);case"day":case"weekday":this.current.setHours(0);case"hour":this.current.setMinutes(0);case"minute":this.current.setSeconds(0);case"second":this.current.setMilliseconds(0)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.setMilliseconds(this.current.getMilliseconds()-this.current.getMilliseconds()%this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()-this.current.getSeconds()%this.step); break;case"minute":this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step);break;case"hour":this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);break;case"month":this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()-this.current.getFullYear()%this.step)}},s.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},s.prototype.next=function(){var t=this.current.valueOf();if(this.current.getMonth()<6)switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current=new Date(this.current.valueOf()+1e3*this.step);break;case"minute":this.current=new Date(this.current.valueOf()+1e3*this.step*60);break;case"hour":this.current=new Date(this.current.valueOf()+1e3*this.step*60*60);var e=this.current.getHours();this.current.setHours(e-e%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}else switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()+this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()+this.step);break;case"hour":this.current.setHours(this.current.getHours()+this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.getMilliseconds()0?t.step:1,this.autoScale=!1)},s.prototype.setAutoScale=function(t){this.autoScale=t},s.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,s=864e5,o=36e5,n=6e4,r=1e3,a=1;1e3*e>t&&(this.scale="year",this.step=1e3),500*e>t&&(this.scale="year",this.step=500),100*e>t&&(this.scale="year",this.step=100),50*e>t&&(this.scale="year",this.step=50),10*e>t&&(this.scale="year",this.step=10),5*e>t&&(this.scale="year",this.step=5),e>t&&(this.scale="year",this.step=1),3*i>t&&(this.scale="month",this.step=3),i>t&&(this.scale="month",this.step=1),5*s>t&&(this.scale="day",this.step=5),2*s>t&&(this.scale="day",this.step=2),s>t&&(this.scale="day",this.step=1),s/2>t&&(this.scale="weekday",this.step=1),4*o>t&&(this.scale="hour",this.step=4),o>t&&(this.scale="hour",this.step=1),15*n>t&&(this.scale="minute",this.step=15),10*n>t&&(this.scale="minute",this.step=10),5*n>t&&(this.scale="minute",this.step=5),n>t&&(this.scale="minute",this.step=1),15*r>t&&(this.scale="second",this.step=15),10*r>t&&(this.scale="second",this.step=10),5*r>t&&(this.scale="second",this.step=5),r>t&&(this.scale="second",this.step=1),200*a>t&&(this.scale="millisecond",this.step=200),100*a>t&&(this.scale="millisecond",this.step=100),50*a>t&&(this.scale="millisecond",this.step=50),10*a>t&&(this.scale="millisecond",this.step=10),5*a>t&&(this.scale="millisecond",this.step=5),a>t&&(this.scale="millisecond",this.step=1)}},s.snap=function(t,e,i){var s=new Date(t.valueOf());if("year"==e){var o=s.getFullYear()+Math.round(s.getMonth()/12);s.setFullYear(Math.round(o/i)*i),s.setMonth(0),s.setDate(0),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("month"==e)s.getDate()>15?(s.setDate(1),s.setMonth(s.getMonth()+1)):s.setDate(1),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0);else if("day"==e){switch(i){case 5:case 2:s.setHours(24*Math.round(s.getHours()/24));break;default:s.setHours(12*Math.round(s.getHours()/12))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("weekday"==e){switch(i){case 5:case 2:s.setHours(12*Math.round(s.getHours()/12));break;default:s.setHours(6*Math.round(s.getHours()/6))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("hour"==e){switch(i){case 4:s.setMinutes(60*Math.round(s.getMinutes()/60));break;default:s.setMinutes(30*Math.round(s.getMinutes()/30))}s.setSeconds(0),s.setMilliseconds(0)}else if("minute"==e){switch(i){case 15:case 10:s.setMinutes(5*Math.round(s.getMinutes()/5)),s.setSeconds(0);break;case 5:s.setSeconds(60*Math.round(s.getSeconds()/60));break;default:s.setSeconds(30*Math.round(s.getSeconds()/30))}s.setMilliseconds(0)}else if("second"==e)switch(i){case 15:case 10:s.setSeconds(5*Math.round(s.getSeconds()/5)),s.setMilliseconds(0);break;case 5:s.setMilliseconds(1e3*Math.round(s.getMilliseconds()/1e3));break;default:s.setMilliseconds(500*Math.round(s.getMilliseconds()/500))}else if("millisecond"==e){var n=i>5?i/2:1;s.setMilliseconds(Math.round(s.getMilliseconds()/n)*n)}return s},s.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.switchedYear=!1,this.scale){case"year":case"month":case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedMonth)switch(this.switchedMonth=!1,this.scale){case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedDay)switch(this.switchedDay=!1,this.scale){case"millisecond":case"second":case"minute":case"hour":return!0;default:return!1}switch(this.scale){case"millisecond":return 0==this.current.getMilliseconds();case"second":return 0==this.current.getSeconds();case"minute":return 0==this.current.getHours()&&0==this.current.getMinutes();case"hour":return 0==this.current.getHours();case"weekday":case"day":return 1==this.current.getDate();case"month":return 0==this.current.getMonth();case"year":return!1;default:return!1}},s.prototype.getLabelMinor=function(t){void 0==t&&(t=this.current);var e=this.format.minorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getLabelMajor=function(t){void 0==t&&(t=this.current);var e=this.format.majorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getClassName=function(){function t(t){return t/h%2==0?" even":" odd"}function e(t){return t.isSame(new Date,"day")?" today":t.isSame(o().add(1,"day"),"day")?" tomorrow":t.isSame(o().add(-1,"day"),"day")?" yesterday":""}function i(t){return t.isSame(new Date,"week")?" current-week":""}function s(t){return t.isSame(new Date,"month")?" current-month":""}function n(t){return t.isSame(new Date,"year")?" current-year":""}var r=o(this.current),a=r.locale?r.locale("en"):r.lang("en"),h=this.step;switch(this.scale){case"millisecond":return t(a.milliseconds()).trim();case"second":return t(a.seconds()).trim();case"minute":return t(a.minutes()).trim();case"hour":var d=a.hours();return 4==this.step&&(d=d+"-"+(d+4)),d+"h"+e(a)+t(a.hours());case"weekday":return a.format("dddd").toLowerCase()+e(a)+i(a)+t(a.date());case"day":var l=a.date(),c=a.format("MMMM").toLowerCase();return"day"+l+" "+c+s(a)+t(l-1);case"month":return a.format("MMMM").toLowerCase()+s(a)+t(a.month());case"year":var p=a.year();return"year"+p+n(a)+t(p);default:return""}},t.exports=s},function(t,e,i){function s(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null}var o=i(45),n=i(1);s.prototype.stack=!0,s.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setData=function(t){this.data=t,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},s.prototype.isVisible=function(){return!1},s.prototype.show=function(){return!1},s.prototype.hide=function(){return!1},s.prototype.redraw=function(){},s.prototype.repositionX=function(){},s.prototype.repositionY=function(){},s.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="delete",i.title="Delete this item",o(i,{preventDefault:!0}).on("tap",function(t){e.parent.removeFromDataSet(e),t.stopPropagation()}),t.appendChild(i),this.dom.deleteButton=i}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},s.prototype._updateContents=function(t){var e;if(this.options.template){var i=this.parent.itemSet.itemsData.get(this.id);e=this.options.template(i)}else e=this.data.content;if(e!==this.content){if(e instanceof Element)t.innerHTML="",t.appendChild(e);else if(void 0!=e)t.innerHTML=e;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.content=e}},s.prototype._updateTitle=function(t){null!=this.data.title?t.title=this.data.title||"":t.removeAttribute("title")},s.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var e=[];if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=Object.keys(this.data)}for(var i=0;it.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},s.prototype.show=r.prototype.show,s.prototype.hide=r.prototype.hide,s.prototype.repositionX=r.prototype.repositionX,s.prototype.repositionY=function(t){var e="top"===this.options.orientation;this.dom.content.style.top=e?"":"0",this.dom.content.style.bottom=e?"0":"";var i;if(void 0!==this.data.subgroup){var s=this.data.subgroup,o=this.parent.subgroups,r=o[s].index;if(1==e){i=this.parent.subgroups[s].height+t.item.vertical,i+=0==r?t.axis-.5*t.item.vertical:0;var a=this.parent.top;for(var h in o)o.hasOwnProperty(h)&&1==o[h].visible&&o[h].indexr&&(a+=o[h].height+t.item.vertical);i=this.parent.subgroups[s].height+t.item.vertical,this.dom.box.style.top=a+"px",this.dom.box.style.bottom=""}}else this.parent instanceof n?(i=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.top=e?"0":"",this.dom.box.style.bottom=e?"":"0"):(i=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=i+"px"},t.exports=s},function(t,e,i){function s(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);o.call(this,t,e,i)}{var o=i(20);i(1)}s.prototype=new o(null,null,null),s.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.startt.start-e&&this.data.startt.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.box),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.dom.content.style.maxWidth="none",this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dom.content.style.maxWidth="",this.dirty=!1}this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},s.prototype.show=function(){this.displayed||this.redraw()},s.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.top=null,this.left=null,this.displayed=!1}},s.prototype.repositionX=function(){var t,e,i=this.parent.width,s=this.conversion.toScreen(this.data.start),o=this.conversion.toScreen(this.data.end);-i>s&&(s=-i),o>2*i&&(o=2*i);var n=Math.max(o-s,1);switch(this.overflow?(this.left=s,this.width=n+this.props.content.width,e=this.props.content.width):(this.left=s,this.width=n,e=Math.min(o-s-2*this.options.padding,this.props.content.width)),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=n+"px",this.options.align){case"left":this.dom.content.style.left="0";break;case"right":this.dom.content.style.left=Math.max(n-e-2*this.options.padding,0)+"px";break;case"center":this.dom.content.style.left=Math.max((n-e-2*this.options.padding)/2,0)+"px";break;default:t=this.overflow?o>0?Math.max(-s,0):-e:0>s?Math.min(-s,o-s-e-2*this.options.padding):0,this.dom.content.style.left=t+"px"}},s.prototype.repositionY=function(){var t=this.options.orientation,e=this.dom.box;e.style.top="top"==t?this.top+"px":this.parent.height-this.top-this.height+"px"},s.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="drag-left",t.dragLeftItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},s.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="drag-right",t.dragRightItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=s},function(t){function e(){this.options=null,this.props=null}e.prototype.setOptions=function(t){t&&util.extend(this.options,t)},e.prototype.redraw=function(){return!1},e.prototype.destroy=function(){},e.prototype._isResized=function(){var t=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;return this.props._previousWidth=this.props.width,this.props._previousHeight=this.props.height,t},t.exports=e},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCurrentTime:!0,locales:a,locale:"en"},this.options=o.extend({},this.defaultOptions),this.offset=0,this._create(),this.setOptions(e)}var o=i(1),n=i(25),r=i(44),a=i(48);s.prototype=new n,s.prototype._create=function(){var t=document.createElement("div");t.className="currenttime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},s.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},s.prototype.setOptions=function(t){t&&o.selectiveExtend(["showCurrentTime","locale","locales"],this.options,t)},s.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=new Date((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),s=this.options.locales[this.options.locale],o=s.current+" "+s.time+": "+r(e).format("dddd, MMMM Do YYYY, H:mm:ss");o=o.charAt(0).toUpperCase()+o.substring(1),this.bar.style.left=i+"px",this.bar.title=o}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},s.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,s=1/i/10;30>s&&(s=30),s>1e3&&(s=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,s)}var e=this;t()},s.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},s.prototype.setCurrentTime=function(t){var e=o.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},s.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCustomTime:!1,locales:h,locale:"en",id:0},this.options=n.extend({},this.defaultOptions),this.customTime=e&&e.time?e.time:new Date,this.eventParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(25),a=i(44),h=i(48);s.prototype=new r,s.prototype.setOptions=function(t){t&&(n.selectiveExtend(["showCustomTime","locale","locales","id"],this.options,t),this.options.id&&this.redraw())},s.prototype._create=function(){var t=document.createElement("div");t.className="customtime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=o(t,{prevent_default:!0}),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this))},s.prototype.destroy=function(){this.options.showCustomTime=!1,this.redraw(),this.hammer.enable(!1),this.hammer=null,this.body=null},s.prototype.redraw=function(){if(this.options.showCustomTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime),i=this.options.locales[this.options.locale],s=i.time+": "+a(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss");s=s.charAt(0).toUpperCase()+s.substring(1),this.bar.style.left=e+"px",this.bar.title=s}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar);return!1},s.prototype.setCustomTime=function(t){this.customTime=n.convert(t,"Date"),this.redraw()},s.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},s.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation(),t.preventDefault()},s.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=t.gesture.deltaX,i=this.body.util.toScreen(this.eventParams.customTime)+e,s=this.body.util.toTime(i);this.setCustomTime(s),this.body.emitter.emit("timechange",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault()}},s.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault())},t.exports=s},function(t,e,i){function s(t,e,i,s){this.id=o.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!0,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}},title:{left:{text:void 0},right:{text:void 0}},format:{left:{decimals:void 0},right:{decimals:void 0}}},this.linegraphOptions=s,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{},title:{}},this.dom={},this.range={start:0,end:0},this.options=o.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.offsetHeight,this.hidden=!1,this.stepPixels=25,this.stepPixelsForced=25,this.zeroCrossing=-1,this.lineOffset=0,this.master=!0,this.svgElements={},this.iconsRemoved=!1,this.groups={},this.amountOfGroups=0,this._create();var n=this;this.body.emitter.on("verticalDrag",function(){n.dom.lineContainer.style.top=n.body.domProps.scrollTop+"px"})}var o=i(1),n=i(2),r=i(25),a=i(16);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible","customRange","title","format","alignZeros"];o.selectiveExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")),1==e&&this.dom.frame&&(this.hide(),this.show())}},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%",this.dom.lineContainer.style.height=this.height,this.dom.lineContainer.style.position="relative",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg)},s.prototype._redrawGroupIcons=function(){n.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,s=4,o=s+.5*i;t="left"==this.options.orientation?s:this.width-e-s;for(var r in this.groups)this.groups.hasOwnProperty(r)&&(1!=this.groups[r].visible||void 0!==this.linegraphOptions.visibility[r]&&1!=this.linegraphOptions.visibility[r]||(this.groups[r].drawIcon(t,o,this.svgElements,this.svg,e,i),o+=i+s));n.cleanupElements(this.svgElements),this.iconsRemoved=!1},s.prototype._cleanupIcons=function(){0==this.iconsRemoved&&(n.prepareElements(this.svgElements),n.cleanupElements(this.svgElements),this.iconsRemoved=!0)},s.prototype.show=function(){this.hidden=!1,this.dom.frame.parentNode||("left"==this.options.orientation?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.right.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},s.prototype.hide=function(){this.hidden=!0,this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)},s.prototype.setRange=function(t,e){0==this.master&&1==this.options.alignZeros&&-1!=this.zeroCrossing&&t>0&&(t=0),this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1,e=0;this.dom.lineContainer.style.top=this.body.domProps.scrollTop+"px";for(var i in this.groups)this.groups.hasOwnProperty(i)&&(1!=this.groups[i].visible||void 0!==this.linegraphOptions.visibility[i]&&1!=this.linegraphOptions.visibility[i]||e++);if(0==this.amountOfGroups||0==e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=1==this.options.visible?Number((""+this.options.width).replace("px","")):0;var s=this.props,o=this.dom.frame;o.className="dataaxis",this._calculateCharSize();var n=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;s.minorLabelHeight=r?s.minorCharHeight:0,s.majorLabelHeight=a?s.majorCharHeight:0,s.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,s.minorLineHeight=1,s.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,s.majorLineHeight=1,"left"==n?(o.style.top="0",o.style.left="0",o.style.bottom="",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.left.width,this.props.height=this.body.domProps.left.height):(o.style.top="",o.style.bottom="0",o.style.left="0",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.right.width,this.props.height=this.body.domProps.right.height),t=this._redrawLabels(),t=this._isResized()||t,1==this.options.icons?this._redrawGroupIcons():this._cleanupIcons(),this._redrawTitle(n) -}return t},s.prototype._redrawLabels=function(){var t=!1;n.prepareElements(this.DOMelements.lines),n.prepareElements(this.DOMelements.labels);var e=this.options.orientation,i=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,s=new a(this.range.start,this.range.end,i,this.dom.frame.offsetHeight,this.options.customRange[this.options.orientation],0==this.master&&this.options.alignZeros);this.step=s;var o=(this.dom.frame.offsetHeight-s.deadSpace*(this.dom.frame.offsetHeight/s.marginRange))/((s.marginRange-s.deadSpace)/s.step);this.stepPixels=o;var r=this.height/o,h=0;if(0==this.master){o=this.stepPixelsForced,h=Math.round(this.dom.frame.offsetHeight/o-r);for(var d=0;.5*h>d;d++)s.previous();if(r=this.height/o,-1!=this.zeroCrossing&&1==this.options.alignZeros){var l=s.marginEnd/s.step-this.zeroCrossing;if(l>0)for(var d=0;l>d;d++)s.next();else if(0>l)for(var d=0;-l>d;d++)s.previous()}}else r+=.25;this.valueAtZero=s.marginEnd;var c,p=0,u=1;void 0!==this.options.format[e]&&(c=this.options.format[e].decimals),this.maxLabelSize=0;for(var m=0;u=0&&this._redrawLabel(m-2,s.getCurrent(c),e,"yAxis major",this.props.majorCharHeight),this._redrawLine(m,e,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(m,e,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),1==this.master&&0==s.current&&(this.zeroCrossing=u),u++}this.conversionFactor=0==this.master?m/(this.valueAtZero-s.current):this.dom.frame.offsetHeight/s.marginRange;var g=0;void 0!==this.options.title[e]&&void 0!==this.options.title[e].text&&(g=this.props.titleCharHeight);var v=1==this.options.icons?Math.max(this.options.iconWidth,g)+this.options.labelOffsetX+15:g+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-v&&1==this.options.visible?(this.width=this.maxLabelSize+v,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+v),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):(n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),t=!1),t},s.prototype.convertValue=function(t){var e=this.valueAtZero-t,i=e*this.conversionFactor;return i},s.prototype._redrawLabel=function(t,e,i,s,o){var r=n.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=s,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*o+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSized;d++){var c=this.visibleItems[d];c.repositionY(e)}return s},s.prototype._calculateHeight=function(t){var e,i=this.visibleItems;this.resetSubgroups();var s=this;if(i.length){var n=i[0].top,r=i[0].top+i[0].height;if(o.forEach(i,function(t){n=Math.min(n,t.top),r=Math.max(r,t.top+t.height),void 0!==t.data.subgroup&&(s.subgroups[t.data.subgroup].height=Math.max(s.subgroups[t.data.subgroup].height,t.height),s.subgroups[t.data.subgroup].visible=!0)}),n>t.axis){var a=n-t.axis;r-=a,o.forEach(i,function(t){t.top-=a})}e=r+t.item.vertical/2}else e=t.axis+t.item.vertical;return e=Math.max(e,this.props.label.height)},s.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},s.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;it?-1:l>=t?0:1};if(e.length>0)for(n=0;nl}),1==this.checkRangedItems)for(this.checkRangedItems=!1,n=0;nl})}for(n=0;n=0&&(n=e[r],!o(n));r--)void 0===s[n.id]&&(s[n.id]=!0,i.push(n));for(r=t+1;rs;s++){var n=this.visibleItems[s];n.repositionY(e)}return i},s.prototype.show=function(){this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={type:null,orientation:"bottom",align:"auto",stack:!0,groupOrder:null,selectable:!0,editable:{updateTime:!1,updateGroup:!1,add:!1,remove:!1},snap:h.snap,onAdd:function(t,e){e(t)},onUpdate:function(t,e){e(t)},onMove:function(t,e){e(t)},onRemove:function(t,e){e(t)},onMoving:function(t,e){e(t)},margin:{item:{horizontal:10,vertical:10},axis:20},padding:5},this.options=n.extend({},this.defaultOptions),this.itemOptions={type:{start:"Date",end:"Date"}},this.conversion={toScreen:t.util.toScreen,toTime:t.util.toTime},this.dom={},this.props={},this.hammer=null;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.stackDirty=!0,this.touchParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(3),a=i(4),h=i(19),d=i(25),l=i(30),c=i(31),p=i(22),u=i(23),m=i(24),f=i(21),g="__ungrouped__",v="__background__";s.prototype=new d,s.types={background:f,box:p,range:m,point:u},s.prototype._create=function(){var t=document.createElement("div");t.className="itemset",t["timeline-itemset"]=this,this.dom.frame=t;var e=document.createElement("div");e.className="background",t.appendChild(e),this.dom.background=e;var i=document.createElement("div");i.className="foreground",t.appendChild(i),this.dom.foreground=i;var s=document.createElement("div");s.className="axis",this.dom.axis=s;var n=document.createElement("div");n.className="labelset",this.dom.labelSet=n,this._updateUngrouped();var r=new c(v,null,this);r.show(),this.groups[v]=r,this.hammer=o(this.body.dom.centerContainer,{preventDefault:!0}),this.hammer.on("touch",this._onTouch.bind(this)),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this)),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("hold",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.show()},s.prototype.setOptions=function(t){if(t){var e=["type","align","orientation","padding","stack","selectable","groupOrder","dataAttributes","template","hide","snap"];n.selectiveExtend(e,this.options,t),"margin"in t&&("number"==typeof t.margin?(this.options.margin.axis=t.margin,this.options.margin.item.horizontal=t.margin,this.options.margin.item.vertical=t.margin):"object"==typeof t.margin&&(n.selectiveExtend(["axis"],this.options.margin,t.margin),"item"in t.margin&&("number"==typeof t.margin.item?(this.options.margin.item.horizontal=t.margin.item,this.options.margin.item.vertical=t.margin.item):"object"==typeof t.margin.item&&n.selectiveExtend(["horizontal","vertical"],this.options.margin.item,t.margin.item)))),"editable"in t&&("boolean"==typeof t.editable?(this.options.editable.updateTime=t.editable,this.options.editable.updateGroup=t.editable,this.options.editable.add=t.editable,this.options.editable.remove=t.editable):"object"==typeof t.editable&&n.selectiveExtend(["updateTime","updateGroup","add","remove"],this.options.editable,t.editable));var i=function(e){var i=t[e];if(i){if(!(i instanceof Function))throw new Error("option "+e+" must be a function "+e+"(item, callback)");this.options[e]=i}}.bind(this);["onAdd","onUpdate","onRemove","onMove","onMoving"].forEach(i),this.markDirty()}},s.prototype.markDirty=function(t){this.groupIds=[],this.stackDirty=!0,t&&t.refreshItems&&n.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()})},s.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.axis.parentNode&&this.dom.axis.parentNode.removeChild(this.dom.axis),this.dom.labelSet.parentNode&&this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame),this.dom.axis.parentNode||this.body.dom.backgroundVertical.appendChild(this.dom.axis),this.dom.labelSet.parentNode||this.body.dom.left.appendChild(this.dom.labelSet)},s.prototype.setSelection=function(t){var e,i,s,o;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;i>e;e++)s=this.selection[e],o=this.items[s],o&&o.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],o=this.items[s],o&&(this.selection.push(s),o.select())},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var o in this.groups)if(this.groups.hasOwnProperty(o))for(var n=this.groups[o],r=n.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="itemset"+(h?" editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var c=this.stackDirty,p=this._firstGroup(),u={item:t.item,axis:t.axis},m={item:t.item,axis:t.item.vertical/2},f=0,g=t.axis+t.item.vertical;return this.groups[v].redraw(e,m,c),n.forEach(this.groups,function(t){var i=t==p?u:m,s=t.redraw(e,i,c);r=s||r,f+=t.height}),f=Math.max(f,g),this.stackDirty=!1,a.style.height=i(f),this.props.width=a.offsetWidth,this.props.height=f,this.dom.axis.style.top=i("top"==o?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left="0",r=this._isResized()||r},s.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[g];return i||null},s.prototype._updateUngrouped=function(){{var t,e,i=this.groups[g];this.groups[v]}if(this.groupsData){if(i){i.hide(),delete this.groups[g];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var s=this._getGroupId(t.data),o=this.groups[s];o&&o.add(t)||t.hide()}}}else if(!i){var n=null,r=null;i=new l(n,r,this),this.groups[g]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],i.add(t));i.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change",{queue:!0})},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},s.prototype._getGroupId=function(t){var e=this._getType(t);return"background"==e&&void 0==t.group?v:this.groupsData?t.group:g},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=e._getType(i),r=s.types[n];if(o&&(r&&o instanceof r?e._updateItem(o,i):(e._removeItem(o),o=null)),!o){if(!r)throw new TypeError("rangeoverflow"==n?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+n+'"');o=new r(i,e.conversion,e.options),o.id=t,e._addItem(o)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0})},s.prototype._onAdd=s.prototype._onUpdate,s.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var s=i.items[t];s&&(e++,i._removeItem(s))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0}))},s.prototype._order=function(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==g||t==v)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new l(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change",{queue:!0})},s.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change",{queue:!0})},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.setData(e),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1),t.parent&&t.parent.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||o.length>0)&&this.body.emitter.emit("select",{items:a})}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.options.snap||null,o=s.itemFromTarget(t);if(o){var r=e.itemsData.get(o.id);this.options.onUpdate(r,function(t){t&&e.itemsData.getDataSet().update(t)})}else{var a=n.getAbsoluteLeft(this.dom.frame),h=t.gesture.center.pageX-a,d=this.body.util.toTime(h),l=this.body.util.getScale(),c=this.body.util.getStep(),p={start:i?i(d,l,c):d,content:"new item"};if("range"===this.options.type){var u=this.body.util.toTime(h+this.props.width/5);p.end=i?i(u,l,c):u}p[this.itemsData._fieldId]=n.randomUUID();var m=this.groupFromTarget(t);m&&(p.group=m.groupId),this.options.onAdd(p,function(t){t&&e.itemsData.getDataSet().add(t)})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=s.itemFromTarget(t);if(i){e=this.getSelection();var o=t.gesture.touches[0]&&t.gesture.touches[0].shiftKey||!1;if(o){e.push(i.id);var n=s._getItemRange(this.itemsData.get(e,this.itemOptions));e=[];for(var r in this.items)if(this.items.hasOwnProperty(r)){var a=this.items[r],h=a.data.start,d=void 0!==a.data.end?a.data.end:h;h>=n.min&&d<=n.max&&e.push(a.id)}}else{var l=e.indexOf(i.id);-1==l?e.push(i.id):e.splice(l,1)}this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()})}}},s._getItemRange=function(t){var e=null,i=null;return t.forEach(function(t){(null==i||t.starte)&&(e=t.end):(null==e||t.start>e)&&(e=t.start) -}),{min:i,max:e}},s.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},s.prototype.groupFromTarget=function(t){for(var e=t.gesture.center.clientY,i=0;ia&&ea)return o}else if(0===i&&e"));this.dom.textArea.innerHTML=s,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},s.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){n.prepareElements(this.svgElements);var t=window.getComputedStyle(this.dom.frame).paddingTop,e=Number(t.replace("px","")),i=e,s=this.options.iconSize,o=.75*this.options.iconSize,r=e+.5*o+3;this.svg.style.width=s+5+e+"px";for(var a in this.groups)this.groups.hasOwnProperty(a)&&(1!=this.groups[a].visible||void 0!==this.linegraphOptions.visibility[a]&&1!=this.linegraphOptions.visibility[a]||(this.groups[a].drawIcon(i,r,this.svgElements,this.svg,s,o),r+=o+this.options.iconSpacing));n.cleanupElements(this.svgElements)}},t.exports=s},function(t,e,i){function s(t,e){this.id=o.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,handleOverlap:"overlap",align:"center"},catmullRom:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}},groups:{visibility:{}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1,this.updateSVGheight=!1,this.updateSVGheightOnResize=!1;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.COUNTER=0,this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.props.width),i.redraw.call(i,!0)}),this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups},this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(25),d=i(28),l=i(29),c=i(33),p=i(50),u="__ungrouped__";s.prototype=new h,s.prototype._create=function(){var t=document.createElement("div");t.className="LineGraph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new c(this.body,this.options.legend,"right",this.options.groups),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","height","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];void 0===t.graphHeight&&void 0!==t.height&&void 0!==this.body.domProps.centerContainer.height?(this.updateSVGheight=!0,this.updateSVGheightOnResize=!0):void 0!==this.body.domProps.centerContainer.height&&void 0!==t.graphHeight&&parseInt((t.graphHeight+"").replace("px",""))0){var d=this.body.util.toGlobalTime(-this.body.domProps.root.width),l=this.body.util.toGlobalTime(2*this.body.domProps.root.width),c={};for(this._getRelevantData(a,c,d,l),this._applySampling(a,c),e=0;eu&&console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle."),this.COUNTER=0,this.abortedGraphUpdate=!1,e=0;e0)for(r=0;rs){d.push(h);break}d.push(h)}}else for(a=0;ai&&h.x0)for(var s=0;s0){var n=1,r=o.length,a=this.body.util.toGlobalScreen(o[o.length-1].x)-this.body.util.toGlobalScreen(o[0].x),h=r/a;n=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=[],l=0;r>l;l+=n)d.push(o[l]);e[t[s]]=d}}},s.prototype._getYRanges=function(t,e,i){var s,o,n,r,a=[],h=[];if(t.length>0){for(n=0;n0&&(o=this.groups[t[n]],"stack"==r.barChart.handleOverlap&&"bar"==r.style?"left"==r.yAxisOrientation?a=a.concat(o.getYRange(s)):h=h.concat(o.getYRange(s)):i[t[n]]=o.getYRange(s,t[n]));p.getStackedBarYRange(a,i,t,"__barchartLeft","left"),p.getStackedBarYRange(h,i,t,"__barchartRight","right")}},s.prototype._updateYAxis=function(t,e){var i,s,o=!1,n=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var c=0;ci?i:a,d=s>d?s:d):(r=!0,h=h>i?i:h,l=s>l?s:l));1==n&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}return o=this._toggleAxisVisiblity(n,this.yAxisLeft)||o,o=this._toggleAxisVisiblity(r,this.yAxisRight)||o,1==r&&1==n?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!n,0==this.yAxisRight.master?(this.yAxisLeft.lineOffset=1==r?this.yAxisRight.width:0,o=this.yAxisLeft.redraw()||o,this.yAxisRight.stepPixelsForced=this.yAxisLeft.stepPixels,this.yAxisRight.zeroCrossing=this.yAxisLeft.zeroCrossing,o=this.yAxisRight.redraw()||o):o=this.yAxisRight.redraw()||o,-1!=t.indexOf("__barchartLeft")&&t.splice(t.indexOf("__barchartLeft"),1),-1!=t.indexOf("__barchartRight")&&t.splice(t.indexOf("__barchartRight"),1),o},s.prototype._toggleAxisVisiblity=function(t,e){var i=!1;return 0==t?e.dom.frame.parentNode&&0==e.hidden&&(e.hide(),i=!0):e.dom.frame.parentNode||1!=e.hidden||(e.show(),i=!0),i},s.prototype._convertXcoordinates=function(t){for(var e,i,s=[],o=this.body.util.toScreen,n=0;ny;)y++,l=h.getCurrent(),c=h.isMajor(),u=h.getClassName(),f=m,m=this.body.util.toScreen(l),g=m-f,p&&(p.style.width=g+"px"),this.options.showMinorLabels&&this._repaintMinorText(m,h.getLabelMinor(),t,u),c&&this.options.showMajorLabels?(m>0&&(void 0==v&&(v=m),this._repaintMajorText(m,h.getLabelMajor(),t,u)),p=this._repaintMajorLine(m,t,u)):p=this._repaintMinorLine(m,t,u),h.next();if(this.options.showMajorLabels){var b=this.body.util.toTime(0),_=h.getLabelMajor(b),x=_.length*(this.props.majorCharWidth||10)+10;(void 0==v||v>x)&&this._repaintMajorText(0,_,t,u)}o.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},s.prototype._repaintMinorText=function(t,e,i,s){var o=this.dom.redundant.minorTexts.shift();if(!o){var n=document.createTextNode("");o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.minorTexts.push(o),o.childNodes[0].nodeValue=e,o.style.top="top"==i?this.props.majorLabelHeight+"px":"0",o.style.left=t+"px",o.className="text minor "+s},s.prototype._repaintMajorText=function(t,e,i,s){var o=this.dom.redundant.majorTexts.shift();if(!o){var n=document.createTextNode(e);o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.majorTexts.push(o),o.childNodes[0].nodeValue=e,o.className="text major "+s,o.style.top="top"==i?"0":this.props.minorLabelHeight+"px",o.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?o.majorLabelHeight+"px":this.body.domProps.top.height+"px",s.style.height=o.minorLineHeight+"px",s.style.left=t-o.minorLineWidth/2+"px",s.className="grid vertical minor "+i,s},s.prototype._repaintMajorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?"0":this.body.domProps.top.height+"px",s.style.left=t-o.majorLineWidth/2+"px",s.style.height=o.majorLineHeight+"px",s.className="grid vertical major "+i,s},s.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="text minor measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="text major measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._determineBrowserMethod(),this._initializeMixinLoaders(),this.containerElement=t,this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=0,this.physicsTime=0,this.runDoubleSpeed=!1,this.physicsDiscreteStepsize=.5,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null};var o=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)};this.defaultOptions={nodes:{customScalingFunction:o,mass:1,radiusMin:10,radiusMax:30,radius:10,shape:"ellipse",image:void 0,widthMin:16,widthMax:64,fontColor:"black",fontSize:14,fontFace:"verdana",fontFill:void 0,fontStrokeWidth:0,fontStrokeColor:"#ffffff",fontDrawThreshold:3,scaleFontWithValue:!1,fontSizeMin:14,fontSizeMax:30,fontSizeMaxVisible:30,level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},group:void 0,borderWidth:1,borderWidthSelected:void 0},edges:{customScalingFunction:o,widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},opacity:1,fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",fontStrokeWidth:0,fontStrokeColor:"white",labelAlignment:"horizontal",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from",useGradients:!1},configurePhysics:!1,physics:{barnesHut:{enabled:!0,thetaInverted:2,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09},repulsion:{centralGravity:0,springLength:200,springConstant:.05,nodeDistance:100,damping:.09},hierarchicalRepulsion:{enabled:!1,centralGravity:0,springLength:100,springConstant:.01,nodeDistance:150,damping:.09},damping:null,centralGravity:null,springLength:null,springConstant:null},clustering:{enabled:!1,initialMaxNodes:100,clusterThreshold:500,reduceToNodes:300,chainThreshold:.4,clusterEdgeThreshold:20,sectorThreshold:100,screenSizeThreshold:.2,fontSizeMultiplier:4,maxFontSize:1e3,forceAmplification:.1,distanceAmplification:.1,edgeGrowth:20,nodeScaling:{width:1,height:1,radius:1},maxNodeSizeIncrements:600,activeAreaBoxSize:80,clusterLevelDifference:2,clusterByZoom:!0},navigation:{enabled:!1},keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02},bindToWindow:!0},dataManipulation:{enabled:!1,initiallyVisible:!1},hierarchicalLayout:{enabled:!1,levelSeparation:150,nodeSpacing:100,direction:"UD",layout:"hubsize"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},maxVelocity:50,minVelocity:.1,stabilize:!0,stabilizationIterations:1e3,zoomExtentOnStabilize:!0,locale:"en",locales:_,tooltip:{delay:300,fontColor:"black",fontSize:14,fontFace:"verdana",color:{border:"#666",background:"#FFFFC6"}},dragNetwork:!0,dragNodes:!0,zoomable:!0,hover:!1,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,width:"100%",height:"100%",selectable:!0,useDefaultGroups:!0},this.constants=a.extend({},this.defaultOptions),this.pixelRatio=1,this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1,this.navigationHammers=[],this.manipulationHammers=[],this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.animating=!1,this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=null,this.lockedOnNodeOffset=null,this.touchTime=0,this.redrawRequested=!1;var n=this;this.groups=new u,this.images=new m,this.images.setOnloadCallback(function(){n._requestRedraw()}),this.xIncrement=0,this.yIncrement=0,this.zoomIncrement=0,this._loadPhysicsSystem(),this._create(),this._loadSectorSystem(),this._loadClusterSystem(),this._loadSelectionSystem(),this._loadHierarchySystem(),this._setTranslation(this.frame.clientWidth/2,this.frame.clientHeight/2),this._setScale(1),this.setOptions(i),this.freezeSimulationEnabled=!1,this.cachedFunctions={},this.startedStabilization=!1,this.stabilized=!1,this.stabilizationIterations=null,this.draggingNodes=!1,this.calculationNodes={},this.calculationNodeIndices=[],this.nodeIndices=[],this.nodes={},this.edges={},this.canvasTopLeft={x:0,y:0},this.canvasBottomRight={x:0,y:0},this.pointerPosition={x:0,y:0},this.areaCenter={},this.scale=1,this.previousScale=this.scale,this.nodesData=null,this.edgesData=null,this.nodesListeners={add:function(t,e){n._addNodes(e.items),n.start()},update:function(t,e){n._updateNodes(e.items),n.start()},remove:function(t,e){n._removeNodes(e.items),n.start()}},this.edgesListeners={add:function(t,e){n._addEdges(e.items),n.start()},update:function(t,e){n._updateEdges(e.items),n.start()},remove:function(t,e){n._removeEdges(e.items),n.start()}},this.moving=!0,this.timer=void 0,this.setData(e,this.constants.clustering.enabled||this.constants.hierarchicalLayout.enabled),this.initializing=!1,1==this.constants.hierarchicalLayout.enabled?this._setupHierarchicalLayout():0==this.constants.stabilize&&this.zoomExtent({duration:0},!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(56),n=i(45),r=i(57),a=i(1),h=i(47),d=i(3),l=i(4),c=i(42),p=i(43),u=i(38),m=i(39),f=i(40),g=i(37),v=i(41),y=i(52),b=i(53),_=i(54);i(55),o(s.prototype),s.prototype._determineBrowserMethod=function(){var t=navigator.userAgent.toLowerCase();this.requiresTimeout=!1,-1!=t.indexOf("msie 9.0")?this.requiresTimeout=!0:-1!=t.indexOf("safari")&&t.indexOf("chrome")<=-1&&(this.requiresTimeout=!0)},s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;e0)for(var r=0;re.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),se.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),s.5*this.nodeIndices.length)return void this.zoomExtent(t,!1,i);s=this._getRange(t.nodes);var h=this.nodeIndices.length;o=1==this.constants.smoothCurves?1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?49.07548/(h+142.05338)+91444e-8:12.662/(h+7.4147)+.0964822:1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?77.5271985/(h+187.266146)+476710517e-13:30.5062972/(h+19.93597763)+.08413486; -var d=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);o*=d}else{s=this._getRange(t.nodes);var l=1.1*Math.abs(s.maxX-s.minX),c=1.1*Math.abs(s.maxY-s.minY),p=this.frame.canvas.clientWidth/l,u=this.frame.canvas.clientHeight/c;o=u>=p?p:u}o>1&&(o=1);var m=this._findCenter(s);if(0==i){var t={position:m,scale:o,animation:t};this.moveTo(t),this.moving=!0,this.start()}else m.x*=o,m.y*=o,m.x-=.5*this.frame.canvas.clientWidth,m.y-=.5*this.frame.canvas.clientHeight,this._setScale(o),this._setTranslation(-m.x,-m.y)},s.prototype._updateNodeIndexList=function(){this._clearNodeIndexList();for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodeIndices.push(t)},s.prototype.setData=function(t,e){if(void 0===e&&(e=!1),this._unselectAll(!0),this.initializing=!0,t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(1==this.constants.dataManipulation.enabled&&this._createManipulatorBar(),this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var i=c.DOTToGraph(t.dot);return void this.setData(i)}}else if(t&&t.gephi){if(t&&t.gephi){var s=p.parseGephi(t.gephi);return void this.setData(s)}}else this._setNodes(t&&t.nodes),this._setEdges(t&&t.edges);this._putDataInSector(),0==e&&(1==this.constants.hierarchicalLayout.enabled?(this._resetLevels(),this._setupHierarchicalLayout()):1==this.constants.stabilize&&this._stabilize(),this.start()),this.initializing=!1},s.prototype.setOptions=function(t){if(t){var e,i=["nodes","edges","smoothCurves","hierarchicalLayout","clustering","navigation","keyboard","dataManipulation","onAdd","onEdit","onEditEdge","onConnect","onDelete","clickToUse"];if(a.selectiveNotDeepExtend(i,this.constants,t),a.selectiveNotDeepExtend(["color"],this.constants.nodes,t.nodes),a.selectiveNotDeepExtend(["color","length"],this.constants.edges,t.edges),this.groups.useDefaultGroups=this.constants.useDefaultGroups,t.physics&&(a.mergeOptions(this.constants.physics,t.physics,"barnesHut"),a.mergeOptions(this.constants.physics,t.physics,"repulsion"),t.physics.hierarchicalRepulsion)){this.constants.hierarchicalLayout.enabled=!0,this.constants.physics.hierarchicalRepulsion.enabled=!0,this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.hierarchicalRepulsion)t.physics.hierarchicalRepulsion.hasOwnProperty(e)&&(this.constants.physics.hierarchicalRepulsion[e]=t.physics.hierarchicalRepulsion[e])}if(t.onAdd&&(this.triggerFunctions.add=t.onAdd),t.onEdit&&(this.triggerFunctions.edit=t.onEdit),t.onEditEdge&&(this.triggerFunctions.editEdge=t.onEditEdge),t.onConnect&&(this.triggerFunctions.connect=t.onConnect),t.onDelete&&(this.triggerFunctions.del=t.onDelete),a.mergeOptions(this.constants,t,"smoothCurves"),a.mergeOptions(this.constants,t,"hierarchicalLayout"),a.mergeOptions(this.constants,t,"clustering"),a.mergeOptions(this.constants,t,"navigation"),a.mergeOptions(this.constants,t,"keyboard"),a.mergeOptions(this.constants,t,"dataManipulation"),t.dataManipulation&&(this.editMode=this.constants.dataManipulation.initiallyVisible),t.edges&&(void 0!==t.edges.color&&(a.isString(t.edges.color)?(this.constants.edges.color={},this.constants.edges.color.color=t.edges.color,this.constants.edges.color.highlight=t.edges.color,this.constants.edges.color.hover=t.edges.color):(void 0!==t.edges.color.color&&(this.constants.edges.color.color=t.edges.color.color),void 0!==t.edges.color.highlight&&(this.constants.edges.color.highlight=t.edges.color.highlight),void 0!==t.edges.color.hover&&(this.constants.edges.color.hover=t.edges.color.hover)),this.constants.edges.inheritColor=!1),t.edges.fontColor||void 0!==t.edges.color&&(a.isString(t.edges.color)?this.constants.edges.fontColor=t.edges.color:void 0!==t.edges.color.color&&(this.constants.edges.fontColor=t.edges.color.color))),t.nodes&&t.nodes.color){var s=a.parseColor(t.nodes.color);this.constants.nodes.color.background=s.background,this.constants.nodes.color.border=s.border,this.constants.nodes.color.highlight.background=s.highlight.background,this.constants.nodes.color.highlight.border=s.highlight.border,this.constants.nodes.color.hover.background=s.hover.background,this.constants.nodes.color.hover.border=s.hover.border}if(t.groups)for(var o in t.groups)if(t.groups.hasOwnProperty(o)){var n=t.groups[o];this.groups.add(o,n)}if(t.tooltip){for(e in t.tooltip)t.tooltip.hasOwnProperty(e)&&(this.constants.tooltip[e]=t.tooltip[e]);t.tooltip.color&&(this.constants.tooltip.color=a.parseColor(t.tooltip.color))}if("clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new b(this.frame),this.activator.on("change",this._createKeyBinds.bind(this))):this.activator&&(this.activator.destroy(),delete this.activator)),t.labels)throw new Error('Option "labels" is deprecated. Use options "locale" and "locales" instead.');this._loadPhysicsSystem(),this._loadNavigationControls(),this._loadManipulationSystem(),this._configureSmoothCurves(),this._bindHammer(),this._createKeyBinds(),this._markAllEdgesAsDirty(),this.setSize(this.constants.width,this.constants.height),this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.start()}},s.prototype._create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis network-frame",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.tabIndex=900,this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext){var t=this.frame.canvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.frame.canvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(e)}this._bindHammer()},s.prototype._bindHammer=function(){var t=this;void 0!==this.hammer&&this.hammer.dispose(),this.drag={},this.pinch={},this.hammer=n(this.frame.canvas,{prevent_default:!0}),this.hammer.on("tap",t._onTap.bind(t)),this.hammer.on("doubletap",t._onDoubleTap.bind(t)),this.hammer.on("hold",t._onHold.bind(t)),this.hammer.on("touch",t._onTouch.bind(t)),this.hammer.on("dragstart",t._onDragStart.bind(t)),this.hammer.on("drag",t._onDrag.bind(t)),this.hammer.on("dragend",t._onDragEnd.bind(t)),1==this.constants.zoomable&&(this.hammer.on("mousewheel",t._onMouseWheel.bind(t)),this.hammer.on("DOMMouseScroll",t._onMouseWheel.bind(t)),this.hammer.on("pinch",t._onPinch.bind(t))),this.hammer.on("mousemove",t._onMouseMoveTitle.bind(t)),this.hammerFrame=n(this.frame,{prevent_default:!0}),this.hammerFrame.on("release",t._onRelease.bind(t)),this.containerElement.appendChild(this.frame)},s.prototype._createKeyBinds=function(){var t=this;void 0!==this.keycharm&&this.keycharm.destroy(),this.keycharm=r(1==this.constants.keyboard.bindToWindow?{container:window,preventDefault:!1}:{container:this.frame,preventDefault:!1}),this.keycharm.reset(),this.constants.keyboard.enabled&&this.isActive()&&(this.keycharm.bind("up",this._moveUp.bind(t),"keydown"),this.keycharm.bind("up",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("down",this._moveDown.bind(t),"keydown"),this.keycharm.bind("down",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("left",this._moveLeft.bind(t),"keydown"),this.keycharm.bind("left",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("right",this._moveRight.bind(t),"keydown"),this.keycharm.bind("right",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("=",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("=",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num+",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("num+",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("num-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("[",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("[",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("]",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("]",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pageup",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("pageup",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pagedown",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("pagedown",this._stopZoom.bind(t),"keyup")),1==this.constants.dataManipulation.enabled&&(this.keycharm.bind("esc",this._createManipulatorBar.bind(t)),this.keycharm.bind("delete",this._deleteSelected.bind(t)))},s.prototype.destroy=function(){this.start=function(){},this.redraw=function(){},this.timer=!1,this._cleanupPhysicsConfiguration(),this.keycharm.reset(),this.hammer.dispose(),this.off(),this._recursiveDOMDelete(this.containerElement)},s.prototype._recursiveDOMDelete=function(t){for(;1==t.hasChildNodes();)this._recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},s.prototype._getPointer=function(t){return{x:t.pageX-a.getAbsoluteLeft(this.frame.canvas),y:t.pageY-a.getAbsoluteTop(this.frame.canvas)}},s.prototype._onTouch=function(t){(new Date).valueOf()-this.touchTime>100&&(this.drag.pointer=this._getPointer(t.gesture.center),this.drag.pinched=!1,this.pinch.scale=this._getScale(),this.touchTime=(new Date).valueOf(),this._handleTouch(this.drag.pointer))},s.prototype._onDragStart=function(t){this._handleDragStart(t)},s.prototype._handleDragStart=function(t){void 0===this.drag.pointer&&this._onTouch(t);var e=this._getNodeAt(this.drag.pointer);if(this.drag.dragging=!0,this.drag.selection=[],this.drag.translation=this._getTranslation(),this.drag.nodeId=null,this.draggingNodes=!1,null!=e&&1==this.constants.dragNodes){this.draggingNodes=!0,this.drag.nodeId=e.id,e.isSelected()||this._selectObject(e,!1),this.emit("dragStart",{nodeIds:this.getSelection().nodes});for(var i in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(i)){var s=this.selectionObj.nodes[i],o={id:s.id,node:s,x:s.x,y:s.y,xFixed:s.xFixed,yFixed:s.yFixed};s.xFixed=!0,s.yFixed=!0,this.drag.selection.push(o)}}},s.prototype._onDrag=function(t){this._handleOnDrag(t)},s.prototype._handleOnDrag=function(t){if(!this.drag.pinched){this.releaseNode();var e=this._getPointer(t.gesture.center),i=this,s=this.drag,o=s.selection;if(o&&o.length&&1==this.constants.dragNodes){var n=e.x-s.pointer.x,r=e.y-s.pointer.y;o.forEach(function(t){var e=t.node;t.xFixed||(e.x=i._XconvertDOMtoCanvas(i._XconvertCanvasToDOM(t.x)+n)),t.yFixed||(e.y=i._YconvertDOMtoCanvas(i._YconvertCanvasToDOM(t.y)+r))}),this.moving||(this.moving=!0,this.start())}else if(1==this.constants.dragNetwork){if(void 0===this.drag.pointer)return void this._handleDragStart(t);var a=e.x-this.drag.pointer.x,h=e.y-this.drag.pointer.y;this._setTranslation(this.drag.translation.x+a,this.drag.translation.y+h),this._redraw()}}},s.prototype._onDragEnd=function(t){this._handleDragEnd(t)},s.prototype._handleDragEnd=function(){this.drag.dragging=!1;var t=this.drag.selection;t&&t.length?(t.forEach(function(t){t.node.xFixed=t.xFixed,t.node.yFixed=t.yFixed}),this.moving=!0,this.start()):this._redraw(),0==this.draggingNodes?this.emit("dragEnd",{nodeIds:[]}):this.emit("dragEnd",{nodeIds:this.getSelection().nodes})},s.prototype._onTap=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleTap(e)},s.prototype._onDoubleTap=function(t){var e=this._getPointer(t.gesture.center);this._handleDoubleTap(e)},s.prototype._onHold=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleOnHold(e)},s.prototype._onRelease=function(t){var e=this._getPointer(t.gesture.center);this._handleOnRelease(e)},s.prototype._onPinch=function(t){var e=this._getPointer(t.gesture.center);this.drag.pinched=!0,"scale"in this.pinch||(this.pinch.scale=1);var i=this.pinch.scale*t.gesture.scale;this._zoom(i,e)},s.prototype._zoom=function(t,e){if(1==this.constants.zoomable){var i=this._getScale();1e-5>t&&(t=1e-5),t>10&&(t=10);var s=null;void 0!==this.drag&&1==this.drag.dragging&&(s=this.DOMtoCanvas(this.drag.pointer));var o=this._getTranslation(),n=t/i,r=(1-n)*e.x+o.x*n,a=(1-n)*e.y+o.y*n;if(this.areaCenter={x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)},this._setScale(t),this._setTranslation(r,a),this.updateClustersDefault(),null!=s){var h=this.canvasToDOM(s);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}return this._redraw(),t>i?this.emit("zoom",{direction:"+"}):this.emit("zoom",{direction:"-"}),t}},s.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this._getScale(),s=e/10;0>e&&(s/=1-s),i*=1+s;var o=h.fakeGesture(this,t),n=this._getPointer(o.center);this._zoom(i,n)}t.preventDefault()},s.prototype._onMouseMoveTitle=function(t){var e=h.fakeGesture(this,t),i=this._getPointer(e.center),s=!1;if(void 0!==this.popup&&(this.popup.hidden===!1&&this._checkHidePopup(i),this.popup.hidden===!1&&(s=!0,this.popup.setPosition(i.x+3,i.y-5),this.popup.show())),0==this.constants.keyboard.bindToWindow&&1==this.constants.keyboard.enabled&&this.frame.focus(),s===!1){var o=this,n=function(){o._checkShowPopup(i)};this.popupTimer&&clearInterval(this.popupTimer),this.drag.dragging||(this.popupTimer=setTimeout(n,this.constants.tooltip.delay))}if(1==this.constants.hover){for(var r in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(r)&&(this.hoverObj.edges[r].hover=!1,delete this.hoverObj.edges[r]);var a=this._getNodeAt(i);null==a&&(a=this._getEdgeAt(i)),null!=a&&this._hoverObject(a);for(var d in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(d)&&(a instanceof f&&a.id!=d||a instanceof g||null==a)&&(this._blurObject(this.hoverObj.nodes[d]),delete this.hoverObj.nodes[d]);this.redraw()}},s.prototype._checkShowPopup=function(t){var e,i={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},s=void 0===this.popupObj?"":this.popupObj.id,o=!1,n="node";if(void 0==this.popupObj){var r=this.nodes,a=[];for(e in r)if(r.hasOwnProperty(e)){var h=r[e];h.isOverlappingWith(i)&&void 0!==h.getTitle()&&a.push(e)}a.length>0&&(this.popupObj=this.nodes[a[a.length-1]],o=!0)}if(void 0===this.popupObj&&0==o){var d=this.edges,l=[];for(e in d)if(d.hasOwnProperty(e)){var c=d[e];c.connected&&void 0!==c.getTitle()&&c.isOverlappingWith(i)&&l.push(e)}l.length>0&&(this.popupObj=this.edges[l[l.length-1]],n="edge")}this.popupObj?this.popupObj.id!=s&&(void 0===this.popup&&(this.popup=new v(this.frame,this.constants.tooltip)),this.popup.popupTargetType=n,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(t.x+3,t.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show()):this.popup&&this.popup.hide()},s.prototype._checkHidePopup=function(t){var e={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},i=!1;if("node"==this.popup.popupTargetType){if(i=this.nodes[this.popup.popupTargetId].isOverlappingWith(e),i===!0){var s=this._getNodeAt(t);i=s.id==this.popup.popupTargetId}}else null===this._getNodeAt(t)&&(i=this.edges[this.popup.popupTargetId].isOverlappingWith(e));i===!1&&(this.popupObj=void 0,this.popup.hide())},s.prototype.setSize=function(t,e){var i=!1,s=this.frame.canvas.width,o=this.frame.canvas.height;t!=this.constants.width||e!=this.constants.height||this.frame.style.width!=t||this.frame.style.height!=e?(this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,this.constants.width=t,this.constants.height=e,i=!0):(this.frame.canvas.width!=this.frame.canvas.clientWidth*this.pixelRatio&&(this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,i=!0),this.frame.canvas.height!=this.frame.canvas.clientHeight*this.pixelRatio&&(this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,i=!0)),1==i&&this.emit("resize",{width:this.frame.canvas.width*this.pixelRatio,height:this.frame.canvas.height*this.pixelRatio,oldWidth:s*this.pixelRatio,oldHeight:o*this.pixelRatio})},s.prototype._setNodes=function(t){var e=this.nodesData;if(t instanceof d||t instanceof l)this.nodesData=t;else if(Array.isArray(t))this.nodesData=new d,this.nodesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.nodesData=new d}if(e&&a.forEach(this.nodesListeners,function(t,i){e.off(i,t)}),this.nodes={},this.nodesData){var i=this;a.forEach(this.nodesListeners,function(t,e){i.nodesData.on(e,t)});var s=this.nodesData.getIds();this._addNodes(s)}this._updateSelection()},s.prototype._addNodes=function(t){for(var e,i=0,s=t.length;s>i;i++){e=t[i];var o=this.nodesData.get(e),n=new f(o,this.images,this.groups,this.constants);if(this.nodes[e]=n,!(0!=n.xFixed&&0!=n.yFixed||null!==n.x&&null!==n.y)){var r=1*t.length+10,a=2*Math.PI*Math.random();0==n.xFixed&&(n.x=r*Math.cos(a)),0==n.yFixed&&(n.y=r*Math.sin(a))}this.moving=!0}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateValueRange(this.nodes),this.updateLabels()},s.prototype._updateNodes=function(t){for(var e=this.nodesData.get(t),i=this.nodes,s=0,o=t.length;o>s;s++){var n=t[s],r=i[n],a=e[s];r?r.setProperties(a,this.constants):(r=new f(properties,this.images,this.groups,this.constants),i[n]=r)}this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateNodeIndexList(),this._updateValueRange(i),this._markAllEdgesAsDirty()},s.prototype._markAllEdgesAsDirty=function(){for(var t in this.edges)this.edges[t].colorDirty=!0},s.prototype._removeNodes=function(t){for(var e=this.nodes,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.nodes[t[i]]&&(this.nodes[t[i]].unselect(),this._removeFromSelection(this.nodes[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i];delete e[o]}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateSelection(),this._updateValueRange(e)},s.prototype._setEdges=function(t){var e=this.edgesData;if(t instanceof d||t instanceof l)this.edgesData=t;else if(Array.isArray(t))this.edgesData=new d,this.edgesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.edgesData=new d}if(e&&a.forEach(this.edgesListeners,function(t,i){e.off(i,t)}),this.edges={},this.edgesData){var i=this;a.forEach(this.edgesListeners,function(t,e){i.edgesData.on(e,t)});var s=this.edgesData.getIds();this._addEdges(s)}this._reconnectEdges()},s.prototype._addEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=e[n];r&&r.disconnect();var a=i.get(n,{showInternalIds:!0});e[n]=new g(a,this,this.constants)}this.moving=!0,this._updateValueRange(e),this._createBezierNodes(),this._updateCalculationNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout())},s.prototype._updateEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=i.get(n),a=e[n];a?(a.disconnect(),a.setProperties(r,this.constants),a.connect()):(a=new g(r,this,this.constants),this.edges[n]=a)}this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.moving=!0,this._updateValueRange(e)},s.prototype._removeEdges=function(t){for(var e=this.edges,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.edges[t[i]]&&(e[t[i]].unselect(),this._removeFromSelection(e[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i],n=e[o];n&&(null!=n.via&&delete this.sectors.support.nodes[n.via.id],n.disconnect(),delete e[o])}this.moving=!0,this._updateValueRange(e),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},s.prototype._reconnectEdges=function(){var t,e=this.nodes,i=this.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[],e[t].dynamicEdges=[]);for(t in i)if(i.hasOwnProperty(t)){var s=i[t];s.from=null,s.to=null,s.connect()}},s.prototype._updateValueRange=function(t){var e,i=void 0,s=void 0,o=0;for(e in t)if(t.hasOwnProperty(e)){var n=t[e].getValue();void 0!==n&&(i=void 0===i?n:Math.min(n,i),s=void 0===s?n:Math.max(n,s),o+=n)}if(void 0!==i&&void 0!==s)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,s,o)},s.prototype.redraw=function(){this.setSize(this.constants.width,this.constants.height),this._redraw()},s.prototype._requestRedraw=function(t){this.redrawRequested!==!0&&(this.redrawRequested=!0,this.requiresTimeout===!0?window.setTimeout(this._redraw.bind(this,t),0):window.requestAnimationFrame(this._redraw.bind(this,t,!0)))},s.prototype._redraw=function(t){void 0===t&&(t=!1),this.redrawRequested=!1;var e=this.frame.canvas.getContext("2d");e.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var i=this.frame.canvas.clientWidth,s=this.frame.canvas.clientHeight;e.clearRect(0,0,i,s),e.save(),e.translate(this.translation.x,this.translation.y),e.scale(this.scale,this.scale),this.canvasTopLeft={x:this._XconvertDOMtoCanvas(0),y:this._YconvertDOMtoCanvas(0)},this.canvasBottomRight={x:this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth),y:this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight)},t===!1&&(this._doInAllSectors("_drawAllSectorNodes",e),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideEdgesOnDrag)&&this._doInAllSectors("_drawEdges",e)),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideNodesOnDrag)&&this._doInAllSectors("_drawNodes",e,!1),t===!1&&1==this.controlNodesActive&&this._doInAllSectors("_drawControlNodes",e),e.restore(),t===!0&&e.clearRect(0,0,i,s)},s.prototype._setTranslation=function(t,e){void 0===this.translation&&(this.translation={x:0,y:0}),void 0!==t&&(this.translation.x=t),void 0!==e&&(this.translation.y=e),this.emit("viewChanged")},s.prototype._getTranslation=function(){return{x:this.translation.x,y:this.translation.y}},s.prototype._setScale=function(t){this.scale=t},s.prototype._getScale=function(){return this.scale},s.prototype._XconvertDOMtoCanvas=function(t){return(t-this.translation.x)/this.scale},s.prototype._XconvertCanvasToDOM=function(t){return t*this.scale+this.translation.x},s.prototype._YconvertDOMtoCanvas=function(t){return(t-this.translation.y)/this.scale},s.prototype._YconvertCanvasToDOM=function(t){return t*this.scale+this.translation.y},s.prototype.canvasToDOM=function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}},s.prototype.DOMtoCanvas=function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}},s.prototype._drawNodes=function(t,e){void 0===e&&(e=!1);var i=this.nodes,s=[];for(var o in i)i.hasOwnProperty(o)&&(i[o].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight),i[o].isSelected()?s.push(o):(i[o].inArea()||e)&&i[o].draw(t));for(var n=0,r=s.length;r>n;n++)(i[s[n]].inArea()||e)&&i[s[n]].draw(t)},s.prototype._drawEdges=function(t){var e=this.edges;for(var i in e)if(e.hasOwnProperty(i)){var s=e[i];s.setScale(this.scale),s.connected&&e[i].draw(t)}},s.prototype._drawControlNodes=function(t){var e=this.edges;for(var i in e)e.hasOwnProperty(i)&&e[i]._drawControlNodes(t)},s.prototype._stabilize=function(){1==this.constants.freezeForStabilization&&this._freezeDefinedNodes();for(var t=0;this.moving&&t0)for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStepLimited(e,this.constants.maxVelocity),s=!0);else for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStep(e),s=!0);if(1==s){var o=this.constants.minVelocity/Math.max(this.scale,.05);return o>.5*this.constants.maxVelocity?!0:this._isMoving(o)}return!1},s.prototype._revertPhysicsState=function(){var t=this.nodes;for(var e in t)t.hasOwnProperty(e)&&t[e].revertPosition()},s.prototype._revertPhysicsTick=function(){this._doInAllActiveSectors("_revertPhysicsState"),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&this._doInSupportSector("_revertPhysicsState")},s.prototype._physicsTick=function(){if(!this.freezeSimulationEnabled&&1==this.moving){var t=!1,e=!1;this._doInAllActiveSectors("_initializeForceCalculation");var i=this._doInAllActiveSectors("_discreteStepNodes");1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&(e=this._doInSupportSector("_discreteStepNodes"));for(var s=0;s2*e||1==this.runDoubleSpeed)&&1==this.moving&&(this._physicsTick(),0!=this.renderTime&&(this.runDoubleSpeed=!0))}var i=Date.now();this._redraw(),this.renderTime=Date.now()-i,0==this.requiresTimeout&&this.start()},"undefined"!=typeof window&&(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame),s.prototype.start=function(){if(1==this.freezeSimulationEnabled&&(this.moving=!1),1==this.moving||0!=this.xIncrement||0!=this.yIncrement||0!=this.zoomIncrement||1==this.animating)this.timer||(this.timer=1==this.requiresTimeout?window.setTimeout(this._animationStep.bind(this),this.renderTimestep):window.requestAnimationFrame(this._animationStep.bind(this)));else if(this._requestRedraw(),this.stabilizationIterations>1){var t=this,e={iterations:t.stabilizationIterations};this.stabilizationIterations=0,this.startedStabilization=!1,setTimeout(function(){t.emit("stabilized",e)},0)}else this.stabilizationIterations=0},s.prototype._handleNavigation=function(){if(0!=this.xIncrement||0!=this.yIncrement){var t=this._getTranslation();this._setTranslation(t.x+this.xIncrement,t.y+this.yIncrement)}if(0!=this.zoomIncrement){var e={x:this.frame.canvas.clientWidth/2,y:this.frame.canvas.clientHeight/2};this._zoom(this.scale*(1+this.zoomIncrement),e)}},s.prototype.freezeSimulation=function(t){1==t?(this.freezeSimulationEnabled=!0,this.moving=!1):(this.freezeSimulationEnabled=!1,this.moving=!0,this.start())},s.prototype._configureSmoothCurves=function(t){if(void 0===t&&(t=!0),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this._createBezierNodes();for(var e in this.sectors.support.nodes)this.sectors.support.nodes.hasOwnProperty(e)&&void 0===this.edges[this.sectors.support.nodes[e].parentEdgeId]&&delete this.sectors.support.nodes[e]}else{this.sectors.support.nodes={};for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.edges[i].via=null)}this._updateCalculationNodes(),t||(this.moving=!0,this.start())},s.prototype._createBezierNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic)for(var t in this.edges)if(this.edges.hasOwnProperty(t)){var e=this.edges[t];if(null==e.via){var i="edgeId:".concat(e.id);this.sectors.support.nodes[i]=new f({id:i,mass:1,shape:"circle",image:"",internalMultiplier:1},{},{},this.constants),e.via=this.sectors.support.nodes[i],e.via.parentEdgeId=e.id,e.positionBezierNode()}}},s.prototype._initializeMixinLoaders=function(){for(var t in y)y.hasOwnProperty(t)&&(s.prototype[t]=y[t])},s.prototype.storePosition=function(){console.log("storePosition is depricated: use .storePositions() from now on."),this.storePositions()},s.prototype.storePositions=function(){var t=[];for(var e in this.nodes)if(this.nodes.hasOwnProperty(e)){var i=this.nodes[e],s=!this.nodes.xFixed,o=!this.nodes.yFixed;(this.nodesData._data[e].x!=Math.round(i.x)||this.nodesData._data[e].y!=Math.round(i.y))&&t.push({id:e,x:Math.round(i.x),y:Math.round(i.y),allowedToMoveX:s,allowedToMoveY:o})}this.nodesData.update(t)},s.prototype.getPositions=function(t){var e={};if(void 0!==t){if(1==Array.isArray(t)){for(var i=0;i=1&&(this.animating=!1,this.easingTime=0,this._redraw=null!=this.lockedOnNodeId?this._lockedRedraw:this._classicRedraw,this.emit("animationFinished"))},s.prototype._classicRedraw=function(){},s.prototype.isActive=function(){return!this.activator||this.activator.active},s.prototype.setScale=function(){return this._setScale()},s.prototype.getScale=function(){return this._getScale()},s.prototype.getCenterCoordinates=function(){return this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight})},s.prototype.getBoundingBox=function(t){return void 0!==this.nodes[t]?this.nodes[t].boundingBox:void 0},s.prototype.getConnectedNodes=function(t){var e=[];if(void 0!==this.nodes[t])for(var i=this.nodes[t],s={nodeId:!0},o=0;oh}return!1},s.prototype._getColor=function(t){var e=this.options.color;if(1==this.options.useGradients){var i,s,n=t.createLinearGradient(this.from.x,this.from.y,this.to.x,this.to.y);return i=this.from.options.color.highlight.border,s=this.to.options.color.highlight.border,0==this.from.selected&&0==this.to.selected?(i=o.overrideOpacity(this.from.options.color.border,this.options.opacity),s=o.overrideOpacity(this.to.options.color.border,this.options.opacity)):1==this.from.selected&&0==this.to.selected?s=this.to.options.color.border:0==this.from.selected&&1==this.to.selected&&(i=this.from.options.color.border),n.addColorStop(0,i),n.addColorStop(1,s),n}return this.colorDirty===!0&&("to"==this.options.inheritColor?e={highlight:this.to.options.color.highlight.border,hover:this.to.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}:("from"==this.options.inheritColor||1==this.options.inheritColor)&&(e={highlight:this.from.options.color.highlight.border,hover:this.from.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}),this.options.color=e,this.colorDirty=!1),1==this.selected?e.highlight:1==this.hover?e.hover:e.color},s.prototype._drawLine=function(t){if(t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth(),this.from!=this.to){var e,i=this._line(t);if(this.label){if(1==this.options.smoothCurves.enabled&&null!=i){var s=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),o=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:s,y:o}}else e=this._pointOnLine(.5);this._label(t,this.label,e.x,e.y)}}else{var n,r,a=this.physics.springLength/4,h=this.from;h.width||h.resize(t),h.width>h.height?(n=h.x+h.width/2,r=h.y-a):(n=h.x+a,r=h.y-h.height/2),this._circle(t,n,r,a),e=this._pointOnCircle(n,r,a,.5),this._label(t,this.label,e.x,e.y)}},s.prototype._getLineWidth=function(){return 1==this.selected?Math.max(Math.min(this.widthSelected,this.options.widthMax),.3*this.networkScaleInv):1==this.hover?Math.max(Math.min(this.options.hoverWidth,this.options.widthMax),.3*this.networkScaleInv):Math.max(this.options.width,.3*this.networkScaleInv)},s.prototype._getViaCoordinates=function(){if(1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled)return this.via;if(0==this.options.smoothCurves.enabled)return{x:0,y:0};var t=null,e=null,i=this.options.smoothCurves.roundness,s=this.options.smoothCurves.type,o=Math.abs(this.from.x-this.to.x),n=Math.abs(this.from.y-this.to.y);if("discrete"==s||"diagonalCross"==s)Math.abs(this.from.x-this.to.x)this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"==s&&(t=i*n>o?this.from.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o)),"discrete"==s&&(e=i*o>n?this.from.y:e));else if("straightCross"==s)Math.abs(this.from.x-this.to.x)Math.abs(this.from.y-this.to.y)&&(t=this.from.xthis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xe?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o,e=this.to.yd;d++){var l=t.measureText(n[d]).width;h=l>h?l:h}var c=this.options.fontSize*r,p=i-h/2,u=s-c/2;this.labelDimensions={top:u,left:p,width:h,height:c,yLine:o}}var o=this.labelDimensions.yLine;t.save(),"horizontal"!=this.options.labelAlignment&&(t.translate(i,o),this._rotateForLabelAlignment(t),i=0,o=0),this._drawLabelRect(t),this._drawLabelText(t,i,o,n,r,a),t.restore()}},s.prototype._rotateForLabelAlignment=function(t){var e=this.from.y-this.to.y,i=this.from.x-this.to.x,s=Math.atan2(e,i);(-1>s&&0>i||s>0&&0>i)&&(s+=Math.PI),t.rotate(s)},s.prototype._drawLabelRect=function(t){if(void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill){t.fillStyle=this.options.fontFill;var e=2;"line-center"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,.5*-this.labelDimensions.height,this.labelDimensions.width,this.labelDimensions.height):"line-above"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,-(this.labelDimensions.height+e),this.labelDimensions.width,this.labelDimensions.height):"line-below"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,e,this.labelDimensions.width,this.labelDimensions.height):t.fillRect(this.labelDimensions.left,this.labelDimensions.top,this.labelDimensions.width,this.labelDimensions.height)}},s.prototype._drawLabelText=function(t,e,i,s,o,n){if(t.fillStyle=this.options.fontColor||"black",t.textAlign="center","horizontal"!=this.options.labelAlignment){var r=2;"line-above"==this.options.labelAlignment?(t.textBaseline="alphabetic",i-=2*r):"line-below"==this.options.labelAlignment?(t.textBaseline="hanging",i+=2*r):t.textBaseline="middle"}else t.textBaseline="middle";this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=this.options.fontStrokeColor,t.lineJoin="round");for(var a=0;o>a;a++)this.options.fontStrokeWidth>0&&t.strokeText(s[a],e,i),t.fillText(s[a],e,i),i+=n},s.prototype._drawDashLine=function(t){t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth();var e=null;if(void 0!==t.setLineDash){t.save();var i=[0];i=void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?[this.options.dash.length,this.options.dash.gap]:[5,5],t.setLineDash(i),t.lineDashOffset=0,e=this._line(t),t.setLineDash([0]),t.lineDashOffset=0,t.restore()}else t.beginPath(),t.lineCap="round",void 0!==this.options.dash.altLength?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap,this.options.dash.altLength,this.options.dash.gap]):void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap]):(t.moveTo(this.from.x,this.from.y),t.lineTo(this.to.x,this.to.y)),t.stroke();if(this.label){var s;if(1==this.options.smoothCurves.enabled&&null!=e){var o=.5*(.5*(this.from.x+e.x)+.5*(this.to.x+e.x)),n=.5*(.5*(this.from.y+e.y)+.5*(this.to.y+e.y));s={x:o,y:n}}else s=this._pointOnLine(.5);this._label(t,this.label,s.x,s.y)}},s.prototype._pointOnLine=function(t){return{x:(1-t)*this.from.x+t*this.to.x,y:(1-t)*this.from.y+t*this.to.y}},s.prototype._pointOnCircle=function(t,e,i,s){var o=2*(s-3/8)*Math.PI;return{x:t+i*Math.cos(o),y:e-i*Math.sin(o)}},s.prototype._drawArrowCenter=function(t){var e;if(t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth(),this.from!=this.to){var i=this._line(t),s=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),o=(10+5*this.options.width)*this.options.arrowScaleFactor;if(1==this.options.smoothCurves.enabled&&null!=i){var n=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),r=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:n,y:r}}else e=this._pointOnLine(.5);t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&this._label(t,this.label,e.x,e.y)}else{var a,h,d=.25*Math.max(100,this.physics.springLength),l=this.from;l.width||l.resize(t),l.width>l.height?(a=l.x+.5*l.width,h=l.y-d):(a=l.x+d,h=l.y-.5*l.height),this._circle(t,a,h,d);var s=.2*Math.PI,o=(10+5*this.options.width)*this.options.arrowScaleFactor;e=this._pointOnCircle(a,h,d,.5),t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&(e=this._pointOnCircle(a,h,d,.5),this._label(t,this.label,e.x,e.y))}},s.prototype._pointOnBezier=function(t){var e=this._getViaCoordinates(),i=Math.pow(1-t,2)*this.from.x+2*t*(1-t)*e.x+Math.pow(t,2)*this.to.x,s=Math.pow(1-t,2)*this.from.y+2*t*(1-t)*e.y+Math.pow(t,2)*this.to.y;return{x:i,y:s}},s.prototype._findBorderPosition=function(t,e){var i,s,o,n,r,a=10,h=0,d=0,l=1,c=.2,p=this.to;for(1==t&&(p=this.from);l>=d&&a>h;){var u=.5*(d+l);if(i=this._pointOnBezier(u),s=Math.atan2(p.y-i.y,p.x-i.x),o=p.distanceToBorder(e,s),n=Math.sqrt(Math.pow(i.x-p.x,2)+Math.pow(i.y-p.y,2)),r=o-n,Math.abs(r)r?0==t?d=u:l=u:0==t?l=u:d=u,h++}return i.t=u,i},s.prototype._drawArrow=function(t){t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth();var e,i,s;if(this.from!=this.to){if(this._line(t),1==this.options.smoothCurves.enabled){var o=this._getViaCoordinates();s=this._findBorderPosition(!1,t);var n=this._pointOnBezier(Math.max(0,s.t-.1));e=Math.atan2(s.y-n.y,s.x-n.x)}else{e=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x);var r=this.to.x-this.from.x,a=this.to.y-this.from.y,h=Math.sqrt(r*r+a*a),d=this.to.distanceToBorder(t,e),l=(h-d)/h;s={},s.x=(1-l)*this.from.x+l*this.to.x,s.y=(1-l)*this.from.y+l*this.to.y}if(i=(10+5*this.options.width)*this.options.arrowScaleFactor,t.arrow(s.x,s.y,e,i),t.fill(),t.stroke(),this.label){var c;c=1==this.options.smoothCurves.enabled&&null!=o?this._pointOnBezier(.5):this._pointOnLine(.5),this._label(t,this.label,c.x,c.y)}}else{var p,u,m,f=this.from,g=.25*Math.max(100,this.physics.springLength);f.width||f.resize(t),f.width>f.height?(p=f.x+.5*f.width,u=f.y-g,m={x:p,y:f.y,angle:.9*Math.PI}):(p=f.x+g,u=f.y-.5*f.height,m={x:f.x,y:u,angle:.6*Math.PI}),t.beginPath(),t.arc(p,u,g,0,2*Math.PI,!1),t.stroke();var i=(10+5*this.options.width)*this.options.arrowScaleFactor;t.arrow(m.x,m.y,m.angle,i),t.fill(),t.stroke(),this.label&&(c=this._pointOnCircle(p,u,g,.5),this._label(t,this.label,c.x,c.y))}},s.prototype._getDistanceToEdge=function(t,e,i,s,o,n){var r=0;if(this.from!=this.to)if(1==this.options.smoothCurves.enabled){var a,h;if(1==this.options.smoothCurves.enabled&&1==this.options.smoothCurves.dynamic)a=this.via.x,h=this.via.y;else{var d=this._getViaCoordinates();a=d.x,h=d.y}var l,c,p,u,m,f,g,v=1e9;for(c=0;10>c;c++)p=.1*c,u=Math.pow(1-p,2)*t+2*p*(1-p)*a+Math.pow(p,2)*i,m=Math.pow(1-p,2)*e+2*p*(1-p)*h+Math.pow(p,2)*s,c>0&&(l=this._getDistanceToLine(f,g,u,m,o,n),v=v>l?l:v),f=u,g=m;r=v}else r=this._getDistanceToLine(t,e,i,s,o,n);else{var u,m,y,b,_=.25*this.physics.springLength,x=this.from;x.width>x.height?(u=x.x+.5*x.width,m=x.y-_):(u=x.x+_,m=x.y-.5*x.height),y=u-o,b=m-n,r=Math.abs(Math.sqrt(y*y+b*b)-_)}return this.labelDimensions.lefto&&this.labelDimensions.topn?0:r},s.prototype._getDistanceToLine=function(t,e,i,s,o,n){var r=i-t,a=s-e,h=r*r+a*a,d=((o-t)*r+(n-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,c=e+d*a,p=l-o,u=c-n;return Math.sqrt(p*p+u*u)},s.prototype.setScale=function(t){this.networkScaleInv=1/t},s.prototype.select=function(){this.selected=!0},s.prototype.unselect=function(){this.selected=!1},s.prototype.positionBezierNode=function(){null!==this.via&&null!==this.from&&null!==this.to?(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y)):null!==this.via&&(this.via.x=0,this.via.y=0)},s.prototype._drawControlNodes=function(t){if(1==this.controlNodesEnabled){if(null===this.controlNodes.from&&null===this.controlNodes.to){var e="edgeIdFrom:".concat(this.id),i="edgeIdTo:".concat(this.id),s={nodes:{group:"",radius:7,borderWidth:2,borderWidthSelected:2},physics:{damping:0},clustering:{maxNodeSizeIncrements:0,nodeScaling:{width:0,height:0,radius:0}}};this.controlNodes.from=new n({id:e,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s),this.controlNodes.to=new n({id:i,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s)}this.controlNodes.positions={},0==this.controlNodes.from.selected&&(this.controlNodes.positions.from=this.getControlNodeFromPosition(t),this.controlNodes.from.x=this.controlNodes.positions.from.x,this.controlNodes.from.y=this.controlNodes.positions.from.y),0==this.controlNodes.to.selected&&(this.controlNodes.positions.to=this.getControlNodeToPosition(t),this.controlNodes.to.x=this.controlNodes.positions.to.x,this.controlNodes.to.y=this.controlNodes.positions.to.y),this.controlNodes.from.draw(t),this.controlNodes.to.draw(t)}else this.controlNodes={from:null,to:null,positions:{}}},s.prototype._enableControlNodes=function(){this.fromBackup=this.from,this.toBackup=this.to,this.controlNodesEnabled=!0},s.prototype._disableControlNodes=function(){this.fromId=this.from.id,this.toId=this.to.id,this.fromId!=this.fromBackup.id?this.fromBackup.detachEdge(this):this.toId!=this.toBackup.id&&this.toBackup.detachEdge(this),this.fromBackup=null,this.toBackup=null,this.controlNodesEnabled=!1},s.prototype._getSelectedControlNode=function(t,e){var i=this.controlNodes.positions,s=Math.sqrt(Math.pow(t-i.from.x,2)+Math.pow(e-i.from.y,2)),o=Math.sqrt(Math.pow(t-i.to.x,2)+Math.pow(e-i.to.y,2));return 15>s?(this.connectedNode=this.from,this.from=this.controlNodes.from,this.controlNodes.from):15>o?(this.connectedNode=this.to,this.to=this.controlNodes.to,this.controlNodes.to):null},s.prototype._restoreControlNodes=function(){1==this.controlNodes.from.selected?(this.from=this.connectedNode,this.connectedNode=null,this.controlNodes.from.unselect()):1==this.controlNodes.to.selected&&(this.to=this.connectedNode,this.connectedNode=null,this.controlNodes.to.unselect())},s.prototype.getControlNodeFromPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!0,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.from.distanceToBorder(t,i+Math.PI),a=(n-r)/n;e={},e.x=a*this.from.x+(1-a)*this.to.x,e.y=a*this.from.y+(1-a)*this.to.y}return e},s.prototype.getControlNodeToPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!1,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.to.distanceToBorder(t,i),a=(n-r)/n;e={},e.x=(1-a)*this.from.x+a*this.to.x,e.y=(1-a)*this.from.y+a*this.to.y}return e},t.exports=s},function(t,e,i){function s(){this.clear(),this.defaultIndex=0,this.groupsArray=[],this.groupIndex=0,this.useDefaultGroups=!0}i(1);s.DEFAULT=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}},{border:"#990000",background:"#EE0000",highlight:{border:"#BB0000",background:"#FF3333"},hover:{border:"#BB0000",background:"#FF3333"}},{border:"#FF6000",background:"#FF6000",highlight:{border:"#FF6000",background:"#FF6000"},hover:{border:"#FF6000",background:"#FF6000"}},{border:"#97C2FC",background:"#2B7CE9",highlight:{border:"#D2E5FF",background:"#2B7CE9"},hover:{border:"#D2E5FF",background:"#2B7CE9"}},{border:"#399605",background:"#255C03",highlight:{border:"#399605",background:"#255C03"},hover:{border:"#399605",background:"#255C03"}},{border:"#B70054",background:"#FF007E",highlight:{border:"#B70054",background:"#FF007E"},hover:{border:"#B70054",background:"#FF007E"}},{border:"#AD85E4",background:"#7C29F0",highlight:{border:"#D3BDF0",background:"#7C29F0"},hover:{border:"#D3BDF0",background:"#7C29F0"}},{border:"#4557FA",background:"#000EA1",highlight:{border:"#6E6EFD",background:"#000EA1"},hover:{border:"#6E6EFD",background:"#000EA1"}},{border:"#FFC0CB",background:"#FD5A77",highlight:{border:"#FFD1D9",background:"#FD5A77"},hover:{border:"#FFD1D9",background:"#FD5A77"}},{border:"#C2FABC",background:"#74D66A",highlight:{border:"#E6FFE3",background:"#74D66A"},hover:{border:"#E6FFE3",background:"#74D66A"}},{border:"#EE0000",background:"#990000",highlight:{border:"#FF3333",background:"#BB0000"},hover:{border:"#FF3333",background:"#BB0000"}}],s.prototype.clear=function(){this.groups={},this.groups.length=function(){var t=0;for(var e in this)this.hasOwnProperty(e)&&t++;return t}},s.prototype.get=function(t){var e=this.groups[t];if(void 0==e)if(this.useDefaultGroups===!1&&this.groupsArray.length>0){var i=this.groupIndex%this.groupsArray.length;this.groupIndex++,e={},e.color=this.groups[this.groupsArray[i]],this.groups[t]=e}else{var i=this.defaultIndex%s.DEFAULT.length;this.defaultIndex++,e={},e.color=s.DEFAULT[i],this.groups[t]=e}return e},s.prototype.add=function(t,e){return this.groups[t]=e,this.groupsArray.push(t),e},t.exports=s},function(t){function e(){this.images={},this.imageBroken={},this.callback=void 0}e.prototype.setOnloadCallback=function(t){this.callback=t},e.prototype.load=function(t,e){var i=this.images[t];if(void 0===i){var s=this;i=new Image,i.onload=function(){0==this.width&&(document.body.appendChild(this),this.width=this.offsetWidth,this.height=this.offsetHeight,document.body.removeChild(this)),s.callback&&(s.images[t]=i,s.callback(this))},i.onerror=function(){void 0===e?(console.error("Could not load image:",t),delete this.src,s.callback&&s.callback(this)):s.imageBroken[t]===!0?this.src==e?(console.error("Could not load brokenImage:",e),delete this.src,s.callback&&s.callback(this)):(console.error("Could not load image:",t),this.src=e):(console.error("Could not load image:",t),this.src=e,s.imageBroken[t]=!0)},i.src=t}return i},t.exports=e},function(t,e,i){function s(t,e,i,s){var n=o.selectiveBridgeObject(["nodes"],s);this.options=n.nodes,this.selected=!1,this.hover=!1,this.edges=[],this.dynamicEdges=[],this.reroutedEdges={},this.id=void 0,this.allowedToMoveX=!1,this.allowedToMoveY=!1,this.xFixed=!1,this.yFixed=!1,this.horizontalAlignLeft=!0,this.verticalAlignTop=!0,this.baseRadiusValue=s.nodes.radius,this.radiusFixed=!1,this.level=-1,this.preassignedLevel=!1,this.hierarchyEnumerated=!1,this.labelDimensions={top:0,left:0,width:0,height:0,yLine:0},this.boundingBox={top:0,left:0,right:0,bottom:0},this.imagelist=e,this.grouplist=i,this.fx=0,this.fy=0,this.vx=0,this.vy=0,this.x=null,this.y=null,this.predefinedPosition=!1,this.previousState={vx:0,vy:0,x:0,y:0},this.damping=s.physics.damping,this.fixedData={x:null,y:null},this.setProperties(t,n),this.resetCluster(),this.clusterSession=0,this.clusterSizeWidthFactor=s.clustering.nodeScaling.width,this.clusterSizeHeightFactor=s.clustering.nodeScaling.height,this.clusterSizeRadiusFactor=s.clustering.nodeScaling.radius,this.maxNodeSizeIncrements=s.clustering.maxNodeSizeIncrements,this.growthIndicator=0,this.networkScaleInv=1,this.networkScale=1,this.canvasTopLeft={x:-300,y:-300},this.canvasBottomRight={x:300,y:300},this.parentEdgeId=null}var o=i(1);s.prototype.revertPosition=function(){this.x=this.previousState.x,this.y=this.previousState.y,this.vx=this.previousState.vx,this.vy=this.previousState.vy},s.prototype.resetCluster=function(){this.formationScale=void 0,this.clusterSize=1,this.containedNodes={},this.containedEdges={},this.clusterSessions=[]},s.prototype.attachEdge=function(t){-1==this.edges.indexOf(t)&&this.edges.push(t),-1==this.dynamicEdges.indexOf(t)&&this.dynamicEdges.push(t)},s.prototype.detachEdge=function(t){var e=this.edges.indexOf(t);-1!=e&&this.edges.splice(e,1),e=this.dynamicEdges.indexOf(t),-1!=e&&this.dynamicEdges.splice(e,1)},s.prototype.setProperties=function(t,e){if(t){var i=["borderWidth","borderWidthSelected","shape","image","brokenImage","radius","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","group","mass","fontDrawThreshold","scaleFontWithValue","fontSizeMaxVisible","customScalingFunction","iconFontFace","icon","iconColor","iconSize"];if(o.selectiveDeepExtend(i,this.options,t),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.originalLabel=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.x&&(this.x=t.x,this.predefinedPosition=!0),void 0!==t.y&&(this.y=t.y,this.predefinedPosition=!0),void 0!==t.value&&(this.value=t.value),void 0!==t.level&&(this.level=t.level,this.preassignedLevel=!0),void 0!==t.horizontalAlignLeft&&(this.horizontalAlignLeft=t.horizontalAlignLeft),void 0!==t.verticalAlignTop&&(this.verticalAlignTop=t.verticalAlignTop),void 0!==t.triggerFunction&&(this.triggerFunction=t.triggerFunction),void 0===this.id)throw"Node must have an id";if("number"==typeof t.group||"string"==typeof t.group&&""!=t.group){var s=this.grouplist.get(t.group);o.deepExtend(this.options,s),this.options.color=o.parseColor(this.options.color)}if(void 0!==t.radius&&(this.baseRadiusValue=this.options.radius),void 0!==t.color&&(this.options.color=o.parseColor(t.color)),void 0!==this.options.image&&""!=this.options.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage)}switch(void 0!==t.allowedToMoveX?(this.xFixed=!t.allowedToMoveX,this.allowedToMoveX=t.allowedToMoveX):void 0!==t.x&&0==this.allowedToMoveX&&(this.xFixed=!0),void 0!==t.allowedToMoveY?(this.yFixed=!t.allowedToMoveY,this.allowedToMoveY=t.allowedToMoveY):void 0!==t.y&&0==this.allowedToMoveY&&(this.yFixed=!0),this.radiusFixed=this.radiusFixed||void 0!==t.radius,("image"===this.options.shape||"circularImage"===this.options.shape)&&(this.options.radiusMin=e.nodes.widthMin,this.options.radiusMax=e.nodes.widthMax),this.options.shape){case"database":this.draw=this._drawDatabase,this.resize=this._resizeDatabase;break;case"box":this.draw=this._drawBox,this.resize=this._resizeBox;break;case"circle":this.draw=this._drawCircle,this.resize=this._resizeCircle;break;case"ellipse":this.draw=this._drawEllipse,this.resize=this._resizeEllipse;break;case"image":this.draw=this._drawImage,this.resize=this._resizeImage;break;case"circularImage":this.draw=this._drawCircularImage,this.resize=this._resizeCircularImage;break;case"text":this.draw=this._drawText,this.resize=this._resizeText;break;case"dot":this.draw=this._drawDot,this.resize=this._resizeShape;break;case"square":this.draw=this._drawSquare,this.resize=this._resizeShape;break;case"triangle":this.draw=this._drawTriangle,this.resize=this._resizeShape;break;case"triangleDown":this.draw=this._drawTriangleDown,this.resize=this._resizeShape;break;case"star":this.draw=this._drawStar,this.resize=this._resizeShape;break;case"icon":this.draw=this._drawIcon,this.resize=this._resizeIcon;break;default:this.draw=this._drawEllipse,this.resize=this._resizeEllipse}this._reset()}},s.prototype.select=function(){this.selected=!0,this._reset()},s.prototype.unselect=function(){this.selected=!1,this._reset()},s.prototype.clearSizeCache=function(){this._reset() -},s.prototype._reset=function(){this.width=void 0,this.height=void 0},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.distanceToBorder=function(t,e){var i=1;switch(this.width||this.resize(t),this.options.shape){case"circle":case"dot":return this.options.radius+i;case"ellipse":var s=this.width/2,o=this.height/2,n=Math.sin(e)*s,r=Math.cos(e)*o;return s*o/Math.sqrt(n*n+r*r);case"box":case"image":case"text":default:return this.width?Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i:0}},s.prototype._setForce=function(t,e){this.fx=t,this.fy=e},s.prototype._addForce=function(t,e){this.fx+=t,this.fy+=e},s.prototype.storeState=function(){this.previousState.x=this.x,this.previousState.y=this.y,this.previousState.vx=this.vx,this.previousState.vy=this.vy},s.prototype.discreteStep=function(t){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var e=this.damping*this.vx,i=(this.fx-e)/this.options.mass;this.vx+=i*t,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var s=this.damping*this.vy,o=(this.fy-s)/this.options.mass;this.vy+=o*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.options.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var o=this.damping*this.vy,n=(this.fy-o)/this.options.mass;this.vy+=n*t,this.vy=Math.abs(this.vy)>e?this.vy>0?e:-e:this.vy,this.y+=this.vy*t}},s.prototype.isFixed=function(){return this.xFixed&&this.yFixed},s.prototype.isMoving=function(t){var e=Math.sqrt(Math.pow(this.vx,2)+Math.pow(this.vy,2));return e>t},s.prototype.isSelected=function(){return this.selected},s.prototype.getValue=function(){return this.value},s.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},s.prototype.setValueRange=function(t,e,i){if(!this.radiusFixed&&void 0!==this.value){var s=this.options.customScalingFunction(t,e,i,this.value),o=this.options.radiusMax-this.options.radiusMin;if(1==this.options.scaleFontWithValue){var n=this.options.fontSizeMax-this.options.fontSizeMin;this.options.fontSize=this.options.fontSizeMin+s*n}this.options.radius=this.options.radiusMin+s*o}this.baseRadiusValue=this.options.radius},s.prototype.draw=function(){throw"Draw method not initialized for node"},s.prototype.resize=function(){throw"Resize method not initialized for node"},s.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},s.prototype._resizeImage=function(){if(!this.width||!this.height){var t,e;if(this.value){this.options.radius=this.baseRadiusValue;var i=this.imageObj.height/this.imageObj.width;void 0!==i?(t=this.options.radius||this.imageObj.width,e=this.options.radius*i||this.imageObj.height):(t=0,e=0)}else t=this.imageObj.width,e=this.imageObj.height;this.width=t,this.height=e,this.growthIndicator=0,this.width>0&&this.height>0&&(this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t)}},s.prototype._drawImageAtPosition=function(t){if(0!=this.imageObj.width){if(this.clusterSize>1){var e=this.clusterSize>1?10:0;e*=this.networkScaleInv,e=Math.min(.2*this.width,e),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-e,this.top-e,this.width+2*e,this.height+2*e)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height)}},s.prototype._drawImageLabel=function(t){var e,i=0;if(this.height){i=this.height/2;var s=this.getTextSize(t);s.lineCount>=1&&(i+=s.height/2,i+=3)}e=this.y+i,this._label(t,this.label,this.x,e,void 0)},s.prototype._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawImageAtPosition(t),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeCircularImage=function(t){if(this.imageObj.src&&this.imageObj.width&&this.imageObj.height)this._swapToImageResizeWhenImageLoaded&&(this.width=0,this.height=0,delete this._swapToImageResizeWhenImageLoaded),this._resizeImage(t);else if(!this.width){var e=2*this.options.radius;this.width=e,this.height=e,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*e,this._swapToImageResizeWhenImageLoaded=!0}},s.prototype._drawCircularImage=function(t){this._resizeCircularImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=this.left+this.width/2,i=this.top+this.height/2,s=Math.abs(this.height/2);this._drawRawCircle(t,e,i,s),t.save(),t.circle(this.x,this.y,s),t.stroke(),t.clip(),this._drawImageAtPosition(t),t.restore(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeBox=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawBox=function(t){this._resizeBox(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.roundRect(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth,this.options.radius),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeDatabase=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=i.width+2*e;this.width=s,this.height=s,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-s}},s.prototype._drawDatabase=function(t){this._resizeDatabase(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.database(this.x-this.width/2-2*t.lineWidth,this.y-.5*this.height-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.database(this.x-this.width/2,this.y-.5*this.height,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeCircle=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=Math.max(i.width,i.height)+2*e;this.options.radius=s/2,this.width=s,this.height=s,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*s}},s.prototype._drawRawCircle=function(t,e,i,s){var o=2.5,n=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.circle(e,i,s+2*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.circle(this.x,this.y,s),t.fill(),t.stroke()},s.prototype._drawCircle=function(t){this._resizeCircle(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawRawCircle(t,this.x,this.y,this.options.radius),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._label(t,this.label,this.x,this.y)},s.prototype._resizeEllipse=function(t){if(!this.width){var e=this.getTextSize(t);this.width=1.5*e.width,this.height=2*e.height,this.width1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.ellipse(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.ellipse(this.left,this.top,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._drawDot=function(t){this._drawShape(t,"circle")},s.prototype._drawTriangle=function(t){this._drawShape(t,"triangle")},s.prototype._drawTriangleDown=function(t){this._drawShape(t,"triangleDown")},s.prototype._drawSquare=function(t){this._drawShape(t,"square")},s.prototype._drawStar=function(t){this._drawShape(t,"star")},s.prototype._resizeShape=function(){if(!this.width){this.options.radius=this.baseRadiusValue;var t=2*this.options.radius;this.width=t,this.height=t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t}},s.prototype._drawShape=function(t,e){this._resizeShape(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var i=2.5,s=this.options.borderWidth,o=this.options.borderWidthSelected||2*this.options.borderWidth,n=2;switch(e){case"dot":n=2;break;case"square":n=2;break;case"triangle":n=3;break;case"triangleDown":n=3;break;case"star":n=4}t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t[e](this.x,this.y,this.options.radius+n*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t[e](this.x,this.y,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this.label&&(this._label(t,this.label,this.x,this.y+this.height/2,void 0,"hanging",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height))},s.prototype._resizeText=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawText=function(t){this._resizeText(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._label(t,this.label,this.x,this.y),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height},s.prototype._resizeIcon=function(){if(!this.width){var t=5,e={width:Number(this.options.iconSize),height:Number(this.options.iconSize)};this.width=e.width+2*t,this.height=e.height+2*t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(e.width+2*t)}},s.prototype._drawIcon=function(t){if(this._resizeIcon(t),this.options.iconSize=this.options.iconSize||50,this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._icon(t),this.boundingBox.top=this.y-this.options.iconSize/2,this.boundingBox.left=this.x-this.options.iconSize/2,this.boundingBox.right=this.x+this.options.iconSize/2,this.boundingBox.bottom=this.y+this.options.iconSize/2,this.label){var e=5;this._label(t,this.label,this.x,this.y+this.height/2+e,"top",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)}},s.prototype._icon=function(t){var e=Number(this.options.iconSize)*this.networkScale;if(this.options.icon&&e>this.options.fontDrawThreshold-1){var i=Number(this.options.iconSize);t.font=(this.selected?"bold ":"")+i+"px "+this.options.iconFontFace,t.fillStyle=this.options.iconColor||"black",t.textAlign="center",t.textBaseline="middle",t.fillText(this.options.icon,this.x,this.y)}},s.prototype._label=function(t,e,i,s,n,r,a){var h=Number(this.options.fontSize)*this.networkScale;if(e&&h>=this.options.fontDrawThreshold-1){var d=Number(this.options.fontSize);h>=this.options.fontSizeMaxVisible&&(d=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv);var l=this.options.fontColor||"#000000",c=this.options.fontStrokeColor;if(h<=this.options.fontDrawThreshold){var p=Math.max(0,Math.min(1,1-(this.options.fontDrawThreshold-h)));l=o.overrideOpacity(l,p),c=o.overrideOpacity(c,p)}t.font=(this.selected?"bold ":"")+d+"px "+this.options.fontFace;var u=e.split("\n"),m=u.length,f=s+(1-m)/2*d;1==a&&(f=s+(1-m)/(2*d));for(var g=t.measureText(u[0]).width,v=1;m>v;v++){var y=t.measureText(u[v]).width;g=y>g?y:g}var b=d*m,_=i-g/2,x=s-b/2;"hanging"==r&&(x+=.5*d,x+=4,f+=4),this.labelDimensions={top:x,left:_,width:g,height:b,yLine:f},void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(_,x,g,b)),t.fillStyle=l,t.textAlign=n||"center",t.textBaseline=r||"middle",this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=c,t.lineJoin="round");for(var v=0;m>v;v++)this.options.fontStrokeWidth&&t.strokeText(u[v],i,f),t.fillText(u[v],i,f),f+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){var e=Number(this.options.fontSize);e*this.networkScale>this.options.fontSizeMaxVisible&&(e=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv),t.font=(this.selected?"bold ":"")+e+"px "+this.options.fontFace;for(var i=this.label.split("\n"),s=(e+4)*i.length,o=0,n=0,r=i.length;r>n;n++)o=Math.max(o,t.measureText(i[n]).width);return{width:o,height:s,lineCount:i.length}}return{width:0,height:0,lineCount:0}},s.prototype.inArea=function(){return void 0!==this.width?this.x+this.width*this.networkScaleInv>=this.canvasTopLeft.x&&this.x-this.width*this.networkScaleInv=this.canvasTopLeft.y&&this.y-this.height*this.networkScaleInv=this.canvasTopLeft.x&&this.x=this.canvasTopLeft.y&&this.ys&&(n=s-e-this.padding),no&&(r=o-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){o=r.nodes[i];break}for(o||(o={id:e.id},t.node&&(o.attr=a(o.attr,t.node))),i=n.length-1;i>=0;i--){var h=n[i];h.nodes||(h.nodes=[]),-1==h.nodes.indexOf(o)&&h.nodes.push(o)}e.attr&&(o.attr=a(o.attr,e.attr))}function l(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=a({},t.edge);e.attr=a(i,e.attr)}}function c(t,e,i,s,o){var n={from:e,to:i,type:s};return t.edge&&(n.attr=a({},t.edge)),n.attr=a(n.attr||{},o),n}function p(){for(N=S.NULL,k="";" "==E||" "==E||"\n"==E||"\r"==E;)o();do{var t=!1;if("#"==E){for(var e=O-1;" "==T.charAt(e)||" "==T.charAt(e);)e--;if("\n"==T.charAt(e)||""==T.charAt(e)){for(;""!=E&&"\n"!=E;)o();t=!0}}if("/"==E&&"/"==n()){for(;""!=E&&"\n"!=E;)o();t=!0}if("/"==E&&"*"==n()){for(;""!=E;){if("*"==E&&"/"==n()){o(),o();break}o()}t=!0}for(;" "==E||" "==E||"\n"==E||"\r"==E;)o()}while(t);if(""==E)return void(N=S.DELIMITER);var i=E+n();if(C[i])return N=S.DELIMITER,k=i,o(),void o();if(C[E])return N=S.DELIMITER,k=E,void o();if(r(E)||"-"==E){for(k+=E,o();r(E);)k+=E,o();return"false"==k?k=!1:"true"==k?k=!0:isNaN(Number(k))||(k=Number(k)),void(N=S.IDENTIFIER)}if('"'==E){for(o();""!=E&&('"'!=E||'"'==E&&'"'==n());)k+=E,'"'==E&&o(),o();if('"'!=E)throw x('End of string " expected');return o(),void(N=S.IDENTIFIER)}for(N=S.UNKNOWN;""!=E;)k+=E,o();throw new SyntaxError('Syntax error in part "'+w(k,30)+'"')}function u(){var t={};if(s(),p(),"strict"==k&&(t.strict=!0,p()),("graph"==k||"digraph"==k)&&(t.type=k,p()),N==S.IDENTIFIER&&(t.id=k,p()),"{"!=k)throw x("Angle bracket { expected");if(p(),m(t),"}"!=k)throw x("Angle bracket } expected");if(p(),""!==k)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function m(t){for(;""!==k&&"}"!=k;)f(t),";"==k&&p()}function f(t){var e=g(t);if(e)return void b(t,e);var i=v(t);if(!i){if(N!=S.IDENTIFIER)throw x("Identifier expected");var s=k;if(p(),"="==k){if(p(),N!=S.IDENTIFIER)throw x("Identifier expected");t[s]=k,p()}else y(t,s)}}function g(t){var e=null;if("subgraph"==k&&(e={},e.type="subgraph",p(),N==S.IDENTIFIER&&(e.id=k,p())),"{"==k){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,m(e),"}"!=k)throw x("Angle bracket } expected");p(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function v(t){return"node"==k?(p(),t.node=_(),"node"):"edge"==k?(p(),t.edge=_(),"edge"):"graph"==k?(p(),t.graph=_(),"graph"):null}function y(t,e){var i={id:e},s=_();s&&(i.attr=s),d(t,i),b(t,e)}function b(t,e){for(;"->"==k||"--"==k;){var i,s=k;p();var o=g(t);if(o)i=o;else{if(N!=S.IDENTIFIER)throw x("Identifier or subgraph expected");i=k,d(t,{id:i}),p()}var n=_(),r=c(t,e,i,s,n);l(t,r),e=i}}function _(){for(var t=null;"["==k;){for(p(),t={};""!==k&&"]"!=k;){if(N!=S.IDENTIFIER)throw x("Attribute name expected");var e=k;if(p(),"="!=k)throw x("Equal sign = expected");if(p(),N!=S.IDENTIFIER)throw x("Attribute value expected");var i=k;h(t,e,i),p(),","==k&&p()}if("]"!=k)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+w(k,30)+'" (char '+O+")")}function w(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function M(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function D(t){var e=i(t),s={nodes:[],edges:[],options:{}};if(e.nodes&&e.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};a(e,t.attr),e.image&&(e.shape="image"),s.nodes.push(e)}),e.edges){var o=function(t){var e={from:t.from,to:t.to};return a(e,t.attr),e.style="->"==t.type?"arrow":"line",e};e.edges.forEach(function(t){var e,i;e=t.from instanceof Object?t.from.nodes:{id:t.from},i=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var e=o(t);s.edges.push(e)}),M(e,i,function(e,i){var n=c(s,e.id,i.id,t.type,t.attr),r=o(n);s.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var e=o(t);s.edges.push(e)})})}return e.attr&&(s.options=e.attr),s}var S={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},C={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},T="",O=0,E="",k="",N=S.NULL,I=/[a-zA-Z_0-9.:#]/;e.parseDOT=i,e.DOTToGraph=D},function(t,e){function i(t,e){var i=[],s=[];this.options={edges:{inheritColor:!0},nodes:{allowedToMove:!1,parseColor:!1}},void 0!==e&&(this.options.nodes.allowedToMove=e.allowedToMove|!1,this.options.nodes.parseColor=e.parseColor|!1,this.options.edges.inheritColor=e.inheritColor|!0);for(var o=t.edges,n=t.nodes,r=0;r0?Math.max.apply(null,i)+1:1):(this.customBarIds.forEach(function(t){if(t===e)throw new Error("Custom time ID already exists")}),o=e),this.customBarIds.push(o),s=new l(this.body,{showCustomTime:!0,time:n,id:o}),this.components.push(s),this.redraw(),o},s.prototype.removeCustomTime=function(t){var e=this;this.components.forEach(function(i,s,o){i instanceof l&&i.options.id===t&&0!==i.options.id&&(e.customBarIds.splice(e.customBarIds.indexOf(t),1),o.splice(s,1),i.destroy())})},s.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},s.prototype.clear=function(t){(!t||t.items)&&this.setItems(null),(!t||t.groups)&&this.setGroups(null),(!t||t.options)&&(this.components.forEach(function(t){t.setOptions(t.defaultOptions)}),this.setOptions(this.defaultOptions))},s.prototype.fit=function(t){var e=this._getDataRange();if(null!==e.start||null!==e.end){var i=t&&void 0!==t.animate?t.animate:!0;this.range.setRange(e.start,e.end,i)}},s.prototype._getDataRange=function(){var t=this.getItemRange(),e=t.min,i=t.max;if(null!=e&&null!=i){var s=i.valueOf()-e.valueOf();0>=s&&(s=864e5),e=new Date(e.valueOf()-.05*s),i=new Date(i.valueOf()+.05*s)}return{start:e,end:i}},s.prototype.setWindow=function(t,e,i){var s;if(1==arguments.length){var o=arguments[0];s=void 0!==o.animate?o.animate:!0,this.range.setRange(o.start,o.end,s)}else s=i&&void 0!==i.animate?i.animate:!0,this.range.setRange(t,e,s)},s.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,s=r.convert(t,"Date").valueOf(),o=s-i/2,n=s+i/2,a=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(o,n,a)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){this._redraw()},s.prototype._redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){d.updateHiddenDates(this.body,this.options.hiddenDates),"top"==e.orientation?(r.addClassName(s.root,"top"),r.removeClassName(s.root,"bottom")):(r.removeClassName(s.root,"top"),r.addClassName(s.root,"bottom")),s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;0===s.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===s.root.clientHeight&&(n=o),i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),h=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,h+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var l=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=l,i.leftContainer.height=l,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var c=i.root.width-i.left.width-i.right.width-n;i.center.width=c,i.centerContainer.width=c,i.top.width=c,i.bottom.width=c,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+i.border.left+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var p=this.props.scrollTop;"bottom"==e.orientation&&(p+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=p+"px",s.left.style.left="0",s.left.style.top=p+"px",s.right.style.left="0",s.right.style.top=p+"px";var u=0==this.props.scrollTop?"hidden":"",m=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";if(s.shadowTop.style.visibility=u,s.shadowBottom.style.visibility=m,s.shadowTopLeft.style.visibility=u,s.shadowBottomLeft.style.visibility=m,s.shadowTopRight.style.visibility=u,s.shadowBottomRight.style.visibility=m,this.components.forEach(function(e){t=e.redraw()||t}),t){var f=3;this.redrawCount0&&(this.props.scrollTop=0),this.props.scrollTopt[s].y?t[s].y:e,i=i0){var r,a,h=Number(i.svg.style.height.replace("px",""));if(r=o.getSVGElement("path",i.svgElements,i.svg),r.setAttributeNS(null,"class",e.className),void 0!==e.style&&r.setAttributeNS(null,"style",e.style),a=1==e.options.catmullRom.enabled?s._catmullRom(t,e):s._linear(t),1==e.options.shaded.enabled){var d,l=o.getSVGElement("path",i.svgElements,i.svg);d="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+a+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+h+" "+a+"L"+t[t.length-1].x+","+h,l.setAttributeNS(null,"class",e.className+" fill"),void 0!==e.options.shaded.style&&l.setAttributeNS(null,"style",e.options.shaded.style),l.setAttributeNS(null,"d",d)}r.setAttributeNS(null,"d","M"+a),1==e.options.drawPoints.enabled&&n.draw(t,e,i)}},s._catmullRomUniform=function(t){for(var e,i,s,o,n,r,a=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",h=1/6,d=t.length,l=0;d-1>l;l++)e=0==l?t[0]:t[l-1],i=t[l],s=t[l+1],o=d>l+2?t[l+2]:s,n={x:(-e.x+6*i.x+s.x)*h,y:(-e.y+6*i.y+s.y)*h},r={x:(i.x+6*s.x-o.x)*h,y:(i.y+6*s.y-o.y)*h},a+="C"+n.x+","+n.y+" "+r.x+","+r.y+" "+s.x+","+s.y+" ";return a},s._catmullRom=function(t,e){var i=e.options.catmullRom.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var s,o,n,r,a,h,d,l,c,p,u,m,f,g,v,y,b,_,x,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",M=t.length,D=0;M-1>D;D++)s=0==D?t[0]:t[D-1],o=t[D],n=t[D+1],r=M>D+2?t[D+2]:n,d=Math.sqrt(Math.pow(s.x-o.x,2)+Math.pow(s.y-o.y,2)),l=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),c=Math.sqrt(Math.pow(n.x-r.x,2)+Math.pow(n.y-r.y,2)),g=Math.pow(c,i),y=Math.pow(c,2*i),v=Math.pow(l,i),b=Math.pow(l,2*i),x=Math.pow(d,i),_=Math.pow(d,2*i),p=2*_+3*x*v+b,u=2*y+3*g*v+b,m=3*x*(x+v),m>0&&(m=1/m),f=3*g*(g+v),f>0&&(f=1/f),a={x:(-b*s.x+p*o.x+_*n.x)*m,y:(-b*s.y+p*o.y+_*n.y)*m},h={x:(y*o.x+u*n.x-b*r.x)*f,y:(y*o.y+u*n.y-b*r.y)*f},0==a.x&&0==a.y&&(a=o),0==h.x&&0==h.y&&(h=n),w+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+n.x+","+n.y+" ";return w},s._linear=function(t){for(var e="",i=0;it[s].y?t[s].y:e,i=i0&&(n=Math.min(n,Math.abs(c[d-1].x-r))),a=s._getSafeDrawData(n,h,m);else{var g=d+(p[r].amount-p[r].resolved),v=d-(p[r].resolved+1);g0&&(n=Math.min(n,Math.abs(c[v].x-r))),a=s._getSafeDrawData(n,h,m),p[r].resolved+=1,"stack"==h.options.barChart.handleOverlap?(f=p[r].accumulated,p[r].accumulated+=h.zeroPosition-c[d].y):"sideBySide"==h.options.barChart.handleOverlap&&(a.width=a.width/p[r].amount,a.offset+=p[r].resolved*a.width-.5*a.width*(p[r].amount+1),"left"==h.options.barChart.align?a.offset-=.5*a.width:"right"==h.options.barChart.align&&(a.offset+=.5*a.width))}o.drawBar(c[d].x+a.offset,c[d].y-f,a.width,h.zeroPosition-c[d].y,h.className+" bar",i.svgElements,i.svg),1==h.options.drawPoints.enabled&&o.drawPoint(c[d].x+a.offset,c[d].y,h,i.svgElements,i.svg)}},s._getDataIntersections=function(t,e){for(var i,s=0;s0&&(i=Math.min(i,Math.abs(e[s-1].x-e[s].x))),0==i&&(void 0===t[e[s].x]&&(t[e[s].x]={amount:0,resolved:0,accumulated:0}),t[e[s].x].amount+=1)},s._getSafeDrawData=function(t,e,i){var s,o;return t0?(s=i>t?i:t,o=0,"left"==e.options.barChart.align?o-=.5*t:"right"==e.options.barChart.align&&(o+=.5*t)):(s=e.options.barChart.width,o=0,"left"==e.options.barChart.align?o-=.5*e.options.barChart.width:"right"==e.options.barChart.align&&(o+=.5*e.options.barChart.width)),{width:s,offset:o}},s.getStackedBarYRange=function(t,e,i,o,n){if(t.length>0){t.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x});var r={};s._getDataIntersections(r,t),e[o]=s._getStackedBarYRange(r,t),e[o].yAxisOrientation=n,i.push(o)}},s._getStackedBarYRange=function(t,e){for(var i,s=e[0].y,o=e[0].y,n=0;ne[n].y?e[n].y:s,o=ot[r].accumulated?t[r].accumulated:s,o=ot[s].y?t[s].y:e,i=is;s++){var o=s%2===0?1.3*i:.5*i;this.lineTo(t+o*Math.sin(2*s*Math.PI/10),e-o*Math.cos(2*s*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,s,o){var n=Math.PI/180;0>i-2*o&&(o=i/2),0>s-2*o&&(o=s/2),this.beginPath(),this.moveTo(t+o,e),this.lineTo(t+i-o,e),this.arc(t+i-o,e+o,o,270*n,360*n,!1),this.lineTo(t+i,e+s-o),this.arc(t+i-o,e+s-o,o,0,90*n,!1),this.lineTo(t+o,e+s),this.arc(t+o,e+s-o,o,90*n,180*n,!1),this.lineTo(t,e+o),this.arc(t+o,e+o,o,180*n,270*n,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,s){var o=.5522848,n=i/2*o,r=s/2*o,a=t+i,h=e+s,d=t+i/2,l=e+s/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-n,e,d,e),this.bezierCurveTo(d+n,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+n,h,d,h),this.bezierCurveTo(d-n,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,s){var o=1/3,n=i,r=s*o,a=.5522848,h=n/2*a,d=r/2*a,l=t+n,c=e+r,p=t+n/2,u=e+r/2,m=e+(s-r/2),f=e+s;this.beginPath(),this.moveTo(l,u),this.bezierCurveTo(l,u+d,p+h,c,p,c),this.bezierCurveTo(p-h,c,t,u+d,t,u),this.bezierCurveTo(t,u-d,p-h,e,p,e),this.bezierCurveTo(p+h,e,l,u-d,l,u),this.lineTo(l,m),this.bezierCurveTo(l,m+d,p+h,f,p,f),this.bezierCurveTo(p-h,f,t,m+d,t,m),this.lineTo(t,u)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,s){var o=t-s*Math.cos(i),n=e-s*Math.sin(i),r=t-.9*s*Math.cos(i),a=e-.9*s*Math.sin(i),h=o+s/3*Math.cos(i+.5*Math.PI),d=n+s/3*Math.sin(i+.5*Math.PI),l=o+s/3*Math.cos(i-.5*Math.PI),c=n+s/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,s,o){o||(o=[10,5]),0==p&&(p=.001);var n=o.length;this.moveTo(t,e);for(var r=i-t,a=s-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0;d>=.1;){var p=o[l++%n];p>d&&(p=d);var u=Math.sqrt(p*p/(1+h*h));0>r&&(u=-u),t+=u,e+=h*u,this[c?"lineTo":"moveTo"](t,e),d-=p,c=!c}})},function(t){function e(t){return t?i(t):void 0}function i(t){for(var i in e.prototype)t[i]=e.prototype[i];return t}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},e.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var s,o=0;os;++s)i[s].apply(this,e)}return this},e.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},e.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t,e){var i,s,o;!function(n,r){s=[],i=r,o="function"==typeof i?i.apply(e,s):i,!(void 0!==o&&(t.exports=o))}(this,function(){function t(t){var e,i=t&&t.preventDefault||!1,s=t&&t.container||window,o={},n={keydown:{},keyup:{}},r={};for(e=97;122>=e;e++)r[String.fromCharCode(e)]={code:65+(e-97),shift:!1};for(e=65;90>=e;e++)r[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;9>=e;e++)r[""+e]={code:48+e,shift:!1};for(e=1;12>=e;e++)r["F"+e]={code:111+e,shift:!1};for(e=0;9>=e;e++)r["num"+e]={code:96+e,shift:!1};r["num*"]={code:106,shift:!1},r["num+"]={code:107,shift:!1},r["num-"]={code:109,shift:!1},r["num/"]={code:111,shift:!1},r["num."]={code:110,shift:!1},r.left={code:37,shift:!1},r.up={code:38,shift:!1},r.right={code:39,shift:!1},r.down={code:40,shift:!1},r.space={code:32,shift:!1},r.enter={code:13,shift:!1},r.shift={code:16,shift:void 0},r.esc={code:27,shift:!1},r.backspace={code:8,shift:!1},r.tab={code:9,shift:!1},r.ctrl={code:17,shift:!1},r.alt={code:18,shift:!1},r["delete"]={code:46,shift:!1},r.pageup={code:33,shift:!1},r.pagedown={code:34,shift:!1},r["="]={code:187,shift:!1},r["-"]={code:189,shift:!1},r["]"]={code:221,shift:!1},r["["]={code:219,shift:!1};var a=function(t){d(t,"keydown")},h=function(t){d(t,"keyup")},d=function(t,e){if(void 0!==n[e][t.keyCode]){for(var s=n[e][t.keyCode],o=0;oe-n?(i=t.clone().add(o-1,"months"),s=(e-n)/(n-i)):(i=t.clone().add(o+1,"months"),s=(e-n)/(i-n)),-(o+s)}function f(t,e,i){var s;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(s=t.isPM(i),s&&12>e&&(e+=12),s||12!==e||(e=0),e):e}function g(){}function v(t,e){e!==!1&&R(t),_(this,t),this._d=new Date(+t._d),Si===!1&&(Si=!0,Ce.updateOffset(this),Si=!1)}function y(t){var e=N(t),i=e.year||0,s=e.quarter||0,o=e.month||0,n=e.week||0,r=e.day||0,a=e.hour||0,h=e.minute||0,d=e.second||0,l=e.millisecond||0;this._milliseconds=+l+1e3*d+6e4*h+36e5*a,this._days=+r+7*n,this._months=+o+3*s+12*i,this._data={},this._locale=Ce.localeData(),this._bubble()}function b(t,e){for(var i in e)a(e,i)&&(t[i]=e[i]);return a(e,"toString")&&(t.toString=e.toString),a(e,"valueOf")&&(t.valueOf=e.valueOf),t}function _(t,e){var i,s,o;if("undefined"!=typeof e._isAMomentObject&&(t._isAMomentObject=e._isAMomentObject),"undefined"!=typeof e._i&&(t._i=e._i),"undefined"!=typeof e._f&&(t._f=e._f),"undefined"!=typeof e._l&&(t._l=e._l),"undefined"!=typeof e._strict&&(t._strict=e._strict),"undefined"!=typeof e._tzm&&(t._tzm=e._tzm),"undefined"!=typeof e._isUTC&&(t._isUTC=e._isUTC),"undefined"!=typeof e._offset&&(t._offset=e._offset),"undefined"!=typeof e._pf&&(t._pf=e._pf),"undefined"!=typeof e._locale&&(t._locale=e._locale),Ye.length>0)for(i in Ye)s=Ye[i],o=e[s],"undefined"!=typeof o&&(t[s]=o);return t}function x(t){return 0>t?Math.ceil(t):Math.floor(t)}function w(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengths;s++)(i&&t[s]!==e[s]||!i&&L(t[s])!==L(e[s]))&&r++;return r+n}function k(t){if(t){var e=t.toLowerCase().replace(/(.)s$/,"$1");t=gi[t]||vi[e]||e}return t}function N(t){var e,i,s={};for(i in t)a(t,i)&&(e=k(i),e&&(s[e]=t[i]));return s}function I(t){var e,i;if(0===t.indexOf("week"))e=7,i="day";else{if(0!==t.indexOf("month"))return;e=12,i="month"}Ce[t]=function(s,o){var r,a,h=Ce._locale[t],d=[];if("number"==typeof s&&(o=s,s=n),a=function(t){var e=Ce().utc().set(i,t);return h.call(Ce._locale,e,s||"")},null!=o)return a(o);for(r=0;e>r;r++)d.push(a(r));return d}}function L(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function z(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function A(t,e,i){return me(Ce([t,11,31+e-i]),e,i).week -}function P(t){return F(t)?366:365}function F(t){return t%4===0&&t%100!==0||t%400===0}function R(t){var e;t._a&&-2===t._pf.overflow&&(e=t._a[ze]<0||t._a[ze]>11?ze:t._a[Ae]<1||t._a[Ae]>z(t._a[Le],t._a[ze])?Ae:t._a[Pe]<0||t._a[Pe]>24||24===t._a[Pe]&&(0!==t._a[Fe]||0!==t._a[Re]||0!==t._a[He])?Pe:t._a[Fe]<0||t._a[Fe]>59?Fe:t._a[Re]<0||t._a[Re]>59?Re:t._a[He]<0||t._a[He]>999?He:-1,t._pf._overflowDayOfYear&&(Le>e||e>Ae)&&(e=Ae),t._pf.overflow=e)}function H(t){return null==t._isValid&&(t._isValid=!isNaN(t._d.getTime())&&t._pf.overflow<0&&!t._pf.empty&&!t._pf.invalidMonth&&!t._pf.nullInput&&!t._pf.invalidFormat&&!t._pf.userInvalidated,t._strict&&(t._isValid=t._isValid&&0===t._pf.charsLeftOver&&0===t._pf.unusedTokens.length&&t._pf.bigHour===n)),t._isValid}function B(t){return t?t.toLowerCase().replace("_","-"):t}function Y(t){for(var e,i,s,o,n=0;n0;){if(s=W(o.slice(0,e).join("-")))return s;if(i&&i.length>=e&&E(o,i,!0)>=e-1)break;e--}n++}return null}function W(t){var e=null;if(!Be[t]&&We)try{e=Ce.locale(),!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),Ce.locale(e)}catch(i){}return Be[t]}function G(t,e){var i,s;return e._isUTC?(i=e.clone(),s=(Ce.isMoment(t)||O(t)?+t:+Ce(t))-+i,i._d.setTime(+i._d+s),Ce.updateOffset(i,!1),i):Ce(t).local()}function j(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function V(t){var e,i,s=t.match(Ue);for(e=0,i=s.length;i>e;e++)s[e]=wi[s[e]]?wi[s[e]]:j(s[e]);return function(o){var n="";for(e=0;i>e;e++)n+=s[e]instanceof Function?s[e].call(o,t):s[e];return n}}function U(t,e){return t.isValid()?(e=X(e,t.localeData()),yi[e]||(yi[e]=V(e)),yi[e](t)):t.localeData().invalidDate()}function X(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(Xe.lastIndex=0;s>=0&&Xe.test(t);)t=t.replace(Xe,i),Xe.lastIndex=0,s-=1;return t}function q(t,e){var i,s=e._strict;switch(t){case"Q":return oi;case"DDDD":return ri;case"YYYY":case"GGGG":case"gggg":return s?ai:Qe;case"Y":case"G":case"g":return di;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return s?hi:Ke;case"S":if(s)return oi;case"SS":if(s)return ni;case"SSS":if(s)return ri;case"DDD":return Ze;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Je;case"a":case"A":return e._locale._meridiemParse;case"x":return ii;case"X":return si;case"Z":case"ZZ":return ti;case"T":return ei;case"SSSS":return $e;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return s?ni:qe;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return qe;case"Do":return s?e._locale._ordinalParse:e._locale._ordinalParseLenient;default:return i=new RegExp(se(ie(t.replace("\\","")),"i"))}}function Z(t){t=t||"";var e=t.match(ti)||[],i=e[e.length-1]||[],s=(i+"").match(mi)||["-",0,0],o=+(60*s[1])+L(s[2]);return"+"===s[0]?o:-o}function Q(t,e,i){var s,o=i._a;switch(t){case"Q":null!=e&&(o[ze]=3*(L(e)-1));break;case"M":case"MM":null!=e&&(o[ze]=L(e)-1);break;case"MMM":case"MMMM":s=i._locale.monthsParse(e,t,i._strict),null!=s?o[ze]=s:i._pf.invalidMonth=e;break;case"D":case"DD":null!=e&&(o[Ae]=L(e));break;case"Do":null!=e&&(o[Ae]=L(parseInt(e.match(/\d{1,2}/)[0],10)));break;case"DDD":case"DDDD":null!=e&&(i._dayOfYear=L(e));break;case"YY":o[Le]=Ce.parseTwoDigitYear(e);break;case"YYYY":case"YYYYY":case"YYYYYY":o[Le]=L(e);break;case"a":case"A":i._meridiem=e;break;case"h":case"hh":i._pf.bigHour=!0;case"H":case"HH":o[Pe]=L(e);break;case"m":case"mm":o[Fe]=L(e);break;case"s":case"ss":o[Re]=L(e);break;case"S":case"SS":case"SSS":case"SSSS":o[He]=L(1e3*("0."+e));break;case"x":i._d=new Date(L(e));break;case"X":i._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":i._useUTC=!0,i._tzm=Z(e);break;case"dd":case"ddd":case"dddd":s=i._locale.weekdaysParse(e),null!=s?(i._w=i._w||{},i._w.d=s):i._pf.invalidWeekday=e;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":t=t.substr(0,1);case"gggg":case"GGGG":case"GGGGG":t=t.substr(0,2),e&&(i._w=i._w||{},i._w[t]=L(e));break;case"gg":case"GG":i._w=i._w||{},i._w[t]=Ce.parseTwoDigitYear(e)}}function K(t){var e,i,s,o,n,a,h;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(n=1,a=4,i=r(e.GG,t._a[Le],me(Ce(),1,4).year),s=r(e.W,1),o=r(e.E,1)):(n=t._locale._week.dow,a=t._locale._week.doy,i=r(e.gg,t._a[Le],me(Ce(),n,a).year),s=r(e.w,1),null!=e.d?(o=e.d,n>o&&++s):o=null!=e.e?e.e+n:n),h=fe(i,s,o,a,n),t._a[Le]=h.year,t._dayOfYear=h.dayOfYear}function $(t){var e,i,s,o,n=[];if(!t._d){for(s=te(t),t._w&&null==t._a[Ae]&&null==t._a[ze]&&K(t),t._dayOfYear&&(o=r(t._a[Le],s[Le]),t._dayOfYear>P(o)&&(t._pf._overflowDayOfYear=!0),i=le(o,0,t._dayOfYear),t._a[ze]=i.getUTCMonth(),t._a[Ae]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=n[e]=s[e];for(;7>e;e++)t._a[e]=n[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[Pe]&&0===t._a[Fe]&&0===t._a[Re]&&0===t._a[He]&&(t._nextDay=!0,t._a[Pe]=0),t._d=(t._useUTC?le:de).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[Pe]=24)}}function J(t){var e;t._d||(e=N(t._i),t._a=[e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],$(t))}function te(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function ee(t){if(t._f===Ce.ISO_8601)return void ne(t);t._a=[],t._pf.empty=!0;var e,i,s,o,r,a=""+t._i,h=a.length,d=0;for(s=X(t._f,t._locale).match(Ue)||[],e=0;e0&&t._pf.unusedInput.push(r),a=a.slice(a.indexOf(i)+i.length),d+=i.length),wi[o]?(i?t._pf.empty=!1:t._pf.unusedTokens.push(o),Q(o,i,t)):t._strict&&!i&&t._pf.unusedTokens.push(o);t._pf.charsLeftOver=h-d,a.length>0&&t._pf.unusedInput.push(a),t._pf.bigHour===!0&&t._a[Pe]<=12&&(t._pf.bigHour=n),t._a[Pe]=f(t._locale,t._a[Pe],t._meridiem),$(t),R(t)}function ie(t){return t.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o})}function se(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function oe(t){var e,i,s,o,n;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(o=0;on)&&(s=n,i=e));b(t,i||e)}function ne(t){var e,i,s=t._i,o=li.exec(s);if(o){for(t._pf.iso=!0,e=0,i=pi.length;i>e;e++)if(pi[e][1].exec(s)){t._f=pi[e][0]+(o[6]||" ");break}for(e=0,i=ui.length;i>e;e++)if(ui[e][1].exec(s)){t._f+=ui[e][0];break}s.match(ti)&&(t._f+="Z"),ee(t)}else t._isValid=!1}function re(t){ne(t),t._isValid===!1&&(delete t._isValid,Ce.createFromInputFallback(t))}function ae(t,e){var i,s=[];for(i=0;it&&a.setFullYear(t),a}function le(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function ce(t,e){if("string"==typeof t)if(isNaN(t)){if(t=e.weekdaysParse(t),"number"!=typeof t)return null}else t=parseInt(t,10);return t}function pe(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function ue(t,e,i){var s=Ce.duration(t).abs(),o=Ne(s.as("s")),n=Ne(s.as("m")),r=Ne(s.as("h")),a=Ne(s.as("d")),h=Ne(s.as("M")),d=Ne(s.as("y")),l=o0,l[4]=i,pe.apply({},l)}function me(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=Ce(t).add(n,"d"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function fe(t,e,i,s,o){var n,r,a=le(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:o,n=o-a+(a>s?7:0)-(o>a?7:0),r=7*(e-1)+(i-o)+n+1,{year:r>0?t:t-1,dayOfYear:r>0?r:P(t-1)+r}}function ge(t){var e,i=t._i,s=t._f;return t._locale=t._locale||Ce.localeData(t._l),null===i||s===n&&""===i?Ce.invalid({nullInput:!0}):("string"==typeof i&&(t._i=i=t._locale.preparse(i)),Ce.isMoment(i)?new v(i,!0):(s?T(s)?oe(t):ee(t):he(t),e=new v(t),e._nextDay&&(e.add(1,"d"),e._nextDay=n),e))}function ve(t,e){var i,s;if(1===e.length&&T(e[0])&&(e=e[0]),!e.length)return Ce();for(i=e[0],s=1;s=0?"+":"-";return e+w(Math.abs(t),6)},gg:function(){return w(this.weekYear()%100,2)},gggg:function(){return w(this.weekYear(),4)},ggggg:function(){return w(this.weekYear(),5)},GG:function(){return w(this.isoWeekYear()%100,2)},GGGG:function(){return w(this.isoWeekYear(),4)},GGGGG:function(){return w(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return L(this.milliseconds()/100)},SS:function(){return w(L(this.milliseconds()/10),2)},SSS:function(){return w(this.milliseconds(),3)},SSSS:function(){return w(this.milliseconds(),3)},Z:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+":"+w(L(t)%60,2)},ZZ:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+w(L(t)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},x:function(){return this.valueOf()},X:function(){return this.unix()},Q:function(){return this.quarter()}},Mi={},Di=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"],Si=!1;_i.length;)Oe=_i.pop(),wi[Oe+"o"]=u(wi[Oe],Oe);for(;xi.length;)Oe=xi.pop(),wi[Oe+Oe]=p(wi[Oe],2);wi.DDDD=p(wi.DDD,3),b(g.prototype,{set:function(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(t){return this._months[t.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(t){return this._monthsShort[t.month()]},monthsParse:function(t,e,i){var s,o,n;for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;12>s;s++){if(o=Ce.utc([2e3,s]),i&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(o,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(o,"").replace(".","")+"$","i")),i||this._monthsParse[s]||(n="^"+this.months(o,"")+"|^"+this.monthsShort(o,""),this._monthsParse[s]=new RegExp(n.replace(".",""),"i")),i&&"MMMM"===e&&this._longMonthsParse[s].test(t))return s;if(i&&"MMM"===e&&this._shortMonthsParse[s].test(t))return s;if(!i&&this._monthsParse[s].test(t))return s}},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(t){return this._weekdays[t.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(t){return this._weekdaysShort[t.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(t){return this._weekdaysMin[t.day()]},weekdaysParse:function(t){var e,i,s;for(this._weekdaysParse||(this._weekdaysParse=[]),e=0;7>e;e++)if(this._weekdaysParse[e]||(i=Ce([2e3,1]).day(e),s="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(s.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e},_longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},longDateFormat:function(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e},isPM:function(t){return"p"===(t+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(t,e,i){var s=this._calendar[t];return"function"==typeof s?s.apply(e,[i]):s},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(t,e,i,s){var o=this._relativeTime[i];return"function"==typeof o?o(t,e,i,s):o.replace(/%d/i,t)},pastFuture:function(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)},ordinal:function(t){return this._ordinal.replace("%d",t)},_ordinal:"%d",_ordinalParse:/\d{1,2}/,preparse:function(t){return t},postformat:function(t){return t},week:function(t){return me(t,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},firstDayOfWeek:function(){return this._week.dow},firstDayOfYear:function(){return this._week.doy},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),Ce=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._i=t,o._f=e,o._l=i,o._strict=s,o._isUTC=!1,o._pf=h(),ge(o)},Ce.suppressDeprecationWarnings=!1,Ce.createFromInputFallback=l("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),Ce.min=function(){var t=[].slice.call(arguments,0);return ve("isBefore",t)},Ce.max=function(){var t=[].slice.call(arguments,0);return ve("isAfter",t)},Ce.utc=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._useUTC=!0,o._isUTC=!0,o._l=i,o._i=t,o._f=e,o._strict=s,o._pf=h(),ge(o).utc()},Ce.unix=function(t){return Ce(1e3*t)},Ce.duration=function(t,e){var i,s,o,n,r=t,h=null;return Ce.isDuration(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(r={},e?r[e]=t:r.milliseconds=t):(h=je.exec(t))?(i="-"===h[1]?-1:1,r={y:0,d:L(h[Ae])*i,h:L(h[Pe])*i,m:L(h[Fe])*i,s:L(h[Re])*i,ms:L(h[He])*i}):(h=Ve.exec(t))?(i="-"===h[1]?-1:1,o=function(t){var e=t&&parseFloat(t.replace(",","."));return(isNaN(e)?0:e)*i},r={y:o(h[2]),M:o(h[3]),d:o(h[4]),h:o(h[5]),m:o(h[6]),s:o(h[7]),w:o(h[8])}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(n=D(Ce(r.from),Ce(r.to)),r={},r.ms=n.milliseconds,r.M=n.months),s=new y(r),Ce.isDuration(t)&&a(t,"_locale")&&(s._locale=t._locale),s},Ce.version=Ee,Ce.defaultFormat=ci,Ce.ISO_8601=function(){},Ce.momentProperties=Ye,Ce.updateOffset=function(){},Ce.relativeTimeThreshold=function(t,e){return bi[t]===n?!1:e===n?bi[t]:(bi[t]=e,!0)},Ce.lang=l("moment.lang is deprecated. Use moment.locale instead.",function(t,e){return Ce.locale(t,e)}),Ce.locale=function(t,e){var i;return t&&(i="undefined"!=typeof e?Ce.defineLocale(t,e):Ce.localeData(t),i&&(Ce.duration._locale=Ce._locale=i)),Ce._locale._abbr},Ce.defineLocale=function(t,e){return null!==e?(e.abbr=t,Be[t]||(Be[t]=new g),Be[t].set(e),Ce.locale(t),Be[t]):(delete Be[t],null)},Ce.langData=l("moment.langData is deprecated. Use moment.localeData instead.",function(t){return Ce.localeData(t)}),Ce.localeData=function(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Ce._locale;if(!T(t)){if(e=W(t))return e;t=[t]}return Y(t)},Ce.isMoment=function(t){return t instanceof v||null!=t&&a(t,"_isAMomentObject")},Ce.isDuration=function(t){return t instanceof y};for(Oe=Di.length-1;Oe>=0;--Oe)I(Di[Oe]);Ce.normalizeUnits=function(t){return k(t)},Ce.invalid=function(t){var e=Ce.utc(0/0);return null!=t?b(e._pf,t):e._pf.userInvalidated=!0,e},Ce.parseZone=function(){return Ce.apply(null,arguments).parseZone()},Ce.parseTwoDigitYear=function(t){return L(t)+(L(t)>68?1900:2e3)},Ce.isDate=O,b(Ce.fn=v.prototype,{clone:function(){return Ce(this)},valueOf:function(){return+this._d-6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var t=Ce(this).utc();return 00:!1},parsingFlags:function(){return b({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(t){return this.utcOffset(0,t)},local:function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(this._dateUtcOffset(),"m")),this},format:function(t){var e=U(this,t||Ce.defaultFormat);return this.localeData().postformat(e)},add:S(1,"add"),subtract:S(-1,"subtract"),diff:function(t,e,i){var s,o,n=G(t,this),r=6e4*(n.utcOffset()-this.utcOffset());return e=k(e),"year"===e||"month"===e||"quarter"===e?(o=m(this,n),"quarter"===e?o/=3:"year"===e&&(o/=12)):(s=this-n,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-r)/864e5:"week"===e?(s-r)/6048e5:s),i?o:x(o)},from:function(t,e){return Ce.duration({to:this,from:t}).locale(this.locale()).humanize(!e)},fromNow:function(t){return this.from(Ce(),t)},calendar:function(t){var e=t||Ce(),i=G(e,this).startOf("day"),s=this.diff(i,"days",!0),o=-6>s?"sameElse":-1>s?"lastWeek":0>s?"lastDay":1>s?"sameDay":2>s?"nextDay":7>s?"nextWeek":"sameElse";return this.format(this.localeData().calendar(o,this,Ce(e)))},isLeapYear:function(){return F(this.year())},isDST:function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},day:function(t){var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=ce(t,this.localeData()),this.add(t-e,"d")):e},month:xe("Month",!0),startOf:function(t){switch(t=k(t)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===t?this.weekday(0):"isoWeek"===t&&this.isoWeekday(1),"quarter"===t&&this.month(3*Math.floor(this.month()/3)),this},endOf:function(t){return t=k(t),t===n||"millisecond"===t?this:this.startOf(t).add(1,"isoWeek"===t?"week":t).subtract(1,"ms")},isAfter:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+this>+t):(i=Ce.isMoment(t)?+t:+Ce(t),i<+this.clone().startOf(e))},isBefore:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+t>+this):(i=Ce.isMoment(t)?+t:+Ce(t),+this.clone().endOf(e)t?this:t}),max:l("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(t){return t=Ce.apply(null,arguments),t>this?this:t}),zone:l("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}),utcOffset:function(t,e){var i,s=this._offset||0;return null!=t?("string"==typeof t&&(t=Z(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&e&&(i=this._dateUtcOffset()),this._offset=t,this._isUTC=!0,null!=i&&this.add(i,"m"),s!==t&&(!e||this._changeInProgress?C(this,Ce.duration(t-s,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,Ce.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?s:this._dateUtcOffset()},isLocal:function(){return!this._isUTC},isUtcOffset:function(){return this._isUTC},isUtc:function(){return this._isUTC&&0===this._offset},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Z(this._i)),this},hasAlignedHourOffset:function(t){return t=t?Ce(t).utcOffset():0,(this.utcOffset()-t)%60===0},daysInMonth:function(){return z(this.year(),this.month())},dayOfYear:function(t){var e=Ne((Ce(this).startOf("day")-Ce(this).startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},quarter:function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},weekYear:function(t){var e=me(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==t?e:this.add(t-e,"y")},isoWeekYear:function(t){var e=me(this,1,4).year;return null==t?e:this.add(t-e,"y")},week:function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},isoWeek:function(t){var e=me(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},weekday:function(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},isoWeekday:function(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)},isoWeeksInYear:function(){return A(this.year(),1,4)},weeksInYear:function(){var t=this.localeData()._week;return A(this.year(),t.dow,t.doy)},get:function(t){return t=k(t),this[t]()},set:function(t,e){var i;if("object"==typeof t)for(i in t)this.set(i,t[i]);else t=k(t),"function"==typeof this[t]&&this[t](e);return this},locale:function(t){var e;return t===n?this._locale._abbr:(e=Ce.localeData(t),null!=e&&(this._locale=e),this)},lang:l("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return t===n?this.localeData():this.locale(t)}),localeData:function(){return this._locale},_dateUtcOffset:function(){return 15*-Math.round(this._d.getTimezoneOffset()/15)}}),Ce.fn.millisecond=Ce.fn.milliseconds=xe("Milliseconds",!1),Ce.fn.second=Ce.fn.seconds=xe("Seconds",!1),Ce.fn.minute=Ce.fn.minutes=xe("Minutes",!1),Ce.fn.hour=Ce.fn.hours=xe("Hours",!0),Ce.fn.date=xe("Date",!0),Ce.fn.dates=l("dates accessor is deprecated. Use date instead.",xe("Date",!0)),Ce.fn.year=xe("FullYear",!0),Ce.fn.years=l("years accessor is deprecated. Use year instead.",xe("FullYear",!0)),Ce.fn.days=Ce.fn.day,Ce.fn.months=Ce.fn.month,Ce.fn.weeks=Ce.fn.week,Ce.fn.isoWeeks=Ce.fn.isoWeek,Ce.fn.quarters=Ce.fn.quarter,Ce.fn.toJSON=Ce.fn.toISOString,Ce.fn.isUTC=Ce.fn.isUtc,b(Ce.duration.fn=y.prototype,{_bubble:function(){var t,e,i,s=this._milliseconds,o=this._days,n=this._months,r=this._data,a=0;r.milliseconds=s%1e3,t=x(s/1e3),r.seconds=t%60,e=x(t/60),r.minutes=e%60,i=x(e/60),r.hours=i%24,o+=x(i/24),a=x(we(o)),o-=x(Me(a)),n+=x(o/30),o%=30,a+=x(n/12),n%=12,r.days=o,r.months=n,r.years=a},abs:function(){return this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return x(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*L(this._months/12)},humanize:function(t){var e=ue(this,!t,this.localeData());return t&&(e=this.localeData().pastFuture(+this,e)),this.localeData().postformat(e)},add:function(t,e){var i=Ce.duration(t,e);return this._milliseconds+=i._milliseconds,this._days+=i._days,this._months+=i._months,this._bubble(),this},subtract:function(t,e){var i=Ce.duration(t,e);return this._milliseconds-=i._milliseconds,this._days-=i._days,this._months-=i._months,this._bubble(),this},get:function(t){return t=k(t),this[t.toLowerCase()+"s"]()},as:function(t){var e,i;if(t=k(t),"month"===t||"year"===t)return e=this._days+this._milliseconds/864e5,i=this._months+12*we(e),"month"===t?i:i/12;switch(e=this._days+Math.round(Me(this._months/12)),t){case"week":return e/7+this._milliseconds/6048e5;case"day":return e+this._milliseconds/864e5;case"hour":return 24*e+this._milliseconds/36e5;case"minute":return 24*e*60+this._milliseconds/6e4;case"second":return 24*e*60*60+this._milliseconds/1e3;case"millisecond":return Math.floor(24*e*60*60*1e3)+this._milliseconds;default:throw new Error("Unknown unit "+t)}},lang:Ce.fn.lang,locale:Ce.fn.locale,toIsoString:l("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",function(){return this.toISOString()}),toISOString:function(){var t=Math.abs(this.years()),e=Math.abs(this.months()),i=Math.abs(this.days()),s=Math.abs(this.hours()),o=Math.abs(this.minutes()),n=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(s||o||n?"T":"")+(s?s+"H":"")+(o?o+"M":"")+(n?n+"S":""):"P0D"},localeData:function(){return this._locale},toJSON:function(){return this.toISOString()}}),Ce.duration.fn.toString=Ce.duration.fn.toISOString;for(Oe in fi)a(fi,Oe)&&De(Oe.toLowerCase());Ce.duration.fn.asMilliseconds=function(){return this.as("ms")},Ce.duration.fn.asSeconds=function(){return this.as("s")},Ce.duration.fn.asMinutes=function(){return this.as("m")},Ce.duration.fn.asHours=function(){return this.as("h")},Ce.duration.fn.asDays=function(){return this.as("d")},Ce.duration.fn.asWeeks=function(){return this.as("weeks")},Ce.duration.fn.asMonths=function(){return this.as("M")},Ce.duration.fn.asYears=function(){return this.as("y")},Ce.locale("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===L(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),We?o.exports=Ce:(s=function(t,e,i){return i.config&&i.config()&&i.config().noGlobal===!0&&(ke.moment=Te),Ce}.call(e,i,e,o),!(s!==n&&(o.exports=s)),Se(!0))}).call(this)}).call(e,function(){return this}(),i(71)(t))},function(t,e,i){var s;!function(o,n){function r(){a.READY||(w.determineEventTypes(),x.each(a.gestures,function(t){D.register(t)}),w.onTouch(a.DOCUMENT,v,D.detect),w.onTouch(a.DOCUMENT,y,D.detect),a.READY=!0)}var a=function S(t,e){return new S.Instance(t,e||{})};a.VERSION="1.1.3",a.defaults={behavior:{userSelect:"none",touchAction:"pan-y",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},a.DOCUMENT=document,a.HAS_POINTEREVENTS=navigator.pointerEnabled||navigator.msPointerEnabled,a.HAS_TOUCHEVENTS="ontouchstart"in o,a.IS_MOBILE=/mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent),a.NO_MOUSEEVENTS=a.HAS_TOUCHEVENTS&&a.IS_MOBILE||a.HAS_POINTEREVENTS,a.CALCULATE_INTERVAL=25;var h={},d=a.DIRECTION_DOWN="down",l=a.DIRECTION_LEFT="left",c=a.DIRECTION_UP="up",p=a.DIRECTION_RIGHT="right",u=a.POINTER_MOUSE="mouse",m=a.POINTER_TOUCH="touch",f=a.POINTER_PEN="pen",g=a.EVENT_START="start",v=a.EVENT_MOVE="move",y=a.EVENT_END="end",b=a.EVENT_RELEASE="release",_=a.EVENT_TOUCH="touch";a.READY=!1,a.plugins=a.plugins||{},a.gestures=a.gestures||{};var x=a.utils={extend:function(t,e,i){for(var s in e)!e.hasOwnProperty(s)||t[s]!==n&&i||(t[s]=e[s]);return t},on:function(t,e,i){t.addEventListener(e,i,!1)},off:function(t,e,i){t.removeEventListener(e,i,!1)},each:function(t,e,i){var s,o;if("forEach"in t)t.forEach(e,i);else if(t.length!==n){for(s=0,o=t.length;o>s;s++)if(e.call(i,t[s],s,t)===!1)return}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1 -},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,o=t.length;o>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],o=[],n=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(x.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),o.push(t.clientY)}),{pageX:(n.apply(Math,e)+r.apply(Math,e))/2,pageY:(n.apply(Math,i)+r.apply(Math,i))/2,clientX:(n.apply(Math,s)+r.apply(Math,s))/2,clientY:(n.apply(Math,o)+r.apply(Math,o))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY);return i>=s?t.clientX-e.clientX>0?l:p:t.clientY-e.clientY>0?c:d},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var o=["","Webkit","Moz","O","ms"];e=x.toCamelCase(e);for(var n=0;n0&&this.started&&(r=v),this.started=!0;var d=this.collectEventData(i,r,o,t);return e!=y&&s.call(D,d),a&&(d.changedLength=h,d.eventType=a,s.call(D,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(D,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?o.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[g]=t[0],h[v]=t[1],h[y]=t[2],h},getTouchList:function(t,e){if(a.HAS_POINTEREVENTS)return M.getTouchList();if(t.touches){if(e==v)return t.touches;var i=[],s=[].concat(x.toArray(t.touches),x.toArray(t.changedTouches)),o=[];return x.each(s,function(t){x.inArray(i,t.identifier)===!1&&o.push(t),i.push(t.identifier)}),o}return t.identifier=1,[t]},collectEventData:function(t,e,i,s){var o=m;return x.inStr(s.type,"mouse")||M.matchType(u,s)?o=u:M.matchType(f,s)&&(o=f),{center:x.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:o,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return D.stopDetect()}}}},M=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return x.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[u]=i===(e.MSPOINTER_TYPE_MOUSE||u),s[m]=i===(e.MSPOINTER_TYPE_TOUCH||m),s[f]=i===(e.MSPOINTER_TYPE_PEN||f),s[t]},reset:function(){this.pointers={}}},D=a.detection={gestures:[],current:null,previous:null,stopped:!1,startDetect:function(t,e){this.current||(this.stopped=!1,this.current={inst:t,startEvent:x.extend({},e),lastEvent:!1,lastCalcEvent:!1,futureCalcEvent:!1,lastCalcData:{},name:""},this.detect(e))},detect:function(t){if(this.current&&!this.stopped){t=this.extendEventData(t);var e=this.current.inst,i=e.options;return x.each(this.gestures,function(s){!this.stopped&&e.enabled&&i[s.name]&&s.handler.call(s,t,e)},this),this.current&&(this.current.lastEvent=t),t.eventType==y&&this.stopDetect(),t}},stopDetect:function(){this.previous=x.extend({},this.current),this.current=null,this.stopped=!0},getCalculatedData:function(t,e,i,s,o){var n=this.current,r=!1,h=n.lastCalcEvent,d=n.lastCalcData;h&&t.timeStamp-h.timeStamp>a.CALCULATE_INTERVAL&&(e=h.center,i=t.timeStamp-h.timeStamp,s=t.center.clientX-h.center.clientX,o=t.center.clientY-h.center.clientY,r=!0),(t.eventType==_||t.eventType==b)&&(n.futureCalcEvent=t),(!n.lastCalcEvent||r)&&(d.velocity=x.getVelocity(i,s,o),d.angle=x.getAngle(e,t.center),d.direction=x.getDirection(e,t.center),n.lastCalcEvent=n.futureCalcEvent||t,n.futureCalcEvent=t),t.velocityX=d.velocity.x,t.velocityY=d.velocity.y,t.interimAngle=d.angle,t.interimDirection=d.direction},extendEventData:function(t){var e=this.current,i=e.startEvent,s=e.lastEvent||i;(t.eventType==_||t.eventType==b)&&(i.touches=[],x.each(t.touches,function(t){i.touches.push({clientX:t.clientX,clientY:t.clientY})}));var o=t.timeStamp-i.timeStamp,n=t.center.clientX-i.center.clientX,r=t.center.clientY-i.center.clientY;return this.getCalculatedData(t,s.center,o,n,r),x.extend(t,{startEvent:i,deltaTime:o,deltaX:n,deltaY:r,distance:x.getDistance(i.center,t.center),angle:x.getAngle(i.center,t.center),direction:x.getDirection(i.center,t.center),scale:x.getScale(i.touches,t.touches),rotation:x.getRotation(i.touches,t.touches)}),t},register:function(t){var e=t.defaults||{};return e[t.name]===n&&(e[t.name]=!0),x.extend(a.defaults,e,!0),t.index=t.index||1e3,this.gestures.push(t),this.gestures.sort(function(t,e){return t.indexe.index?1:0}),this.gestures}};a.Instance=function(t,e){var i=this;r(),this.element=t,this.enabled=!0,x.each(e,function(t,i){delete e[i],e[x.toCamelCase(i)]=t}),this.options=x.extend(x.extend({},a.defaults),e||{}),this.options.behavior&&x.toggleBehavior(this.element,this.options.behavior,!0),this.eventStartHandler=w.onTouch(t,g,function(t){i.enabled&&t.eventType==g?D.startDetect(i,t):t.eventType==_&&D.detect(t)}),this.eventHandlers=[]},a.Instance.prototype={on:function(t,e){var i=this;return w.on(i.element,t,e,function(t){i.eventHandlers.push({gesture:t,handler:e})}),i},off:function(t,e){var i=this;return w.off(i.element,t,e,function(t){var s=x.inArray({gesture:t,handler:e});s!==!1&&i.eventHandlers.splice(s,1)}),i},trigger:function(t,e){e||(e={});var i=a.DOCUMENT.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e;var s=this.element;return x.hasParent(e.target,s)&&(s=e.target),s.dispatchEvent(i),this},enable:function(t){return this.enabled=t,this},dispose:function(){var t,e;for(x.toggleBehavior(this.element,this.options.behavior,!1),t=-1;e=this.eventHandlers[++t];)x.off(this.element,e.gesture,e.handler);return this.eventHandlers=[],w.off(this.element,h[g],this.eventStartHandler),null}},function(t){function e(e,s){var o=D.current;if(!(s.options.dragMaxTouches>0&&e.touches.length>s.options.dragMaxTouches))switch(e.eventType){case g:i=!1;break;case v:if(e.distance0)){var r=Math.abs(s.options.dragMinDistance/e.distance);n.pageX+=e.deltaX*r,n.pageY+=e.deltaY*r,n.clientX+=e.deltaX*r,n.clientY+=e.deltaY*r,e=D.extendEventData(e)}(o.lastEvent.dragLockToAxis||s.options.dragLockToAxis&&s.options.dragLockMinDistance<=e.distance)&&(e.dragLockToAxis=!0);var a=o.lastEvent.direction;e.dragLockToAxis&&a!==e.direction&&(e.direction=x.isVertical(a)?e.deltaY<0?c:d:e.deltaX<0?l:p),i||(s.trigger(t+"start",e),i=!0),s.trigger(t,e),s.trigger(t+e.direction,e);var h=x.isVertical(e.direction);(s.options.dragBlockVertical&&h||s.options.dragBlockHorizontal&&!h)&&e.preventDefault();break;case b:i&&e.changedLength<=s.options.dragMaxTouches&&(s.trigger(t+"end",e),i=!1);break;case y:i=!1}}var i=!1;a.gestures.Drag={name:t,index:50,handler:e,defaults:{dragMinDistance:10,dragDistanceCorrection:!0,dragMaxTouches:1,dragBlockHorizontal:!1,dragBlockVertical:!1,dragLockToAxis:!1,dragLockMinDistance:25}}}("drag"),a.gestures.Gesture={name:"gesture",index:1337,handler:function(t,e){e.trigger(this.name,t)}},function(t){function e(e,s){var o=s.options,n=D.current;switch(e.eventType){case g:clearTimeout(i),n.name=t,i=setTimeout(function(){n&&n.name==t&&s.trigger(t,e)},o.holdTimeout);break;case v:e.distance>o.holdThreshold&&clearTimeout(i);break;case b:clearTimeout(i)}}var i;a.gestures.Hold={name:t,index:10,defaults:{holdTimeout:500,holdThreshold:2},handler:e}}("hold"),a.gestures.Release={name:"release",index:1/0,handler:function(t,e){t.eventType==b&&e.trigger(this.name,t)}},a.gestures.Swipe={name:"swipe",index:40,defaults:{swipeMinTouches:1,swipeMaxTouches:1,swipeVelocityX:.6,swipeVelocityY:.6},handler:function(t,e){if(t.eventType==b){var i=t.touches.length,s=e.options;if(is.swipeMaxTouches)return;(t.velocityX>s.swipeVelocityX||t.velocityY>s.swipeVelocityY)&&(e.trigger(this.name,t),e.trigger(this.name+t.direction,t))}}},function(t){function e(e,s){var o,n,r=s.options,a=D.current,h=D.previous;switch(e.eventType){case g:i=!1;break;case v:i=i||e.distance>r.tapMaxDistance;break;case y:!x.inStr(e.srcEvent.type,"cancel")&&e.deltaTimes.options.transformMinRotation&&s.trigger("rotate",e),o>s.options.transformMinScale&&(s.trigger("pinch",e),s.trigger("pinch"+(e.scale<1?"in":"out"),e));break;case b:i&&e.changedLength<2&&(s.trigger(t+"end",e),i=!1)}}var i=!1;a.gestures.Transform={name:t,index:45,defaults:{transformMinScale:.01,transformMinRotation:1},handler:e}}("transform"),s=function(){return a}.call(e,i,e,t),!(s!==n&&(t.exports=s))}(window)},function(t,e,i){function s(){this.constants.smoothCurves.enabled=!this.constants.smoothCurves.enabled;var t=document.getElementById("graph_toggleSmooth");t.style.background=1==this.constants.smoothCurves.enabled?"#A4FF56":"#FF8532",this._configureSmoothCurves(!1)}function o(){for(var t in this.calculationNodes)this.calculationNodes.hasOwnProperty(t)&&(this.calculationNodes[t].vx=0,this.calculationNodes[t].vy=0,this.calculationNodes[t].fx=0,this.calculationNodes[t].fy=0);1==this.constants.hierarchicalLayout.enabled?(this._setupHierarchicalLayout(),a.call(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),a.call(this,"graph_H_cg",1,"physics_centralGravity"),a.call(this,"graph_H_sc",1,"physics_springConstant"),a.call(this,"graph_H_sl",1,"physics_springLength"),a.call(this,"graph_H_damp",1,"physics_damping")):this.repositionNodes(),this.moving=!0,this.start()}function n(){var t="No options are required, default values used.",e=[],i=document.getElementById("graph_physicsMethod1"),s=document.getElementById("graph_physicsMethod2");if(1==i.checked){if(this.constants.physics.barnesHut.gravitationalConstant!=this.backupConstants.physics.barnesHut.gravitationalConstant&&e.push("gravitationalConstant: "+this.constants.physics.barnesHut.gravitationalConstant),this.constants.physics.centralGravity!=this.backupConstants.physics.barnesHut.centralGravity&&e.push("centralGravity: "+this.constants.physics.centralGravity),this.constants.physics.springLength!=this.backupConstants.physics.barnesHut.springLength&&e.push("springLength: "+this.constants.physics.springLength),this.constants.physics.springConstant!=this.backupConstants.physics.barnesHut.springConstant&&e.push("springConstant: "+this.constants.physics.springConstant),this.constants.physics.damping!=this.backupConstants.physics.barnesHut.damping&&e.push("damping: "+this.constants.physics.damping),0!=e.length){t="var options = {",t+="physics: {barnesHut: {";for(var o=0;othis.constants.clustering.clusterThreshold&&1==this.constants.clustering.enabled&&this.clusterToFit(this.constants.clustering.reduceToNodes,!1),this._calculateForces())},e._calculateForces=function(){this._calculateGravitationalForces(),this._calculateNodeForces(),this.constants.physics.springConstant>0&&(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic?this._calculateSpringForcesWithSupport():1==this.constants.physics.hierarchicalRepulsion.enabled?this._calculateHierarchicalSpringForces():this._calculateSpringForces())},e._updateCalculationNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this.calculationNodes={},this.calculationNodeIndices=[];for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.calculationNodes[t]=this.nodes[t]);var e=this.sectors.support.nodes;for(var i in e)e.hasOwnProperty(i)&&(this.edges.hasOwnProperty(e[i].parentEdgeId)?this.calculationNodes[i]=e[i]:e[i]._setForce(0,0));for(var s in this.calculationNodes)this.calculationNodes.hasOwnProperty(s)&&this.calculationNodeIndices.push(s)}else this.calculationNodes=this.nodes,this.calculationNodeIndices=this.nodeIndices},e._calculateGravitationalForces=function(){var t,e,i,s,o,n=this.calculationNodes,r=this.constants.physics.centralGravity,a=0;for(o=0;oSimulation Mode:Barnes HutRepulsionHierarchical
Options:
',this.containerElement.parentElement.insertBefore(this.physicsConfiguration,this.containerElement),this.optionsDiv=document.createElement("div"),this.optionsDiv.style.fontSize="14px",this.optionsDiv.style.fontFamily="verdana",this.containerElement.parentElement.insertBefore(this.optionsDiv,this.containerElement);var d;d=document.getElementById("graph_BH_gc"),d.onchange=a.bind(this,"graph_BH_gc",-1,"physics_barnesHut_gravitationalConstant"),d=document.getElementById("graph_BH_cg"),d.onchange=a.bind(this,"graph_BH_cg",1,"physics_centralGravity"),d=document.getElementById("graph_BH_sc"),d.onchange=a.bind(this,"graph_BH_sc",1,"physics_springConstant"),d=document.getElementById("graph_BH_sl"),d.onchange=a.bind(this,"graph_BH_sl",1,"physics_springLength"),d=document.getElementById("graph_BH_damp"),d.onchange=a.bind(this,"graph_BH_damp",1,"physics_damping"),d=document.getElementById("graph_R_nd"),d.onchange=a.bind(this,"graph_R_nd",1,"physics_repulsion_nodeDistance"),d=document.getElementById("graph_R_cg"),d.onchange=a.bind(this,"graph_R_cg",1,"physics_centralGravity"),d=document.getElementById("graph_R_sc"),d.onchange=a.bind(this,"graph_R_sc",1,"physics_springConstant"),d=document.getElementById("graph_R_sl"),d.onchange=a.bind(this,"graph_R_sl",1,"physics_springLength"),d=document.getElementById("graph_R_damp"),d.onchange=a.bind(this,"graph_R_damp",1,"physics_damping"),d=document.getElementById("graph_H_nd"),d.onchange=a.bind(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),d=document.getElementById("graph_H_cg"),d.onchange=a.bind(this,"graph_H_cg",1,"physics_centralGravity"),d=document.getElementById("graph_H_sc"),d.onchange=a.bind(this,"graph_H_sc",1,"physics_springConstant"),d=document.getElementById("graph_H_sl"),d.onchange=a.bind(this,"graph_H_sl",1,"physics_springLength"),d=document.getElementById("graph_H_damp"),d.onchange=a.bind(this,"graph_H_damp",1,"physics_damping"),d=document.getElementById("graph_H_direction"),d.onchange=a.bind(this,"graph_H_direction",i,"hierarchicalLayout_direction"),d=document.getElementById("graph_H_levsep"),d.onchange=a.bind(this,"graph_H_levsep",1,"hierarchicalLayout_levelSeparation"),d=document.getElementById("graph_H_nspac"),d.onchange=a.bind(this,"graph_H_nspac",1,"hierarchicalLayout_nodeSpacing"); -var l=document.getElementById("graph_physicsMethod1"),c=document.getElementById("graph_physicsMethod2"),p=document.getElementById("graph_physicsMethod3");c.checked=!0,this.constants.physics.barnesHut.enabled&&(l.checked=!0),this.constants.hierarchicalLayout.enabled&&(p.checked=!0);var u=document.getElementById("graph_toggleSmooth"),m=document.getElementById("graph_repositionNodes"),f=document.getElementById("graph_generateOptions");u.onclick=s.bind(this),m.onclick=o.bind(this),f.onclick=n.bind(this),u.style.background=1==this.constants.smoothCurves&&0==this.constants.dynamicSmoothCurves?"#A4FF56":"#FF8532",r.apply(this),l.onchange=r.bind(this),c.onchange=r.bind(this),p.onchange=r.bind(this)}},e._overWriteGraphConstants=function(t,e){var i=t.split("_");1==i.length?this.constants[i[0]]=e:2==i.length?this.constants[i[0]][i[1]]=e:3==i.length&&(this.constants[i[0]][i[1]][i[2]]=e)}},function(t,e){e.startWithClustering=function(){this.clusterToFit(this.constants.clustering.initialMaxNodes,!0),this.updateLabels(),1==this.constants.stabilize&&this._stabilize(),this.start()},e.clusterToFit=function(t,e){for(var i=this.nodeIndices.length,s=50,o=0;i>t&&s>o;)o%3==0?(this.forceAggregateHubs(!0),this.normalizeClusterLevels()):this.increaseClusterLevel(),this.forceAggregateHubs(!0),i=this.nodeIndices.length,o+=1;o>0&&1==e&&this.repositionNodes(),this._updateCalculationNodes()},e.openCluster=function(t){var e=this.moving;if(t.clusterSize>this.constants.clustering.sectorThreshold&&this._nodeInActiveArea(t)&&("default"!=this._sector()||1!=this.nodeIndices.length)){this._addSector(t);for(var i=0;this.nodeIndices.lengthi;)this.decreaseClusterLevel(),i+=1}else this._expandClusterNode(t,!1,!0),this._updateNodeIndexList(),this._updateCalculationNodes(),this.updateLabels();this.moving!=e&&this.start()},e.updateClustersDefault=function(){1==this.constants.clustering.enabled&&1==this.constants.clustering.clusterByZoom&&this.updateClusters(0,!1,!1)},e.increaseClusterLevel=function(){this.updateClusters(-1,!1,!0)},e.decreaseClusterLevel=function(){this.updateClusters(1,!1,!0)},e.updateClusters=function(t,e,i,s){var o=this.moving,n=this.nodeIndices.length,r=this.previousScalethis.scale&&0==t;1==a&&this._collapseSector(),1==a||-1==t?this._formClusters(i):(1==r||1==t)&&(1==i?this._openClusters(e,i):this._openClusters(e,!1)),this._updateNodeIndexList(),this.nodeIndices.length!=n||1!=a&&-1!=t||(this._aggregateHubs(i),this._updateNodeIndexList()),(1==a||-1==t)&&(this.handleChains(),this._updateNodeIndexList()),this.previousScale=this.scale,this.updateLabels(),this.nodeIndices.lengththis.constants.clustering.chainThreshold&&this._reduceAmountOfChains(1-this.constants.clustering.chainThreshold/t)},e._aggregateHubs=function(t){this._getHubSize(),this._formClustersByHub(t,!1)},e.forceAggregateHubs=function(t){var e=this.moving,i=this.nodeIndices.length;this._aggregateHubs(!0),this._updateNodeIndexList(),this.updateLabels(),this._updateCalculationNodes(),this.nodeIndices.length!=i&&(this.clusterSession+=1),(0==t||void 0===t)&&this.moving!=e&&this.start()},e._openClustersBySize=function(){if(1==this.constants.clustering.clusterByZoom)for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];1==e.inView()&&(e.width*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientWidth||e.height*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientHeight)&&this.openCluster(e)}},e._openClusters=function(t,e){for(var i=0;i1&&(void 0===s&&(s=!1),e=s||e,t.formationScalei)){var r=n.from,a=n.to;n.to.options.mass>n.from.options.mass&&(r=n.to,a=n.from),1==a.dynamicEdges.length?this._addToCluster(r,a,!1):1==r.dynamicEdges.length&&this._addToCluster(a,r,!1)}}},e._forceClustersByZoom=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];if(1==e.dynamicEdges.length){var i=e.dynamicEdges[0],s=i.toId==e.id?this.nodes[i.fromId]:this.nodes[i.toId];e.id!=s.id&&(s.options.mass>e.options.mass?this._addToCluster(s,e,!0):this._addToCluster(e,s,!0))}}},e._clusterToSmallestNeighbour=function(t){for(var e=-1,i=null,s=0;so.clusterSessions.length&&(e=o.clusterSessions.length,i=o)}null!=o&&void 0!==this.nodes[o.id]&&this._addToCluster(o,t,!0)},e._formClustersByHub=function(t,e){for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&this._formClusterFromHub(this.nodes[i],t,e)},e._formClusterFromHub=function(t,e,i,s){if(void 0===s&&(s=0),t.dynamicEdges.length>=this.hubThreshold&&0==i||t.dynamicEdges.length==this.hubThreshold&&1==i){for(var o,n,r,a=this.constants.clustering.clusterEdgeThreshold/this.scale,h=!1,d=[],l=t.dynamicEdges.length,c=0;l>c;c++)d.push(t.dynamicEdges[c].id);if(0==e)for(h=!1,c=0;l>c;c++){var p=this.edges[d[c]];if(void 0!==p&&p.connected&&p.toId!=p.fromId&&(o=p.to.x-p.from.x,n=p.to.y-p.from.y,r=Math.sqrt(o*o+n*n),a>r)){h=!0;break}}if(!e&&h||e){var u=[],m={};for(c=0;l>c;c++){p=this.edges[d[c]];var f=this.nodes[p.fromId==t.id?p.toId:p.fromId];void 0===m[f.id]&&(m[f.id]=!0,u.push(f))}for(c=0;c1&&(e.label="[".concat(String(e.clusterSize),"]"))}for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(e=this.nodes[t],1==e.clusterSize&&(e.label=void 0!==e.originalLabel?e.originalLabel:String(e.id)))},e.normalizeClusterLevels=function(){var t,e=0,i=1e9,s=0;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(s=this.nodes[t].clusterSessions.length,s>e&&(e=s),i>s&&(i=s));if(e-i>this.constants.clustering.clusterLevelDifference){var o=this.nodeIndices.length,n=e-this.constants.clustering.clusterLevelDifference;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodes[t].clusterSessions.lengths&&(s=n.dynamicEdges.length),t+=n.dynamicEdges.length,e+=Math.pow(n.dynamicEdges.length,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r);this.hubThreshold=Math.floor(t+2*a),this.hubThreshold>s&&(this.hubThreshold=s)},e._reduceAmountOfChains=function(t){this.hubThreshold=2;var e=Math.floor(this.nodeIndices.length*t);for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&2==this.nodes[i].dynamicEdges.length&&e>0&&(this._formClusterFromHub(this.nodes[i],!0,!0,1),e-=1)},e._getChainFraction=function(){var t=0,e=0;for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&(2==this.nodes[i].dynamicEdges.length&&(t+=1),e+=1);return t/e}},function(t,e,i){var s=i(1),o=i(40);e._putDataInSector=function(){this.sectors.active[this._sector()].nodes=this.nodes,this.sectors.active[this._sector()].edges=this.edges,this.sectors.active[this._sector()].nodeIndices=this.nodeIndices},e._switchToSector=function(t,e){void 0===e||"active"==e?this._switchToActiveSector(t):this._switchToFrozenSector(t)},e._switchToActiveSector=function(t){this.nodeIndices=this.sectors.active[t].nodeIndices,this.nodes=this.sectors.active[t].nodes,this.edges=this.sectors.active[t].edges},e._switchToSupportSector=function(){this.nodeIndices=this.sectors.support.nodeIndices,this.nodes=this.sectors.support.nodes,this.edges=this.sectors.support.edges},e._switchToFrozenSector=function(t){this.nodeIndices=this.sectors.frozen[t].nodeIndices,this.nodes=this.sectors.frozen[t].nodes,this.edges=this.sectors.frozen[t].edges},e._loadLatestSector=function(){this._switchToSector(this._sector())},e._sector=function(){return this.activeSector[this.activeSector.length-1]},e._previousSector=function(){if(this.activeSector.length>1)return this.activeSector[this.activeSector.length-2];throw new TypeError("there are not enough sectors in the this.activeSector array.")},e._setActiveSector=function(t){this.activeSector.push(t)},e._forgetLastSector=function(){this.activeSector.pop()},e._createNewSector=function(t){this.sectors.active[t]={nodes:{},edges:{},nodeIndices:[],formationScale:this.scale,drawingNode:void 0},this.sectors.active[t].drawingNode=new o({id:t,color:{background:"#eaefef",border:"495c5e"}},{},{},this.constants),this.sectors.active[t].drawingNode.clusterSize=2},e._deleteActiveSector=function(t){delete this.sectors.active[t]},e._deleteFrozenSector=function(t){delete this.sectors.frozen[t]},e._freezeSector=function(t){this.sectors.frozen[t]=this.sectors.active[t],this._deleteActiveSector(t)},e._activateSector=function(t){this.sectors.active[t]=this.sectors.frozen[t],this._deleteFrozenSector(t)},e._mergeThisWithFrozen=function(t){for(var e in this.nodes)this.nodes.hasOwnProperty(e)&&(this.sectors.frozen[t].nodes[e]=this.nodes[e]);for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.sectors.frozen[t].edges[i]=this.edges[i]);for(var s=0;s1?this[t](o[0],o[1]):this[t](e))}return this._loadLatestSector(),i},e._doInSupportSector=function(t,e){var i=!1;if(void 0===e)this._switchToSupportSector(),i=this[t]();else{this._switchToSupportSector();var s=Array.prototype.splice.call(arguments,1);i=s.length>1?this[t](s[0],s[1]):this[t](e)}return this._loadLatestSector(),i},e._doInAllFrozenSectors=function(t,e){if(void 0===e)for(var i in this.sectors.frozen)this.sectors.frozen.hasOwnProperty(i)&&(this._switchToFrozenSector(i),this[t]());else for(var i in this.sectors.frozen)if(this.sectors.frozen.hasOwnProperty(i)){this._switchToFrozenSector(i);var s=Array.prototype.splice.call(arguments,1);s.length>1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInAllSectors=function(t,e){var i=Array.prototype.splice.call(arguments,1);void 0===e?(this._doInAllActiveSectors(t),this._doInAllFrozenSectors(t)):i.length>1?(this._doInAllActiveSectors(t,i[0],i[1]),this._doInAllFrozenSectors(t,i[0],i[1])):(this._doInAllActiveSectors(t,e),this._doInAllFrozenSectors(t,e))},e._clearNodeIndexList=function(){var t=this._sector();this.sectors.active[t].nodeIndices=[],this.nodeIndices=this.sectors.active[t].nodeIndices},e._drawSectorNodes=function(t,e){var i,s=1e9,o=-1e9,n=1e9,r=-1e9;for(var a in this.sectors[e])if(this.sectors[e].hasOwnProperty(a)&&void 0!==this.sectors[e][a].drawingNode){this._switchToSector(a,e),s=1e9,o=-1e9,n=1e9,r=-1e9;for(var h in this.nodes)this.nodes.hasOwnProperty(h)&&(i=this.nodes[h],i.resize(t),n>i.x-.5*i.width&&(n=i.x-.5*i.width),ri.y-.5*i.height&&(s=i.y-.5*i.height),o0?this.nodes[i[i.length-1]]:null},e._getEdgesOverlappingWith=function(t,e){var i=this.edges;for(var s in i)i.hasOwnProperty(s)&&i[s].isOverlappingWith(t)&&e.push(s)},e._getAllEdgesOverlappingWith=function(t){var e=[];return this._doInAllActiveSectors("_getEdgesOverlappingWith",t,e),e},e._getEdgeAt=function(t){var e=this._pointerToPositionObject(t),i=this._getAllEdgesOverlappingWith(e);return i.length>0?this.edges[i[i.length-1]]:null},e._addToSelection=function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t},e._addToHover=function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t},e._removeFromSelection=function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id]},e._unselectAll=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].unselect();for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&this.selectionObj.edges[i].unselect();this.selectionObj={nodes:{},edges:{}},0==t&&this.emit("select",this.getSelection())},e._unselectClusters=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].clusterSize>1&&(this.selectionObj.nodes[e].unselect(),this._removeFromSelection(this.selectionObj.nodes[e]));0==t&&this.emit("select",this.getSelection())},e._getSelectedNodeCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedNode=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return null},e._getSelectedEdge=function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return null},e._getSelectedEdgeCount=function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedObjectCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t},e._selectionIsEmpty=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0},e._clusterInSelection=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1},e._selectConnectedEdges=function(t){for(var e=0;ei;i++){o=t[i];var n=this.nodes[o];if(!n)throw new RangeError('Node with id "'+o+'" not found');this._selectObject(n,!0,!0,e,!0)}this.redraw()},e.selectEdges=function(t){var e,i,s;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),e=0,i=t.length;i>e;e++){s=t[e];var o=this.edges[s];if(!o)throw new RangeError('Edge with id "'+s+'" not found');this._selectObject(o,!0,!0,!1,!0)}this.redraw()},e._updateSelection=function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}},function(t,e,i){var s=i(1),o=i(40),n=i(37),r=i(45);e._clearManipulatorBar=function(){this._recursiveDOMDelete(this.manipulationDiv),this.manipulationDOM={},this._cleanManipulatorHammers(),this._manipulationReleaseOverload=function(){},delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode,this.controlNodesActive=!1,this.freezeSimulation(!1)},e._cleanManipulatorHammers=function(){if(0!=this.manipulationHammers.length){for(var t=0;t1)alert(this.constants.locales[this.constants.locale].createEdgeError);else{this._selectObject(e,!1);var i=this.sectors.support.nodes;i.targetNode=new o({id:"targetNode"},{},{},this.constants);var s=i.targetNode;s.x=e.x,s.y=e.y,this.edges.connectionEdge=new n({id:"connectionEdge",from:e.id,to:s.id},this,this.constants);var r=this.edges.connectionEdge;r.from=e,r.connected=!0,r.options.smoothCurves={enabled:!0,dynamic:!1,type:"continuous",roundness:.5},r.selected=!0,r.to=s,this.cachedFunctions._handleOnDrag=this._handleOnDrag;var a=this;this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center),i=a.edges.connectionEdge;i.to.x=a._XconvertDOMtoCanvas(e.x),i.to.y=a._YconvertDOMtoCanvas(e.y),a._redraw()},this.moving=!0,this.start()}}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){var e=this._getPointer(t.gesture.center);this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var i=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var s=this._getNodeAt(e);null!=s&&(s.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._createEdge(i,s.id),this._createManipulatorBar())),this._unselectAll()}},e._addNode=function(){if(this._selectionIsEmpty()&&1==this.editMode){var t=this._pointerToPositionObject(this.pointerPosition),e={id:s.randomUUID(),x:t.left,y:t.top,label:"new",allowedToMoveX:!0,allowedToMoveY:!0};if(this.triggerFunctions.add){if(2!=this.triggerFunctions.add.length)throw new Error("The function for add does not support two arguments (data,callback)");var i=this;this.triggerFunctions.add(e,function(t){i.nodesData.add(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else this.nodesData.add(e),this._createManipulatorBar(),this.moving=!0,this.start()}},e._createEdge=function(t,e){if(1==this.editMode){var i={from:t,to:e};if(this.triggerFunctions.connect){if(2!=this.triggerFunctions.connect.length)throw new Error("The function for connect does not support two arguments (data,callback)");var s=this;this.triggerFunctions.connect(i,function(t){s.edgesData.add(t),s.moving=!0,s.start()})}else this.edgesData.add(i),this.moving=!0,this.start()}},e._editEdge=function(t,e){if(1==this.editMode){var i={id:this.edgeBeingEdited.id,from:t,to:e};if(this.triggerFunctions.editEdge){if(2!=this.triggerFunctions.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");var s=this;this.triggerFunctions.editEdge(i,function(t){s.edgesData.update(t),s.moving=!0,s.start()})}else this.edgesData.update(i),this.moving=!0,this.start()}},e._editNode=function(){if(!this.triggerFunctions.edit||1!=this.editMode)throw new Error("No edit function has been bound to this button");var t=this._getSelectedNode(),e={id:t.id,label:t.label,group:t.options.group,shape:t.options.shape,color:{background:t.options.color.background,border:t.options.color.border,highlight:{background:t.options.color.highlight.background,border:t.options.color.highlight.border}}};if(2!=this.triggerFunctions.edit.length)throw new Error("The function for edit does not support two arguments (data, callback)");var i=this;this.triggerFunctions.edit(e,function(t){i.nodesData.update(t),i._createManipulatorBar(),i.moving=!0,i.start()})},e._deleteSelected=function(){if(!this._selectionIsEmpty()&&1==this.editMode)if(this._clusterInSelection())alert(this.constants.locales[this.constants.locale].deleteClusterError);else{var t=this.getSelectedNodes(),e=this.getSelectedEdges();if(this.triggerFunctions.del){var i=this,s={nodes:t,edges:e};if(2!=this.triggerFunctions.del.length)throw new Error("The function for delete does not support two arguments (data, callback)");this.triggerFunctions.del(s,function(t){i.edgesData.remove(t.edges),i.nodesData.remove(t.nodes),i._unselectAll(),i.moving=!0,i.start()})}else this.edgesData.remove(e),this.nodesData.remove(t),this._unselectAll(),this.moving=!0,this.start()}}},function(t,e,i){var s=(i(1),i(45));e._cleanNavigation=function(){if(0!=this.navigationHammers.length){for(var t=0;t0){var t,e,i=0,s=!1,o=!1;for(e in this.nodes)this.nodes.hasOwnProperty(e)&&(t=this.nodes[e],-1!=t.level?s=!0:o=!0,is&&(n.xFixed=!1,n.x=i[n.level].minPos,r=!0):n.yFixed&&n.level>s&&(n.yFixed=!1,n.y=i[n.level].minPos,r=!0),1==r&&(i[n.level].minPos+=i[n.level].nodeSpacing,n.edges.length>1&&this._placeBranchNodes(n.edges,n.id,i,n.level))}},e._setLevel=function(t,e,i){for(var s=0;st)&&(o.level=t,o.edges.length>1&&this._setLevel(t+1,o.edges,o.id))}},e._setLevelDirected=function(t,e,i){this.nodes[i].hierarchyEnumerated=!0;for(var s,o,n=0;n1&&s.hierarchyEnumerated===!1&&this._setLevelDirected(s.level,s.edges,s.id)},e._restoreNodes=function(){for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.nodes[t].xFixed=!1,this.nodes[t].yFixed=!1)}},function(t){function e(t){throw new Error("Cannot find module '"+t+"'.")}e.keys=function(){return[]},e.resolve=e,t.exports=e,e.id=67},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l,c=this.calculationNodes,p=this.calculationNodeIndices,u=-2/3,m=4/3,f=this.constants.physics.repulsion.nodeDistance,g=f;for(d=0;di&&(r=.5*g>i?1:v*i+m,r*=0==n?1:1+n*this.constants.clustering.forceAmplification,r/=Math.max(i,.01*g),s=t*r,o=e*r,a.fx-=s,a.fy-=o,h.fx+=s,h.fy+=o)}}},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l=this.calculationNodes,c=this.calculationNodeIndices,p=this.constants.physics.hierarchicalRepulsion.nodeDistance;for(h=0;hi?-Math.pow(u*i,2)+Math.pow(u*p,2):0,0==i?i=.01:n/=i,s=t*n,o=e*n,r.fx-=s,r.fy-=o,a.fx+=s,a.fy+=o}},e._calculateHierarchicalSpringForces=function(){for(var t,e,i,s,o,n,r,a,h,d=this.edges,l=this.calculationNodes,c=this.calculationNodeIndices,p=0;pn;n++)t=e[i[n]],t.options.mass>0&&(this._getForceContribution(o.root.children.NW,t),this._getForceContribution(o.root.children.NE,t),this._getForceContribution(o.root.children.SW,t),this._getForceContribution(o.root.children.SE,t))}},e._getForceContribution=function(t,e){if(t.childrenCount>0){var i,s,o;if(i=t.centerOfMass.x-e.x,s=t.centerOfMass.y-e.y,o=Math.sqrt(i*i+s*s),o*t.calcSize>this.constants.physics.barnesHut.thetaInverted){0==o&&(o=.1*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}else if(4==t.childrenCount)this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e);else if(t.children.data.id!=e.id){0==o&&(o=.5*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}}},e._formBarnesHutTree=function(t,e){for(var i,s=e.length,o=Number.MAX_VALUE,n=Number.MAX_VALUE,r=-Number.MAX_VALUE,a=-Number.MAX_VALUE,h=0;s>h;h++){var d=t[e[h]].x,l=t[e[h]].y;t[e[h]].options.mass>0&&(o>d&&(o=d),d>r&&(r=d),n>l&&(n=l),l>a&&(a=l))}var c=Math.abs(r-o)-Math.abs(a-n);c>0?(n-=.5*c,a+=.5*c):(o+=.5*c,r-=.5*c);var p=1e-5,u=Math.max(p,Math.abs(r-o)),m=.5*u,f=.5*(o+r),g=.5*(n+a),v={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:f-m,maxX:f+m,minY:g-m,maxY:g+m},size:u,calcSize:1/u,children:{data:null},maxWidth:0,level:0,childrenCount:4}};for(this._splitBranch(v.root),h=0;s>h;h++)i=t[e[h]],i.options.mass>0&&this._placeInTree(v.root,i);this.barnesHutTree=v},e._updateBranchMass=function(t,e){var i=t.mass+e.options.mass,s=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=s,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=s,t.mass=i;var o=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")},e._placeInRegion=function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x==e.x&&t.children[i].children.data.y==e.y?(e.x+=Math.random(),e.y+=Math.random()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}},e._splitBranch=function(t){var e=null;1==t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)},e._insertRegion=function(t,e){var i,s,o,n,r=.5*t.size;switch(e){case"NW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY,n=t.range.minY+r;break;case"NE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY,n=t.range.minY+r;break;case"SW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY+r,n=t.range.maxY;break;case"SE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY+r,n=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:s,minY:o,maxY:n},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}},e._drawTree=function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))},e._drawBranch=function(t,e,i){void 0===i&&(i="#FF0000"),4==t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}},function(t){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}}])}); +}return t},s.prototype._redrawLabels=function(){var t=!1;n.prepareElements(this.DOMelements.lines),n.prepareElements(this.DOMelements.labels);var e=this.options.orientation,i=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,s=new a(this.range.start,this.range.end,i,this.dom.frame.offsetHeight,this.options.customRange[this.options.orientation],0==this.master&&this.options.alignZeros);this.step=s;var o=(this.dom.frame.offsetHeight-s.deadSpace*(this.dom.frame.offsetHeight/s.marginRange))/((s.marginRange-s.deadSpace)/s.step);this.stepPixels=o;var r=this.height/o,h=0;if(0==this.master){o=this.stepPixelsForced,h=Math.round(this.dom.frame.offsetHeight/o-r);for(var d=0;.5*h>d;d++)s.previous();if(r=this.height/o,-1!=this.zeroCrossing&&1==this.options.alignZeros){var l=s.marginEnd/s.step-this.zeroCrossing;if(l>0)for(var d=0;l>d;d++)s.next();else if(0>l)for(var d=0;-l>d;d++)s.previous()}}else r+=.25;this.valueAtZero=s.marginEnd;var c,p=0,u=1;void 0!==this.options.format[e]&&(c=this.options.format[e].decimals),this.maxLabelSize=0;for(var m=0;u=0&&this._redrawLabel(m-2,s.getCurrent(c),e,"yAxis major",this.props.majorCharHeight),this._redrawLine(m,e,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(m,e,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),1==this.master&&0==s.current&&(this.zeroCrossing=u),u++}this.conversionFactor=0==this.master?m/(this.valueAtZero-s.current):this.dom.frame.offsetHeight/s.marginRange;var g=0;void 0!==this.options.title[e]&&void 0!==this.options.title[e].text&&(g=this.props.titleCharHeight);var v=1==this.options.icons?Math.max(this.options.iconWidth,g)+this.options.labelOffsetX+15:g+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-v&&1==this.options.visible?(this.width=this.maxLabelSize+v,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+v),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):(n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),t=!1),t},s.prototype.convertValue=function(t){var e=this.valueAtZero-t,i=e*this.conversionFactor;return i},s.prototype._redrawLabel=function(t,e,i,s,o){var r=n.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=s,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*o+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSized;d++){var c=this.visibleItems[d];c.repositionY(e)}return s},s.prototype._calculateHeight=function(t){var e,i=this.visibleItems;this.resetSubgroups();var s=this;if(i.length){var n=i[0].top,r=i[0].top+i[0].height;if(o.forEach(i,function(t){n=Math.min(n,t.top),r=Math.max(r,t.top+t.height),void 0!==t.data.subgroup&&(s.subgroups[t.data.subgroup].height=Math.max(s.subgroups[t.data.subgroup].height,t.height),s.subgroups[t.data.subgroup].visible=!0)}),n>t.axis){var a=n-t.axis;r-=a,o.forEach(i,function(t){t.top-=a})}e=r+t.item.vertical/2}else e=t.axis+t.item.vertical;return e=Math.max(e,this.props.label.height)},s.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},s.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;it?-1:l>=t?0:1};if(e.length>0)for(n=0;nl}),1==this.checkRangedItems)for(this.checkRangedItems=!1,n=0;nl})}for(n=0;n=0&&(n=e[r],!o(n));r--)void 0===s[n.id]&&(s[n.id]=!0,i.push(n));for(r=t+1;rs;s++){var n=this.visibleItems[s];n.repositionY(e)}return i},s.prototype.show=function(){this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={type:null,orientation:"bottom",align:"auto",stack:!0,groupOrder:null,selectable:!0,editable:{updateTime:!1,updateGroup:!1,add:!1,remove:!1},snap:h.snap,onAdd:function(t,e){e(t)},onUpdate:function(t,e){e(t)},onMove:function(t,e){e(t)},onRemove:function(t,e){e(t)},onMoving:function(t,e){e(t)},margin:{item:{horizontal:10,vertical:10},axis:20},padding:5},this.options=n.extend({},this.defaultOptions),this.itemOptions={type:{start:"Date",end:"Date"}},this.conversion={toScreen:t.util.toScreen,toTime:t.util.toTime},this.dom={},this.props={},this.hammer=null;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.stackDirty=!0,this.touchParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(3),a=i(4),h=i(19),d=i(25),l=i(30),c=i(31),p=i(22),u=i(23),m=i(24),f=i(21),g="__ungrouped__",v="__background__";s.prototype=new d,s.types={background:f,box:p,range:m,point:u},s.prototype._create=function(){var t=document.createElement("div");t.className="itemset",t["timeline-itemset"]=this,this.dom.frame=t;var e=document.createElement("div");e.className="background",t.appendChild(e),this.dom.background=e;var i=document.createElement("div");i.className="foreground",t.appendChild(i),this.dom.foreground=i;var s=document.createElement("div");s.className="axis",this.dom.axis=s;var n=document.createElement("div");n.className="labelset",this.dom.labelSet=n,this._updateUngrouped();var r=new c(v,null,this);r.show(),this.groups[v]=r,this.hammer=o(this.body.dom.centerContainer,{preventDefault:!0}),this.hammer.on("touch",this._onTouch.bind(this)),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this)),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("hold",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.show()},s.prototype.setOptions=function(t){if(t){var e=["type","align","orientation","padding","stack","selectable","groupOrder","dataAttributes","template","hide","snap"];n.selectiveExtend(e,this.options,t),"margin"in t&&("number"==typeof t.margin?(this.options.margin.axis=t.margin,this.options.margin.item.horizontal=t.margin,this.options.margin.item.vertical=t.margin):"object"==typeof t.margin&&(n.selectiveExtend(["axis"],this.options.margin,t.margin),"item"in t.margin&&("number"==typeof t.margin.item?(this.options.margin.item.horizontal=t.margin.item,this.options.margin.item.vertical=t.margin.item):"object"==typeof t.margin.item&&n.selectiveExtend(["horizontal","vertical"],this.options.margin.item,t.margin.item)))),"editable"in t&&("boolean"==typeof t.editable?(this.options.editable.updateTime=t.editable,this.options.editable.updateGroup=t.editable,this.options.editable.add=t.editable,this.options.editable.remove=t.editable):"object"==typeof t.editable&&n.selectiveExtend(["updateTime","updateGroup","add","remove"],this.options.editable,t.editable));var i=function(e){var i=t[e];if(i){if(!(i instanceof Function))throw new Error("option "+e+" must be a function "+e+"(item, callback)");this.options[e]=i}}.bind(this);["onAdd","onUpdate","onRemove","onMove","onMoving"].forEach(i),this.markDirty()}},s.prototype.markDirty=function(t){this.groupIds=[],this.stackDirty=!0,t&&t.refreshItems&&n.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()})},s.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.axis.parentNode&&this.dom.axis.parentNode.removeChild(this.dom.axis),this.dom.labelSet.parentNode&&this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame),this.dom.axis.parentNode||this.body.dom.backgroundVertical.appendChild(this.dom.axis),this.dom.labelSet.parentNode||this.body.dom.left.appendChild(this.dom.labelSet)},s.prototype.setSelection=function(t){var e,i,s,o;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;i>e;e++)s=this.selection[e],o=this.items[s],o&&o.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],o=this.items[s],o&&(this.selection.push(s),o.select())},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var o in this.groups)if(this.groups.hasOwnProperty(o))for(var n=this.groups[o],r=n.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="itemset"+(h?" editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var c=this.stackDirty,p=this._firstGroup(),u={item:t.item,axis:t.axis},m={item:t.item,axis:t.item.vertical/2},f=0,g=t.axis+t.item.vertical;return this.groups[v].redraw(e,m,c),n.forEach(this.groups,function(t){var i=t==p?u:m,s=t.redraw(e,i,c);r=s||r,f+=t.height}),f=Math.max(f,g),this.stackDirty=!1,a.style.height=i(f),this.props.width=a.offsetWidth,this.props.height=f,this.dom.axis.style.top=i("top"==o?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left="0",r=this._isResized()||r},s.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[g];return i||null},s.prototype._updateUngrouped=function(){{var t,e,i=this.groups[g];this.groups[v]}if(this.groupsData){if(i){i.hide(),delete this.groups[g];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var s=this._getGroupId(t.data),o=this.groups[s];o&&o.add(t)||t.hide()}}}else if(!i){var n=null,r=null;i=new l(n,r,this),this.groups[g]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],i.add(t));i.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change",{queue:!0})},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},s.prototype._getGroupId=function(t){var e=this._getType(t);return"background"==e&&void 0==t.group?v:this.groupsData?t.group:g},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=e._getType(i),r=s.types[n];if(o&&(r&&o instanceof r?e._updateItem(o,i):(e._removeItem(o),o=null)),!o){if(!r)throw new TypeError("rangeoverflow"==n?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+n+'"');o=new r(i,e.conversion,e.options),o.id=t,e._addItem(o)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0})},s.prototype._onAdd=s.prototype._onUpdate,s.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var s=i.items[t];s&&(e++,i._removeItem(s))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0}))},s.prototype._order=function(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==g||t==v)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new l(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change",{queue:!0})},s.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change",{queue:!0})},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.setData(e),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1),t.parent&&t.parent.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||o.length>0)&&this.body.emitter.emit("select",{items:a})}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.options.snap||null,o=s.itemFromTarget(t);if(o){var r=e.itemsData.get(o.id);this.options.onUpdate(r,function(t){t&&e.itemsData.getDataSet().update(t)})}else{var a=n.getAbsoluteLeft(this.dom.frame),h=t.gesture.center.pageX-a,d=this.body.util.toTime(h),l=this.body.util.getScale(),c=this.body.util.getStep(),p={start:i?i(d,l,c):d,content:"new item"};if("range"===this.options.type){var u=this.body.util.toTime(h+this.props.width/5);p.end=i?i(u,l,c):u}p[this.itemsData._fieldId]=n.randomUUID();var m=this.groupFromTarget(t);m&&(p.group=m.groupId),this.options.onAdd(p,function(t){t&&e.itemsData.getDataSet().add(t) +})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=s.itemFromTarget(t);if(i){e=this.getSelection();var o=t.gesture.touches[0]&&t.gesture.touches[0].shiftKey||!1;if(o){e.push(i.id);var n=s._getItemRange(this.itemsData.get(e,this.itemOptions));e=[];for(var r in this.items)if(this.items.hasOwnProperty(r)){var a=this.items[r],h=a.data.start,d=void 0!==a.data.end?a.data.end:h;h>=n.min&&d<=n.max&&e.push(a.id)}}else{var l=e.indexOf(i.id);-1==l?e.push(i.id):e.splice(l,1)}this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()})}}},s._getItemRange=function(t){var e=null,i=null;return t.forEach(function(t){(null==i||t.starte)&&(e=t.end):(null==e||t.start>e)&&(e=t.start)}),{min:i,max:e}},s.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},s.prototype.groupFromTarget=function(t){for(var e=t.gesture.center.clientY,i=0;ia&&ea)return o}else if(0===i&&e"));this.dom.textArea.innerHTML=s,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},s.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){n.prepareElements(this.svgElements);var t=window.getComputedStyle(this.dom.frame).paddingTop,e=Number(t.replace("px","")),i=e,s=this.options.iconSize,o=.75*this.options.iconSize,r=e+.5*o+3;this.svg.style.width=s+5+e+"px";for(var a in this.groups)this.groups.hasOwnProperty(a)&&(1!=this.groups[a].visible||void 0!==this.linegraphOptions.visibility[a]&&1!=this.linegraphOptions.visibility[a]||(this.groups[a].drawIcon(i,r,this.svgElements,this.svg,s,o),r+=o+this.options.iconSpacing));n.cleanupElements(this.svgElements)}},t.exports=s},function(t,e,i){function s(t,e){this.id=o.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,handleOverlap:"overlap",align:"center"},catmullRom:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}},groups:{visibility:{}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1,this.updateSVGheight=!1,this.updateSVGheightOnResize=!1;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.COUNTER=0,this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.props.width),i.redraw.call(i,!0)}),this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups},this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(25),d=i(28),l=i(29),c=i(33),p=i(50),u="__ungrouped__";s.prototype=new h,s.prototype._create=function(){var t=document.createElement("div");t.className="LineGraph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new c(this.body,this.options.legend,"right",this.options.groups),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","height","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];void 0===t.graphHeight&&void 0!==t.height&&void 0!==this.body.domProps.centerContainer.height?(this.updateSVGheight=!0,this.updateSVGheightOnResize=!0):void 0!==this.body.domProps.centerContainer.height&&void 0!==t.graphHeight&&parseInt((t.graphHeight+"").replace("px",""))0){var d=this.body.util.toGlobalTime(-this.body.domProps.root.width),l=this.body.util.toGlobalTime(2*this.body.domProps.root.width),c={};for(this._getRelevantData(a,c,d,l),this._applySampling(a,c),e=0;eu&&console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle."),this.COUNTER=0,this.abortedGraphUpdate=!1,e=0;e0)for(r=0;rs){d.push(h);break}d.push(h)}}else for(a=0;ai&&h.x0)for(var s=0;s0){var n=1,r=o.length,a=this.body.util.toGlobalScreen(o[o.length-1].x)-this.body.util.toGlobalScreen(o[0].x),h=r/a;n=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=[],l=0;r>l;l+=n)d.push(o[l]);e[t[s]]=d}}},s.prototype._getYRanges=function(t,e,i){var s,o,n,r,a=[],h=[];if(t.length>0){for(n=0;n0&&(o=this.groups[t[n]],"stack"==r.barChart.handleOverlap&&"bar"==r.style?"left"==r.yAxisOrientation?a=a.concat(o.getYRange(s)):h=h.concat(o.getYRange(s)):i[t[n]]=o.getYRange(s,t[n]));p.getStackedBarYRange(a,i,t,"__barchartLeft","left"),p.getStackedBarYRange(h,i,t,"__barchartRight","right")}},s.prototype._updateYAxis=function(t,e){var i,s,o=!1,n=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var c=0;ci?i:a,d=s>d?s:d):(r=!0,h=h>i?i:h,l=s>l?s:l));1==n&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}return o=this._toggleAxisVisiblity(n,this.yAxisLeft)||o,o=this._toggleAxisVisiblity(r,this.yAxisRight)||o,1==r&&1==n?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!n,0==this.yAxisRight.master?(this.yAxisLeft.lineOffset=1==r?this.yAxisRight.width:0,o=this.yAxisLeft.redraw()||o,this.yAxisRight.stepPixelsForced=this.yAxisLeft.stepPixels,this.yAxisRight.zeroCrossing=this.yAxisLeft.zeroCrossing,o=this.yAxisRight.redraw()||o):o=this.yAxisRight.redraw()||o,-1!=t.indexOf("__barchartLeft")&&t.splice(t.indexOf("__barchartLeft"),1),-1!=t.indexOf("__barchartRight")&&t.splice(t.indexOf("__barchartRight"),1),o},s.prototype._toggleAxisVisiblity=function(t,e){var i=!1;return 0==t?e.dom.frame.parentNode&&0==e.hidden&&(e.hide(),i=!0):e.dom.frame.parentNode||1!=e.hidden||(e.show(),i=!0),i},s.prototype._convertXcoordinates=function(t){for(var e,i,s=[],o=this.body.util.toScreen,n=0;ny;)y++,l=h.getCurrent(),c=h.isMajor(),u=h.getClassName(),f=m,m=this.body.util.toScreen(l),g=m-f,p&&(p.style.width=g+"px"),this.options.showMinorLabels&&this._repaintMinorText(m,h.getLabelMinor(),t,u),c&&this.options.showMajorLabels?(m>0&&(void 0==v&&(v=m),this._repaintMajorText(m,h.getLabelMajor(),t,u)),p=this._repaintMajorLine(m,t,u)):p=this._repaintMinorLine(m,t,u),h.next();if(this.options.showMajorLabels){var b=this.body.util.toTime(0),_=h.getLabelMajor(b),x=_.length*(this.props.majorCharWidth||10)+10;(void 0==v||v>x)&&this._repaintMajorText(0,_,t,u)}o.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},s.prototype._repaintMinorText=function(t,e,i,s){var o=this.dom.redundant.minorTexts.shift();if(!o){var n=document.createTextNode("");o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.minorTexts.push(o),o.childNodes[0].nodeValue=e,o.style.top="top"==i?this.props.majorLabelHeight+"px":"0",o.style.left=t+"px",o.className="text minor "+s},s.prototype._repaintMajorText=function(t,e,i,s){var o=this.dom.redundant.majorTexts.shift();if(!o){var n=document.createTextNode(e);o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.majorTexts.push(o),o.childNodes[0].nodeValue=e,o.className="text major "+s,o.style.top="top"==i?"0":this.props.minorLabelHeight+"px",o.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?o.majorLabelHeight+"px":this.body.domProps.top.height+"px",s.style.height=o.minorLineHeight+"px",s.style.left=t-o.minorLineWidth/2+"px",s.className="grid vertical minor "+i,s},s.prototype._repaintMajorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?"0":this.body.domProps.top.height+"px",s.style.left=t-o.majorLineWidth/2+"px",s.style.height=o.majorLineHeight+"px",s.className="grid vertical major "+i,s},s.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="text minor measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="text major measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._determineBrowserMethod(),this._initializeMixinLoaders(),this.containerElement=t,this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=0,this.physicsTime=0,this.runDoubleSpeed=!1,this.physicsDiscreteStepsize=.5,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null};var o=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)};this.defaultOptions={nodes:{customScalingFunction:o,mass:1,radiusMin:10,radiusMax:30,radius:10,shape:"ellipse",image:void 0,widthMin:16,widthMax:64,fontColor:"black",fontSize:14,fontFace:"verdana",fontFill:void 0,fontStrokeWidth:0,fontStrokeColor:"#ffffff",fontDrawThreshold:3,scaleFontWithValue:!1,fontSizeMin:14,fontSizeMax:30,fontSizeMaxVisible:30,level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},group:void 0,borderWidth:1,borderWidthSelected:void 0},edges:{customScalingFunction:o,widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},opacity:1,fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",fontStrokeWidth:0,fontStrokeColor:"white",labelAlignment:"horizontal",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from",useGradients:!1},configurePhysics:!1,physics:{barnesHut:{enabled:!0,thetaInverted:2,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09},repulsion:{centralGravity:0,springLength:200,springConstant:.05,nodeDistance:100,damping:.09},hierarchicalRepulsion:{enabled:!1,centralGravity:0,springLength:100,springConstant:.01,nodeDistance:150,damping:.09},damping:null,centralGravity:null,springLength:null,springConstant:null},clustering:{enabled:!1,initialMaxNodes:100,clusterThreshold:500,reduceToNodes:300,chainThreshold:.4,clusterEdgeThreshold:20,sectorThreshold:100,screenSizeThreshold:.2,fontSizeMultiplier:4,maxFontSize:1e3,forceAmplification:.1,distanceAmplification:.1,edgeGrowth:20,nodeScaling:{width:1,height:1,radius:1},maxNodeSizeIncrements:600,activeAreaBoxSize:80,clusterLevelDifference:2,clusterByZoom:!0},navigation:{enabled:!1},keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02},bindToWindow:!0},dataManipulation:{enabled:!1,initiallyVisible:!1},hierarchicalLayout:{enabled:!1,levelSeparation:150,nodeSpacing:100,direction:"UD",layout:"hubsize"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},maxVelocity:50,minVelocity:.1,stabilize:!0,stabilizationIterations:1e3,zoomExtentOnStabilize:!0,locale:"en",locales:_,tooltip:{delay:300,fontColor:"black",fontSize:14,fontFace:"verdana",color:{border:"#666",background:"#FFFFC6"}},dragNetwork:!0,dragNodes:!0,zoomable:!0,hover:!1,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,width:"100%",height:"100%",selectable:!0,useDefaultGroups:!0},this.constants=a.extend({},this.defaultOptions),this.pixelRatio=1,this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1,this.navigationHammers=[],this.manipulationHammers=[],this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.animating=!1,this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=null,this.lockedOnNodeOffset=null,this.touchTime=0,this.redrawRequested=!1;var n=this;this.groups=new u,this.images=new m,this.images.setOnloadCallback(function(){n._requestRedraw()}),this.xIncrement=0,this.yIncrement=0,this.zoomIncrement=0,this._loadPhysicsSystem(),this._create(),this._loadSectorSystem(),this._loadClusterSystem(),this._loadSelectionSystem(),this._loadHierarchySystem(),this._setTranslation(this.frame.clientWidth/2,this.frame.clientHeight/2),this._setScale(1),this.setOptions(i),this.freezeSimulationEnabled=!1,this.cachedFunctions={},this.startedStabilization=!1,this.stabilized=!1,this.stabilizationIterations=null,this.draggingNodes=!1,this.calculationNodes={},this.calculationNodeIndices=[],this.nodeIndices=[],this.nodes={},this.edges={},this.canvasTopLeft={x:0,y:0},this.canvasBottomRight={x:0,y:0},this.pointerPosition={x:0,y:0},this.areaCenter={},this.scale=1,this.previousScale=this.scale,this.nodesData=null,this.edgesData=null,this.nodesListeners={add:function(t,e){n._addNodes(e.items),n.start()},update:function(t,e){n._updateNodes(e.items),n.start()},remove:function(t,e){n._removeNodes(e.items),n.start()}},this.edgesListeners={add:function(t,e){n._addEdges(e.items),n.start()},update:function(t,e){n._updateEdges(e.items),n.start()},remove:function(t,e){n._removeEdges(e.items),n.start()}},this.moving=!0,this.timer=void 0,this.setData(e,this.constants.clustering.enabled||this.constants.hierarchicalLayout.enabled),this.initializing=!1,1==this.constants.hierarchicalLayout.enabled?this._setupHierarchicalLayout():0==this.constants.stabilize&&this.zoomExtent({duration:0},!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(56),n=i(45),r=i(57),a=i(1),h=i(47),d=i(3),l=i(4),c=i(42),p=i(43),u=i(38),m=i(39),f=i(40),g=i(37),v=i(41),y=i(52),b=i(53),_=i(54);i(55),o(s.prototype),s.prototype._determineBrowserMethod=function(){var t=navigator.userAgent.toLowerCase();this.requiresTimeout=!1,-1!=t.indexOf("msie 9.0")?this.requiresTimeout=!0:-1!=t.indexOf("safari")&&t.indexOf("chrome")<=-1&&(this.requiresTimeout=!0)},s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;e0)for(var r=0;re.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),se.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),s.5*this.nodeIndices.length)return void this.zoomExtent(t,!1,i);s=this._getRange(t.nodes);var h=this.nodeIndices.length;o=1==this.constants.smoothCurves?1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?49.07548/(h+142.05338)+91444e-8:12.662/(h+7.4147)+.0964822:1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?77.5271985/(h+187.266146)+476710517e-13:30.5062972/(h+19.93597763)+.08413486;var d=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);o*=d}else{s=this._getRange(t.nodes);var l=1.1*Math.abs(s.maxX-s.minX),c=1.1*Math.abs(s.maxY-s.minY),p=this.frame.canvas.clientWidth/l,u=this.frame.canvas.clientHeight/c;o=u>=p?p:u}o>1&&(o=1);var m=this._findCenter(s);if(0==i){var t={position:m,scale:o,animation:t};this.moveTo(t),this.moving=!0,this.start()}else m.x*=o,m.y*=o,m.x-=.5*this.frame.canvas.clientWidth,m.y-=.5*this.frame.canvas.clientHeight,this._setScale(o),this._setTranslation(-m.x,-m.y)},s.prototype._updateNodeIndexList=function(){this._clearNodeIndexList();for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodeIndices.push(t)},s.prototype.setData=function(t,e){if(void 0===e&&(e=!1),this._unselectAll(!0),this.initializing=!0,t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(1==this.constants.dataManipulation.enabled&&this._createManipulatorBar(),this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var i=c.DOTToGraph(t.dot);return void this.setData(i)}}else if(t&&t.gephi){if(t&&t.gephi){var s=p.parseGephi(t.gephi);return void this.setData(s)}}else this._setNodes(t&&t.nodes),this._setEdges(t&&t.edges);this._putDataInSector(),0==e&&(1==this.constants.hierarchicalLayout.enabled?(this._resetLevels(),this._setupHierarchicalLayout()):1==this.constants.stabilize&&this._stabilize(),this.start()),this.initializing=!1},s.prototype.setOptions=function(t){if(t){var e,i=["nodes","edges","smoothCurves","hierarchicalLayout","clustering","navigation","keyboard","dataManipulation","onAdd","onEdit","onEditEdge","onConnect","onDelete","clickToUse"];if(a.selectiveNotDeepExtend(i,this.constants,t),a.selectiveNotDeepExtend(["color"],this.constants.nodes,t.nodes),a.selectiveNotDeepExtend(["color","length"],this.constants.edges,t.edges),this.groups.useDefaultGroups=this.constants.useDefaultGroups,t.physics&&(a.mergeOptions(this.constants.physics,t.physics,"barnesHut"),a.mergeOptions(this.constants.physics,t.physics,"repulsion"),t.physics.hierarchicalRepulsion)){this.constants.hierarchicalLayout.enabled=!0,this.constants.physics.hierarchicalRepulsion.enabled=!0,this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.hierarchicalRepulsion)t.physics.hierarchicalRepulsion.hasOwnProperty(e)&&(this.constants.physics.hierarchicalRepulsion[e]=t.physics.hierarchicalRepulsion[e])}if(t.onAdd&&(this.triggerFunctions.add=t.onAdd),t.onEdit&&(this.triggerFunctions.edit=t.onEdit),t.onEditEdge&&(this.triggerFunctions.editEdge=t.onEditEdge),t.onConnect&&(this.triggerFunctions.connect=t.onConnect),t.onDelete&&(this.triggerFunctions.del=t.onDelete),a.mergeOptions(this.constants,t,"smoothCurves"),a.mergeOptions(this.constants,t,"hierarchicalLayout"),a.mergeOptions(this.constants,t,"clustering"),a.mergeOptions(this.constants,t,"navigation"),a.mergeOptions(this.constants,t,"keyboard"),a.mergeOptions(this.constants,t,"dataManipulation"),t.dataManipulation&&(this.editMode=this.constants.dataManipulation.initiallyVisible),t.edges&&(void 0!==t.edges.color&&(a.isString(t.edges.color)?(this.constants.edges.color={},this.constants.edges.color.color=t.edges.color,this.constants.edges.color.highlight=t.edges.color,this.constants.edges.color.hover=t.edges.color):(void 0!==t.edges.color.color&&(this.constants.edges.color.color=t.edges.color.color),void 0!==t.edges.color.highlight&&(this.constants.edges.color.highlight=t.edges.color.highlight),void 0!==t.edges.color.hover&&(this.constants.edges.color.hover=t.edges.color.hover)),this.constants.edges.inheritColor=!1),t.edges.fontColor||void 0!==t.edges.color&&(a.isString(t.edges.color)?this.constants.edges.fontColor=t.edges.color:void 0!==t.edges.color.color&&(this.constants.edges.fontColor=t.edges.color.color))),t.nodes&&t.nodes.color){var s=a.parseColor(t.nodes.color);this.constants.nodes.color.background=s.background,this.constants.nodes.color.border=s.border,this.constants.nodes.color.highlight.background=s.highlight.background,this.constants.nodes.color.highlight.border=s.highlight.border,this.constants.nodes.color.hover.background=s.hover.background,this.constants.nodes.color.hover.border=s.hover.border}if(t.groups)for(var o in t.groups)if(t.groups.hasOwnProperty(o)){var n=t.groups[o];this.groups.add(o,n)}if(t.tooltip){for(e in t.tooltip)t.tooltip.hasOwnProperty(e)&&(this.constants.tooltip[e]=t.tooltip[e]);t.tooltip.color&&(this.constants.tooltip.color=a.parseColor(t.tooltip.color))}if("clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new b(this.frame),this.activator.on("change",this._createKeyBinds.bind(this))):this.activator&&(this.activator.destroy(),delete this.activator)),t.labels)throw new Error('Option "labels" is deprecated. Use options "locale" and "locales" instead.');this._loadPhysicsSystem(),this._loadNavigationControls(),this._loadManipulationSystem(),this._configureSmoothCurves(),this._bindHammer(),this._createKeyBinds(),this._markAllEdgesAsDirty(),this.setSize(this.constants.width,this.constants.height),this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.start()}},s.prototype._create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis network-frame",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.tabIndex=900,this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext){var t=this.frame.canvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.frame.canvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(e)}this._bindHammer()},s.prototype._bindHammer=function(){var t=this;void 0!==this.hammer&&this.hammer.dispose(),this.drag={},this.pinch={},this.hammer=n(this.frame.canvas,{prevent_default:!0}),this.hammer.on("tap",t._onTap.bind(t)),this.hammer.on("doubletap",t._onDoubleTap.bind(t)),this.hammer.on("hold",t._onHold.bind(t)),this.hammer.on("touch",t._onTouch.bind(t)),this.hammer.on("dragstart",t._onDragStart.bind(t)),this.hammer.on("drag",t._onDrag.bind(t)),this.hammer.on("dragend",t._onDragEnd.bind(t)),1==this.constants.zoomable&&(this.hammer.on("mousewheel",t._onMouseWheel.bind(t)),this.hammer.on("DOMMouseScroll",t._onMouseWheel.bind(t)),this.hammer.on("pinch",t._onPinch.bind(t))),this.hammer.on("mousemove",t._onMouseMoveTitle.bind(t)),this.hammerFrame=n(this.frame,{prevent_default:!0}),this.hammerFrame.on("release",t._onRelease.bind(t)),this.containerElement.appendChild(this.frame)},s.prototype._createKeyBinds=function(){var t=this;void 0!==this.keycharm&&this.keycharm.destroy(),this.keycharm=r(1==this.constants.keyboard.bindToWindow?{container:window,preventDefault:!1}:{container:this.frame,preventDefault:!1}),this.keycharm.reset(),this.constants.keyboard.enabled&&this.isActive()&&(this.keycharm.bind("up",this._moveUp.bind(t),"keydown"),this.keycharm.bind("up",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("down",this._moveDown.bind(t),"keydown"),this.keycharm.bind("down",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("left",this._moveLeft.bind(t),"keydown"),this.keycharm.bind("left",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("right",this._moveRight.bind(t),"keydown"),this.keycharm.bind("right",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("=",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("=",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num+",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("num+",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("num-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("[",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("[",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("]",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("]",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pageup",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("pageup",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pagedown",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("pagedown",this._stopZoom.bind(t),"keyup")),1==this.constants.dataManipulation.enabled&&(this.keycharm.bind("esc",this._createManipulatorBar.bind(t)),this.keycharm.bind("delete",this._deleteSelected.bind(t)))},s.prototype.destroy=function(){this.start=function(){},this.redraw=function(){},this.timer=!1,this._cleanupPhysicsConfiguration(),this.keycharm.reset(),this.hammer.dispose(),this.off(),this._recursiveDOMDelete(this.containerElement)},s.prototype._recursiveDOMDelete=function(t){for(;1==t.hasChildNodes();)this._recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},s.prototype._getPointer=function(t){return{x:t.pageX-a.getAbsoluteLeft(this.frame.canvas),y:t.pageY-a.getAbsoluteTop(this.frame.canvas)}},s.prototype._onTouch=function(t){(new Date).valueOf()-this.touchTime>100&&(this.drag.pointer=this._getPointer(t.gesture.center),this.drag.pinched=!1,this.pinch.scale=this._getScale(),this.touchTime=(new Date).valueOf(),this._handleTouch(this.drag.pointer))},s.prototype._onDragStart=function(t){this._handleDragStart(t)},s.prototype._handleDragStart=function(t){void 0===this.drag.pointer&&this._onTouch(t);var e=this._getNodeAt(this.drag.pointer);if(this.drag.dragging=!0,this.drag.selection=[],this.drag.translation=this._getTranslation(),this.drag.nodeId=null,this.draggingNodes=!1,null!=e&&1==this.constants.dragNodes){this.draggingNodes=!0,this.drag.nodeId=e.id,e.isSelected()||this._selectObject(e,!1),this.emit("dragStart",{nodeIds:this.getSelection().nodes});for(var i in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(i)){var s=this.selectionObj.nodes[i],o={id:s.id,node:s,x:s.x,y:s.y,xFixed:s.xFixed,yFixed:s.yFixed};s.xFixed=!0,s.yFixed=!0,this.drag.selection.push(o)}}},s.prototype._onDrag=function(t){this._handleOnDrag(t)},s.prototype._handleOnDrag=function(t){if(!this.drag.pinched){this.releaseNode();var e=this._getPointer(t.gesture.center),i=this,s=this.drag,o=s.selection;if(o&&o.length&&1==this.constants.dragNodes){var n=e.x-s.pointer.x,r=e.y-s.pointer.y;o.forEach(function(t){var e=t.node;t.xFixed||(e.x=i._XconvertDOMtoCanvas(i._XconvertCanvasToDOM(t.x)+n)),t.yFixed||(e.y=i._YconvertDOMtoCanvas(i._YconvertCanvasToDOM(t.y)+r))}),this.moving||(this.moving=!0,this.start())}else if(1==this.constants.dragNetwork){if(void 0===this.drag.pointer)return void this._handleDragStart(t);var a=e.x-this.drag.pointer.x,h=e.y-this.drag.pointer.y;this._setTranslation(this.drag.translation.x+a,this.drag.translation.y+h),this._redraw()}}},s.prototype._onDragEnd=function(t){this._handleDragEnd(t)},s.prototype._handleDragEnd=function(){this.drag.dragging=!1;var t=this.drag.selection;t&&t.length?(t.forEach(function(t){t.node.xFixed=t.xFixed,t.node.yFixed=t.yFixed}),this.moving=!0,this.start()):this._redraw(),0==this.draggingNodes?this.emit("dragEnd",{nodeIds:[]}):this.emit("dragEnd",{nodeIds:this.getSelection().nodes})},s.prototype._onTap=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleTap(e)},s.prototype._onDoubleTap=function(t){var e=this._getPointer(t.gesture.center);this._handleDoubleTap(e)},s.prototype._onHold=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleOnHold(e)},s.prototype._onRelease=function(t){var e=this._getPointer(t.gesture.center);this._handleOnRelease(e)},s.prototype._onPinch=function(t){var e=this._getPointer(t.gesture.center);this.drag.pinched=!0,"scale"in this.pinch||(this.pinch.scale=1);var i=this.pinch.scale*t.gesture.scale;this._zoom(i,e)},s.prototype._zoom=function(t,e){if(1==this.constants.zoomable){var i=this._getScale();1e-5>t&&(t=1e-5),t>10&&(t=10);var s=null;void 0!==this.drag&&1==this.drag.dragging&&(s=this.DOMtoCanvas(this.drag.pointer));var o=this._getTranslation(),n=t/i,r=(1-n)*e.x+o.x*n,a=(1-n)*e.y+o.y*n;if(this.areaCenter={x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)},this._setScale(t),this._setTranslation(r,a),this.updateClustersDefault(),null!=s){var h=this.canvasToDOM(s);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}return this._redraw(),t>i?this.emit("zoom",{direction:"+"}):this.emit("zoom",{direction:"-"}),t}},s.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this._getScale(),s=e/10;0>e&&(s/=1-s),i*=1+s;var o=h.fakeGesture(this,t),n=this._getPointer(o.center);this._zoom(i,n)}t.preventDefault()},s.prototype._onMouseMoveTitle=function(t){var e=h.fakeGesture(this,t),i=this._getPointer(e.center),s=!1;if(void 0!==this.popup&&(this.popup.hidden===!1&&this._checkHidePopup(i),this.popup.hidden===!1&&(s=!0,this.popup.setPosition(i.x+3,i.y-5),this.popup.show())),0==this.constants.keyboard.bindToWindow&&1==this.constants.keyboard.enabled&&this.frame.focus(),s===!1){var o=this,n=function(){o._checkShowPopup(i)};this.popupTimer&&clearInterval(this.popupTimer),this.drag.dragging||(this.popupTimer=setTimeout(n,this.constants.tooltip.delay))}if(1==this.constants.hover){for(var r in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(r)&&(this.hoverObj.edges[r].hover=!1,delete this.hoverObj.edges[r]);var a=this._getNodeAt(i);null==a&&(a=this._getEdgeAt(i)),null!=a&&this._hoverObject(a);for(var d in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(d)&&(a instanceof f&&a.id!=d||a instanceof g||null==a)&&(this._blurObject(this.hoverObj.nodes[d]),delete this.hoverObj.nodes[d]);this.redraw()}},s.prototype._checkShowPopup=function(t){var e,i={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},s=void 0===this.popupObj?"":this.popupObj.id,o=!1,n="node";if(void 0==this.popupObj){var r=this.nodes,a=[];for(e in r)if(r.hasOwnProperty(e)){var h=r[e];h.isOverlappingWith(i)&&void 0!==h.getTitle()&&a.push(e)}a.length>0&&(this.popupObj=this.nodes[a[a.length-1]],o=!0)}if(void 0===this.popupObj&&0==o){var d=this.edges,l=[];for(e in d)if(d.hasOwnProperty(e)){var c=d[e];c.connected&&void 0!==c.getTitle()&&c.isOverlappingWith(i)&&l.push(e)}l.length>0&&(this.popupObj=this.edges[l[l.length-1]],n="edge")}this.popupObj?this.popupObj.id!=s&&(void 0===this.popup&&(this.popup=new v(this.frame,this.constants.tooltip)),this.popup.popupTargetType=n,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(t.x+3,t.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show()):this.popup&&this.popup.hide()},s.prototype._checkHidePopup=function(t){var e={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},i=!1;if("node"==this.popup.popupTargetType){if(i=this.nodes[this.popup.popupTargetId].isOverlappingWith(e),i===!0){var s=this._getNodeAt(t);i=s.id==this.popup.popupTargetId}}else null===this._getNodeAt(t)&&(i=this.edges[this.popup.popupTargetId].isOverlappingWith(e));i===!1&&(this.popupObj=void 0,this.popup.hide())},s.prototype.setSize=function(t,e){var i=!1,s=this.frame.canvas.width,o=this.frame.canvas.height;t!=this.constants.width||e!=this.constants.height||this.frame.style.width!=t||this.frame.style.height!=e?(this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,this.constants.width=t,this.constants.height=e,i=!0):(this.frame.canvas.width!=this.frame.canvas.clientWidth*this.pixelRatio&&(this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,i=!0),this.frame.canvas.height!=this.frame.canvas.clientHeight*this.pixelRatio&&(this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,i=!0)),1==i&&this.emit("resize",{width:this.frame.canvas.width*this.pixelRatio,height:this.frame.canvas.height*this.pixelRatio,oldWidth:s*this.pixelRatio,oldHeight:o*this.pixelRatio})},s.prototype._setNodes=function(t){var e=this.nodesData;if(t instanceof d||t instanceof l)this.nodesData=t;else if(Array.isArray(t))this.nodesData=new d,this.nodesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.nodesData=new d}if(e&&a.forEach(this.nodesListeners,function(t,i){e.off(i,t)}),this.nodes={},this.nodesData){var i=this;a.forEach(this.nodesListeners,function(t,e){i.nodesData.on(e,t)});var s=this.nodesData.getIds();this._addNodes(s)}this._updateSelection()},s.prototype._addNodes=function(t){for(var e,i=0,s=t.length;s>i;i++){e=t[i];var o=this.nodesData.get(e),n=new f(o,this.images,this.groups,this.constants);if(this.nodes[e]=n,!(0!=n.xFixed&&0!=n.yFixed||null!==n.x&&null!==n.y)){var r=1*t.length+10,a=2*Math.PI*Math.random();0==n.xFixed&&(n.x=r*Math.cos(a)),0==n.yFixed&&(n.y=r*Math.sin(a))}this.moving=!0}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateValueRange(this.nodes),this.updateLabels()},s.prototype._updateNodes=function(t){for(var e=this.nodesData.get(t),i=this.nodes,s=0,o=t.length;o>s;s++){var n=t[s],r=i[n],a=e[s];r?r.setProperties(a,this.constants):(r=new f(properties,this.images,this.groups,this.constants),i[n]=r)}this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateNodeIndexList(),this._updateValueRange(i),this._markAllEdgesAsDirty()},s.prototype._markAllEdgesAsDirty=function(){for(var t in this.edges)this.edges[t].colorDirty=!0},s.prototype._removeNodes=function(t){for(var e=this.nodes,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.nodes[t[i]]&&(this.nodes[t[i]].unselect(),this._removeFromSelection(this.nodes[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i];delete e[o]}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateSelection(),this._updateValueRange(e)},s.prototype._setEdges=function(t){var e=this.edgesData;if(t instanceof d||t instanceof l)this.edgesData=t;else if(Array.isArray(t))this.edgesData=new d,this.edgesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.edgesData=new d}if(e&&a.forEach(this.edgesListeners,function(t,i){e.off(i,t)}),this.edges={},this.edgesData){var i=this;a.forEach(this.edgesListeners,function(t,e){i.edgesData.on(e,t)});var s=this.edgesData.getIds();this._addEdges(s)}this._reconnectEdges()},s.prototype._addEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=e[n];r&&r.disconnect();var a=i.get(n,{showInternalIds:!0});e[n]=new g(a,this,this.constants)}this.moving=!0,this._updateValueRange(e),this._createBezierNodes(),this._updateCalculationNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout())},s.prototype._updateEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=i.get(n),a=e[n];a?(a.disconnect(),a.setProperties(r,this.constants),a.connect()):(a=new g(r,this,this.constants),this.edges[n]=a)}this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.moving=!0,this._updateValueRange(e)},s.prototype._removeEdges=function(t){for(var e=this.edges,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.edges[t[i]]&&(e[t[i]].unselect(),this._removeFromSelection(e[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i],n=e[o];n&&(null!=n.via&&delete this.sectors.support.nodes[n.via.id],n.disconnect(),delete e[o])}this.moving=!0,this._updateValueRange(e),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},s.prototype._reconnectEdges=function(){var t,e=this.nodes,i=this.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[],e[t].dynamicEdges=[]);for(t in i)if(i.hasOwnProperty(t)){var s=i[t];s.from=null,s.to=null,s.connect()}},s.prototype._updateValueRange=function(t){var e,i=void 0,s=void 0,o=0;for(e in t)if(t.hasOwnProperty(e)){var n=t[e].getValue();void 0!==n&&(i=void 0===i?n:Math.min(n,i),s=void 0===s?n:Math.max(n,s),o+=n)}if(void 0!==i&&void 0!==s)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,s,o)},s.prototype.redraw=function(){this.setSize(this.constants.width,this.constants.height),this._redraw()},s.prototype._requestRedraw=function(t){this.redrawRequested!==!0&&(this.redrawRequested=!0,this.requiresTimeout===!0?window.setTimeout(this._redraw.bind(this,t),0):window.requestAnimationFrame(this._redraw.bind(this,t,!0)))},s.prototype._redraw=function(t){void 0===t&&(t=!1),this.redrawRequested=!1;var e=this.frame.canvas.getContext("2d");e.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var i=this.frame.canvas.clientWidth,s=this.frame.canvas.clientHeight;e.clearRect(0,0,i,s),e.save(),e.translate(this.translation.x,this.translation.y),e.scale(this.scale,this.scale),this.canvasTopLeft={x:this._XconvertDOMtoCanvas(0),y:this._YconvertDOMtoCanvas(0)},this.canvasBottomRight={x:this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth),y:this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight)},t===!1&&(this._doInAllSectors("_drawAllSectorNodes",e),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideEdgesOnDrag)&&this._doInAllSectors("_drawEdges",e)),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideNodesOnDrag)&&this._doInAllSectors("_drawNodes",e,!1),t===!1&&1==this.controlNodesActive&&this._doInAllSectors("_drawControlNodes",e),e.restore(),t===!0&&e.clearRect(0,0,i,s)},s.prototype._setTranslation=function(t,e){void 0===this.translation&&(this.translation={x:0,y:0}),void 0!==t&&(this.translation.x=t),void 0!==e&&(this.translation.y=e),this.emit("viewChanged")},s.prototype._getTranslation=function(){return{x:this.translation.x,y:this.translation.y}},s.prototype._setScale=function(t){this.scale=t},s.prototype._getScale=function(){return this.scale},s.prototype._XconvertDOMtoCanvas=function(t){return(t-this.translation.x)/this.scale},s.prototype._XconvertCanvasToDOM=function(t){return t*this.scale+this.translation.x},s.prototype._YconvertDOMtoCanvas=function(t){return(t-this.translation.y)/this.scale},s.prototype._YconvertCanvasToDOM=function(t){return t*this.scale+this.translation.y},s.prototype.canvasToDOM=function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}},s.prototype.DOMtoCanvas=function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}},s.prototype._drawNodes=function(t,e){void 0===e&&(e=!1);var i=this.nodes,s=[];for(var o in i)i.hasOwnProperty(o)&&(i[o].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight),i[o].isSelected()?s.push(o):(i[o].inArea()||e)&&i[o].draw(t));for(var n=0,r=s.length;r>n;n++)(i[s[n]].inArea()||e)&&i[s[n]].draw(t)},s.prototype._drawEdges=function(t){var e=this.edges;for(var i in e)if(e.hasOwnProperty(i)){var s=e[i];s.setScale(this.scale),s.connected&&e[i].draw(t)}},s.prototype._drawControlNodes=function(t){var e=this.edges;for(var i in e)e.hasOwnProperty(i)&&e[i]._drawControlNodes(t)},s.prototype._stabilize=function(){1==this.constants.freezeForStabilization&&this._freezeDefinedNodes();for(var t=0;this.moving&&t0)for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStepLimited(e,this.constants.maxVelocity),s=!0);else for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStep(e),s=!0);if(1==s){var o=this.constants.minVelocity/Math.max(this.scale,.05);return o>.5*this.constants.maxVelocity?!0:this._isMoving(o)}return!1},s.prototype._revertPhysicsState=function(){var t=this.nodes;for(var e in t)t.hasOwnProperty(e)&&t[e].revertPosition()},s.prototype._revertPhysicsTick=function(){this._doInAllActiveSectors("_revertPhysicsState"),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&this._doInSupportSector("_revertPhysicsState")},s.prototype._physicsTick=function(){if(!this.freezeSimulationEnabled&&1==this.moving){var t=!1,e=!1;this._doInAllActiveSectors("_initializeForceCalculation");var i=this._doInAllActiveSectors("_discreteStepNodes");1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&(e=this._doInSupportSector("_discreteStepNodes"));for(var s=0;s2*e||1==this.runDoubleSpeed)&&1==this.moving&&(this._physicsTick(),0!=this.renderTime&&(this.runDoubleSpeed=!0))}var i=Date.now();this._redraw(),this.renderTime=Date.now()-i,0==this.requiresTimeout&&this.start()},"undefined"!=typeof window&&(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame),s.prototype.start=function(){if(1==this.freezeSimulationEnabled&&(this.moving=!1),1==this.moving||0!=this.xIncrement||0!=this.yIncrement||0!=this.zoomIncrement||1==this.animating)this.timer||(this.timer=1==this.requiresTimeout?window.setTimeout(this._animationStep.bind(this),this.renderTimestep):window.requestAnimationFrame(this._animationStep.bind(this)));else if(this._requestRedraw(),this.stabilizationIterations>1){var t=this,e={iterations:t.stabilizationIterations};this.stabilizationIterations=0,this.startedStabilization=!1,setTimeout(function(){t.emit("stabilized",e)},0)}else this.stabilizationIterations=0},s.prototype._handleNavigation=function(){if(0!=this.xIncrement||0!=this.yIncrement){var t=this._getTranslation();this._setTranslation(t.x+this.xIncrement,t.y+this.yIncrement)}if(0!=this.zoomIncrement){var e={x:this.frame.canvas.clientWidth/2,y:this.frame.canvas.clientHeight/2};this._zoom(this.scale*(1+this.zoomIncrement),e)}},s.prototype.freezeSimulation=function(t){1==t?(this.freezeSimulationEnabled=!0,this.moving=!1):(this.freezeSimulationEnabled=!1,this.moving=!0,this.start())},s.prototype._configureSmoothCurves=function(t){if(void 0===t&&(t=!0),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this._createBezierNodes();for(var e in this.sectors.support.nodes)this.sectors.support.nodes.hasOwnProperty(e)&&void 0===this.edges[this.sectors.support.nodes[e].parentEdgeId]&&delete this.sectors.support.nodes[e]}else{this.sectors.support.nodes={};for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.edges[i].via=null)}this._updateCalculationNodes(),t||(this.moving=!0,this.start())},s.prototype._createBezierNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic)for(var t in this.edges)if(this.edges.hasOwnProperty(t)){var e=this.edges[t];if(null==e.via){var i="edgeId:".concat(e.id);this.sectors.support.nodes[i]=new f({id:i,mass:1,shape:"circle",image:"",internalMultiplier:1},{},{},this.constants),e.via=this.sectors.support.nodes[i],e.via.parentEdgeId=e.id,e.positionBezierNode()}}},s.prototype._initializeMixinLoaders=function(){for(var t in y)y.hasOwnProperty(t)&&(s.prototype[t]=y[t])},s.prototype.storePosition=function(){console.log("storePosition is depricated: use .storePositions() from now on."),this.storePositions()},s.prototype.storePositions=function(){var t=[];for(var e in this.nodes)if(this.nodes.hasOwnProperty(e)){var i=this.nodes[e],s=!this.nodes.xFixed,o=!this.nodes.yFixed;(this.nodesData._data[e].x!=Math.round(i.x)||this.nodesData._data[e].y!=Math.round(i.y))&&t.push({id:e,x:Math.round(i.x),y:Math.round(i.y),allowedToMoveX:s,allowedToMoveY:o})}this.nodesData.update(t)},s.prototype.getPositions=function(t){var e={};if(void 0!==t){if(1==Array.isArray(t)){for(var i=0;i=1&&(this.animating=!1,this.easingTime=0,this._redraw=null!=this.lockedOnNodeId?this._lockedRedraw:this._classicRedraw,this.emit("animationFinished"))},s.prototype._classicRedraw=function(){},s.prototype.isActive=function(){return!this.activator||this.activator.active},s.prototype.setScale=function(){return this._setScale()},s.prototype.getScale=function(){return this._getScale()},s.prototype.getCenterCoordinates=function(){return this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight})},s.prototype.getBoundingBox=function(t){return void 0!==this.nodes[t]?this.nodes[t].boundingBox:void 0},s.prototype.getConnectedNodes=function(t){var e=[];if(void 0!==this.nodes[t])for(var i=this.nodes[t],s={nodeId:!0},o=0;oh}return!1},s.prototype._getColor=function(t){var e=this.options.color;if(1==this.options.useGradients){var i,s,n=t.createLinearGradient(this.from.x,this.from.y,this.to.x,this.to.y);return i=this.from.options.color.highlight.border,s=this.to.options.color.highlight.border,0==this.from.selected&&0==this.to.selected?(i=o.overrideOpacity(this.from.options.color.border,this.options.opacity),s=o.overrideOpacity(this.to.options.color.border,this.options.opacity)):1==this.from.selected&&0==this.to.selected?s=this.to.options.color.border:0==this.from.selected&&1==this.to.selected&&(i=this.from.options.color.border),n.addColorStop(0,i),n.addColorStop(1,s),n}return this.colorDirty===!0&&("to"==this.options.inheritColor?e={highlight:this.to.options.color.highlight.border,hover:this.to.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}:("from"==this.options.inheritColor||1==this.options.inheritColor)&&(e={highlight:this.from.options.color.highlight.border,hover:this.from.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}),this.options.color=e,this.colorDirty=!1),1==this.selected?e.highlight:1==this.hover?e.hover:e.color},s.prototype._drawLine=function(t){if(t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth(),this.from!=this.to){var e,i=this._line(t);if(this.label){if(1==this.options.smoothCurves.enabled&&null!=i){var s=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),o=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:s,y:o}}else e=this._pointOnLine(.5);this._label(t,this.label,e.x,e.y)}}else{var n,r,a=this.physics.springLength/4,h=this.from;h.width||h.resize(t),h.width>h.height?(n=h.x+h.width/2,r=h.y-a):(n=h.x+a,r=h.y-h.height/2),this._circle(t,n,r,a),e=this._pointOnCircle(n,r,a,.5),this._label(t,this.label,e.x,e.y)}},s.prototype._getLineWidth=function(){return 1==this.selected?Math.max(Math.min(this.widthSelected,this.options.widthMax),.3*this.networkScaleInv):1==this.hover?Math.max(Math.min(this.options.hoverWidth,this.options.widthMax),.3*this.networkScaleInv):Math.max(this.options.width,.3*this.networkScaleInv)},s.prototype._getViaCoordinates=function(){if(1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled)return this.via;if(0==this.options.smoothCurves.enabled)return{x:0,y:0};var t=null,e=null,i=this.options.smoothCurves.roundness,s=this.options.smoothCurves.type,o=Math.abs(this.from.x-this.to.x),n=Math.abs(this.from.y-this.to.y);if("discrete"==s||"diagonalCross"==s)Math.abs(this.from.x-this.to.x)this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"==s&&(t=i*n>o?this.from.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o)),"discrete"==s&&(e=i*o>n?this.from.y:e));else if("straightCross"==s)Math.abs(this.from.x-this.to.x)Math.abs(this.from.y-this.to.y)&&(t=this.from.xthis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xe?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o,e=this.to.yd;d++){var l=t.measureText(n[d]).width;h=l>h?l:h}var c=this.options.fontSize*r,p=i-h/2,u=s-c/2;this.labelDimensions={top:u,left:p,width:h,height:c,yLine:o}}var o=this.labelDimensions.yLine;t.save(),"horizontal"!=this.options.labelAlignment&&(t.translate(i,o),this._rotateForLabelAlignment(t),i=0,o=0),this._drawLabelRect(t),this._drawLabelText(t,i,o,n,r,a),t.restore()}},s.prototype._rotateForLabelAlignment=function(t){var e=this.from.y-this.to.y,i=this.from.x-this.to.x,s=Math.atan2(e,i);(-1>s&&0>i||s>0&&0>i)&&(s+=Math.PI),t.rotate(s)},s.prototype._drawLabelRect=function(t){if(void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill){t.fillStyle=this.options.fontFill;var e=2;"line-center"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,.5*-this.labelDimensions.height,this.labelDimensions.width,this.labelDimensions.height):"line-above"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,-(this.labelDimensions.height+e),this.labelDimensions.width,this.labelDimensions.height):"line-below"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,e,this.labelDimensions.width,this.labelDimensions.height):t.fillRect(this.labelDimensions.left,this.labelDimensions.top,this.labelDimensions.width,this.labelDimensions.height)}},s.prototype._drawLabelText=function(t,e,i,s,o,n){if(t.fillStyle=this.options.fontColor||"black",t.textAlign="center","horizontal"!=this.options.labelAlignment){var r=2;"line-above"==this.options.labelAlignment?(t.textBaseline="alphabetic",i-=2*r):"line-below"==this.options.labelAlignment?(t.textBaseline="hanging",i+=2*r):t.textBaseline="middle"}else t.textBaseline="middle";this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=this.options.fontStrokeColor,t.lineJoin="round");for(var a=0;o>a;a++)this.options.fontStrokeWidth>0&&t.strokeText(s[a],e,i),t.fillText(s[a],e,i),i+=n},s.prototype._drawDashLine=function(t){t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth();var e=null;if(void 0!==t.setLineDash){t.save();var i=[0];i=void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?[this.options.dash.length,this.options.dash.gap]:[5,5],t.setLineDash(i),t.lineDashOffset=0,e=this._line(t),t.setLineDash([0]),t.lineDashOffset=0,t.restore()}else t.beginPath(),t.lineCap="round",void 0!==this.options.dash.altLength?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap,this.options.dash.altLength,this.options.dash.gap]):void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap]):(t.moveTo(this.from.x,this.from.y),t.lineTo(this.to.x,this.to.y)),t.stroke();if(this.label){var s;if(1==this.options.smoothCurves.enabled&&null!=e){var o=.5*(.5*(this.from.x+e.x)+.5*(this.to.x+e.x)),n=.5*(.5*(this.from.y+e.y)+.5*(this.to.y+e.y));s={x:o,y:n}}else s=this._pointOnLine(.5);this._label(t,this.label,s.x,s.y)}},s.prototype._pointOnLine=function(t){return{x:(1-t)*this.from.x+t*this.to.x,y:(1-t)*this.from.y+t*this.to.y}},s.prototype._pointOnCircle=function(t,e,i,s){var o=2*(s-3/8)*Math.PI;return{x:t+i*Math.cos(o),y:e-i*Math.sin(o)}},s.prototype._drawArrowCenter=function(t){var e;if(t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth(),this.from!=this.to){var i=this._line(t),s=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),o=(10+5*this.options.width)*this.options.arrowScaleFactor;if(1==this.options.smoothCurves.enabled&&null!=i){var n=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),r=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:n,y:r}}else e=this._pointOnLine(.5);t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&this._label(t,this.label,e.x,e.y)}else{var a,h,d=.25*Math.max(100,this.physics.springLength),l=this.from;l.width||l.resize(t),l.width>l.height?(a=l.x+.5*l.width,h=l.y-d):(a=l.x+d,h=l.y-.5*l.height),this._circle(t,a,h,d);var s=.2*Math.PI,o=(10+5*this.options.width)*this.options.arrowScaleFactor;e=this._pointOnCircle(a,h,d,.5),t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&(e=this._pointOnCircle(a,h,d,.5),this._label(t,this.label,e.x,e.y))}},s.prototype._pointOnBezier=function(t){var e=this._getViaCoordinates(),i=Math.pow(1-t,2)*this.from.x+2*t*(1-t)*e.x+Math.pow(t,2)*this.to.x,s=Math.pow(1-t,2)*this.from.y+2*t*(1-t)*e.y+Math.pow(t,2)*this.to.y;return{x:i,y:s}},s.prototype._findBorderPosition=function(t,e){var i,s,o,n,r,a=10,h=0,d=0,l=1,c=.2,p=this.to;for(1==t&&(p=this.from);l>=d&&a>h;){var u=.5*(d+l);if(i=this._pointOnBezier(u),s=Math.atan2(p.y-i.y,p.x-i.x),o=p.distanceToBorder(e,s),n=Math.sqrt(Math.pow(i.x-p.x,2)+Math.pow(i.y-p.y,2)),r=o-n,Math.abs(r)r?0==t?d=u:l=u:0==t?l=u:d=u,h++}return i.t=u,i},s.prototype._drawArrow=function(t){t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth();var e,i,s;if(this.from!=this.to){if(this._line(t),1==this.options.smoothCurves.enabled){var o=this._getViaCoordinates();s=this._findBorderPosition(!1,t);var n=this._pointOnBezier(Math.max(0,s.t-.1));e=Math.atan2(s.y-n.y,s.x-n.x)}else{e=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x);var r=this.to.x-this.from.x,a=this.to.y-this.from.y,h=Math.sqrt(r*r+a*a),d=this.to.distanceToBorder(t,e),l=(h-d)/h;s={},s.x=(1-l)*this.from.x+l*this.to.x,s.y=(1-l)*this.from.y+l*this.to.y}if(i=(10+5*this.options.width)*this.options.arrowScaleFactor,t.arrow(s.x,s.y,e,i),t.fill(),t.stroke(),this.label){var c;c=1==this.options.smoothCurves.enabled&&null!=o?this._pointOnBezier(.5):this._pointOnLine(.5),this._label(t,this.label,c.x,c.y)}}else{var p,u,m,f=this.from,g=.25*Math.max(100,this.physics.springLength);f.width||f.resize(t),f.width>f.height?(p=f.x+.5*f.width,u=f.y-g,m={x:p,y:f.y,angle:.9*Math.PI}):(p=f.x+g,u=f.y-.5*f.height,m={x:f.x,y:u,angle:.6*Math.PI}),t.beginPath(),t.arc(p,u,g,0,2*Math.PI,!1),t.stroke();var i=(10+5*this.options.width)*this.options.arrowScaleFactor;t.arrow(m.x,m.y,m.angle,i),t.fill(),t.stroke(),this.label&&(c=this._pointOnCircle(p,u,g,.5),this._label(t,this.label,c.x,c.y))}},s.prototype._getDistanceToEdge=function(t,e,i,s,o,n){var r=0;if(this.from!=this.to)if(1==this.options.smoothCurves.enabled){var a,h;if(1==this.options.smoothCurves.enabled&&1==this.options.smoothCurves.dynamic)a=this.via.x,h=this.via.y;else{var d=this._getViaCoordinates();a=d.x,h=d.y}var l,c,p,u,m,f,g,v=1e9;for(c=0;10>c;c++)p=.1*c,u=Math.pow(1-p,2)*t+2*p*(1-p)*a+Math.pow(p,2)*i,m=Math.pow(1-p,2)*e+2*p*(1-p)*h+Math.pow(p,2)*s,c>0&&(l=this._getDistanceToLine(f,g,u,m,o,n),v=v>l?l:v),f=u,g=m;r=v}else r=this._getDistanceToLine(t,e,i,s,o,n);else{var u,m,y,b,_=.25*this.physics.springLength,x=this.from;x.width>x.height?(u=x.x+.5*x.width,m=x.y-_):(u=x.x+_,m=x.y-.5*x.height),y=u-o,b=m-n,r=Math.abs(Math.sqrt(y*y+b*b)-_)}return this.labelDimensions.lefto&&this.labelDimensions.topn?0:r},s.prototype._getDistanceToLine=function(t,e,i,s,o,n){var r=i-t,a=s-e,h=r*r+a*a,d=((o-t)*r+(n-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,c=e+d*a,p=l-o,u=c-n;return Math.sqrt(p*p+u*u)},s.prototype.setScale=function(t){this.networkScaleInv=1/t},s.prototype.select=function(){this.selected=!0},s.prototype.unselect=function(){this.selected=!1},s.prototype.positionBezierNode=function(){null!==this.via&&null!==this.from&&null!==this.to?(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y)):null!==this.via&&(this.via.x=0,this.via.y=0)},s.prototype._drawControlNodes=function(t){if(1==this.controlNodesEnabled){if(null===this.controlNodes.from&&null===this.controlNodes.to){var e="edgeIdFrom:".concat(this.id),i="edgeIdTo:".concat(this.id),s={nodes:{group:"",radius:7,borderWidth:2,borderWidthSelected:2},physics:{damping:0},clustering:{maxNodeSizeIncrements:0,nodeScaling:{width:0,height:0,radius:0}}};this.controlNodes.from=new n({id:e,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s),this.controlNodes.to=new n({id:i,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s)}this.controlNodes.positions={},0==this.controlNodes.from.selected&&(this.controlNodes.positions.from=this.getControlNodeFromPosition(t),this.controlNodes.from.x=this.controlNodes.positions.from.x,this.controlNodes.from.y=this.controlNodes.positions.from.y),0==this.controlNodes.to.selected&&(this.controlNodes.positions.to=this.getControlNodeToPosition(t),this.controlNodes.to.x=this.controlNodes.positions.to.x,this.controlNodes.to.y=this.controlNodes.positions.to.y),this.controlNodes.from.draw(t),this.controlNodes.to.draw(t)}else this.controlNodes={from:null,to:null,positions:{}}},s.prototype._enableControlNodes=function(){this.fromBackup=this.from,this.toBackup=this.to,this.controlNodesEnabled=!0},s.prototype._disableControlNodes=function(){this.fromId=this.from.id,this.toId=this.to.id,this.fromId!=this.fromBackup.id?this.fromBackup.detachEdge(this):this.toId!=this.toBackup.id&&this.toBackup.detachEdge(this),this.fromBackup=null,this.toBackup=null,this.controlNodesEnabled=!1},s.prototype._getSelectedControlNode=function(t,e){var i=this.controlNodes.positions,s=Math.sqrt(Math.pow(t-i.from.x,2)+Math.pow(e-i.from.y,2)),o=Math.sqrt(Math.pow(t-i.to.x,2)+Math.pow(e-i.to.y,2));return 15>s?(this.connectedNode=this.from,this.from=this.controlNodes.from,this.controlNodes.from):15>o?(this.connectedNode=this.to,this.to=this.controlNodes.to,this.controlNodes.to):null},s.prototype._restoreControlNodes=function(){1==this.controlNodes.from.selected?(this.from=this.connectedNode,this.connectedNode=null,this.controlNodes.from.unselect()):1==this.controlNodes.to.selected&&(this.to=this.connectedNode,this.connectedNode=null,this.controlNodes.to.unselect())},s.prototype.getControlNodeFromPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!0,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.from.distanceToBorder(t,i+Math.PI),a=(n-r)/n;e={},e.x=a*this.from.x+(1-a)*this.to.x,e.y=a*this.from.y+(1-a)*this.to.y}return e},s.prototype.getControlNodeToPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!1,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.to.distanceToBorder(t,i),a=(n-r)/n;e={},e.x=(1-a)*this.from.x+a*this.to.x,e.y=(1-a)*this.from.y+a*this.to.y}return e},t.exports=s},function(t,e,i){function s(){this.clear(),this.defaultIndex=0,this.groupsArray=[],this.groupIndex=0,this.useDefaultGroups=!0}i(1);s.DEFAULT=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}},{border:"#990000",background:"#EE0000",highlight:{border:"#BB0000",background:"#FF3333"},hover:{border:"#BB0000",background:"#FF3333"}},{border:"#FF6000",background:"#FF6000",highlight:{border:"#FF6000",background:"#FF6000"},hover:{border:"#FF6000",background:"#FF6000"}},{border:"#97C2FC",background:"#2B7CE9",highlight:{border:"#D2E5FF",background:"#2B7CE9"},hover:{border:"#D2E5FF",background:"#2B7CE9"}},{border:"#399605",background:"#255C03",highlight:{border:"#399605",background:"#255C03"},hover:{border:"#399605",background:"#255C03"}},{border:"#B70054",background:"#FF007E",highlight:{border:"#B70054",background:"#FF007E"},hover:{border:"#B70054",background:"#FF007E"}},{border:"#AD85E4",background:"#7C29F0",highlight:{border:"#D3BDF0",background:"#7C29F0"},hover:{border:"#D3BDF0",background:"#7C29F0"}},{border:"#4557FA",background:"#000EA1",highlight:{border:"#6E6EFD",background:"#000EA1"},hover:{border:"#6E6EFD",background:"#000EA1"}},{border:"#FFC0CB",background:"#FD5A77",highlight:{border:"#FFD1D9",background:"#FD5A77"},hover:{border:"#FFD1D9",background:"#FD5A77"}},{border:"#C2FABC",background:"#74D66A",highlight:{border:"#E6FFE3",background:"#74D66A"},hover:{border:"#E6FFE3",background:"#74D66A"}},{border:"#EE0000",background:"#990000",highlight:{border:"#FF3333",background:"#BB0000"},hover:{border:"#FF3333",background:"#BB0000"}}],s.prototype.clear=function(){this.groups={},this.groups.length=function(){var t=0;for(var e in this)this.hasOwnProperty(e)&&t++;return t}},s.prototype.get=function(t){var e=this.groups[t];if(void 0==e)if(this.useDefaultGroups===!1&&this.groupsArray.length>0){var i=this.groupIndex%this.groupsArray.length;this.groupIndex++,e={},e.color=this.groups[this.groupsArray[i]],this.groups[t]=e}else{var i=this.defaultIndex%s.DEFAULT.length;this.defaultIndex++,e={},e.color=s.DEFAULT[i],this.groups[t]=e}return e},s.prototype.add=function(t,e){return this.groups[t]=e,this.groupsArray.push(t),e},t.exports=s},function(t){function e(){this.images={},this.imageBroken={},this.callback=void 0}e.prototype.setOnloadCallback=function(t){this.callback=t},e.prototype.load=function(t,e){var i=this.images[t];if(void 0===i){var s=this;i=new Image,i.onload=function(){0==this.width&&(document.body.appendChild(this),this.width=this.offsetWidth,this.height=this.offsetHeight,document.body.removeChild(this)),s.callback&&(s.images[t]=i,s.callback(this))},i.onerror=function(){void 0===e?(console.error("Could not load image:",t),delete this.src,s.callback&&s.callback(this)):s.imageBroken[t]===!0?this.src==e?(console.error("Could not load brokenImage:",e),delete this.src,s.callback&&s.callback(this)):(console.error("Could not load image:",t),this.src=e):(console.error("Could not load image:",t),this.src=e,s.imageBroken[t]=!0)},i.src=t}return i},t.exports=e},function(t,e,i){function s(t,e,i,s){var n=o.selectiveBridgeObject(["nodes"],s);this.options=n.nodes,this.selected=!1,this.hover=!1,this.edges=[],this.dynamicEdges=[],this.reroutedEdges={},this.id=void 0,this.allowedToMoveX=!1,this.allowedToMoveY=!1,this.xFixed=!1,this.yFixed=!1,this.horizontalAlignLeft=!0,this.verticalAlignTop=!0,this.baseRadiusValue=s.nodes.radius,this.radiusFixed=!1,this.level=-1,this.preassignedLevel=!1,this.hierarchyEnumerated=!1,this.labelDimensions={top:0,left:0,width:0,height:0,yLine:0},this.boundingBox={top:0,left:0,right:0,bottom:0},this.imagelist=e,this.grouplist=i,this.fx=0,this.fy=0,this.vx=0,this.vy=0,this.x=null,this.y=null,this.predefinedPosition=!1,this.previousState={vx:0,vy:0,x:0,y:0},this.damping=s.physics.damping,this.fixedData={x:null,y:null},this.setProperties(t,n),this.resetCluster(),this.clusterSession=0,this.clusterSizeWidthFactor=s.clustering.nodeScaling.width,this.clusterSizeHeightFactor=s.clustering.nodeScaling.height,this.clusterSizeRadiusFactor=s.clustering.nodeScaling.radius,this.maxNodeSizeIncrements=s.clustering.maxNodeSizeIncrements,this.growthIndicator=0,this.networkScaleInv=1,this.networkScale=1,this.canvasTopLeft={x:-300,y:-300},this.canvasBottomRight={x:300,y:300},this.parentEdgeId=null}var o=i(1);s.prototype.revertPosition=function(){this.x=this.previousState.x,this.y=this.previousState.y,this.vx=this.previousState.vx,this.vy=this.previousState.vy},s.prototype.resetCluster=function(){this.formationScale=void 0,this.clusterSize=1,this.containedNodes={},this.containedEdges={},this.clusterSessions=[]},s.prototype.attachEdge=function(t){-1==this.edges.indexOf(t)&&this.edges.push(t),-1==this.dynamicEdges.indexOf(t)&&this.dynamicEdges.push(t)},s.prototype.detachEdge=function(t){var e=this.edges.indexOf(t);-1!=e&&this.edges.splice(e,1),e=this.dynamicEdges.indexOf(t),-1!=e&&this.dynamicEdges.splice(e,1)},s.prototype.setProperties=function(t,e){if(t){var i=["borderWidth","borderWidthSelected","shape","image","brokenImage","radius","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","group","mass","fontDrawThreshold","scaleFontWithValue","fontSizeMaxVisible","customScalingFunction","iconFontFace","icon","iconColor","iconSize"];if(o.selectiveDeepExtend(i,this.options,t),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.originalLabel=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.x&&(this.x=t.x,this.predefinedPosition=!0),void 0!==t.y&&(this.y=t.y,this.predefinedPosition=!0),void 0!==t.value&&(this.value=t.value),void 0!==t.level&&(this.level=t.level,this.preassignedLevel=!0),void 0!==t.horizontalAlignLeft&&(this.horizontalAlignLeft=t.horizontalAlignLeft),void 0!==t.verticalAlignTop&&(this.verticalAlignTop=t.verticalAlignTop),void 0!==t.triggerFunction&&(this.triggerFunction=t.triggerFunction),void 0===this.id)throw"Node must have an id";if("number"==typeof t.group||"string"==typeof t.group&&""!=t.group){var s=this.grouplist.get(t.group);o.deepExtend(this.options,s),this.options.color=o.parseColor(this.options.color)}if(void 0!==t.radius&&(this.baseRadiusValue=this.options.radius),void 0!==t.color&&(this.options.color=o.parseColor(t.color)),void 0!==this.options.image&&""!=this.options.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage)}switch(void 0!==t.allowedToMoveX?(this.xFixed=!t.allowedToMoveX,this.allowedToMoveX=t.allowedToMoveX):void 0!==t.x&&0==this.allowedToMoveX&&(this.xFixed=!0),void 0!==t.allowedToMoveY?(this.yFixed=!t.allowedToMoveY,this.allowedToMoveY=t.allowedToMoveY):void 0!==t.y&&0==this.allowedToMoveY&&(this.yFixed=!0),this.radiusFixed=this.radiusFixed||void 0!==t.radius,("image"===this.options.shape||"circularImage"===this.options.shape)&&(this.options.radiusMin=e.nodes.widthMin,this.options.radiusMax=e.nodes.widthMax),this.options.shape){case"database":this.draw=this._drawDatabase,this.resize=this._resizeDatabase;break;case"box":this.draw=this._drawBox,this.resize=this._resizeBox;break;case"circle":this.draw=this._drawCircle,this.resize=this._resizeCircle;break;case"ellipse":this.draw=this._drawEllipse,this.resize=this._resizeEllipse;break;case"image":this.draw=this._drawImage,this.resize=this._resizeImage;break;case"circularImage":this.draw=this._drawCircularImage,this.resize=this._resizeCircularImage; +break;case"text":this.draw=this._drawText,this.resize=this._resizeText;break;case"dot":this.draw=this._drawDot,this.resize=this._resizeShape;break;case"square":this.draw=this._drawSquare,this.resize=this._resizeShape;break;case"triangle":this.draw=this._drawTriangle,this.resize=this._resizeShape;break;case"triangleDown":this.draw=this._drawTriangleDown,this.resize=this._resizeShape;break;case"star":this.draw=this._drawStar,this.resize=this._resizeShape;break;case"icon":this.draw=this._drawIcon,this.resize=this._resizeIcon;break;default:this.draw=this._drawEllipse,this.resize=this._resizeEllipse}this._reset()}},s.prototype.select=function(){this.selected=!0,this._reset()},s.prototype.unselect=function(){this.selected=!1,this._reset()},s.prototype.clearSizeCache=function(){this._reset()},s.prototype._reset=function(){this.width=void 0,this.height=void 0},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.distanceToBorder=function(t,e){var i=1;switch(this.width||this.resize(t),this.options.shape){case"circle":case"dot":return this.options.radius+i;case"ellipse":var s=this.width/2,o=this.height/2,n=Math.sin(e)*s,r=Math.cos(e)*o;return s*o/Math.sqrt(n*n+r*r);case"box":case"image":case"text":default:return this.width?Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i:0}},s.prototype._setForce=function(t,e){this.fx=t,this.fy=e},s.prototype._addForce=function(t,e){this.fx+=t,this.fy+=e},s.prototype.storeState=function(){this.previousState.x=this.x,this.previousState.y=this.y,this.previousState.vx=this.vx,this.previousState.vy=this.vy},s.prototype.discreteStep=function(t){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var e=this.damping*this.vx,i=(this.fx-e)/this.options.mass;this.vx+=i*t,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var s=this.damping*this.vy,o=(this.fy-s)/this.options.mass;this.vy+=o*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.options.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var o=this.damping*this.vy,n=(this.fy-o)/this.options.mass;this.vy+=n*t,this.vy=Math.abs(this.vy)>e?this.vy>0?e:-e:this.vy,this.y+=this.vy*t}},s.prototype.isFixed=function(){return this.xFixed&&this.yFixed},s.prototype.isMoving=function(t){var e=Math.sqrt(Math.pow(this.vx,2)+Math.pow(this.vy,2));return e>t},s.prototype.isSelected=function(){return this.selected},s.prototype.getValue=function(){return this.value},s.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},s.prototype.setValueRange=function(t,e,i){if(!this.radiusFixed&&void 0!==this.value){var s=this.options.customScalingFunction(t,e,i,this.value),o=this.options.radiusMax-this.options.radiusMin;if(1==this.options.scaleFontWithValue){var n=this.options.fontSizeMax-this.options.fontSizeMin;this.options.fontSize=this.options.fontSizeMin+s*n}this.options.radius=this.options.radiusMin+s*o}this.baseRadiusValue=this.options.radius},s.prototype.draw=function(){throw"Draw method not initialized for node"},s.prototype.resize=function(){throw"Resize method not initialized for node"},s.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},s.prototype._resizeImage=function(){if(!this.width||!this.height){var t,e;if(this.value){this.options.radius=this.baseRadiusValue;var i=this.imageObj.height/this.imageObj.width;void 0!==i?(t=this.options.radius||this.imageObj.width,e=this.options.radius*i||this.imageObj.height):(t=0,e=0)}else t=this.imageObj.width,e=this.imageObj.height;this.width=t,this.height=e,this.growthIndicator=0,this.width>0&&this.height>0&&(this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t)}},s.prototype._drawImageAtPosition=function(t){if(0!=this.imageObj.width){if(this.clusterSize>1){var e=this.clusterSize>1?10:0;e*=this.networkScaleInv,e=Math.min(.2*this.width,e),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-e,this.top-e,this.width+2*e,this.height+2*e)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height)}},s.prototype._drawImageLabel=function(t){var e,i=0;if(this.height){i=this.height/2;var s=this.getTextSize(t);s.lineCount>=1&&(i+=s.height/2,i+=3)}e=this.y+i,this._label(t,this.label,this.x,e,void 0)},s.prototype._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawImageAtPosition(t),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeCircularImage=function(t){if(this.imageObj.src&&this.imageObj.width&&this.imageObj.height)this._swapToImageResizeWhenImageLoaded&&(this.width=0,this.height=0,delete this._swapToImageResizeWhenImageLoaded),this._resizeImage(t);else if(!this.width){var e=2*this.options.radius;this.width=e,this.height=e,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*e,this._swapToImageResizeWhenImageLoaded=!0}},s.prototype._drawCircularImage=function(t){this._resizeCircularImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=this.left+this.width/2,i=this.top+this.height/2,s=Math.abs(this.height/2);this._drawRawCircle(t,e,i,s),t.save(),t.circle(this.x,this.y,s),t.stroke(),t.clip(),this._drawImageAtPosition(t),t.restore(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeBox=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawBox=function(t){this._resizeBox(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.roundRect(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth,this.options.radius),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeDatabase=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=i.width+2*e;this.width=s,this.height=s,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-s}},s.prototype._drawDatabase=function(t){this._resizeDatabase(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.database(this.x-this.width/2-2*t.lineWidth,this.y-.5*this.height-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.database(this.x-this.width/2,this.y-.5*this.height,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeCircle=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=Math.max(i.width,i.height)+2*e;this.options.radius=s/2,this.width=s,this.height=s,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*s}},s.prototype._drawRawCircle=function(t,e,i,s){var o=2.5,n=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.circle(e,i,s+2*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.circle(this.x,this.y,s),t.fill(),t.stroke()},s.prototype._drawCircle=function(t){this._resizeCircle(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawRawCircle(t,this.x,this.y,this.options.radius),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._label(t,this.label,this.x,this.y)},s.prototype._resizeEllipse=function(t){if(!this.width){var e=this.getTextSize(t);this.width=1.5*e.width,this.height=2*e.height,this.width1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.ellipse(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.ellipse(this.left,this.top,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._drawDot=function(t){this._drawShape(t,"circle")},s.prototype._drawTriangle=function(t){this._drawShape(t,"triangle")},s.prototype._drawTriangleDown=function(t){this._drawShape(t,"triangleDown")},s.prototype._drawSquare=function(t){this._drawShape(t,"square")},s.prototype._drawStar=function(t){this._drawShape(t,"star")},s.prototype._resizeShape=function(){if(!this.width){this.options.radius=this.baseRadiusValue;var t=2*this.options.radius;this.width=t,this.height=t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t}},s.prototype._drawShape=function(t,e){this._resizeShape(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var i=2.5,s=this.options.borderWidth,o=this.options.borderWidthSelected||2*this.options.borderWidth,n=2;switch(e){case"dot":n=2;break;case"square":n=2;break;case"triangle":n=3;break;case"triangleDown":n=3;break;case"star":n=4}t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t[e](this.x,this.y,this.options.radius+n*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t[e](this.x,this.y,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this.label&&(this._label(t,this.label,this.x,this.y+this.height/2,void 0,"hanging",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height))},s.prototype._resizeText=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawText=function(t){this._resizeText(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._label(t,this.label,this.x,this.y),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height},s.prototype._resizeIcon=function(){if(!this.width){var t=5,e={width:Number(this.options.iconSize),height:Number(this.options.iconSize)};this.width=e.width+2*t,this.height=e.height+2*t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(e.width+2*t)}},s.prototype._drawIcon=function(t){if(this._resizeIcon(t),this.options.iconSize=this.options.iconSize||50,this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._icon(t),this.boundingBox.top=this.y-this.options.iconSize/2,this.boundingBox.left=this.x-this.options.iconSize/2,this.boundingBox.right=this.x+this.options.iconSize/2,this.boundingBox.bottom=this.y+this.options.iconSize/2,this.label){var e=5;this._label(t,this.label,this.x,this.y+this.height/2+e,"top",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)}},s.prototype._icon=function(t){var e=Number(this.options.iconSize)*this.networkScale;if(this.options.icon&&e>this.options.fontDrawThreshold-1){var i=Number(this.options.iconSize);t.font=(this.selected?"bold ":"")+i+"px "+this.options.iconFontFace,t.fillStyle=this.options.iconColor||"black",t.textAlign="center",t.textBaseline="middle",t.fillText(this.options.icon,this.x,this.y)}},s.prototype._label=function(t,e,i,s,n,r,a){var h=Number(this.options.fontSize)*this.networkScale;if(e&&h>=this.options.fontDrawThreshold-1){var d=Number(this.options.fontSize);h>=this.options.fontSizeMaxVisible&&(d=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv);var l=this.options.fontColor||"#000000",c=this.options.fontStrokeColor;if(h<=this.options.fontDrawThreshold){var p=Math.max(0,Math.min(1,1-(this.options.fontDrawThreshold-h)));l=o.overrideOpacity(l,p),c=o.overrideOpacity(c,p)}t.font=(this.selected?"bold ":"")+d+"px "+this.options.fontFace;var u=e.split("\n"),m=u.length,f=s+(1-m)/2*d;1==a&&(f=s+(1-m)/(2*d));for(var g=t.measureText(u[0]).width,v=1;m>v;v++){var y=t.measureText(u[v]).width;g=y>g?y:g}var b=d*m,_=i-g/2,x=s-b/2;"hanging"==r&&(x+=.5*d,x+=4,f+=4),this.labelDimensions={top:x,left:_,width:g,height:b,yLine:f},void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(_,x,g,b)),t.fillStyle=l,t.textAlign=n||"center",t.textBaseline=r||"middle",this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=c,t.lineJoin="round");for(var v=0;m>v;v++)this.options.fontStrokeWidth&&t.strokeText(u[v],i,f),t.fillText(u[v],i,f),f+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){var e=Number(this.options.fontSize);e*this.networkScale>this.options.fontSizeMaxVisible&&(e=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv),t.font=(this.selected?"bold ":"")+e+"px "+this.options.fontFace;for(var i=this.label.split("\n"),s=(e+4)*i.length,o=0,n=0,r=i.length;r>n;n++)o=Math.max(o,t.measureText(i[n]).width);return{width:o,height:s,lineCount:i.length}}return{width:0,height:0,lineCount:0}},s.prototype.inArea=function(){return void 0!==this.width?this.x+this.width*this.networkScaleInv>=this.canvasTopLeft.x&&this.x-this.width*this.networkScaleInv=this.canvasTopLeft.y&&this.y-this.height*this.networkScaleInv=this.canvasTopLeft.x&&this.x=this.canvasTopLeft.y&&this.ys&&(n=s-e-this.padding),no&&(r=o-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){o=r.nodes[i];break}for(o||(o={id:e.id},t.node&&(o.attr=a(o.attr,t.node))),i=n.length-1;i>=0;i--){var h=n[i];h.nodes||(h.nodes=[]),-1==h.nodes.indexOf(o)&&h.nodes.push(o)}e.attr&&(o.attr=a(o.attr,e.attr))}function l(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=a({},t.edge);e.attr=a(i,e.attr)}}function c(t,e,i,s,o){var n={from:e,to:i,type:s};return t.edge&&(n.attr=a({},t.edge)),n.attr=a(n.attr||{},o),n}function p(){for(N=S.NULL,k="";" "==E||" "==E||"\n"==E||"\r"==E;)o();do{var t=!1;if("#"==E){for(var e=O-1;" "==T.charAt(e)||" "==T.charAt(e);)e--;if("\n"==T.charAt(e)||""==T.charAt(e)){for(;""!=E&&"\n"!=E;)o();t=!0}}if("/"==E&&"/"==n()){for(;""!=E&&"\n"!=E;)o();t=!0}if("/"==E&&"*"==n()){for(;""!=E;){if("*"==E&&"/"==n()){o(),o();break}o()}t=!0}for(;" "==E||" "==E||"\n"==E||"\r"==E;)o()}while(t);if(""==E)return void(N=S.DELIMITER);var i=E+n();if(C[i])return N=S.DELIMITER,k=i,o(),void o();if(C[E])return N=S.DELIMITER,k=E,void o();if(r(E)||"-"==E){for(k+=E,o();r(E);)k+=E,o();return"false"==k?k=!1:"true"==k?k=!0:isNaN(Number(k))||(k=Number(k)),void(N=S.IDENTIFIER)}if('"'==E){for(o();""!=E&&('"'!=E||'"'==E&&'"'==n());)k+=E,'"'==E&&o(),o();if('"'!=E)throw x('End of string " expected');return o(),void(N=S.IDENTIFIER)}for(N=S.UNKNOWN;""!=E;)k+=E,o();throw new SyntaxError('Syntax error in part "'+w(k,30)+'"')}function u(){var t={};if(s(),p(),"strict"==k&&(t.strict=!0,p()),("graph"==k||"digraph"==k)&&(t.type=k,p()),N==S.IDENTIFIER&&(t.id=k,p()),"{"!=k)throw x("Angle bracket { expected");if(p(),m(t),"}"!=k)throw x("Angle bracket } expected");if(p(),""!==k)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function m(t){for(;""!==k&&"}"!=k;)f(t),";"==k&&p()}function f(t){var e=g(t);if(e)return void b(t,e);var i=v(t);if(!i){if(N!=S.IDENTIFIER)throw x("Identifier expected");var s=k;if(p(),"="==k){if(p(),N!=S.IDENTIFIER)throw x("Identifier expected");t[s]=k,p()}else y(t,s)}}function g(t){var e=null;if("subgraph"==k&&(e={},e.type="subgraph",p(),N==S.IDENTIFIER&&(e.id=k,p())),"{"==k){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,m(e),"}"!=k)throw x("Angle bracket } expected");p(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function v(t){return"node"==k?(p(),t.node=_(),"node"):"edge"==k?(p(),t.edge=_(),"edge"):"graph"==k?(p(),t.graph=_(),"graph"):null}function y(t,e){var i={id:e},s=_();s&&(i.attr=s),d(t,i),b(t,e)}function b(t,e){for(;"->"==k||"--"==k;){var i,s=k;p();var o=g(t);if(o)i=o;else{if(N!=S.IDENTIFIER)throw x("Identifier or subgraph expected");i=k,d(t,{id:i}),p()}var n=_(),r=c(t,e,i,s,n);l(t,r),e=i}}function _(){for(var t=null;"["==k;){for(p(),t={};""!==k&&"]"!=k;){if(N!=S.IDENTIFIER)throw x("Attribute name expected");var e=k;if(p(),"="!=k)throw x("Equal sign = expected");if(p(),N!=S.IDENTIFIER)throw x("Attribute value expected");var i=k;h(t,e,i),p(),","==k&&p()}if("]"!=k)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+w(k,30)+'" (char '+O+")")}function w(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function D(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function M(t){var e=i(t),s={nodes:[],edges:[],options:{}};if(e.nodes&&e.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};a(e,t.attr),e.image&&(e.shape="image"),s.nodes.push(e)}),e.edges){var o=function(t){var e={from:t.from,to:t.to};return a(e,t.attr),e.style="->"==t.type?"arrow":"line",e};e.edges.forEach(function(t){var e,i;e=t.from instanceof Object?t.from.nodes:{id:t.from},i=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var e=o(t);s.edges.push(e)}),D(e,i,function(e,i){var n=c(s,e.id,i.id,t.type,t.attr),r=o(n);s.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var e=o(t);s.edges.push(e)})})}return e.attr&&(s.options=e.attr),s}var S={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},C={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},T="",O=0,E="",k="",N=S.NULL,I=/[a-zA-Z_0-9.:#]/;e.parseDOT=i,e.DOTToGraph=M},function(t,e){function i(t,e){var i=[],s=[];this.options={edges:{inheritColor:!0},nodes:{allowedToMove:!1,parseColor:!1}},void 0!==e&&(this.options.nodes.allowedToMove=e.allowedToMove|!1,this.options.nodes.parseColor=e.parseColor|!1,this.options.edges.inheritColor=e.inheritColor|!0);for(var o=t.edges,n=t.nodes,r=0;r0?Math.max.apply(null,i)+1:1):(this.customBarIds.forEach(function(t){if(t===e)throw new Error("Custom time ID already exists")}),o=e),this.customBarIds.push(o),s=new l(this.body,{showCustomTime:!0,time:n,id:o}),this.components.push(s),this.redraw(),o},s.prototype.removeCustomTime=function(t){var e=this;this.components.forEach(function(i,s,o){i instanceof l&&i.options.id===t&&0!==i.options.id&&(e.customBarIds.splice(e.customBarIds.indexOf(t),1),o.splice(s,1),i.destroy())})},s.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},s.prototype.clear=function(t){(!t||t.items)&&this.setItems(null),(!t||t.groups)&&this.setGroups(null),(!t||t.options)&&(this.components.forEach(function(t){t.setOptions(t.defaultOptions)}),this.setOptions(this.defaultOptions))},s.prototype.fit=function(t){var e=this._getDataRange();if(null!==e.start||null!==e.end){var i=t&&void 0!==t.animate?t.animate:!0;this.range.setRange(e.start,e.end,i)}},s.prototype._getDataRange=function(){var t=this.getItemRange(),e=t.min,i=t.max;if(null!=e&&null!=i){var s=i.valueOf()-e.valueOf();0>=s&&(s=864e5),e=new Date(e.valueOf()-.05*s),i=new Date(i.valueOf()+.05*s)}return{start:e,end:i}},s.prototype.setWindow=function(t,e,i){var s;if(1==arguments.length){var o=arguments[0];s=void 0!==o.animate?o.animate:!0,this.range.setRange(o.start,o.end,s)}else s=i&&void 0!==i.animate?i.animate:!0,this.range.setRange(t,e,s)},s.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,s=r.convert(t,"Date").valueOf(),o=s-i/2,n=s+i/2,a=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(o,n,a)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){this._redraw()},s.prototype._redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){d.updateHiddenDates(this.body,this.options.hiddenDates),"top"==e.orientation?(r.addClassName(s.root,"top"),r.removeClassName(s.root,"bottom")):(r.removeClassName(s.root,"top"),r.addClassName(s.root,"bottom")),s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;0===s.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===s.root.clientHeight&&(n=o),i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),h=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,h+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var l=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=l,i.leftContainer.height=l,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var c=i.root.width-i.left.width-i.right.width-n;i.center.width=c,i.centerContainer.width=c,i.top.width=c,i.bottom.width=c,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+i.border.left+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var p=this.props.scrollTop;"bottom"==e.orientation&&(p+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=p+"px",s.left.style.left="0",s.left.style.top=p+"px",s.right.style.left="0",s.right.style.top=p+"px";var u=0==this.props.scrollTop?"hidden":"",m=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";if(s.shadowTop.style.visibility=u,s.shadowBottom.style.visibility=m,s.shadowTopLeft.style.visibility=u,s.shadowBottomLeft.style.visibility=m,s.shadowTopRight.style.visibility=u,s.shadowBottomRight.style.visibility=m,this.components.forEach(function(e){t=e.redraw()||t}),t){var f=3;this.redrawCount0&&(this.props.scrollTop=0),this.props.scrollTopt[s].y?t[s].y:e,i=i0){var r,a,h=Number(i.svg.style.height.replace("px",""));if(r=o.getSVGElement("path",i.svgElements,i.svg),r.setAttributeNS(null,"class",e.className),void 0!==e.style&&r.setAttributeNS(null,"style",e.style),a=1==e.options.catmullRom.enabled?s._catmullRom(t,e):s._linear(t),1==e.options.shaded.enabled){var d,l=o.getSVGElement("path",i.svgElements,i.svg);d="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+a+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+h+" "+a+"L"+t[t.length-1].x+","+h,l.setAttributeNS(null,"class",e.className+" fill"),void 0!==e.options.shaded.style&&l.setAttributeNS(null,"style",e.options.shaded.style),l.setAttributeNS(null,"d",d)}r.setAttributeNS(null,"d","M"+a),1==e.options.drawPoints.enabled&&n.draw(t,e,i)}},s._catmullRomUniform=function(t){for(var e,i,s,o,n,r,a=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",h=1/6,d=t.length,l=0;d-1>l;l++)e=0==l?t[0]:t[l-1],i=t[l],s=t[l+1],o=d>l+2?t[l+2]:s,n={x:(-e.x+6*i.x+s.x)*h,y:(-e.y+6*i.y+s.y)*h},r={x:(i.x+6*s.x-o.x)*h,y:(i.y+6*s.y-o.y)*h},a+="C"+n.x+","+n.y+" "+r.x+","+r.y+" "+s.x+","+s.y+" ";return a},s._catmullRom=function(t,e){var i=e.options.catmullRom.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var s,o,n,r,a,h,d,l,c,p,u,m,f,g,v,y,b,_,x,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",D=t.length,M=0;D-1>M;M++)s=0==M?t[0]:t[M-1],o=t[M],n=t[M+1],r=D>M+2?t[M+2]:n,d=Math.sqrt(Math.pow(s.x-o.x,2)+Math.pow(s.y-o.y,2)),l=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),c=Math.sqrt(Math.pow(n.x-r.x,2)+Math.pow(n.y-r.y,2)),g=Math.pow(c,i),y=Math.pow(c,2*i),v=Math.pow(l,i),b=Math.pow(l,2*i),x=Math.pow(d,i),_=Math.pow(d,2*i),p=2*_+3*x*v+b,u=2*y+3*g*v+b,m=3*x*(x+v),m>0&&(m=1/m),f=3*g*(g+v),f>0&&(f=1/f),a={x:(-b*s.x+p*o.x+_*n.x)*m,y:(-b*s.y+p*o.y+_*n.y)*m},h={x:(y*o.x+u*n.x-b*r.x)*f,y:(y*o.y+u*n.y-b*r.y)*f},0==a.x&&0==a.y&&(a=o),0==h.x&&0==h.y&&(h=n),w+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+n.x+","+n.y+" ";return w},s._linear=function(t){for(var e="",i=0;it[s].y?t[s].y:e,i=i0&&(n=Math.min(n,Math.abs(c[d-1].x-r))),a=s._getSafeDrawData(n,h,m);else{var g=d+(p[r].amount-p[r].resolved),v=d-(p[r].resolved+1);g0&&(n=Math.min(n,Math.abs(c[v].x-r))),a=s._getSafeDrawData(n,h,m),p[r].resolved+=1,"stack"==h.options.barChart.handleOverlap?(f=p[r].accumulated,p[r].accumulated+=h.zeroPosition-c[d].y):"sideBySide"==h.options.barChart.handleOverlap&&(a.width=a.width/p[r].amount,a.offset+=p[r].resolved*a.width-.5*a.width*(p[r].amount+1),"left"==h.options.barChart.align?a.offset-=.5*a.width:"right"==h.options.barChart.align&&(a.offset+=.5*a.width))}o.drawBar(c[d].x+a.offset,c[d].y-f,a.width,h.zeroPosition-c[d].y,h.className+" bar",i.svgElements,i.svg),1==h.options.drawPoints.enabled&&o.drawPoint(c[d].x+a.offset,c[d].y,h,i.svgElements,i.svg)}},s._getDataIntersections=function(t,e){for(var i,s=0;s0&&(i=Math.min(i,Math.abs(e[s-1].x-e[s].x))),0==i&&(void 0===t[e[s].x]&&(t[e[s].x]={amount:0,resolved:0,accumulated:0}),t[e[s].x].amount+=1)},s._getSafeDrawData=function(t,e,i){var s,o;return t0?(s=i>t?i:t,o=0,"left"==e.options.barChart.align?o-=.5*t:"right"==e.options.barChart.align&&(o+=.5*t)):(s=e.options.barChart.width,o=0,"left"==e.options.barChart.align?o-=.5*e.options.barChart.width:"right"==e.options.barChart.align&&(o+=.5*e.options.barChart.width)),{width:s,offset:o}},s.getStackedBarYRange=function(t,e,i,o,n){if(t.length>0){t.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x});var r={};s._getDataIntersections(r,t),e[o]=s._getStackedBarYRange(r,t),e[o].yAxisOrientation=n,i.push(o)}},s._getStackedBarYRange=function(t,e){for(var i,s=e[0].y,o=e[0].y,n=0;ne[n].y?e[n].y:s,o=ot[r].accumulated?t[r].accumulated:s,o=ot[s].y?t[s].y:e,i=is;s++){var o=s%2===0?1.3*i:.5*i;this.lineTo(t+o*Math.sin(2*s*Math.PI/10),e-o*Math.cos(2*s*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,s,o){var n=Math.PI/180;0>i-2*o&&(o=i/2),0>s-2*o&&(o=s/2),this.beginPath(),this.moveTo(t+o,e),this.lineTo(t+i-o,e),this.arc(t+i-o,e+o,o,270*n,360*n,!1),this.lineTo(t+i,e+s-o),this.arc(t+i-o,e+s-o,o,0,90*n,!1),this.lineTo(t+o,e+s),this.arc(t+o,e+s-o,o,90*n,180*n,!1),this.lineTo(t,e+o),this.arc(t+o,e+o,o,180*n,270*n,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,s){var o=.5522848,n=i/2*o,r=s/2*o,a=t+i,h=e+s,d=t+i/2,l=e+s/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-n,e,d,e),this.bezierCurveTo(d+n,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+n,h,d,h),this.bezierCurveTo(d-n,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,s){var o=1/3,n=i,r=s*o,a=.5522848,h=n/2*a,d=r/2*a,l=t+n,c=e+r,p=t+n/2,u=e+r/2,m=e+(s-r/2),f=e+s;this.beginPath(),this.moveTo(l,u),this.bezierCurveTo(l,u+d,p+h,c,p,c),this.bezierCurveTo(p-h,c,t,u+d,t,u),this.bezierCurveTo(t,u-d,p-h,e,p,e),this.bezierCurveTo(p+h,e,l,u-d,l,u),this.lineTo(l,m),this.bezierCurveTo(l,m+d,p+h,f,p,f),this.bezierCurveTo(p-h,f,t,m+d,t,m),this.lineTo(t,u)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,s){var o=t-s*Math.cos(i),n=e-s*Math.sin(i),r=t-.9*s*Math.cos(i),a=e-.9*s*Math.sin(i),h=o+s/3*Math.cos(i+.5*Math.PI),d=n+s/3*Math.sin(i+.5*Math.PI),l=o+s/3*Math.cos(i-.5*Math.PI),c=n+s/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,s,o){o||(o=[10,5]),0==p&&(p=.001);var n=o.length;this.moveTo(t,e);for(var r=i-t,a=s-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0;d>=.1;){var p=o[l++%n];p>d&&(p=d);var u=Math.sqrt(p*p/(1+h*h));0>r&&(u=-u),t+=u,e+=h*u,this[c?"lineTo":"moveTo"](t,e),d-=p,c=!c}})},function(t){function e(t){return t?i(t):void 0}function i(t){for(var i in e.prototype)t[i]=e.prototype[i];return t}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},e.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var s,o=0;os;++s)i[s].apply(this,e)}return this},e.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},e.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t,e){var i,s,o;!function(n,r){s=[],i=r,o="function"==typeof i?i.apply(e,s):i,!(void 0!==o&&(t.exports=o))}(this,function(){function t(t){var e,i=t&&t.preventDefault||!1,s=t&&t.container||window,o={},n={keydown:{},keyup:{}},r={};for(e=97;122>=e;e++)r[String.fromCharCode(e)]={code:65+(e-97),shift:!1};for(e=65;90>=e;e++)r[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;9>=e;e++)r[""+e]={code:48+e,shift:!1};for(e=1;12>=e;e++)r["F"+e]={code:111+e,shift:!1};for(e=0;9>=e;e++)r["num"+e]={code:96+e,shift:!1};r["num*"]={code:106,shift:!1},r["num+"]={code:107,shift:!1},r["num-"]={code:109,shift:!1},r["num/"]={code:111,shift:!1},r["num."]={code:110,shift:!1},r.left={code:37,shift:!1},r.up={code:38,shift:!1},r.right={code:39,shift:!1},r.down={code:40,shift:!1},r.space={code:32,shift:!1},r.enter={code:13,shift:!1},r.shift={code:16,shift:void 0},r.esc={code:27,shift:!1},r.backspace={code:8,shift:!1},r.tab={code:9,shift:!1},r.ctrl={code:17,shift:!1},r.alt={code:18,shift:!1},r["delete"]={code:46,shift:!1},r.pageup={code:33,shift:!1},r.pagedown={code:34,shift:!1},r["="]={code:187,shift:!1},r["-"]={code:189,shift:!1},r["]"]={code:221,shift:!1},r["["]={code:219,shift:!1};var a=function(t){d(t,"keydown")},h=function(t){d(t,"keyup")},d=function(t,e){if(void 0!==n[e][t.keyCode]){for(var s=n[e][t.keyCode],o=0;os;s++)if(e.call(i,t[s],s,t)===!1)return}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,o=t.length;o>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],o=[],n=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(x.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),o.push(t.clientY)}),{pageX:(n.apply(Math,e)+r.apply(Math,e))/2,pageY:(n.apply(Math,i)+r.apply(Math,i))/2,clientX:(n.apply(Math,s)+r.apply(Math,s))/2,clientY:(n.apply(Math,o)+r.apply(Math,o))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY);return i>=s?t.clientX-e.clientX>0?l:p:t.clientY-e.clientY>0?c:d},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var o=["","Webkit","Moz","O","ms"];e=x.toCamelCase(e);for(var n=0;n0&&this.started&&(r=v),this.started=!0;var d=this.collectEventData(i,r,o,t);return e!=y&&s.call(M,d),a&&(d.changedLength=h,d.eventType=a,s.call(M,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(M,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?o.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[g]=t[0],h[v]=t[1],h[y]=t[2],h},getTouchList:function(t,e){if(a.HAS_POINTEREVENTS)return D.getTouchList();if(t.touches){if(e==v)return t.touches;var i=[],s=[].concat(x.toArray(t.touches),x.toArray(t.changedTouches)),o=[];return x.each(s,function(t){x.inArray(i,t.identifier)===!1&&o.push(t),i.push(t.identifier)}),o}return t.identifier=1,[t]},collectEventData:function(t,e,i,s){var o=m;return x.inStr(s.type,"mouse")||D.matchType(u,s)?o=u:D.matchType(f,s)&&(o=f),{center:x.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:o,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return M.stopDetect()}}}},D=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return x.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[u]=i===(e.MSPOINTER_TYPE_MOUSE||u),s[m]=i===(e.MSPOINTER_TYPE_TOUCH||m),s[f]=i===(e.MSPOINTER_TYPE_PEN||f),s[t]},reset:function(){this.pointers={}}},M=a.detection={gestures:[],current:null,previous:null,stopped:!1,startDetect:function(t,e){this.current||(this.stopped=!1,this.current={inst:t,startEvent:x.extend({},e),lastEvent:!1,lastCalcEvent:!1,futureCalcEvent:!1,lastCalcData:{},name:""},this.detect(e))},detect:function(t){if(this.current&&!this.stopped){t=this.extendEventData(t);var e=this.current.inst,i=e.options;return x.each(this.gestures,function(s){!this.stopped&&e.enabled&&i[s.name]&&s.handler.call(s,t,e)},this),this.current&&(this.current.lastEvent=t),t.eventType==y&&this.stopDetect(),t}},stopDetect:function(){this.previous=x.extend({},this.current),this.current=null,this.stopped=!0},getCalculatedData:function(t,e,i,s,o){var n=this.current,r=!1,h=n.lastCalcEvent,d=n.lastCalcData;h&&t.timeStamp-h.timeStamp>a.CALCULATE_INTERVAL&&(e=h.center,i=t.timeStamp-h.timeStamp,s=t.center.clientX-h.center.clientX,o=t.center.clientY-h.center.clientY,r=!0),(t.eventType==_||t.eventType==b)&&(n.futureCalcEvent=t),(!n.lastCalcEvent||r)&&(d.velocity=x.getVelocity(i,s,o),d.angle=x.getAngle(e,t.center),d.direction=x.getDirection(e,t.center),n.lastCalcEvent=n.futureCalcEvent||t,n.futureCalcEvent=t),t.velocityX=d.velocity.x,t.velocityY=d.velocity.y,t.interimAngle=d.angle,t.interimDirection=d.direction},extendEventData:function(t){var e=this.current,i=e.startEvent,s=e.lastEvent||i;(t.eventType==_||t.eventType==b)&&(i.touches=[],x.each(t.touches,function(t){i.touches.push({clientX:t.clientX,clientY:t.clientY})}));var o=t.timeStamp-i.timeStamp,n=t.center.clientX-i.center.clientX,r=t.center.clientY-i.center.clientY;return this.getCalculatedData(t,s.center,o,n,r),x.extend(t,{startEvent:i,deltaTime:o,deltaX:n,deltaY:r,distance:x.getDistance(i.center,t.center),angle:x.getAngle(i.center,t.center),direction:x.getDirection(i.center,t.center),scale:x.getScale(i.touches,t.touches),rotation:x.getRotation(i.touches,t.touches)}),t},register:function(t){var e=t.defaults||{};return e[t.name]===n&&(e[t.name]=!0),x.extend(a.defaults,e,!0),t.index=t.index||1e3,this.gestures.push(t),this.gestures.sort(function(t,e){return t.indexe.index?1:0}),this.gestures}};a.Instance=function(t,e){var i=this;r(),this.element=t,this.enabled=!0,x.each(e,function(t,i){delete e[i],e[x.toCamelCase(i)]=t}),this.options=x.extend(x.extend({},a.defaults),e||{}),this.options.behavior&&x.toggleBehavior(this.element,this.options.behavior,!0),this.eventStartHandler=w.onTouch(t,g,function(t){i.enabled&&t.eventType==g?M.startDetect(i,t):t.eventType==_&&M.detect(t)}),this.eventHandlers=[]},a.Instance.prototype={on:function(t,e){var i=this;return w.on(i.element,t,e,function(t){i.eventHandlers.push({gesture:t,handler:e})}),i},off:function(t,e){var i=this;return w.off(i.element,t,e,function(t){var s=x.inArray({gesture:t,handler:e});s!==!1&&i.eventHandlers.splice(s,1)}),i},trigger:function(t,e){e||(e={});var i=a.DOCUMENT.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e;var s=this.element;return x.hasParent(e.target,s)&&(s=e.target),s.dispatchEvent(i),this},enable:function(t){return this.enabled=t,this},dispose:function(){var t,e;for(x.toggleBehavior(this.element,this.options.behavior,!1),t=-1;e=this.eventHandlers[++t];)x.off(this.element,e.gesture,e.handler);return this.eventHandlers=[],w.off(this.element,h[g],this.eventStartHandler),null}},function(t){function e(e,s){var o=M.current;if(!(s.options.dragMaxTouches>0&&e.touches.length>s.options.dragMaxTouches))switch(e.eventType){case g:i=!1;break;case v:if(e.distance0)){var r=Math.abs(s.options.dragMinDistance/e.distance);n.pageX+=e.deltaX*r,n.pageY+=e.deltaY*r,n.clientX+=e.deltaX*r,n.clientY+=e.deltaY*r,e=M.extendEventData(e)}(o.lastEvent.dragLockToAxis||s.options.dragLockToAxis&&s.options.dragLockMinDistance<=e.distance)&&(e.dragLockToAxis=!0);var a=o.lastEvent.direction;e.dragLockToAxis&&a!==e.direction&&(e.direction=x.isVertical(a)?e.deltaY<0?c:d:e.deltaX<0?l:p),i||(s.trigger(t+"start",e),i=!0),s.trigger(t,e),s.trigger(t+e.direction,e);var h=x.isVertical(e.direction);(s.options.dragBlockVertical&&h||s.options.dragBlockHorizontal&&!h)&&e.preventDefault();break;case b:i&&e.changedLength<=s.options.dragMaxTouches&&(s.trigger(t+"end",e),i=!1);break;case y:i=!1}}var i=!1;a.gestures.Drag={name:t,index:50,handler:e,defaults:{dragMinDistance:10,dragDistanceCorrection:!0,dragMaxTouches:1,dragBlockHorizontal:!1,dragBlockVertical:!1,dragLockToAxis:!1,dragLockMinDistance:25}}}("drag"),a.gestures.Gesture={name:"gesture",index:1337,handler:function(t,e){e.trigger(this.name,t)}},function(t){function e(e,s){var o=s.options,n=M.current;switch(e.eventType){case g:clearTimeout(i),n.name=t,i=setTimeout(function(){n&&n.name==t&&s.trigger(t,e)},o.holdTimeout);break;case v:e.distance>o.holdThreshold&&clearTimeout(i);break;case b:clearTimeout(i)}}var i;a.gestures.Hold={name:t,index:10,defaults:{holdTimeout:500,holdThreshold:2},handler:e}}("hold"),a.gestures.Release={name:"release",index:1/0,handler:function(t,e){t.eventType==b&&e.trigger(this.name,t)}},a.gestures.Swipe={name:"swipe",index:40,defaults:{swipeMinTouches:1,swipeMaxTouches:1,swipeVelocityX:.6,swipeVelocityY:.6},handler:function(t,e){if(t.eventType==b){var i=t.touches.length,s=e.options;if(is.swipeMaxTouches)return;(t.velocityX>s.swipeVelocityX||t.velocityY>s.swipeVelocityY)&&(e.trigger(this.name,t),e.trigger(this.name+t.direction,t))}}},function(t){function e(e,s){var o,n,r=s.options,a=M.current,h=M.previous;switch(e.eventType){case g:i=!1;break;case v:i=i||e.distance>r.tapMaxDistance;break;case y:!x.inStr(e.srcEvent.type,"cancel")&&e.deltaTimes.options.transformMinRotation&&s.trigger("rotate",e),o>s.options.transformMinScale&&(s.trigger("pinch",e),s.trigger("pinch"+(e.scale<1?"in":"out"),e));break;case b:i&&e.changedLength<2&&(s.trigger(t+"end",e),i=!1)}}var i=!1;a.gestures.Transform={name:t,index:45,defaults:{transformMinScale:.01,transformMinRotation:1},handler:e}}("transform"),s=function(){return a}.call(e,i,e,t),!(s!==n&&(t.exports=s))}(window)},function(t,e,i){var s;(function(t,o){(function(n){function r(t,e,i){switch(arguments.length){case 2:return null!=t?t:e;case 3:return null!=t?t:null!=e?e:i;default:throw new Error("Implement me")}}function a(t,e){return Ie.call(t,e)}function h(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function d(t){Ce.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function l(t,e){var i=!0;return b(function(){return i&&(d(t),i=!1),e.apply(this,arguments)},e)}function c(t,e){Di[t]||(d(e),Di[t]=!0)}function p(t,e){return function(i){return w(t.call(this,i),e)}}function u(t,e){return function(i){return this.localeData().ordinal(t.call(this,i),e)}}function m(t,e){var i,s,o=12*(e.year()-t.year())+(e.month()-t.month()),n=t.clone().add(o,"months");return 0>e-n?(i=t.clone().add(o-1,"months"),s=(e-n)/(n-i)):(i=t.clone().add(o+1,"months"),s=(e-n)/(i-n)),-(o+s)}function f(t,e,i){var s;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(s=t.isPM(i),s&&12>e&&(e+=12),s||12!==e||(e=0),e):e}function g(){}function v(t,e){e!==!1&&R(t),_(this,t),this._d=new Date(+t._d),Si===!1&&(Si=!0,Ce.updateOffset(this),Si=!1)}function y(t){var e=N(t),i=e.year||0,s=e.quarter||0,o=e.month||0,n=e.week||0,r=e.day||0,a=e.hour||0,h=e.minute||0,d=e.second||0,l=e.millisecond||0;this._milliseconds=+l+1e3*d+6e4*h+36e5*a,this._days=+r+7*n,this._months=+o+3*s+12*i,this._data={},this._locale=Ce.localeData(),this._bubble()}function b(t,e){for(var i in e)a(e,i)&&(t[i]=e[i]);return a(e,"toString")&&(t.toString=e.toString),a(e,"valueOf")&&(t.valueOf=e.valueOf),t}function _(t,e){var i,s,o;if("undefined"!=typeof e._isAMomentObject&&(t._isAMomentObject=e._isAMomentObject),"undefined"!=typeof e._i&&(t._i=e._i),"undefined"!=typeof e._f&&(t._f=e._f),"undefined"!=typeof e._l&&(t._l=e._l),"undefined"!=typeof e._strict&&(t._strict=e._strict),"undefined"!=typeof e._tzm&&(t._tzm=e._tzm),"undefined"!=typeof e._isUTC&&(t._isUTC=e._isUTC),"undefined"!=typeof e._offset&&(t._offset=e._offset),"undefined"!=typeof e._pf&&(t._pf=e._pf),"undefined"!=typeof e._locale&&(t._locale=e._locale),Ye.length>0)for(i in Ye)s=Ye[i],o=e[s],"undefined"!=typeof o&&(t[s]=o);return t}function x(t){return 0>t?Math.ceil(t):Math.floor(t)}function w(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengths;s++)(i&&t[s]!==e[s]||!i&&L(t[s])!==L(e[s]))&&r++;return r+n}function k(t){if(t){var e=t.toLowerCase().replace(/(.)s$/,"$1");t=gi[t]||vi[e]||e}return t}function N(t){var e,i,s={};for(i in t)a(t,i)&&(e=k(i),e&&(s[e]=t[i]));return s}function I(t){var e,i;if(0===t.indexOf("week"))e=7,i="day";else{if(0!==t.indexOf("month"))return;e=12,i="month"}Ce[t]=function(s,o){var r,a,h=Ce._locale[t],d=[];if("number"==typeof s&&(o=s,s=n),a=function(t){var e=Ce().utc().set(i,t);return h.call(Ce._locale,e,s||"")},null!=o)return a(o);for(r=0;e>r;r++)d.push(a(r));return d}}function L(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function z(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function A(t,e,i){return me(Ce([t,11,31+e-i]),e,i).week}function P(t){return F(t)?366:365}function F(t){return t%4===0&&t%100!==0||t%400===0}function R(t){var e;t._a&&-2===t._pf.overflow&&(e=t._a[ze]<0||t._a[ze]>11?ze:t._a[Ae]<1||t._a[Ae]>z(t._a[Le],t._a[ze])?Ae:t._a[Pe]<0||t._a[Pe]>24||24===t._a[Pe]&&(0!==t._a[Fe]||0!==t._a[Re]||0!==t._a[He])?Pe:t._a[Fe]<0||t._a[Fe]>59?Fe:t._a[Re]<0||t._a[Re]>59?Re:t._a[He]<0||t._a[He]>999?He:-1,t._pf._overflowDayOfYear&&(Le>e||e>Ae)&&(e=Ae),t._pf.overflow=e)}function H(t){return null==t._isValid&&(t._isValid=!isNaN(t._d.getTime())&&t._pf.overflow<0&&!t._pf.empty&&!t._pf.invalidMonth&&!t._pf.nullInput&&!t._pf.invalidFormat&&!t._pf.userInvalidated,t._strict&&(t._isValid=t._isValid&&0===t._pf.charsLeftOver&&0===t._pf.unusedTokens.length&&t._pf.bigHour===n)),t._isValid}function B(t){return t?t.toLowerCase().replace("_","-"):t}function Y(t){for(var e,i,s,o,n=0;n0;){if(s=W(o.slice(0,e).join("-")))return s;if(i&&i.length>=e&&E(o,i,!0)>=e-1)break;e--}n++}return null}function W(t){var e=null;if(!Be[t]&&We)try{e=Ce.locale(),!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),Ce.locale(e)}catch(i){}return Be[t]}function G(t,e){var i,s;return e._isUTC?(i=e.clone(),s=(Ce.isMoment(t)||O(t)?+t:+Ce(t))-+i,i._d.setTime(+i._d+s),Ce.updateOffset(i,!1),i):Ce(t).local()}function j(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function V(t){var e,i,s=t.match(Ue);for(e=0,i=s.length;i>e;e++)s[e]=wi[s[e]]?wi[s[e]]:j(s[e]);return function(o){var n="";for(e=0;i>e;e++)n+=s[e]instanceof Function?s[e].call(o,t):s[e];return n}}function U(t,e){return t.isValid()?(e=X(e,t.localeData()),yi[e]||(yi[e]=V(e)),yi[e](t)):t.localeData().invalidDate()}function X(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(Xe.lastIndex=0;s>=0&&Xe.test(t);)t=t.replace(Xe,i),Xe.lastIndex=0,s-=1;return t}function q(t,e){var i,s=e._strict;switch(t){case"Q":return oi;case"DDDD":return ri;case"YYYY":case"GGGG":case"gggg":return s?ai:Qe;case"Y":case"G":case"g":return di;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return s?hi:Ke;case"S":if(s)return oi;case"SS":if(s)return ni;case"SSS":if(s)return ri;case"DDD":return Ze;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Je;case"a":case"A":return e._locale._meridiemParse;case"x":return ii;case"X":return si;case"Z":case"ZZ":return ti;case"T":return ei;case"SSSS":return $e;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return s?ni:qe;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return qe;case"Do":return s?e._locale._ordinalParse:e._locale._ordinalParseLenient;default:return i=new RegExp(se(ie(t.replace("\\","")),"i"))}}function Z(t){t=t||"";var e=t.match(ti)||[],i=e[e.length-1]||[],s=(i+"").match(mi)||["-",0,0],o=+(60*s[1])+L(s[2]);return"+"===s[0]?o:-o}function Q(t,e,i){var s,o=i._a;switch(t){case"Q":null!=e&&(o[ze]=3*(L(e)-1));break;case"M":case"MM":null!=e&&(o[ze]=L(e)-1);break;case"MMM":case"MMMM":s=i._locale.monthsParse(e,t,i._strict),null!=s?o[ze]=s:i._pf.invalidMonth=e;break;case"D":case"DD":null!=e&&(o[Ae]=L(e));break;case"Do":null!=e&&(o[Ae]=L(parseInt(e.match(/\d{1,2}/)[0],10)));break;case"DDD":case"DDDD":null!=e&&(i._dayOfYear=L(e));break;case"YY":o[Le]=Ce.parseTwoDigitYear(e);break;case"YYYY":case"YYYYY":case"YYYYYY":o[Le]=L(e);break;case"a":case"A":i._meridiem=e;break;case"h":case"hh":i._pf.bigHour=!0;case"H":case"HH":o[Pe]=L(e);break;case"m":case"mm":o[Fe]=L(e);break;case"s":case"ss":o[Re]=L(e);break;case"S":case"SS":case"SSS":case"SSSS":o[He]=L(1e3*("0."+e));break;case"x":i._d=new Date(L(e));break;case"X":i._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":i._useUTC=!0,i._tzm=Z(e);break;case"dd":case"ddd":case"dddd":s=i._locale.weekdaysParse(e),null!=s?(i._w=i._w||{},i._w.d=s):i._pf.invalidWeekday=e;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":t=t.substr(0,1);case"gggg":case"GGGG":case"GGGGG":t=t.substr(0,2),e&&(i._w=i._w||{},i._w[t]=L(e));break;case"gg":case"GG":i._w=i._w||{},i._w[t]=Ce.parseTwoDigitYear(e)}}function K(t){var e,i,s,o,n,a,h;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(n=1,a=4,i=r(e.GG,t._a[Le],me(Ce(),1,4).year),s=r(e.W,1),o=r(e.E,1)):(n=t._locale._week.dow,a=t._locale._week.doy,i=r(e.gg,t._a[Le],me(Ce(),n,a).year),s=r(e.w,1),null!=e.d?(o=e.d,n>o&&++s):o=null!=e.e?e.e+n:n),h=fe(i,s,o,a,n),t._a[Le]=h.year,t._dayOfYear=h.dayOfYear}function $(t){var e,i,s,o,n=[];if(!t._d){for(s=te(t),t._w&&null==t._a[Ae]&&null==t._a[ze]&&K(t),t._dayOfYear&&(o=r(t._a[Le],s[Le]),t._dayOfYear>P(o)&&(t._pf._overflowDayOfYear=!0),i=le(o,0,t._dayOfYear),t._a[ze]=i.getUTCMonth(),t._a[Ae]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=n[e]=s[e];for(;7>e;e++)t._a[e]=n[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[Pe]&&0===t._a[Fe]&&0===t._a[Re]&&0===t._a[He]&&(t._nextDay=!0,t._a[Pe]=0),t._d=(t._useUTC?le:de).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[Pe]=24)}}function J(t){var e;t._d||(e=N(t._i),t._a=[e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],$(t))}function te(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function ee(t){if(t._f===Ce.ISO_8601)return void ne(t);t._a=[],t._pf.empty=!0;var e,i,s,o,r,a=""+t._i,h=a.length,d=0;for(s=X(t._f,t._locale).match(Ue)||[],e=0;e0&&t._pf.unusedInput.push(r),a=a.slice(a.indexOf(i)+i.length),d+=i.length),wi[o]?(i?t._pf.empty=!1:t._pf.unusedTokens.push(o),Q(o,i,t)):t._strict&&!i&&t._pf.unusedTokens.push(o);t._pf.charsLeftOver=h-d,a.length>0&&t._pf.unusedInput.push(a),t._pf.bigHour===!0&&t._a[Pe]<=12&&(t._pf.bigHour=n),t._a[Pe]=f(t._locale,t._a[Pe],t._meridiem),$(t),R(t)}function ie(t){return t.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o})}function se(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function oe(t){var e,i,s,o,n;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(o=0;on)&&(s=n,i=e));b(t,i||e)}function ne(t){var e,i,s=t._i,o=li.exec(s);if(o){for(t._pf.iso=!0,e=0,i=pi.length;i>e;e++)if(pi[e][1].exec(s)){t._f=pi[e][0]+(o[6]||" ");break}for(e=0,i=ui.length;i>e;e++)if(ui[e][1].exec(s)){t._f+=ui[e][0];break}s.match(ti)&&(t._f+="Z"),ee(t)}else t._isValid=!1}function re(t){ne(t),t._isValid===!1&&(delete t._isValid,Ce.createFromInputFallback(t))}function ae(t,e){var i,s=[];for(i=0;it&&a.setFullYear(t),a}function le(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function ce(t,e){if("string"==typeof t)if(isNaN(t)){if(t=e.weekdaysParse(t),"number"!=typeof t)return null}else t=parseInt(t,10);return t}function pe(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function ue(t,e,i){var s=Ce.duration(t).abs(),o=Ne(s.as("s")),n=Ne(s.as("m")),r=Ne(s.as("h")),a=Ne(s.as("d")),h=Ne(s.as("M")),d=Ne(s.as("y")),l=o0,l[4]=i,pe.apply({},l)}function me(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=Ce(t).add(n,"d"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function fe(t,e,i,s,o){var n,r,a=le(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:o,n=o-a+(a>s?7:0)-(o>a?7:0),r=7*(e-1)+(i-o)+n+1,{year:r>0?t:t-1,dayOfYear:r>0?r:P(t-1)+r}}function ge(t){var e,i=t._i,s=t._f;return t._locale=t._locale||Ce.localeData(t._l),null===i||s===n&&""===i?Ce.invalid({nullInput:!0}):("string"==typeof i&&(t._i=i=t._locale.preparse(i)),Ce.isMoment(i)?new v(i,!0):(s?T(s)?oe(t):ee(t):he(t),e=new v(t),e._nextDay&&(e.add(1,"d"),e._nextDay=n),e))}function ve(t,e){var i,s;if(1===e.length&&T(e[0])&&(e=e[0]),!e.length)return Ce();for(i=e[0],s=1;s=0?"+":"-";return e+w(Math.abs(t),6)},gg:function(){return w(this.weekYear()%100,2)},gggg:function(){return w(this.weekYear(),4)},ggggg:function(){return w(this.weekYear(),5)},GG:function(){return w(this.isoWeekYear()%100,2)},GGGG:function(){return w(this.isoWeekYear(),4)},GGGGG:function(){return w(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return L(this.milliseconds()/100)},SS:function(){return w(L(this.milliseconds()/10),2)},SSS:function(){return w(this.milliseconds(),3)},SSSS:function(){return w(this.milliseconds(),3)},Z:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+":"+w(L(t)%60,2)},ZZ:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+w(L(t)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},x:function(){return this.valueOf()},X:function(){return this.unix()},Q:function(){return this.quarter()}},Di={},Mi=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"],Si=!1;_i.length;)Oe=_i.pop(),wi[Oe+"o"]=u(wi[Oe],Oe);for(;xi.length;)Oe=xi.pop(),wi[Oe+Oe]=p(wi[Oe],2);wi.DDDD=p(wi.DDD,3),b(g.prototype,{set:function(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(t){return this._months[t.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(t){return this._monthsShort[t.month()]},monthsParse:function(t,e,i){var s,o,n;for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;12>s;s++){if(o=Ce.utc([2e3,s]),i&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(o,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(o,"").replace(".","")+"$","i")),i||this._monthsParse[s]||(n="^"+this.months(o,"")+"|^"+this.monthsShort(o,""),this._monthsParse[s]=new RegExp(n.replace(".",""),"i")),i&&"MMMM"===e&&this._longMonthsParse[s].test(t))return s;if(i&&"MMM"===e&&this._shortMonthsParse[s].test(t))return s;if(!i&&this._monthsParse[s].test(t))return s}},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(t){return this._weekdays[t.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(t){return this._weekdaysShort[t.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(t){return this._weekdaysMin[t.day()]},weekdaysParse:function(t){var e,i,s;for(this._weekdaysParse||(this._weekdaysParse=[]),e=0;7>e;e++)if(this._weekdaysParse[e]||(i=Ce([2e3,1]).day(e),s="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(s.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e},_longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},longDateFormat:function(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e},isPM:function(t){return"p"===(t+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(t,e,i){var s=this._calendar[t];return"function"==typeof s?s.apply(e,[i]):s},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(t,e,i,s){var o=this._relativeTime[i];return"function"==typeof o?o(t,e,i,s):o.replace(/%d/i,t)},pastFuture:function(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)},ordinal:function(t){return this._ordinal.replace("%d",t)},_ordinal:"%d",_ordinalParse:/\d{1,2}/,preparse:function(t){return t},postformat:function(t){return t},week:function(t){return me(t,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},firstDayOfWeek:function(){return this._week.dow},firstDayOfYear:function(){return this._week.doy},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),Ce=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._i=t,o._f=e,o._l=i,o._strict=s,o._isUTC=!1,o._pf=h(),ge(o)},Ce.suppressDeprecationWarnings=!1,Ce.createFromInputFallback=l("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),Ce.min=function(){var t=[].slice.call(arguments,0);return ve("isBefore",t)},Ce.max=function(){var t=[].slice.call(arguments,0);return ve("isAfter",t)},Ce.utc=function(t,e,i,s){var o; +return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._useUTC=!0,o._isUTC=!0,o._l=i,o._i=t,o._f=e,o._strict=s,o._pf=h(),ge(o).utc()},Ce.unix=function(t){return Ce(1e3*t)},Ce.duration=function(t,e){var i,s,o,n,r=t,h=null;return Ce.isDuration(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(r={},e?r[e]=t:r.milliseconds=t):(h=je.exec(t))?(i="-"===h[1]?-1:1,r={y:0,d:L(h[Ae])*i,h:L(h[Pe])*i,m:L(h[Fe])*i,s:L(h[Re])*i,ms:L(h[He])*i}):(h=Ve.exec(t))?(i="-"===h[1]?-1:1,o=function(t){var e=t&&parseFloat(t.replace(",","."));return(isNaN(e)?0:e)*i},r={y:o(h[2]),M:o(h[3]),d:o(h[4]),h:o(h[5]),m:o(h[6]),s:o(h[7]),w:o(h[8])}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(n=M(Ce(r.from),Ce(r.to)),r={},r.ms=n.milliseconds,r.M=n.months),s=new y(r),Ce.isDuration(t)&&a(t,"_locale")&&(s._locale=t._locale),s},Ce.version=Ee,Ce.defaultFormat=ci,Ce.ISO_8601=function(){},Ce.momentProperties=Ye,Ce.updateOffset=function(){},Ce.relativeTimeThreshold=function(t,e){return bi[t]===n?!1:e===n?bi[t]:(bi[t]=e,!0)},Ce.lang=l("moment.lang is deprecated. Use moment.locale instead.",function(t,e){return Ce.locale(t,e)}),Ce.locale=function(t,e){var i;return t&&(i="undefined"!=typeof e?Ce.defineLocale(t,e):Ce.localeData(t),i&&(Ce.duration._locale=Ce._locale=i)),Ce._locale._abbr},Ce.defineLocale=function(t,e){return null!==e?(e.abbr=t,Be[t]||(Be[t]=new g),Be[t].set(e),Ce.locale(t),Be[t]):(delete Be[t],null)},Ce.langData=l("moment.langData is deprecated. Use moment.localeData instead.",function(t){return Ce.localeData(t)}),Ce.localeData=function(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Ce._locale;if(!T(t)){if(e=W(t))return e;t=[t]}return Y(t)},Ce.isMoment=function(t){return t instanceof v||null!=t&&a(t,"_isAMomentObject")},Ce.isDuration=function(t){return t instanceof y};for(Oe=Mi.length-1;Oe>=0;--Oe)I(Mi[Oe]);Ce.normalizeUnits=function(t){return k(t)},Ce.invalid=function(t){var e=Ce.utc(0/0);return null!=t?b(e._pf,t):e._pf.userInvalidated=!0,e},Ce.parseZone=function(){return Ce.apply(null,arguments).parseZone()},Ce.parseTwoDigitYear=function(t){return L(t)+(L(t)>68?1900:2e3)},Ce.isDate=O,b(Ce.fn=v.prototype,{clone:function(){return Ce(this)},valueOf:function(){return+this._d-6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var t=Ce(this).utc();return 00:!1},parsingFlags:function(){return b({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(t){return this.utcOffset(0,t)},local:function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(this._dateUtcOffset(),"m")),this},format:function(t){var e=U(this,t||Ce.defaultFormat);return this.localeData().postformat(e)},add:S(1,"add"),subtract:S(-1,"subtract"),diff:function(t,e,i){var s,o,n=G(t,this),r=6e4*(n.utcOffset()-this.utcOffset());return e=k(e),"year"===e||"month"===e||"quarter"===e?(o=m(this,n),"quarter"===e?o/=3:"year"===e&&(o/=12)):(s=this-n,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-r)/864e5:"week"===e?(s-r)/6048e5:s),i?o:x(o)},from:function(t,e){return Ce.duration({to:this,from:t}).locale(this.locale()).humanize(!e)},fromNow:function(t){return this.from(Ce(),t)},calendar:function(t){var e=t||Ce(),i=G(e,this).startOf("day"),s=this.diff(i,"days",!0),o=-6>s?"sameElse":-1>s?"lastWeek":0>s?"lastDay":1>s?"sameDay":2>s?"nextDay":7>s?"nextWeek":"sameElse";return this.format(this.localeData().calendar(o,this,Ce(e)))},isLeapYear:function(){return F(this.year())},isDST:function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},day:function(t){var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=ce(t,this.localeData()),this.add(t-e,"d")):e},month:xe("Month",!0),startOf:function(t){switch(t=k(t)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===t?this.weekday(0):"isoWeek"===t&&this.isoWeekday(1),"quarter"===t&&this.month(3*Math.floor(this.month()/3)),this},endOf:function(t){return t=k(t),t===n||"millisecond"===t?this:this.startOf(t).add(1,"isoWeek"===t?"week":t).subtract(1,"ms")},isAfter:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+this>+t):(i=Ce.isMoment(t)?+t:+Ce(t),i<+this.clone().startOf(e))},isBefore:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+t>+this):(i=Ce.isMoment(t)?+t:+Ce(t),+this.clone().endOf(e)t?this:t}),max:l("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(t){return t=Ce.apply(null,arguments),t>this?this:t}),zone:l("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}),utcOffset:function(t,e){var i,s=this._offset||0;return null!=t?("string"==typeof t&&(t=Z(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&e&&(i=this._dateUtcOffset()),this._offset=t,this._isUTC=!0,null!=i&&this.add(i,"m"),s!==t&&(!e||this._changeInProgress?C(this,Ce.duration(t-s,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,Ce.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?s:this._dateUtcOffset()},isLocal:function(){return!this._isUTC},isUtcOffset:function(){return this._isUTC},isUtc:function(){return this._isUTC&&0===this._offset},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Z(this._i)),this},hasAlignedHourOffset:function(t){return t=t?Ce(t).utcOffset():0,(this.utcOffset()-t)%60===0},daysInMonth:function(){return z(this.year(),this.month())},dayOfYear:function(t){var e=Ne((Ce(this).startOf("day")-Ce(this).startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},quarter:function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},weekYear:function(t){var e=me(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==t?e:this.add(t-e,"y")},isoWeekYear:function(t){var e=me(this,1,4).year;return null==t?e:this.add(t-e,"y")},week:function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},isoWeek:function(t){var e=me(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},weekday:function(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},isoWeekday:function(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)},isoWeeksInYear:function(){return A(this.year(),1,4)},weeksInYear:function(){var t=this.localeData()._week;return A(this.year(),t.dow,t.doy)},get:function(t){return t=k(t),this[t]()},set:function(t,e){var i;if("object"==typeof t)for(i in t)this.set(i,t[i]);else t=k(t),"function"==typeof this[t]&&this[t](e);return this},locale:function(t){var e;return t===n?this._locale._abbr:(e=Ce.localeData(t),null!=e&&(this._locale=e),this)},lang:l("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return t===n?this.localeData():this.locale(t)}),localeData:function(){return this._locale},_dateUtcOffset:function(){return 15*-Math.round(this._d.getTimezoneOffset()/15)}}),Ce.fn.millisecond=Ce.fn.milliseconds=xe("Milliseconds",!1),Ce.fn.second=Ce.fn.seconds=xe("Seconds",!1),Ce.fn.minute=Ce.fn.minutes=xe("Minutes",!1),Ce.fn.hour=Ce.fn.hours=xe("Hours",!0),Ce.fn.date=xe("Date",!0),Ce.fn.dates=l("dates accessor is deprecated. Use date instead.",xe("Date",!0)),Ce.fn.year=xe("FullYear",!0),Ce.fn.years=l("years accessor is deprecated. Use year instead.",xe("FullYear",!0)),Ce.fn.days=Ce.fn.day,Ce.fn.months=Ce.fn.month,Ce.fn.weeks=Ce.fn.week,Ce.fn.isoWeeks=Ce.fn.isoWeek,Ce.fn.quarters=Ce.fn.quarter,Ce.fn.toJSON=Ce.fn.toISOString,Ce.fn.isUTC=Ce.fn.isUtc,b(Ce.duration.fn=y.prototype,{_bubble:function(){var t,e,i,s=this._milliseconds,o=this._days,n=this._months,r=this._data,a=0;r.milliseconds=s%1e3,t=x(s/1e3),r.seconds=t%60,e=x(t/60),r.minutes=e%60,i=x(e/60),r.hours=i%24,o+=x(i/24),a=x(we(o)),o-=x(De(a)),n+=x(o/30),o%=30,a+=x(n/12),n%=12,r.days=o,r.months=n,r.years=a},abs:function(){return this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return x(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*L(this._months/12)},humanize:function(t){var e=ue(this,!t,this.localeData());return t&&(e=this.localeData().pastFuture(+this,e)),this.localeData().postformat(e)},add:function(t,e){var i=Ce.duration(t,e);return this._milliseconds+=i._milliseconds,this._days+=i._days,this._months+=i._months,this._bubble(),this},subtract:function(t,e){var i=Ce.duration(t,e);return this._milliseconds-=i._milliseconds,this._days-=i._days,this._months-=i._months,this._bubble(),this},get:function(t){return t=k(t),this[t.toLowerCase()+"s"]()},as:function(t){var e,i;if(t=k(t),"month"===t||"year"===t)return e=this._days+this._milliseconds/864e5,i=this._months+12*we(e),"month"===t?i:i/12;switch(e=this._days+Math.round(De(this._months/12)),t){case"week":return e/7+this._milliseconds/6048e5;case"day":return e+this._milliseconds/864e5;case"hour":return 24*e+this._milliseconds/36e5;case"minute":return 24*e*60+this._milliseconds/6e4;case"second":return 24*e*60*60+this._milliseconds/1e3;case"millisecond":return Math.floor(24*e*60*60*1e3)+this._milliseconds;default:throw new Error("Unknown unit "+t)}},lang:Ce.fn.lang,locale:Ce.fn.locale,toIsoString:l("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",function(){return this.toISOString()}),toISOString:function(){var t=Math.abs(this.years()),e=Math.abs(this.months()),i=Math.abs(this.days()),s=Math.abs(this.hours()),o=Math.abs(this.minutes()),n=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(s||o||n?"T":"")+(s?s+"H":"")+(o?o+"M":"")+(n?n+"S":""):"P0D"},localeData:function(){return this._locale},toJSON:function(){return this.toISOString()}}),Ce.duration.fn.toString=Ce.duration.fn.toISOString;for(Oe in fi)a(fi,Oe)&&Me(Oe.toLowerCase());Ce.duration.fn.asMilliseconds=function(){return this.as("ms")},Ce.duration.fn.asSeconds=function(){return this.as("s")},Ce.duration.fn.asMinutes=function(){return this.as("m")},Ce.duration.fn.asHours=function(){return this.as("h")},Ce.duration.fn.asDays=function(){return this.as("d")},Ce.duration.fn.asWeeks=function(){return this.as("weeks")},Ce.duration.fn.asMonths=function(){return this.as("M")},Ce.duration.fn.asYears=function(){return this.as("y")},Ce.locale("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===L(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),We?o.exports=Ce:(s=function(t,e,i){return i.config&&i.config()&&i.config().noGlobal===!0&&(ke.moment=Te),Ce}.call(e,i,e,o),!(s!==n&&(o.exports=s)),Se(!0))}).call(this)}).call(e,function(){return this}(),i(71)(t))},function(t,e,i){function s(){this.constants.smoothCurves.enabled=!this.constants.smoothCurves.enabled;var t=document.getElementById("graph_toggleSmooth");t.style.background=1==this.constants.smoothCurves.enabled?"#A4FF56":"#FF8532",this._configureSmoothCurves(!1)}function o(){for(var t in this.calculationNodes)this.calculationNodes.hasOwnProperty(t)&&(this.calculationNodes[t].vx=0,this.calculationNodes[t].vy=0,this.calculationNodes[t].fx=0,this.calculationNodes[t].fy=0);1==this.constants.hierarchicalLayout.enabled?(this._setupHierarchicalLayout(),a.call(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),a.call(this,"graph_H_cg",1,"physics_centralGravity"),a.call(this,"graph_H_sc",1,"physics_springConstant"),a.call(this,"graph_H_sl",1,"physics_springLength"),a.call(this,"graph_H_damp",1,"physics_damping")):this.repositionNodes(),this.moving=!0,this.start()}function n(){var t="No options are required, default values used.",e=[],i=document.getElementById("graph_physicsMethod1"),s=document.getElementById("graph_physicsMethod2");if(1==i.checked){if(this.constants.physics.barnesHut.gravitationalConstant!=this.backupConstants.physics.barnesHut.gravitationalConstant&&e.push("gravitationalConstant: "+this.constants.physics.barnesHut.gravitationalConstant),this.constants.physics.centralGravity!=this.backupConstants.physics.barnesHut.centralGravity&&e.push("centralGravity: "+this.constants.physics.centralGravity),this.constants.physics.springLength!=this.backupConstants.physics.barnesHut.springLength&&e.push("springLength: "+this.constants.physics.springLength),this.constants.physics.springConstant!=this.backupConstants.physics.barnesHut.springConstant&&e.push("springConstant: "+this.constants.physics.springConstant),this.constants.physics.damping!=this.backupConstants.physics.barnesHut.damping&&e.push("damping: "+this.constants.physics.damping),0!=e.length){t="var options = {",t+="physics: {barnesHut: {";for(var o=0;othis.constants.clustering.clusterThreshold&&1==this.constants.clustering.enabled&&this.clusterToFit(this.constants.clustering.reduceToNodes,!1),this._calculateForces())},e._calculateForces=function(){this._calculateGravitationalForces(),this._calculateNodeForces(),this.constants.physics.springConstant>0&&(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic?this._calculateSpringForcesWithSupport():1==this.constants.physics.hierarchicalRepulsion.enabled?this._calculateHierarchicalSpringForces():this._calculateSpringForces())},e._updateCalculationNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this.calculationNodes={},this.calculationNodeIndices=[];for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.calculationNodes[t]=this.nodes[t]);var e=this.sectors.support.nodes;for(var i in e)e.hasOwnProperty(i)&&(this.edges.hasOwnProperty(e[i].parentEdgeId)?this.calculationNodes[i]=e[i]:e[i]._setForce(0,0));for(var s in this.calculationNodes)this.calculationNodes.hasOwnProperty(s)&&this.calculationNodeIndices.push(s)}else this.calculationNodes=this.nodes,this.calculationNodeIndices=this.nodeIndices},e._calculateGravitationalForces=function(){var t,e,i,s,o,n=this.calculationNodes,r=this.constants.physics.centralGravity,a=0;for(o=0;oSimulation Mode:Barnes HutRepulsionHierarchical
Options:
',this.containerElement.parentElement.insertBefore(this.physicsConfiguration,this.containerElement),this.optionsDiv=document.createElement("div"),this.optionsDiv.style.fontSize="14px",this.optionsDiv.style.fontFamily="verdana",this.containerElement.parentElement.insertBefore(this.optionsDiv,this.containerElement); +var d;d=document.getElementById("graph_BH_gc"),d.onchange=a.bind(this,"graph_BH_gc",-1,"physics_barnesHut_gravitationalConstant"),d=document.getElementById("graph_BH_cg"),d.onchange=a.bind(this,"graph_BH_cg",1,"physics_centralGravity"),d=document.getElementById("graph_BH_sc"),d.onchange=a.bind(this,"graph_BH_sc",1,"physics_springConstant"),d=document.getElementById("graph_BH_sl"),d.onchange=a.bind(this,"graph_BH_sl",1,"physics_springLength"),d=document.getElementById("graph_BH_damp"),d.onchange=a.bind(this,"graph_BH_damp",1,"physics_damping"),d=document.getElementById("graph_R_nd"),d.onchange=a.bind(this,"graph_R_nd",1,"physics_repulsion_nodeDistance"),d=document.getElementById("graph_R_cg"),d.onchange=a.bind(this,"graph_R_cg",1,"physics_centralGravity"),d=document.getElementById("graph_R_sc"),d.onchange=a.bind(this,"graph_R_sc",1,"physics_springConstant"),d=document.getElementById("graph_R_sl"),d.onchange=a.bind(this,"graph_R_sl",1,"physics_springLength"),d=document.getElementById("graph_R_damp"),d.onchange=a.bind(this,"graph_R_damp",1,"physics_damping"),d=document.getElementById("graph_H_nd"),d.onchange=a.bind(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),d=document.getElementById("graph_H_cg"),d.onchange=a.bind(this,"graph_H_cg",1,"physics_centralGravity"),d=document.getElementById("graph_H_sc"),d.onchange=a.bind(this,"graph_H_sc",1,"physics_springConstant"),d=document.getElementById("graph_H_sl"),d.onchange=a.bind(this,"graph_H_sl",1,"physics_springLength"),d=document.getElementById("graph_H_damp"),d.onchange=a.bind(this,"graph_H_damp",1,"physics_damping"),d=document.getElementById("graph_H_direction"),d.onchange=a.bind(this,"graph_H_direction",i,"hierarchicalLayout_direction"),d=document.getElementById("graph_H_levsep"),d.onchange=a.bind(this,"graph_H_levsep",1,"hierarchicalLayout_levelSeparation"),d=document.getElementById("graph_H_nspac"),d.onchange=a.bind(this,"graph_H_nspac",1,"hierarchicalLayout_nodeSpacing");var l=document.getElementById("graph_physicsMethod1"),c=document.getElementById("graph_physicsMethod2"),p=document.getElementById("graph_physicsMethod3");c.checked=!0,this.constants.physics.barnesHut.enabled&&(l.checked=!0),this.constants.hierarchicalLayout.enabled&&(p.checked=!0);var u=document.getElementById("graph_toggleSmooth"),m=document.getElementById("graph_repositionNodes"),f=document.getElementById("graph_generateOptions");u.onclick=s.bind(this),m.onclick=o.bind(this),f.onclick=n.bind(this),u.style.background=1==this.constants.smoothCurves&&0==this.constants.dynamicSmoothCurves?"#A4FF56":"#FF8532",r.apply(this),l.onchange=r.bind(this),c.onchange=r.bind(this),p.onchange=r.bind(this)}},e._overWriteGraphConstants=function(t,e){var i=t.split("_");1==i.length?this.constants[i[0]]=e:2==i.length?this.constants[i[0]][i[1]]=e:3==i.length&&(this.constants[i[0]][i[1]][i[2]]=e)}},function(t,e){e.startWithClustering=function(){this.clusterToFit(this.constants.clustering.initialMaxNodes,!0),this.updateLabels(),1==this.constants.stabilize&&this._stabilize(),this.start()},e.clusterToFit=function(t,e){for(var i=this.nodeIndices.length,s=50,o=0;i>t&&s>o;)o%3==0?(this.forceAggregateHubs(!0),this.normalizeClusterLevels()):this.increaseClusterLevel(),this.forceAggregateHubs(!0),i=this.nodeIndices.length,o+=1;o>0&&1==e&&this.repositionNodes(),this._updateCalculationNodes()},e.openCluster=function(t){var e=this.moving;if(t.clusterSize>this.constants.clustering.sectorThreshold&&this._nodeInActiveArea(t)&&("default"!=this._sector()||1!=this.nodeIndices.length)){this._addSector(t);for(var i=0;this.nodeIndices.lengthi;)this.decreaseClusterLevel(),i+=1}else this._expandClusterNode(t,!1,!0),this._updateNodeIndexList(),this._updateCalculationNodes(),this.updateLabels();this.moving!=e&&this.start()},e.updateClustersDefault=function(){1==this.constants.clustering.enabled&&1==this.constants.clustering.clusterByZoom&&this.updateClusters(0,!1,!1)},e.increaseClusterLevel=function(){this.updateClusters(-1,!1,!0)},e.decreaseClusterLevel=function(){this.updateClusters(1,!1,!0)},e.updateClusters=function(t,e,i,s){var o=this.moving,n=this.nodeIndices.length,r=this.previousScalethis.scale&&0==t;1==a&&this._collapseSector(),1==a||-1==t?this._formClusters(i):(1==r||1==t)&&(1==i?this._openClusters(e,i):this._openClusters(e,!1)),this._updateNodeIndexList(),this.nodeIndices.length!=n||1!=a&&-1!=t||(this._aggregateHubs(i),this._updateNodeIndexList()),(1==a||-1==t)&&(this.handleChains(),this._updateNodeIndexList()),this.previousScale=this.scale,this.updateLabels(),this.nodeIndices.lengththis.constants.clustering.chainThreshold&&this._reduceAmountOfChains(1-this.constants.clustering.chainThreshold/t)},e._aggregateHubs=function(t){this._getHubSize(),this._formClustersByHub(t,!1)},e.forceAggregateHubs=function(t){var e=this.moving,i=this.nodeIndices.length;this._aggregateHubs(!0),this._updateNodeIndexList(),this.updateLabels(),this._updateCalculationNodes(),this.nodeIndices.length!=i&&(this.clusterSession+=1),(0==t||void 0===t)&&this.moving!=e&&this.start()},e._openClustersBySize=function(){if(1==this.constants.clustering.clusterByZoom)for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];1==e.inView()&&(e.width*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientWidth||e.height*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientHeight)&&this.openCluster(e)}},e._openClusters=function(t,e){for(var i=0;i1&&(void 0===s&&(s=!1),e=s||e,t.formationScalei)){var r=n.from,a=n.to;n.to.options.mass>n.from.options.mass&&(r=n.to,a=n.from),1==a.dynamicEdges.length?this._addToCluster(r,a,!1):1==r.dynamicEdges.length&&this._addToCluster(a,r,!1)}}},e._forceClustersByZoom=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];if(1==e.dynamicEdges.length){var i=e.dynamicEdges[0],s=i.toId==e.id?this.nodes[i.fromId]:this.nodes[i.toId];e.id!=s.id&&(s.options.mass>e.options.mass?this._addToCluster(s,e,!0):this._addToCluster(e,s,!0))}}},e._clusterToSmallestNeighbour=function(t){for(var e=-1,i=null,s=0;so.clusterSessions.length&&(e=o.clusterSessions.length,i=o)}null!=o&&void 0!==this.nodes[o.id]&&this._addToCluster(o,t,!0)},e._formClustersByHub=function(t,e){for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&this._formClusterFromHub(this.nodes[i],t,e)},e._formClusterFromHub=function(t,e,i,s){if(void 0===s&&(s=0),t.dynamicEdges.length>=this.hubThreshold&&0==i||t.dynamicEdges.length==this.hubThreshold&&1==i){for(var o,n,r,a=this.constants.clustering.clusterEdgeThreshold/this.scale,h=!1,d=[],l=t.dynamicEdges.length,c=0;l>c;c++)d.push(t.dynamicEdges[c].id);if(0==e)for(h=!1,c=0;l>c;c++){var p=this.edges[d[c]];if(void 0!==p&&p.connected&&p.toId!=p.fromId&&(o=p.to.x-p.from.x,n=p.to.y-p.from.y,r=Math.sqrt(o*o+n*n),a>r)){h=!0;break}}if(!e&&h||e){var u=[],m={};for(c=0;l>c;c++){p=this.edges[d[c]];var f=this.nodes[p.fromId==t.id?p.toId:p.fromId];void 0===m[f.id]&&(m[f.id]=!0,u.push(f))}for(c=0;c1&&(e.label="[".concat(String(e.clusterSize),"]"))}for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(e=this.nodes[t],1==e.clusterSize&&(e.label=void 0!==e.originalLabel?e.originalLabel:String(e.id)))},e.normalizeClusterLevels=function(){var t,e=0,i=1e9,s=0;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(s=this.nodes[t].clusterSessions.length,s>e&&(e=s),i>s&&(i=s));if(e-i>this.constants.clustering.clusterLevelDifference){var o=this.nodeIndices.length,n=e-this.constants.clustering.clusterLevelDifference;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodes[t].clusterSessions.lengths&&(s=n.dynamicEdges.length),t+=n.dynamicEdges.length,e+=Math.pow(n.dynamicEdges.length,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r);this.hubThreshold=Math.floor(t+2*a),this.hubThreshold>s&&(this.hubThreshold=s)},e._reduceAmountOfChains=function(t){this.hubThreshold=2;var e=Math.floor(this.nodeIndices.length*t);for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&2==this.nodes[i].dynamicEdges.length&&e>0&&(this._formClusterFromHub(this.nodes[i],!0,!0,1),e-=1)},e._getChainFraction=function(){var t=0,e=0;for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&(2==this.nodes[i].dynamicEdges.length&&(t+=1),e+=1);return t/e}},function(t,e,i){var s=i(1),o=i(40);e._putDataInSector=function(){this.sectors.active[this._sector()].nodes=this.nodes,this.sectors.active[this._sector()].edges=this.edges,this.sectors.active[this._sector()].nodeIndices=this.nodeIndices},e._switchToSector=function(t,e){void 0===e||"active"==e?this._switchToActiveSector(t):this._switchToFrozenSector(t)},e._switchToActiveSector=function(t){this.nodeIndices=this.sectors.active[t].nodeIndices,this.nodes=this.sectors.active[t].nodes,this.edges=this.sectors.active[t].edges},e._switchToSupportSector=function(){this.nodeIndices=this.sectors.support.nodeIndices,this.nodes=this.sectors.support.nodes,this.edges=this.sectors.support.edges},e._switchToFrozenSector=function(t){this.nodeIndices=this.sectors.frozen[t].nodeIndices,this.nodes=this.sectors.frozen[t].nodes,this.edges=this.sectors.frozen[t].edges},e._loadLatestSector=function(){this._switchToSector(this._sector())},e._sector=function(){return this.activeSector[this.activeSector.length-1]},e._previousSector=function(){if(this.activeSector.length>1)return this.activeSector[this.activeSector.length-2];throw new TypeError("there are not enough sectors in the this.activeSector array.")},e._setActiveSector=function(t){this.activeSector.push(t)},e._forgetLastSector=function(){this.activeSector.pop()},e._createNewSector=function(t){this.sectors.active[t]={nodes:{},edges:{},nodeIndices:[],formationScale:this.scale,drawingNode:void 0},this.sectors.active[t].drawingNode=new o({id:t,color:{background:"#eaefef",border:"495c5e"}},{},{},this.constants),this.sectors.active[t].drawingNode.clusterSize=2},e._deleteActiveSector=function(t){delete this.sectors.active[t]},e._deleteFrozenSector=function(t){delete this.sectors.frozen[t]},e._freezeSector=function(t){this.sectors.frozen[t]=this.sectors.active[t],this._deleteActiveSector(t)},e._activateSector=function(t){this.sectors.active[t]=this.sectors.frozen[t],this._deleteFrozenSector(t)},e._mergeThisWithFrozen=function(t){for(var e in this.nodes)this.nodes.hasOwnProperty(e)&&(this.sectors.frozen[t].nodes[e]=this.nodes[e]);for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.sectors.frozen[t].edges[i]=this.edges[i]);for(var s=0;s1?this[t](o[0],o[1]):this[t](e))}return this._loadLatestSector(),i},e._doInSupportSector=function(t,e){var i=!1;if(void 0===e)this._switchToSupportSector(),i=this[t]();else{this._switchToSupportSector();var s=Array.prototype.splice.call(arguments,1);i=s.length>1?this[t](s[0],s[1]):this[t](e)}return this._loadLatestSector(),i},e._doInAllFrozenSectors=function(t,e){if(void 0===e)for(var i in this.sectors.frozen)this.sectors.frozen.hasOwnProperty(i)&&(this._switchToFrozenSector(i),this[t]());else for(var i in this.sectors.frozen)if(this.sectors.frozen.hasOwnProperty(i)){this._switchToFrozenSector(i);var s=Array.prototype.splice.call(arguments,1);s.length>1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInAllSectors=function(t,e){var i=Array.prototype.splice.call(arguments,1);void 0===e?(this._doInAllActiveSectors(t),this._doInAllFrozenSectors(t)):i.length>1?(this._doInAllActiveSectors(t,i[0],i[1]),this._doInAllFrozenSectors(t,i[0],i[1])):(this._doInAllActiveSectors(t,e),this._doInAllFrozenSectors(t,e))},e._clearNodeIndexList=function(){var t=this._sector();this.sectors.active[t].nodeIndices=[],this.nodeIndices=this.sectors.active[t].nodeIndices},e._drawSectorNodes=function(t,e){var i,s=1e9,o=-1e9,n=1e9,r=-1e9;for(var a in this.sectors[e])if(this.sectors[e].hasOwnProperty(a)&&void 0!==this.sectors[e][a].drawingNode){this._switchToSector(a,e),s=1e9,o=-1e9,n=1e9,r=-1e9;for(var h in this.nodes)this.nodes.hasOwnProperty(h)&&(i=this.nodes[h],i.resize(t),n>i.x-.5*i.width&&(n=i.x-.5*i.width),ri.y-.5*i.height&&(s=i.y-.5*i.height),o0?this.nodes[i[i.length-1]]:null},e._getEdgesOverlappingWith=function(t,e){var i=this.edges;for(var s in i)i.hasOwnProperty(s)&&i[s].isOverlappingWith(t)&&e.push(s)},e._getAllEdgesOverlappingWith=function(t){var e=[];return this._doInAllActiveSectors("_getEdgesOverlappingWith",t,e),e},e._getEdgeAt=function(t){var e=this._pointerToPositionObject(t),i=this._getAllEdgesOverlappingWith(e);return i.length>0?this.edges[i[i.length-1]]:null},e._addToSelection=function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t},e._addToHover=function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t},e._removeFromSelection=function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id]},e._unselectAll=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].unselect();for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&this.selectionObj.edges[i].unselect();this.selectionObj={nodes:{},edges:{}},0==t&&this.emit("select",this.getSelection())},e._unselectClusters=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].clusterSize>1&&(this.selectionObj.nodes[e].unselect(),this._removeFromSelection(this.selectionObj.nodes[e]));0==t&&this.emit("select",this.getSelection())},e._getSelectedNodeCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedNode=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return null},e._getSelectedEdge=function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return null},e._getSelectedEdgeCount=function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedObjectCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t},e._selectionIsEmpty=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0},e._clusterInSelection=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1},e._selectConnectedEdges=function(t){for(var e=0;ei;i++){o=t[i];var n=this.nodes[o];if(!n)throw new RangeError('Node with id "'+o+'" not found');this._selectObject(n,!0,!0,e,!0)}this.redraw()},e.selectEdges=function(t){var e,i,s;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),e=0,i=t.length;i>e;e++){s=t[e];var o=this.edges[s];if(!o)throw new RangeError('Edge with id "'+s+'" not found');this._selectObject(o,!0,!0,!1,!0)}this.redraw()},e._updateSelection=function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}},function(t,e,i){var s=i(1),o=i(40),n=i(37),r=i(45);e._clearManipulatorBar=function(){this._recursiveDOMDelete(this.manipulationDiv),this.manipulationDOM={},this._cleanManipulatorHammers(),this._manipulationReleaseOverload=function(){},delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode,this.controlNodesActive=!1,this.freezeSimulation(!1)},e._cleanManipulatorHammers=function(){if(0!=this.manipulationHammers.length){for(var t=0;t1)alert(this.constants.locales[this.constants.locale].createEdgeError);else{this._selectObject(e,!1);var i=this.sectors.support.nodes;i.targetNode=new o({id:"targetNode"},{},{},this.constants);var s=i.targetNode;s.x=e.x,s.y=e.y,this.edges.connectionEdge=new n({id:"connectionEdge",from:e.id,to:s.id},this,this.constants);var r=this.edges.connectionEdge;r.from=e,r.connected=!0,r.options.smoothCurves={enabled:!0,dynamic:!1,type:"continuous",roundness:.5},r.selected=!0,r.to=s,this.cachedFunctions._handleOnDrag=this._handleOnDrag;var a=this;this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center),i=a.edges.connectionEdge;i.to.x=a._XconvertDOMtoCanvas(e.x),i.to.y=a._YconvertDOMtoCanvas(e.y),a._redraw()},this.moving=!0,this.start()}}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){var e=this._getPointer(t.gesture.center);this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var i=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var s=this._getNodeAt(e);null!=s&&(s.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._createEdge(i,s.id),this._createManipulatorBar())),this._unselectAll()}},e._addNode=function(){if(this._selectionIsEmpty()&&1==this.editMode){var t=this._pointerToPositionObject(this.pointerPosition),e={id:s.randomUUID(),x:t.left,y:t.top,label:"new",allowedToMoveX:!0,allowedToMoveY:!0};if(this.triggerFunctions.add){if(2!=this.triggerFunctions.add.length)throw new Error("The function for add does not support two arguments (data,callback)");var i=this;this.triggerFunctions.add(e,function(t){i.nodesData.add(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else this.nodesData.add(e),this._createManipulatorBar(),this.moving=!0,this.start()}},e._createEdge=function(t,e){if(1==this.editMode){var i={from:t,to:e};if(this.triggerFunctions.connect){if(2!=this.triggerFunctions.connect.length)throw new Error("The function for connect does not support two arguments (data,callback)");var s=this;this.triggerFunctions.connect(i,function(t){s.edgesData.add(t),s.moving=!0,s.start()})}else this.edgesData.add(i),this.moving=!0,this.start()}},e._editEdge=function(t,e){if(1==this.editMode){var i={id:this.edgeBeingEdited.id,from:t,to:e};if(this.triggerFunctions.editEdge){if(2!=this.triggerFunctions.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");var s=this;this.triggerFunctions.editEdge(i,function(t){s.edgesData.update(t),s.moving=!0,s.start()})}else this.edgesData.update(i),this.moving=!0,this.start()}},e._editNode=function(){if(!this.triggerFunctions.edit||1!=this.editMode)throw new Error("No edit function has been bound to this button");var t=this._getSelectedNode(),e={id:t.id,label:t.label,group:t.options.group,shape:t.options.shape,color:{background:t.options.color.background,border:t.options.color.border,highlight:{background:t.options.color.highlight.background,border:t.options.color.highlight.border}}};if(2!=this.triggerFunctions.edit.length)throw new Error("The function for edit does not support two arguments (data, callback)");var i=this;this.triggerFunctions.edit(e,function(t){i.nodesData.update(t),i._createManipulatorBar(),i.moving=!0,i.start()})},e._deleteSelected=function(){if(!this._selectionIsEmpty()&&1==this.editMode)if(this._clusterInSelection())alert(this.constants.locales[this.constants.locale].deleteClusterError);else{var t=this.getSelectedNodes(),e=this.getSelectedEdges();if(this.triggerFunctions.del){var i=this,s={nodes:t,edges:e};if(2!=this.triggerFunctions.del.length)throw new Error("The function for delete does not support two arguments (data, callback)");this.triggerFunctions.del(s,function(t){i.edgesData.remove(t.edges),i.nodesData.remove(t.nodes),i._unselectAll(),i.moving=!0,i.start()})}else this.edgesData.remove(e),this.nodesData.remove(t),this._unselectAll(),this.moving=!0,this.start()}}},function(t,e,i){var s=(i(1),i(45));e._cleanNavigation=function(){if(0!=this.navigationHammers.length){for(var t=0;t0){var t,e,i=0,s=!1,o=!1;for(e in this.nodes)this.nodes.hasOwnProperty(e)&&(t=this.nodes[e],-1!=t.level?s=!0:o=!0,is&&(n.xFixed=!1,n.x=i[n.level].minPos,r=!0):n.yFixed&&n.level>s&&(n.yFixed=!1,n.y=i[n.level].minPos,r=!0),1==r&&(i[n.level].minPos+=i[n.level].nodeSpacing,n.edges.length>1&&this._placeBranchNodes(n.edges,n.id,i,n.level))}},e._setLevel=function(t,e,i){for(var s=0;st)&&(o.level=t,o.edges.length>1&&this._setLevel(t+1,o.edges,o.id))}},e._setLevelDirected=function(t,e,i){this.nodes[i].hierarchyEnumerated=!0;for(var s,o,n=0;n1&&s.hierarchyEnumerated===!1&&this._setLevelDirected(s.level,s.edges,s.id)},e._restoreNodes=function(){for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.nodes[t].xFixed=!1,this.nodes[t].yFixed=!1)}},function(t){function e(t){throw new Error("Cannot find module '"+t+"'.")}e.keys=function(){return[]},e.resolve=e,t.exports=e,e.id=67},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l,c=this.calculationNodes,p=this.calculationNodeIndices,u=-2/3,m=4/3,f=this.constants.physics.repulsion.nodeDistance,g=f;for(d=0;di&&(r=.5*g>i?1:v*i+m,r*=0==n?1:1+n*this.constants.clustering.forceAmplification,r/=Math.max(i,.01*g),s=t*r,o=e*r,a.fx-=s,a.fy-=o,h.fx+=s,h.fy+=o)}}},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l=this.calculationNodes,c=this.calculationNodeIndices,p=this.constants.physics.hierarchicalRepulsion.nodeDistance;for(h=0;hi?-Math.pow(u*i,2)+Math.pow(u*p,2):0,0==i?i=.01:n/=i,s=t*n,o=e*n,r.fx-=s,r.fy-=o,a.fx+=s,a.fy+=o}},e._calculateHierarchicalSpringForces=function(){for(var t,e,i,s,o,n,r,a,h,d=this.edges,l=this.calculationNodes,c=this.calculationNodeIndices,p=0;pn;n++)t=e[i[n]],t.options.mass>0&&(this._getForceContribution(o.root.children.NW,t),this._getForceContribution(o.root.children.NE,t),this._getForceContribution(o.root.children.SW,t),this._getForceContribution(o.root.children.SE,t))}},e._getForceContribution=function(t,e){if(t.childrenCount>0){var i,s,o;if(i=t.centerOfMass.x-e.x,s=t.centerOfMass.y-e.y,o=Math.sqrt(i*i+s*s),o*t.calcSize>this.constants.physics.barnesHut.thetaInverted){0==o&&(o=.1*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}else if(4==t.childrenCount)this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e);else if(t.children.data.id!=e.id){0==o&&(o=.5*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}}},e._formBarnesHutTree=function(t,e){for(var i,s=e.length,o=Number.MAX_VALUE,n=Number.MAX_VALUE,r=-Number.MAX_VALUE,a=-Number.MAX_VALUE,h=0;s>h;h++){var d=t[e[h]].x,l=t[e[h]].y;t[e[h]].options.mass>0&&(o>d&&(o=d),d>r&&(r=d),n>l&&(n=l),l>a&&(a=l))}var c=Math.abs(r-o)-Math.abs(a-n);c>0?(n-=.5*c,a+=.5*c):(o+=.5*c,r-=.5*c);var p=1e-5,u=Math.max(p,Math.abs(r-o)),m=.5*u,f=.5*(o+r),g=.5*(n+a),v={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:f-m,maxX:f+m,minY:g-m,maxY:g+m},size:u,calcSize:1/u,children:{data:null},maxWidth:0,level:0,childrenCount:4}};for(this._splitBranch(v.root),h=0;s>h;h++)i=t[e[h]],i.options.mass>0&&this._placeInTree(v.root,i);this.barnesHutTree=v},e._updateBranchMass=function(t,e){var i=t.mass+e.options.mass,s=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=s,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=s,t.mass=i;var o=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")},e._placeInRegion=function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x==e.x&&t.children[i].children.data.y==e.y?(e.x+=Math.random(),e.y+=Math.random()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}},e._splitBranch=function(t){var e=null;1==t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)},e._insertRegion=function(t,e){var i,s,o,n,r=.5*t.size;switch(e){case"NW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY,n=t.range.minY+r;break;case"NE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY,n=t.range.minY+r;break;case"SW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY+r,n=t.range.maxY;break;case"SE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY+r,n=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:s,minY:o,maxY:n},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}},e._drawTree=function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))},e._drawBranch=function(t,e,i){void 0===i&&(i="#FF0000"),4==t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}},function(t){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}}])}); //# sourceMappingURL=vis.map diff --git a/docs/timeline.html b/docs/timeline.html index 8bfa691b..83addbe2 100644 --- a/docs/timeline.html +++ b/docs/timeline.html @@ -1170,8 +1170,16 @@ timeline.off('select', onSelect);

Editing Items

- When the Timeline is configured to be editable (both options selectable and editable are true), the user can move items by dragging them, can create a new item by double tapping on an empty space, can update an item by double tapping it, and can delete a selected item by clicking the delete button on the top right. + When the Timeline is configured to be editable (both options selectable and editable are true), the user can:

+
    +
  • Select an item by clicking it, and use ctrl+click to or shift+click to select multiple items
  • +
  • Move selected items by dragging them.
  • +
  • Create a new item by double tapping on an empty space.
  • +
  • Create a new range item by dragging on an empty space with the ctrl key down.
  • +
  • Update an item by double tapping it.
  • +
  • Delete a selected item by clicking the delete button on the top right.
  • +

Option editable accepts a boolean or an object. When editable is a boolean, all manipulation actions will be either enabled or disabled. When editable is an object, one can enable individual manipulation actions:

diff --git a/examples/timeline/08_edit_items.html b/examples/timeline/08_edit_items.html index 9948098b..b8213586 100644 --- a/examples/timeline/08_edit_items.html +++ b/examples/timeline/08_edit_items.html @@ -64,6 +64,7 @@ onMoving: function (item, callback) { if (item.start < min) item.start = min; if (item.start > max) item.start = max; + if (item.end > max) item.end = max; callback(item); // send back the (possibly) changed item }, diff --git a/lib/timeline/component/ItemSet.js b/lib/timeline/component/ItemSet.js index 571e87ea..9ba5adb6 100644 --- a/lib/timeline/component/ItemSet.js +++ b/lib/timeline/component/ItemSet.js @@ -1162,6 +1162,54 @@ ItemSet.prototype._onDragStart = function (event) { event.stopPropagation(); } + else if (this.options.editable.add && event.gesture.srcEvent.ctrlKey) { + // create a new range item when dragging with ctrl key down + this._onDragStartAddItem(event); + } +}; + +/** + * Start creating a new range item by dragging. + * @param {Event} event + * @private + */ +ItemSet.prototype._onDragStartAddItem = function (event) { + var snap = this.options.snap || null; + var xAbs = util.getAbsoluteLeft(this.dom.frame); + var x = event.gesture.center.pageX - xAbs - 10; // minus 10 to compensate for the drag starting as soon as you've moved 10px + var time = this.body.util.toTime(x); + var scale = this.body.util.getScale(); + var step = this.body.util.getStep(); + var start = snap ? snap(time, scale, step) : start; + var end = start; + + var itemData = { + type: 'range', + start: start, + end: end, + content: 'new item' + }; + + var id = util.randomUUID(); + itemData[this.itemsData._fieldId] = id; + + var group = this.groupFromTarget(event); + if (group) { + itemData.group = group.groupId; + } + + var newItem = new RangeItem(itemData, this.conversion, this.options); + newItem.id = id; // TODO: not so nice setting id afterwards + this._addItem(newItem); + + var props = { + item: newItem, + end: end.valueOf(), + initialX: event.gesture.center.clientX + }; + this.touchParams.itemProps = [props]; + + event.stopPropagation(); }; /** @@ -1272,49 +1320,65 @@ ItemSet.prototype._onDragEnd = function (event) { if (this.touchParams.itemProps) { // prepare a change set for the changed items - var changes = [], - me = this, - dataset = this.itemsData.getDataSet(); + var changes = []; + var me = this; + var dataset = this.itemsData.getDataSet(); var itemProps = this.touchParams.itemProps ; this.touchParams.itemProps = null; itemProps.forEach(function (props) { - var id = props.item.id, - itemData = me.itemsData.get(id, me.itemOptions); - - var changed = false; - if ('start' in props.item.data) { - changed = (props.start != props.item.data.start.valueOf()); - itemData.start = util.convert(props.item.data.start, - dataset._options.type && dataset._options.type.start || 'Date'); - } - if ('end' in props.item.data) { - changed = changed || (props.end != props.item.data.end.valueOf()); - itemData.end = util.convert(props.item.data.end, - dataset._options.type && dataset._options.type.end || 'Date'); - } - if ('group' in props.item.data) { - changed = changed || (props.group != props.item.data.group); - itemData.group = props.item.data.group; - } + var id = props.item.id; + var itemData = me.itemsData.get(id, me.itemOptions); - // only apply changes when start or end is actually changed - if (changed) { - me.options.onMove(itemData, function (itemData) { + if (!itemData) { + // add a new item + me.options.onAdd(props.item.data, function (itemData) { + me._removeItem(props.item); // remove temporary item if (itemData) { - // apply changes - itemData[dataset._fieldId] = id; // ensure the item contains its id (can be undefined) - changes.push(itemData); + me.itemsData.getDataSet().add(itemData); } - else { - // restore original values - me._updateItemProps(props.item, props); - me.stackDirty = true; // force re-stacking of all items next redraw - me.body.emitter.emit('change'); - } + // force re-stacking of all items next redraw + me.stackDirty = true; + me.body.emitter.emit('change'); }); } + else { + // update existing item + var changed = false; + if ('start' in props.item.data) { + changed = (props.start != props.item.data.start.valueOf()); + itemData.start = util.convert(props.item.data.start, + dataset._options.type && dataset._options.type.start || 'Date'); + } + if ('end' in props.item.data) { + changed = changed || (props.end != props.item.data.end.valueOf()); + itemData.end = util.convert(props.item.data.end, + dataset._options.type && dataset._options.type.end || 'Date'); + } + if ('group' in props.item.data) { + changed = changed || (props.group != props.item.data.group); + itemData.group = props.item.data.group; + } + + // only apply changes when start or end is actually changed + if (changed) { + me.options.onMove(itemData, function (itemData) { + if (itemData) { + // apply changes + itemData[dataset._fieldId] = id; // ensure the item contains its id (can be undefined) + changes.push(itemData); + } + else { + // restore original values + me._updateItemProps(props.item, props); + + me.stackDirty = true; // force re-stacking of all items next redraw + me.body.emitter.emit('change'); + } + }); + } + } }); // apply the changes to the data (if there are changes)