mirror of
https://github.com/pixelfed/pixelfed.git
synced 2024-12-27 15:33:17 +00:00
1 line
No EOL
2.9 MiB
1 line
No EOL
2.9 MiB
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/phpunserialize/phpUnserialize.js","webpack:///./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/chart.js/src/elements/element.rectangle.js","webpack:///./node_modules/chart.js/src/controllers/controller.scatter.js","webpack:///./node_modules/chart.js/src/controllers/controller.polarArea.js","webpack:///./node_modules/axios/lib/helpers/combineURLs.js","webpack:///./node_modules/chart.js/src/core/core.controller.js","webpack:///./node_modules/chartjs-color/index.js","webpack:///./node_modules/chart.js/src/charts/Chart.Line.js","webpack:///./node_modules/chart.js/src/scales/scale.radialLinear.js","webpack:///./node_modules/popper.js/dist/esm/popper.js","webpack:///./node_modules/chart.js/src/scales/scale.category.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/chart.js/src/core/core.animation.js","webpack:///./resources/js/pages/Metrics/Metric.vue?7756","webpack:///./resources/js/components/Charts/LineChart.vue?2c96","webpack:///resources/js/components/Charts/LineChart.vue","webpack:///./resources/js/components/Charts/LineChart.vue","webpack:///./resources/js/components/Charts/LineChart.vue?ca54","webpack:///./resources/js/pages/Metrics/Metric.vue?4a93","webpack:///resources/js/pages/Metrics/Metric.vue","webpack:///./resources/js/pages/Metrics/Metric.vue","webpack:///./resources/js/pages/Monitoring/Index.vue?6452","webpack:///./resources/js/pages/Monitoring/AddTagModal.vue?6afa","webpack:///resources/js/pages/Monitoring/AddTagModal.vue","webpack:///./resources/js/pages/Monitoring/AddTagModal.vue","webpack:///./resources/js/pages/Monitoring/AddTagModal.vue?e004","webpack:///./resources/js/pages/Monitoring/Index.vue?a5bc","webpack:///resources/js/pages/Monitoring/Index.vue","webpack:///./resources/js/pages/Monitoring/Index.vue","webpack:///./node_modules/chart.js/src/plugins/plugin.legend.js","webpack:///./node_modules/chart.js/src/helpers/helpers.options.js","webpack:///./node_modules/is-buffer/index.js","webpack:///./resources/js/pages/Monitoring/Tag.vue?8501","webpack:///./resources/js/pages/Monitoring/Tag.vue?4271","webpack:///resources/js/pages/Monitoring/Tag.vue","webpack:///./resources/js/pages/Monitoring/Tag.vue","webpack:///./node_modules/chart.js/src/core/core.defaults.js","webpack:///./resources/js/pages/Failed/Index.vue?9ff1","webpack:///./resources/js/pages/Failed/Index.vue?1d71","webpack:///resources/js/pages/Failed/Index.vue","webpack:///./resources/js/pages/Failed/Index.vue","webpack:///./node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/axios/lib/helpers/spread.js","webpack:///./resources/js/pages/Monitoring/Jobs.vue?c31b","webpack:///./resources/js/pages/Monitoring/Jobs.vue?9feb","webpack:///resources/js/pages/Monitoring/Jobs.vue","webpack:///./resources/js/pages/Monitoring/Jobs.vue","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///./node_modules/chart.js/src/controllers/controller.line.js","webpack:///./node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/chart.js/src/platforms/platform.basic.js","webpack:///./resources/js/components/Status/Loader.vue?05bd","webpack:///./resources/js/components/Status/Loader.vue?8bf9","webpack:///resources/js/components/Status/Loader.vue","webpack:///./resources/js/components/Status/Loader.vue","webpack:///./node_modules/axios/lib/defaults.js","webpack:///./node_modules/chart.js/src/core/core.element.js","webpack:///./node_modules/chart.js/src/core/core.datasetController.js","webpack:///./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack:///./node_modules/vue/dist/vue.runtime.esm.js","webpack:///./resources/js/pages/Metrics/Queues.vue?644c","webpack:///./resources/js/pages/Metrics/Queues.vue?f576","webpack:///resources/js/pages/Metrics/Queues.vue","webpack:///./resources/js/pages/Metrics/Queues.vue","webpack:///./node_modules/axios/lib/core/createError.js","webpack:///./node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/lodash/lodash.js","webpack:///./node_modules/axios/lib/helpers/buildURL.js","webpack:///./resources/js/pages/Failed/Job.vue?d809","webpack:///./resources/js/pages/Failed/Job.vue?12d5","webpack:///resources/js/pages/Failed/Job.vue","webpack:///./resources/js/pages/Failed/Job.vue","webpack:///./node_modules/chart.js/src/charts/Chart.Bar.js","webpack:///./node_modules/axios/lib/core/enhanceError.js","webpack:///./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/chart.js/src/elements/element.point.js","webpack:///./node_modules/chart.js/src/charts/Chart.Bubble.js","webpack:///./resources/js/layouts/MainLayout.vue?f819","webpack:///./resources/js/layouts/MainSidebar.vue","webpack:///./resources/js/layouts/MainSidebar.vue?a1dd","webpack:///./resources/js/layouts/MainLayout.vue?22bc","webpack:///resources/js/layouts/MainLayout.vue","webpack:///./resources/js/layouts/MainLayout.vue","webpack:///./node_modules/chart.js/src/scales/scale.time.js","webpack:///./node_modules/chart.js/src/helpers/index.js","webpack:///./node_modules/axios/lib/core/settle.js","webpack:///./node_modules/chart.js/src/charts/Chart.Scatter.js","webpack:///./node_modules/chart.js/src/charts/Chart.Doughnut.js","webpack:///./node_modules/bootstrap/dist/js/bootstrap.js","webpack:///./node_modules/chart.js/src/helpers/helpers.canvas.js","webpack:///./node_modules/color-name/index.js","webpack:///./node_modules/chart.js/src/helpers/helpers.core.js","webpack:///./node_modules/timers-browserify/main.js","webpack:///./node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/chart.js/src/elements/element.line.js","webpack:///./node_modules/chart.js/src/core/core.plugins.js","webpack:///./node_modules/chart.js/src/chart.js","webpack:///./node_modules/chart.js/src/elements/element.arc.js","webpack:///./node_modules/chart.js/src/controllers/controller.doughnut.js","webpack:///./node_modules/chart.js/src/scales/scale.logarithmic.js","webpack:///./node_modules/setimmediate/setImmediate.js","webpack:///./node_modules/chart.js/src/scales/scale.linear.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/chart.js/src/controllers/controller.bar.js","webpack:///./node_modules/chart.js/src/controllers/controller.radar.js","webpack:///./node_modules/vue-router/dist/vue-router.esm.js","webpack:///./resources/js/router.js","webpack:///./resources/js/components/App.vue?4462","webpack:///resources/js/components/App.vue","webpack:///./resources/js/components/App.vue","webpack:///./resources/js/components/App.vue?ceb1","webpack:///./resources/js/app.js","webpack:///./node_modules/chart.js/src/controllers/controller.bubble.js","webpack:///./node_modules/chart.js/src/core/core.scale.js","webpack:///./resources/js/pages/Dashboard.vue?62cb","webpack:///./resources/js/pages/Dashboard.vue?f8b3","webpack:///resources/js/pages/Dashboard.vue","webpack:///./resources/js/pages/Dashboard.vue","webpack:///./node_modules/chart.js/src/core/core.animations.js","webpack:///./node_modules/axios/lib/cancel/Cancel.js","webpack:///./node_modules/axios/lib/helpers/cookies.js","webpack:///./resources/js/pages/RecentJobs/Index.vue?e4f4","webpack:///./resources/js/pages/RecentJobs/Jobs.vue?c912","webpack:///resources/js/pages/RecentJobs/Jobs.vue","webpack:///./resources/js/pages/RecentJobs/Index.vue?bf3a","webpack:///resources/js/pages/RecentJobs/Index.vue","webpack:///./resources/js/pages/RecentJobs/Jobs.vue","webpack:///./resources/js/pages/RecentJobs/Jobs.vue?ae3c","webpack:///./resources/js/pages/RecentJobs/Index.vue","webpack:///./node_modules/chart.js/src/core/core.layouts.js","webpack:///./node_modules/chart.js/src/core/core.ticks.js","webpack:///./resources/js/components/Status/Status.vue?f9b1","webpack:///./resources/js/components/Status/Status.vue?b9f5","webpack:///resources/js/components/Status/Status.vue","webpack:///./resources/js/components/Status/Status.vue","webpack:///./node_modules/chart.js/src/platforms/platform.js","webpack:///./node_modules/chart.js/src/charts/Chart.Radar.js","webpack:///./node_modules/chart.js/src/plugins/index.js","webpack:///./node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/chartjs-color-string/color-string.js","webpack:///./node_modules/chart.js/src/plugins/plugin.title.js","webpack:///./node_modules/chart.js/src/core/core.interaction.js","webpack:///./node_modules/axios/lib/helpers/btoa.js","webpack:///./node_modules/chart.js/src/core/core.helpers.js","webpack:///./node_modules/chart.js/src/scales/scale.linearbase.js","webpack:///./resources/js/pages/Metrics/Jobs.vue?9622","webpack:///./resources/js/pages/Metrics/Jobs.vue?d49a","webpack:///resources/js/pages/Metrics/Jobs.vue","webpack:///./resources/js/pages/Metrics/Jobs.vue","webpack:///./node_modules/chart.js/src/platforms/platform.dom.js","webpack:///./node_modules/chart.js/src/charts/Chart.PolarArea.js","webpack:///./resources/js/pages/Metrics/Index.vue?da90","webpack:///./resources/js/pages/Metrics/Index.vue?d65f","webpack:///resources/js/pages/Metrics/Index.vue","webpack:///./resources/js/pages/Metrics/Index.vue","webpack:///./node_modules/color-convert/conversions.js","webpack:///./node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/chart.js/src/core/core.scaleService.js","webpack:///./node_modules/chart.js/src/helpers/helpers.easing.js","webpack:///./node_modules/color-convert/index.js","webpack:///./node_modules/axios/index.js","webpack:///./node_modules/chart.js/src/plugins/plugin.filler.js","webpack:///./node_modules/chart.js/src/elements/index.js","webpack:///./node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/moment/moment.js","webpack:///./node_modules/chart.js/src/core/core.tooltip.js","webpack:///./node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/axios/lib/utils.js","webpack:///./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/chart.js/src/core/core.js","webpack:///./node_modules/axios/lib/axios.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","root","factory","undefined","phpstr","parseNext","idx","refStack","ridx","readLength","del","indexOf","val","substring","parseInt","readInt","readString","ch","len","utfLen","bytes","charCodeAt","readType","type","charAt","readKey","message","fixPropertyName","parsedName","baseClassName","class_name","prop_name","pos","substr","ref","clazzname","content","parseFloat","parseAsFloat","parseAsBoolean","parseAsString","j","alen","resultArray","resultHash","keep","lref","push","length","parseAsArray","obj","parseAsObject","__PHP_Incomplete_Class_Name","serialized","parseAsRefValue","apply","url","test","defaults","Element","isVertical","bar","_view","width","getBarBounds","x1","x2","y1","y2","vm","halfWidth","x","Math","min","y","base","max","halfHeight","height","left","top","right","bottom","_set","elements","rectangle","backgroundColor","global","defaultColor","borderColor","borderSkipped","borderWidth","extend","draw","signX","signY","ctx","this","_chart","horizontal","barSize","abs","halfStroke","borderLeft","borderRight","borderTop","borderBottom","beginPath","fillStyle","strokeStyle","lineWidth","corners","startCorner","cornerAt","index","corner","moveTo","lineTo","fill","stroke","inRange","mouseX","mouseY","bounds","inLabelRange","inXRange","inYRange","getCenterPoint","getArea","tooltipPosition","hover","scales","xAxes","id","position","yAxes","showLines","tooltips","callbacks","title","label","item","xLabel","yLabel","Chart","controllers","scatter","line","helpers","scale","angleLines","display","gridLines","circular","pointLabels","ticks","beginAtZero","animation","animateRotate","animateScale","startAngle","PI","legendCallback","chart","text","data","datasets","labels","join","legend","generateLabels","map","meta","getDatasetMeta","ds","custom","valueAtIndexOrDefault","arcOpts","options","arc","hidden","isNaN","onClick","e","legendItem","ilen","update","polarArea","DatasetController","dataElementType","Arc","linkScales","noop","reset","angle","me","dataset","getDataset","getMeta","start","starts","_starts","angles","_angles","_updateRadius","count","countVisibleElements","_computeAngle","each","updateElement","chartArea","opts","minSize","outerRadius","innerRadius","cutoutPercentage","radiusLength","getVisibleDatasetCount","animationOpts","centerX","xCenter","centerY","yCenter","datasetStartAngle","distance","getDistanceFromCenterForValue","endAngle","resetRadius","_datasetIndex","_index","_scale","_model","elementOpts","valueOrDefault","model","pivot","element","context","dataIndex","datasetIndex","resolve","baseURL","relativeURL","replace","Animation","animations","Interaction","layouts","platform","plugins","scaleService","Tooltip","positionIsHorizontal","types","instances","construct","config","configMerge","initConfig","acquireContext","canvas","uid","aspectRatio","_bufferedRender","controller","set","initialize","notify","retinaScale","devicePixelRatio","bindEvents","responsive","resize","ensureScalesHaveIDs","buildOrUpdateScales","initToolTip","clear","stop","cancelAnimation","silent","maintainAspectRatio","newWidth","floor","getMaximumWidth","newHeight","getMaximumHeight","style","newSize","onResize","duration","responsiveAnimationDuration","scalesOptions","scaleOptions","xAxisOptions","yAxisOptions","items","updated","keys","reduce","concat","dtype","dposition","isDefault","scaleType","scaleClass","getScaleConstructor","mergeTicksOptions","hasUpdated","addScalesToLayout","buildOrUpdateControllers","newControllers","destroyDatasetMeta","updateIndex","ControllerClass","Error","resetElements","tooltip","newOptions","lazy","arguments","removeBox","_options","_invalidate","_data","buildOrUpdateElements","updateLayout","updateDatasets","lastActive","_bufferedRequest","easing","render","updateDataset","args","animationOptions","onComplete","callback","numSteps","animationObject","easingFunction","effects","currentStep","stepDecimal","onAnimationProgress","onProgress","onAnimationComplete","addAnimation","easingValue","isNullOrUndef","transition","boxes","box","drawDatasets","_drawTooltip","isDatasetVisible","drawDataset","getElementAtEvent","modes","single","getElementsAtEvent","intersect","getElementsAtXAxis","getElementsAtEventForMode","method","getDatasetAtEvent","_meta","xAxisID","yAxisID","generateLegend","destroy","unbindEvents","releaseContext","toBase64Image","toDataURL","_chartInstance","listeners","_listeners","listener","eventHandler","events","addEventListener","removeEventListener","updateHoverStyle","enabled","changed","handleEvent","_start","bufferedRequest","animating","animationDuration","hoverOptions","active","onHover","native","arrayEquals","Controller","convert","string","Color","valid","values","rgb","hsl","hsv","hwb","cmyk","alpha","vals","getRgba","setValues","getHsla","getHwb","red","lightness","v","w","whiteness","cyan","isValid","setSpace","rgbArray","hslArray","hsvArray","hwbArray","cmykArray","rgbaArray","hslaArray","setChannel","green","blue","hue","saturation","saturationv","blackness","magenta","yellow","black","hexString","rgbString","rgbaString","percentString","hslString","hslaString","hwbString","keyword","rgbNumber","luminosity","lum","chan","pow","contrast","color2","lum1","lum2","level","contrastRatio","dark","light","negate","lighten","ratio","darken","saturate","desaturate","whiten","blacken","greyscale","clearer","opaquer","rotate","degrees","mix","mixinColor","weight","a","w1","w2","toJSON","clone","result","source","target","prop","toString","slice","spaces","maxes","getValues","space","capped","chans","round","sname","Array","svalues","window","Line","Ticks","globalDefaults","defaultConfig","animate","color","showLabelBackdrop","backdropColor","backdropPaddingY","backdropPaddingX","formatters","linear","fontSize","getValueCount","getPointLabelFontOptions","pointLabelOptions","defaultFontSize","fontStyle","defaultFontStyle","fontFamily","defaultFontFamily","size","family","font","fontString","determineLimits","end","getTextAlignForAngle","fillText","isArray","spacing","adjustPointPositionForLabelHeight","textSize","h","numberOrZero","param","isNumber","LinearRadialScale","LinearScaleBase","setDimensions","tickOpts","maxWidth","maxHeight","tickFontSize","drawingArea","determineDataLimits","Number","POSITIVE_INFINITY","NEGATIVE_INFINITY","rawValue","getRightValue","handleTickRangeOptions","getTickLimit","maxTicksLimit","ceil","convertTicksToLabels","getLabelForIndex","fit","largestPossibleRadius","pointPosition","plFont","furthestLimits","b","furthestAngles","_pointLabelSizes","valueCount","getPointPosition","longestText","measureText","angleRadians","getIndexAngle","toDegrees","hLimits","vLimits","setReductions","fitWithPointLabels","setCenterPoint","radiusReductionLeft","sin","radiusReductionRight","radiusReductionTop","cos","radiusReductionBottom","leftMovement","rightMovement","topMovement","bottomMovement","maxRight","maxLeft","maxTop","maxBottom","scalingFactor","reverse","distanceFromCenter","thisAngle","getPointPositionForValue","getBasePosition","gridLineOpts","tickFontStyle","tickFontFamily","tickLabelFont","yCenterOffset","ticksAsNumbers","radius","closePath","drawRadiusLine","tickFontColor","fontColor","defaultFontColor","save","translate","labelWidth","fillRect","textAlign","textBaseline","restore","angleLineOpts","pointLabelOpts","outerDistance","outerPosition","pointLabelPosition","pointLabelFontColor","drawPointLabels","registerScaleType","__webpack_exports__","isBrowser","document","longerTimeoutBrowsers","timeoutDuration","navigator","userAgent","debounce","Promise","fn","called","then","scheduled","setTimeout","isFunction","functionToCheck","getStyleComputedProperty","nodeType","css","ownerDocument","defaultView","getComputedStyle","getParentNode","nodeName","parentNode","host","getScrollParent","body","_getStyleComputedProp","overflow","overflowX","overflowY","isIE11","MSInputMethodContext","documentMode","isIE10","isIE","version","getOffsetParent","documentElement","noOffsetParent","offsetParent","nextElementSibling","getRoot","node","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","range","createRange","setStart","setEnd","commonAncestorContainer","contains","firstElementChild","element1root","getScroll","upperSide","html","scrollingElement","getBordersSize","styles","axis","sideA","sideB","getSize","computedStyle","getWindowSizes","classCallCheck","instance","Constructor","TypeError","createClass","defineProperties","props","descriptor","configurable","writable","protoProps","staticProps","_extends","assign","getClientRect","offsets","getBoundingClientRect","rect","scrollTop","scrollLeft","sizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","offsetHeight","getOffsetRectRelativeToArbitraryNode","children","parent","fixedPosition","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","subtract","modifier","includeScroll","getFixedPositionOffsetParent","parentElement","el","getBoundaries","popper","reference","padding","boundariesElement","boundaries","excludeScroll","relativeOffset","innerWidth","innerHeight","getViewportOffsetRectRelativeToArtbitraryNode","boundariesNode","isFixed","_getWindowSizes","isPaddingNumber","computeAutoPlacement","placement","refRect","rects","sortedAreas","area","_ref","sort","filteredAreas","filter","_ref2","computedPlacement","variation","split","getReferenceOffsets","state","getOuterSizes","marginBottom","marginRight","getOppositePlacement","hash","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","find","arr","check","runModifiers","modifiers","ends","findIndex","cur","match","forEach","isModifierEnabled","modifierName","some","getSupportedPropertyName","prefixes","upperProp","toUpperCase","prefix","toCheck","getWindow","setupEventListeners","updateBound","passive","scrollElement","attachToScrollParents","event","scrollParents","isBody","eventsEnabled","disableEventListeners","cancelAnimationFrame","scheduleUpdate","isNumeric","isFinite","setStyles","unit","isFirefox","isModifierRequired","requestingName","requestedName","requesting","isRequired","placements","validPlacements","clockwise","counter","BEHAVIORS","FLIP","CLOCKWISE","COUNTERCLOCKWISE","parseOffset","offset","basePlacement","useHeight","fragments","frag","trim","divider","search","splitRegex","ops","op","mergeWithPrevious","str","toValue","index2","Defaults","positionFixed","removeOnDestroy","onCreate","onUpdate","shift","shiftvariation","_data$offsets","side","shiftOffsets","preventOverflow","transformProp","popperStyles","transform","priority","primary","escapeWithReference","secondary","keepTogether","opSide","arrow","_data$offsets$arrow","arrowElement","querySelector","sideCapitalized","toLowerCase","altSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","flip","flipped","originalPlacement","placementOpposite","flipOrder","behavior","step","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariation","flipVariations","getOppositeVariation","inner","subtractLength","hide","bound","attributes","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","shouldRound","noRound","referenceWidth","popperWidth","isVariation","horizontalToInteger","verticalToInteger","getRoundedOffsets","prefixedProperty","willChange","invertTop","invertLeft","x-placement","arrowStyles","applyStyle","setAttribute","removeAttribute","onLoad","modifierOptions","Popper","_this","requestAnimationFrame","isDestroyed","isCreated","jquery","enableEventListeners","removeChild","Utils","PopperUtils","Scale","DatasetScale","getLabels","isHorizontal","xLabels","yLabels","minIndex","maxIndex","buildTicks","getPixelForValue","valueCategory","offsetAmt","valueWidth","widthOffset","valueHeight","heightOffset","getPixelForTick","getValueForPixel","pixel","_ticks","horz","valueDimension","getBasePixel","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","defaultClearTimeout","runTimeout","fun","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","run","marker","runClearTimeout","Item","array","nextTick","browser","env","argv","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","binding","cwd","chdir","dir","umask","utils","InterceptorManager","handlers","use","fulfilled","rejected","eject","Charts_LineChartvue_type_script_lang_js_","mounted","$refs","getContext","chart_default","beforeBuildTicks","_","afterTickToLabelConversion","LineChart","componentNormalizer","_h","$createElement","_c","_self","staticStyle","attrs","Metrics_Metricvue_type_script_lang_js_","components","Layout","MainLayout","loading","rawData","metric","loadMetric","methods","$http","encodeURIComponent","slug","response","prepareData","throughPutChart","buildChartData","runTimeChart","_this2","lodash_default","chain","time","formatDate","format","groupBy","sum","runtime","throughput","attribute","lineTension","pointBackgroundColor","Metric_component","_vm","staticClass","_v","_s","yes","_e","Monitoring_AddTagModalvue_type_script_lang_js_","saving","jquery_default","modal","Bus","$emit","$nextTick","tag","focus","saveTag","post","AddTagModal","tabindex","role","_m","directives","rawName","expression","domProps","keyup","$event","_k","keyCode","input","composing","disabled","click","Monitoring_Indexvue_type_script_lang_js_","loadingTags","addTagModalOpened","tags","loadTags","$on","openTagModal","stopMonitoring","_this3","delete","reject","existing","Index_component","_l","to","params","href","getBoxWidth","labelOpts","usePointStyle","SQRT2","boxWidth","fullWidth","ci","lineCap","borderCapStyle","lineDash","borderDash","lineDashOffset","borderDashOffset","lineJoin","borderJoinStyle","pointStyle","Legend","legendHitBoxes","doughnutMode","beforeUpdate","margins","beforeSetDimensions","afterSetDimensions","beforeBuildLabels","buildLabels","afterBuildLabels","beforeFit","afterFit","afterUpdate","paddingLeft","paddingTop","paddingRight","paddingBottom","legendItems","globalDefault","labelFont","hitboxes","lineWidths","totalHeight","vPadding","columnWidths","totalWidth","currentColWidth","currentColHeight","itemHeight","itemWidth","lineDefault","legendWidth","cursor","textWidth","isLineWidthZero","setLineDash","offSet","drawPoint","strokeRect","drawLegendBox","halfFontSize","xLeft","yMiddle","lh","hitBox","createNewLegendAndAttach","legendOpts","configure","addBox","_element","beforeInit","mergeIf","afterEvent","toLineHeight","matches","toPadding","isObject","inputs","isBuffer","constructor","readFloatLE","isSlowBuffer","_isBuffer","Monitoring_Tagvue_type_script_lang_js_","component","$route","exact","active-class","scope","merge","Failed_Indexvue_type_script_lang_js_","tagSearchPhrase","searchTimeout","page","perPage","totalPages","loadingJobs","retryingJobs","jobs","watch","loadJobs","created","refreshJobsPeriodically","destroyed","clearInterval","interval","starting","tagQuery","total","retry","isRetrying","job","includes","hasCompleted","retried_by","status","_this4","setInterval","previous","next","placeholder","jobId","data-toggle","jobBaseName","displayableTagsList","payload","failed_at","String","reserved_at","toFixed","readableTimestamp","class","spin","xmlns:xlink","xlink:href","dispatchRequest","Axios","instanceConfig","interceptors","request","promise","interceptor","unshift","Monitoring_Jobsvue_type_script_lang_js_","Status","loadState","failed","pushedAt","completed_at","pending","noGlobal","getProto","getPrototypeOf","class2type","hasOwn","fnToString","ObjectFunctionString","support","isWindow","preservedScriptAttributes","src","noModule","DOMEval","code","doc","script","createElement","head","appendChild","toType","jQuery","selector","init","rtrim","isArrayLike","toArray","num","pushStack","elems","ret","prevObject","elem","first","eq","last","splice","copy","copyIsArray","deep","isPlainObject","expando","random","isReady","error","msg","proto","Ctor","isEmptyObject","globalEval","makeArray","results","inArray","second","grep","invert","callbackExpect","arg","guid","iterator","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","Date","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","sortOrder","pop","push_native","list","booleans","whitespace","identifier","pseudos","rwhitespace","RegExp","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","escaped","escapedWhitespace","high","fromCharCode","rcssescape","fcssescape","asCodePoint","unloadHandler","disabledAncestor","addCombinator","childNodes","els","seed","nid","groups","newSelector","newContext","exec","getElementById","getElementsByTagName","getElementsByClassName","qsa","getAttribute","toSelector","testContext","querySelectorAll","qsaError","cache","cacheLength","markFunction","assert","addHandle","handler","attrHandle","siblingCheck","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","hasCompare","subWindow","attachEvent","className","createComment","getById","getElementsByName","attrId","getAttributeNode","tmp","innerHTML","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","adown","bup","compare","sortDetached","aup","ap","bp","expr","attr","specified","escape","sel","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","what","simple","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","useCache","lastChild","uniqueID","pseudo","setFilters","not","matcher","unmatched","has","innerText","lang","elemLang","location","activeElement","hasFocus","tabIndex","checked","selected","selectedIndex","empty","header","button","even","odd","lt","gt","radio","checkbox","file","password","image","submit","tokens","combinator","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","filters","parseOnly","soFar","preFilters","cached","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","token","compiled","defaultValue","unique","isXMLDoc","escapeSelector","until","truncate","is","siblings","rneedsContext","rsingleTag","winnow","qualifier","self","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","contents","prev","sibling","targets","closest","prevAll","add","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","rnothtmlwhite","Identity","Thrower","ex","adoptValue","noValue","fail","Callbacks","flag","createOptions","firing","memory","fired","locked","firingIndex","fire","stopOnFalse","remove","disable","lock","fireWith","Deferred","func","tuples","always","deferred","catch","pipe","fns","newDefer","tuple","returned","progress","onFulfilled","onRejected","maxDepth","depth","special","that","mightThrow","notifyWith","resolveWith","exceptionHook","stackTrace","rejectWith","getStackHook","stateString","when","singleValue","remaining","resolveContexts","resolveValues","master","updateFunc","rerrorNames","stack","console","warn","readyException","readyList","completed","readyWait","wait","readyState","doScroll","access","chainable","emptyGet","raw","bulk","rmsPrefix","rdashAlpha","fcamelCase","all","letter","camelCase","acceptData","owner","Data","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","JSON","parse","getData","removeData","_removeData","dequeue","startLength","hooks","_queueHooks","setter","clearQueue","defer","pnum","rcssNum","cssExpand","isHiddenWithinTree","swap","old","adjustCSS","valueParts","tween","adjusted","maxIterations","currentValue","initial","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","show","toggle","rcheckableType","rtagName","rscriptType","wrapMap","option","thead","col","tr","td","_default","getAll","setGlobalEval","refElements","optgroup","tbody","tfoot","colgroup","caption","th","div","rhtml","buildFragment","scripts","selection","ignored","wrap","fragment","createDocumentFragment","nodes","htmlPrefilter","createTextNode","checkClone","cloneNode","noCloneChecked","rkeyEvent","rmouseEvent","rtypenamespace","returnTrue","returnFalse","safeActiveElement","err","one","origFn","handleObjIn","eventHandle","handleObj","namespaces","origType","elemData","handle","triggered","dispatch","delegateType","bindType","namespace","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","preventDefault","stopPropagation","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","Event","originalEvent","load","noBubble","trigger","blur","beforeunload","returnValue","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","now","isSimulated","stopImmediatePropagation","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","view","char","charCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","which","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rxhtmlTag","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","pdataOld","pdataCur","udataOld","udataCur","domManip","collection","hasScripts","iNoClone","valueIsFunction","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","append","prepend","insertBefore","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","original","insert","rnumnonpx","getStyles","opener","rboxStyle","curCSS","computed","minWidth","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","container","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","measure","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","rdisplayswap","rcustomProp","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","cssPrefixes","emptyStyle","finalPropName","cssProps","capName","vendorPropName","setPositiveNumber","boxModelAdjustment","dimension","isBorderBox","computedVal","extra","delta","getWidthOrHeight","valueIsBorderBox","Tween","cssHooks","opacity","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","lineHeight","orphans","widows","zIndex","zoom","origName","isCustomProp","setProperty","getClientRects","margin","border","suffix","expand","expanded","parts","propHooks","percent","eased","fx","swing","fxNow","inProgress","rfxtypes","rrun","schedule","tick","createFxNow","genFx","includeWidth","createTween","tweeners","properties","stopped","prefilters","currentTime","startTime","tweens","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","complete","timer","anim","*","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","prefilter","speed","opt","speeds","fadeTo","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","delay","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","attrNames","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","for","addClass","classes","curValue","clazz","finalValue","removeClass","toggleClass","stateVal","isValidValue","classNames","hasClass","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","isTrigger","parentWindow","simulate","triggerHandler","attaches","nonce","rquery","parseXML","DOMParser","parseFromString","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","valueOrFunction","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","lastModified","etag","isLocal","protocol","processData","async","contentType","accepts","json","responseFields","converters","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","abort","statusText","finalText","crossDomain","hasContent","ifModified","headers","beforeSend","success","send","nativeStatusText","responses","isSuccess","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","current","conv","dataFilter","throws","ajaxConvert","getJSON","getScript","wrapAll","wrapInner","htmlIsFunction","unwrap","visible","xhr","XMLHttpRequest","xhrSuccessStatus","0","1223","xhrSupported","cors","errorCallback","open","username","xhrFields","onload","onerror","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","text script","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","animated","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","win","pageYOffset","pageXOffset","parentOffset","scrollTo","Height","Width","","defaultExtra","funcName","fnOver","fnOut","unbind","delegate","undelegate","proxy","holdReady","hold","parseJSON","_jQuery","_$","$","noConflict","spanGaps","lineEnabled","showLine","datasetElementType","Point","points","lineElementOptions","getScaleForId","tension","_children","steppedLine","stepped","cubicInterpolationMode","updateBezierControlPoints","getPointBackgroundColor","point","getPointBorderColor","pointBorderColor","getPointBorderWidth","pointBorderWidth","getPointRotation","pointRotation","rotation","yScale","xScale","pointOptions","pointRadius","hitRadius","pointHitRadius","NaN","calculatePointY","_xScale","_yScale","dsMeta","sumPos","sumNeg","stacked","stackedRightValue","rightValue","controlPoints","capControlPoint","pt","splineCurveMonotone","splineCurve","previousItem","nextItem","controlPointPreviousX","controlPointPreviousY","controlPointNextX","controlPointNextY","capBezierPoints","halfBorderWidth","clipArea","unclipArea","setHoverStyle","$previousStyle","hoverBackgroundColor","pointHoverBackgroundColor","getHoverColor","hoverBorderColor","pointHoverBorderColor","hoverBorderWidth","pointHoverBorderWidth","hoverRadius","pointHoverRadius","thisArg","Status_Loadervue_type_script_lang_js_","normalizeHeaderName","DEFAULT_CONTENT_TYPE","Content-Type","setContentTypeIfUnset","isUndefined","adapter","transformRequest","isFormData","isArrayBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","isURLSearchParams","stringify","transformResponse","xsrfCookieName","xsrfHeaderName","maxContentLength","validateStatus","common","Accept","configuration","ease","actual","origin","c0","c1","interpolate","hasValue","inherits","arrayEvents","unlistenArrayEvents","stub","_chartjs","addElements","scaleID","createMetaDataset","createMetaData","metaData","addElementAndReset","res","resyncElements","removeHoverStyle","numMeta","numData","insertElements","onDataPush","onDataPop","onDataShift","onDataSplice","onDataUnshift","normalizeComponent","scriptExports","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","_compiled","functional","_scopeId","$vnode","ssrContext","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","beforeCreate","setImmediate","emptyObject","freeze","isUndef","isDef","isTrue","isPrimitive","_toString","isRegExp","isValidArrayIndex","toNumber","makeMap","expectsLowerCase","isReservedAttribute","camelizeRE","camelize","capitalize","hyphenateRE","hyphenate","Function","boundFn","_length","_from","toObject","no","identity","looseEqual","isObjectA","isObjectB","isArrayA","isArrayB","every","getTime","keysA","keysB","looseIndexOf","SSR_ATTR","ASSET_TYPES","LIFECYCLE_HOOKS","optionMergeStrategies","productionTip","devtools","performance","errorHandler","warnHandler","ignoredElements","keyCodes","isReservedTag","isReservedAttr","isUnknownElement","getTagNamespace","parsePlatformTagName","mustUseProp","_lifecycleHooks","def","bailRE","_isServer","hasProto","inBrowser","inWeex","WXEnvironment","weexPlatform","UA","isIE9","isEdge","isIOS","nativeWatch","supportsPassive","isServerRendering","VUE_ENV","__VUE_DEVTOOLS_GLOBAL_HOOK__","isNative","_Set","hasSymbol","Reflect","ownKeys","Set","Dep","subs","addSub","sub","removeSub","depend","addDep","targetStack","pushTarget","popTarget","VNode","elm","componentOptions","asyncFactory","fnContext","fnOptions","fnScopeId","componentInstance","isStatic","isRootInsert","isComment","isCloned","isOnce","asyncMeta","isAsyncPlaceholder","prototypeAccessors","child","createEmptyVNode","createTextVNode","cloneVNode","vnode","cloned","arrayProto","arrayMethods","inserted","ob","__ob__","observeArray","dep","arrayKeys","getOwnPropertyNames","shouldObserve","toggleObserving","Observer","vmCount","__proto__","copyAugment","walk","observe","asRootData","isExtensible","_isVue","defineReactive$$1","customSetter","shallow","getOwnPropertyDescriptor","childOb","dependArray","newVal","strats","mergeData","from","toVal","fromVal","mergeDataOrFn","parentVal","childVal","instanceData","defaultData","mergeHook","dedupeHooks","mergeAssets","key$1","inject","provide","defaultStrat","mergeOptions","normalizeProps","normalized","normalizeInject","dirs","normalizeDirectives","_base","extends","mixins","mergeField","strat","resolveAsset","warnMissing","assets","camelizedId","PascalCaseId","validateProp","propOptions","propsData","absent","booleanIndex","getTypeIndex","Boolean","stringIndex","default","_props","getType","getPropDefaultValue","prevShouldObserve","isSameType","expectedTypes","handleError","info","$parent","errorCaptured","globalHandleError","logError","microTimerFunc","macroTimerFunc","flushCallbacks","copies","useMacroTask","MessageChannel","channel","port","port2","port1","onmessage","postMessage","cb","_resolve","seenObjects","traverse","_traverse","seen","isA","isFrozen","depId","normalizeEvent","once$$1","capture","createFnInvoker","invoker","arguments$1","updateListeners","oldOn","remove$$1","createOnceHandler","mergeVNodeHook","hookKey","oldHook","wrappedHook","merged","checkProp","preserve","normalizeChildren","normalizeArrayChildren","nestedIndex","lastIndex","isTextNode","_isVList","ensureCtor","comp","getFirstComponentChild","remove$1","$off","_target","onceHandler","updateComponentListeners","oldListeners","resolveSlots","slots","slot","name$1","isWhitespace","resolveScopedSlots","activeInstance","setActiveInstance","prevActiveInstance","isInInactiveTree","_inactive","activateChildComponent","direct","_directInactive","$children","callHook","_hasHookEvent","activatedChildren","waiting","flushing","flushSchedulerQueue","watcher","activatedQueue","updatedQueue","callActivatedHooks","_watcher","_isMounted","_isDestroyed","callUpdatedHooks","uid$1","Watcher","expOrFn","isRenderWatcher","_watchers","user","sync","dirty","deps","newDeps","depIds","newDepIds","path","segments","parsePath","cleanupDeps","queueWatcher","oldValue","evaluate","_isBeingDestroyed","sharedPropertyDefinition","sourceKey","initState","propsOptions","_propKeys","loop","initProps","initMethods","initData","watchers","_computedWatchers","isSSR","userDef","computedWatcherOptions","defineComputed","initComputed","createWatcher","initWatch","shouldCache","createComputedGetter","createGetterInvoker","$watch","resolveInject","provideKey","_provided","provideDefault","renderList","renderSlot","fallback","bindObject","scopedSlotFn","$scopedSlots","$slots","resolveFilter","isKeyNotMatch","expect","checkKeyCodes","eventKeyCode","builtInKeyCode","eventKeyName","builtInKeyName","mappedKeyCode","bindObjectProps","asProp","isSync","camelizedKey","renderStatic","isInFor","_staticTrees","tree","markStatic","_renderProxy","markOnce","markStaticNode","bindObjectListeners","ours","installRenderHelpers","_o","_n","_t","_q","_i","_f","_b","_u","_g","FunctionalRenderContext","contextVm","_original","isCompiled","needNormalization","injections","scopedSlots","cloneAndMarkFunctionalResult","renderContext","mergeProps","componentVNodeHooks","hydrating","keepAlive","mountedNode","prepatch","_isComponent","_parentVnode","inlineTemplate","createComponentInstanceForVnode","$mount","oldVnode","parentVnode","renderChildren","hasChildren","_renderChildren","_vnode","$attrs","$listeners","propKeys","_parentListeners","$forceUpdate","updateChildComponent","deactivateChildComponent","$destroy","hooksToMerge","createComponent","baseCtor","cid","errorComp","resolved","loadingComp","forceRender","renderCompleted","reason","resolveAsyncComponent","createAsyncPlaceholder","resolveConstructorOptions","transformModel","extractPropsFromVNodeData","vnodes","createFunctionalComponent","nativeOn","abstract","toMerge","_merged","mergeHook$1","installComponentHooks","f1","f2","SIMPLE_NORMALIZE","ALWAYS_NORMALIZE","normalizationType","alwaysNormalize","simpleNormalizeChildren","pre","applyNS","force","registerDeepBindings","_createElement","uid$3","super","superOptions","modifiedOptions","latest","sealed","sealedOptions","resolveModifiedOptions","extendOptions","Vue","_init","initExtend","Super","SuperId","cachedCtors","_Ctor","Sub","Comp","initProps$1","initComputed$1","mixin","getComponentName","pruneCache","keepAliveInstance","cachedNode","pruneCacheEntry","cached$$1","_uid","vnodeComponentOptions","_componentTag","initInternalComponent","initLifecycle","_events","initEvents","parentData","initRender","initInjections","initProvide","initMixin","dataDef","propsDef","$set","$delete","immediate","stateMixin","hookRE","$once","i$1","cbs","eventsMixin","_update","prevEl","$el","prevVnode","restoreActiveInstance","__patch__","__vue__","lifecycleMixin","_render","renderMixin","patternTypes","builtInComponents","KeepAlive","include","exclude","this$1","configDef","util","defineReactive","plugin","installedPlugins","_installedPlugins","install","initUse","initMixin$1","definition","initAssetRegisters","initGlobalAPI","acceptValue","isEnumeratedAttr","isBooleanAttr","xlinkNS","isXlink","getXlinkProp","isFalsyAttrValue","genClassForVnode","childNode","mergeClassData","dynamicClass","stringifyClass","renderClass","stringified","stringifyArray","stringifyObject","namespaceMap","svg","math","isHTMLTag","isSVG","unknownElementCache","isTextInputType","nodeOps","tagName","multiple","createElementNS","newNode","referenceNode","setTextContent","setStyleScope","registerRef","isRemoval","refs","refInFor","emptyNode","sameVnode","typeA","typeB","sameInputType","createKeyToOldIdx","beginIdx","endIdx","updateDirectives","oldDir","isCreate","isDestroy","oldDirs","normalizeDirectives$1","newDirs","dirsWithInsert","dirsWithPostpatch","callHook$1","componentUpdated","callInsert","emptyModifiers","getRawDirName","baseModules","updateAttrs","inheritAttrs","oldAttrs","setAttr","removeAttributeNS","baseSetAttr","setAttributeNS","__ieph","blocker","updateClass","oldData","cls","transitionClass","_transitionClasses","_prevClass","target$1","klass","RANGE_TOKEN","CHECKBOX_RADIO_TOKEN","createOnceHandler$1","remove$2","add$1","_withTask","updateDOMListeners","change","normalizeEvents","updateDOMProps","oldProps","_value","strCur","shouldUpdateValue","checkVal","notInFocus","isNotInFocusAndDirty","_vModifiers","number","isDirtyWithModifiers","parseStyleText","propertyDelimiter","normalizeStyleData","normalizeStyleBinding","bindingStyle","cssVarRE","importantRE","setProp","normalizedName","normalize","vendorNames","updateStyle","oldStaticStyle","oldStyleBinding","normalizedStyle","oldStyle","newStyle","checkChild","styleData","getStyle","whitespaceRE","classList","tar","resolveTransition","def$$1","autoCssTransition","enterClass","enterToClass","enterActiveClass","leaveClass","leaveToClass","leaveActiveClass","hasTransition","TRANSITION","ANIMATION","transitionProp","transitionEndEvent","animationProp","animationEndEvent","ontransitionend","onwebkittransitionend","onanimationend","onwebkitanimationend","raf","nextFrame","addTransitionClass","transitionClasses","removeTransitionClass","whenTransitionEnds","expectedType","getTransitionInfo","propCount","ended","onEnd","transformRE","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","durations","toMs","enter","toggleDisplay","_leaveCb","cancelled","_enterCb","appearClass","appearToClass","appearActiveClass","beforeEnter","afterEnter","enterCancelled","beforeAppear","appear","afterAppear","appearCancelled","transitionNode","isAppear","startClass","activeClass","toClass","beforeEnterHook","enterHook","afterEnterHook","enterCancelledHook","explicitEnterDuration","expectsCSS","userWantsControl","getHookArgumentsLength","pendingNode","_pending","isValidDuration","leave","rm","beforeLeave","afterLeave","leaveCancelled","delayLeave","explicitLeaveDuration","performLeave","invokerFns","_enter","patch","backend","removeNode","createElm","insertedVnodeQueue","parentElm","refElm","nested","ownerArray","isReactivated","initComponent","innerNode","activate","reactivateComponent","setScope","createChildren","invokeCreateHooks","pendingInsert","isPatchable","ref$$1","ancestor","addVnodes","startIdx","invokeDestroyHook","removeVnodes","removeAndInvokeRemoveHook","childElm","createRmCb","findIdxInOld","oldCh","patchVnode","removeOnly","hydrate","newCh","oldKeyToIdx","idxInOld","vnodeToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","canMove","updateChildren","postpatch","invokeInsertHook","isRenderedModule","inVPre","hasChildNodes","childrenMatch","fullInvoke","isInitialPatch","isRealElement","hasAttribute","oldElm","patchable","i$2","createPatchFunction","vmodel","directive","_vOptions","setSelected","getValue","onCompositionStart","onCompositionEnd","prevOptions","curOptions","hasNoMatchingOption","actuallySetSelected","isMultiple","createEvent","initEvent","dispatchEvent","locateNode","platformDirectives","transition$$1","originalDisplay","__vOriginalDisplay","transitionProps","getRealChild","compOptions","extractTransitionData","rawChild","isNotTextNode","isVShowDirective","Transition","hasParentTransition","_leaving","oldRawChild","oldChild","isSameChild","delayedLeave","moveClass","callPendingCbs","_moveCb","recordPosition","newPos","applyTranslation","oldPos","dx","dy","moved","WebkitTransform","transitionDuration","platformComponents","TransitionGroup","beforeMount","kept","prevChildren","rawChildren","transitionData","removed","c$1","hasMove","_reflow","propertyName","_hasMove","HTMLUnknownElement","HTMLElement","updateComponent","mountComponent","query","Metrics_Queuesvue_type_script_lang_js_","loadingQueues","queues","loadQueues","enhanceError","__CANCEL__","LARGE_ARRAY_SIZE","CORE_ERROR_TEXT","FUNC_ERROR_TEXT","HASH_UNDEFINED","MAX_MEMOIZE_SIZE","PLACEHOLDER","CLONE_DEEP_FLAG","CLONE_FLAT_FLAG","CLONE_SYMBOLS_FLAG","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","WRAP_BIND_FLAG","WRAP_BIND_KEY_FLAG","WRAP_CURRY_BOUND_FLAG","WRAP_CURRY_FLAG","WRAP_CURRY_RIGHT_FLAG","WRAP_PARTIAL_FLAG","WRAP_PARTIAL_RIGHT_FLAG","WRAP_ARY_FLAG","WRAP_REARG_FLAG","WRAP_FLIP_FLAG","DEFAULT_TRUNC_LENGTH","DEFAULT_TRUNC_OMISSION","HOT_COUNT","HOT_SPAN","LAZY_FILTER_FLAG","LAZY_MAP_FLAG","INFINITY","MAX_SAFE_INTEGER","MAX_INTEGER","NAN","MAX_ARRAY_LENGTH","MAX_ARRAY_INDEX","HALF_MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","asyncTag","boolTag","dateTag","domExcTag","errorTag","funcTag","genTag","mapTag","numberTag","nullTag","objectTag","proxyTag","regexpTag","setTag","stringTag","symbolTag","undefinedTag","weakMapTag","weakSetTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reRegExpChar","reHasRegExpChar","reTrim","reTrimStart","reTrimEnd","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsComboRange","rsComboMarksRange","rsBreakRange","rsMathOpRange","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsMiscLower","rsMiscUpper","reOptMod","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","stringEscapes","\\","'","\n","\r","
","
","freeParseFloat","freeParseInt","freeGlobal","freeSelf","freeExports","freeModule","moduleExports","freeProcess","nodeUtil","require","nodeIsArrayBuffer","nodeIsDate","isDate","nodeIsMap","isMap","nodeIsRegExp","nodeIsSet","isSet","nodeIsTypedArray","isTypedArray","arrayAggregator","iteratee","accumulator","arrayEach","arrayEachRight","arrayEvery","predicate","arrayFilter","resIndex","arrayIncludes","baseIndexOf","arrayIncludesWith","comparator","arrayMap","arrayPush","arrayReduce","initAccum","arrayReduceRight","arraySome","asciiSize","baseProperty","baseFindKey","eachFunc","baseFindIndex","fromIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","basePropertyOf","baseReduce","baseTimes","baseUnary","baseValues","cacheHas","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","deburrLetter","À","Á","Â","Ã","Ä","Å","à","á","â","ã","ä","å","Ç","ç","Ð","ð","È","É","Ê","Ë","è","é","ê","ë","Ì","Í","Î","Ï","ì","í","î","ï","Ñ","ñ","Ò","Ó","Ô","Õ","Ö","Ø","ò","ó","ô","õ","ö","ø","Ù","Ú","Û","Ü","ù","ú","û","ü","Ý","ý","ÿ","Æ","æ","Þ","þ","ß","Ā","Ă","Ą","ā","ă","ą","Ć","Ĉ","Ċ","Č","ć","ĉ","ċ","č","Ď","Đ","ď","đ","Ē","Ĕ","Ė","Ę","Ě","ē","ĕ","ė","ę","ě","Ĝ","Ğ","Ġ","Ģ","ĝ","ğ","ġ","ģ","Ĥ","Ħ","ĥ","ħ","Ĩ","Ī","Ĭ","Į","İ","ĩ","ī","ĭ","į","ı","Ĵ","ĵ","Ķ","ķ","ĸ","Ĺ","Ļ","Ľ","Ŀ","Ł","ĺ","ļ","ľ","ŀ","ł","Ń","Ņ","Ň","Ŋ","ń","ņ","ň","ŋ","Ō","Ŏ","Ő","ō","ŏ","ő","Ŕ","Ŗ","Ř","ŕ","ŗ","ř","Ś","Ŝ","Ş","Š","ś","ŝ","ş","š","Ţ","Ť","Ŧ","ţ","ť","ŧ","Ũ","Ū","Ŭ","Ů","Ű","Ų","ũ","ū","ŭ","ů","ű","ų","Ŵ","ŵ","Ŷ","ŷ","Ÿ","Ź","Ż","Ž","ź","ż","ž","IJ","ij","Œ","œ","ʼn","ſ","escapeHtmlChar","&","<","\"","escapeStringChar","chr","hasUnicode","mapToArray","overArg","replaceHolders","setToArray","setToPairs","stringSize","unicodeSize","stringToArray","unicodeToArray","asciiToArray","unescapeHtmlChar","&","<",">",""","'","runInContext","pick","funcProto","objectProto","coreJsData","funcToString","idCounter","maskSrcKey","IE_PROTO","nativeObjectToString","objectCtorString","oldDash","reIsNative","Buffer","Uint8Array","allocUnsafe","getPrototype","objectCreate","propertyIsEnumerable","spreadableSymbol","isConcatSpreadable","symIterator","symToStringTag","getNative","ctxClearTimeout","ctxNow","ctxSetTimeout","nativeCeil","nativeFloor","nativeGetSymbols","getOwnPropertySymbols","nativeIsBuffer","nativeIsFinite","nativeJoin","nativeKeys","nativeMax","nativeMin","nativeNow","nativeParseInt","nativeRandom","nativeReverse","DataView","Map","WeakMap","nativeCreate","metaMap","realNames","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","valueOf","symbolToString","lodash","isObjectLike","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","baseLodash","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","Hash","entries","entry","ListCache","MapCache","SetCache","__data__","Stack","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","isIndex","arraySample","baseRandom","arraySampleSize","shuffleSelf","copyArray","baseClamp","arrayShuffle","assignMergeValue","baseAssignValue","assignValue","objValue","assocIndexOf","baseAggregator","baseEach","baseAssign","copyObject","baseAt","paths","lower","upper","baseClone","bitmask","customizer","isDeep","isFlat","isFull","initCloneArray","getTag","isFunc","cloneBuffer","initCloneObject","getSymbolsIn","copySymbolsIn","keysIn","baseAssignIn","getSymbols","copySymbols","symbol","regexp","cloneArrayBuffer","dataView","byteOffset","byteLength","cloneDataView","cloneTypedArray","initCloneByTag","subValue","getAllKeysIn","getAllKeys","baseConformsTo","baseDelay","baseDifference","isCommon","valuesLength","outer","valuesIndex","templateSettings","variable","imports","getMapData","pairs","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","isSymbol","baseFilter","baseFlatten","isStrict","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","baseGet","castPath","toKey","baseGetAllKeys","keysFunc","symbolsFunc","baseGetTag","isOwn","unmasked","getRawTag","objectToString","baseGt","other","baseHas","baseHasIn","baseIntersection","arrays","othLength","othIndex","caches","maxLength","Infinity","baseInvoke","baseIsArguments","baseIsEqual","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","isPartial","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsMatch","matchData","noCustomizer","srcValue","baseIsNative","baseIteratee","baseMatchesProperty","baseMatches","baseKeys","isPrototype","baseKeysIn","nativeKeysIn","isProto","baseLt","baseMap","getMatchData","matchesStrictComparable","isKey","isStrictComparable","hasIn","baseMerge","srcIndex","mergeFunc","safeGet","newValue","isTyped","isArrayLikeObject","toPlainObject","baseMergeDeep","baseNth","baseOrderBy","iteratees","orders","getIteratee","comparer","baseSortBy","criteria","objCriteria","othCriteria","ordersLength","compareAscending","compareMultiple","basePickBy","baseSet","basePullAll","basePullAt","indexes","baseUnset","baseRepeat","baseRest","setToString","overRest","baseSample","baseSampleSize","baseSetData","baseSetToString","constant","baseShuffle","baseSlice","baseSome","baseSortedIndex","retHighest","low","mid","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseToString","baseUniq","createSet","seenIndex","baseUpdate","updater","baseWhile","isDrop","baseWrapperValue","actions","action","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","stringToPath","castRest","castSlice","arrayBuffer","typedArray","valIsDefined","valIsReflexive","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","isNew","createAggregator","initializer","createAssigner","assigner","sources","guard","isIterateeCall","iterable","createCaseFirst","methodName","trailing","createCompounder","words","deburr","createCtor","thisBinding","createFind","findIndexFunc","createFlow","flatRest","funcs","prereq","thru","wrapper","getFuncName","isLaziable","plant","createHybrid","partialsRight","holdersRight","argPos","ary","arity","isAry","isBind","isBindKey","isFlip","getHolder","holdersCount","countHolders","newHolders","createRecurry","arrLength","oldArray","reorder","createInverter","toIteratee","baseInverter","createMathOperation","createOver","arrayFunc","createPadding","chars","charsLength","toFinite","baseRange","createRelationalOperation","wrapFunc","isCurry","newData","setData","setWrapToString","createRound","precision","toInteger","pair","createToPairs","baseToPairs","createWrap","srcBitmask","newBitmask","isCombo","createCurry","createPartial","createBind","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","arrValue","flatten","otherFunc","stubArray","hasPath","hasFunc","isLength","ArrayBuffer","ctorString","isMaskable","stubFalse","otherArgs","shortOut","details","insertWrapDetails","updateWrapDetails","getWrapDetails","lastCalled","stamp","rand","memoize","memoizeCapped","quote","subString","difference","differenceBy","differenceWith","findLastIndex","intersection","intersectionBy","intersectionWith","pull","pullAll","pullAt","union","unionBy","unionWith","unzip","group","unzipWith","without","xor","xorBy","xorWith","zip","zipWith","wrapperAt","countBy","findLast","forEachRight","invokeMap","keyBy","partition","sortBy","bindKey","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","invokeFunc","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","leadingEdge","cancel","flush","resolver","memoized","Cache","overArgs","transforms","funcsLength","partial","partialRight","rearg","gte","isError","isInteger","isString","lte","iteratorToArray","remainder","toLength","isBinary","assignIn","assignInWith","assignWith","at","propsIndex","propsLength","defaultsDeep","mergeWith","invertBy","invoke","omit","basePick","pickBy","toPairs","toPairsIn","word","upperFirst","kebabCase","lowerCase","lowerFirst","snakeCase","startCase","upperCase","hasUnicodeWord","unicodeWords","asciiWords","attempt","bindAll","methodNames","flow","flowRight","methodOf","over","overEvery","overSome","basePropertyDeep","rangeRight","augend","addend","divide","dividend","divisor","multiply","multiplier","multiplicand","minuend","subtrahend","castArray","chunk","compact","cond","conforms","baseConforms","curry","curryRight","drop","dropRight","dropRightWhile","dropWhile","baseFill","flatMap","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","fromPairs","functions","functionsIn","mapKeys","mapValues","matchesProperty","nthArg","omitBy","orderBy","propertyOf","pullAllBy","pullAllWith","rest","sampleSize","setWith","shuffle","sortedUniq","sortedUniqBy","separator","limit","spread","tail","take","takeRight","takeRightWhile","takeWhile","tap","throttle","toPath","isArrLike","unary","uniq","uniqBy","uniqWith","unset","updateWith","valuesIn","zipObject","zipObjectDeep","entriesIn","extendWith","clamp","cloneDeep","cloneDeepWith","cloneWith","conformsTo","defaultTo","endsWith","escapeRegExp","findKey","findLastKey","forIn","forInRight","forOwn","forOwnRight","baseInRange","isBoolean","isElement","isEmpty","isEqual","isEqualWith","isMatch","isMatchWith","isNil","isNull","isSafeInteger","isWeakMap","isWeakSet","lastIndexOf","strictLastIndexOf","maxBy","mean","meanBy","minBy","stubObject","stubString","stubTrue","nth","pad","strLength","padEnd","padStart","radix","floating","reduceRight","repeat","sample","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","startsWith","sumBy","template","isEscaping","isEvaluating","importsKeys","importsValues","reDelimiters","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","times","toLower","toSafeInteger","toUpper","trimEnd","trimStart","omission","newEnd","unescape","uniqueId","eachRight","VERSION","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","isRight","getView","iterLength","takeCount","iterIndex","commit","wrapped","encode","paramsSerializer","serializedParams","toISOString","Failed_Jobvue_type_script_lang_js_","loadingJob","retryingJob","loadFailedJob","reloadRetries","prettyPrintException","exception","lines","output","prettyPrintJob","command","phpUnserialize_default","retried_at","Bar","isStandardBrowserEnv","originURL","msie","urlParsingNode","resolveURL","hostname","pathname","requestURL","xRange","Bubble","MainSidebar","layouts_MainLayoutvue_type_script_lang_js_","MainLayout_component","moment","MIN_INTEGER","MIN_SAFE_INTEGER","INTERVALS","millisecond","steps","minute","hour","day","week","month","quarter","year","UNITS","sorter","arrayUnique","out","table","skey","sval","tkey","i0","i1","lo","hi","lookup","span","momentify","parser","startOf","determineMajorUnit","generate","capacity","timeOpts","minor","minUnit","factor","determineUnitForAutoTicks","major","stepSize","unitStepSize","weekday","isoWeekday","majorTicksEnabled","milliseconds","determineStepSize","TimeScale","jlen","timestamp","timestamps","endOf","_horizontal","_table","_timestamps","getLabelCapacity","_unit","as","determineUnitForFormatting","_majorUnit","distribution","curr","buildLookupTable","_offsets","computeOffsets","_labelFormat","momentDate","hasTime","determineLabelFormat","majorUnit","ticksFromTimestamps","tooltipFormat","tickFormatFunction","formatOverride","formats","displayFormats","minorFormat","majorFormat","majorTime","majorTickOpts","formatter","userCallback","getPixelForOffset","getTicks","getLabelWidth","ticksOpts","tickLabelWidth","toRadians","maxRotation","cosRotation","sinRotation","exampleTime","exampleLabel","displayFormat","autoSkip","createError","Scatter","Doughnut","_defineProperties","_createClass","_defineProperty","_objectSpread","sym","TRANSITION_END","transitionEndEmulator","Util","triggerTransitionEnd","getUID","getSelectorFromElement","hrefAttr","getTransitionDurationFromElement","transitionDelay","floatTransitionDuration","floatTransitionDelay","reflow","supportsTransitionEnd","typeCheckConfig","componentName","configTypes","valueType","findShadowRoot","attachShadow","getRootNode","ShadowRoot","emulateTransitionEnd","JQUERY_NO_CONFLICT","CLOSE","CLOSED","CLICK_DATA_API","ClassName","ALERT","FADE","SHOW","Alert","_proto","close","rootElement","_getRootElement","customEvent","_triggerCloseEvent","_removeElement","dispose","closeEvent","_destroyElement","_jQueryInterface","$element","_handleDismiss","alertInstance","JQUERY_NO_CONFLICT$1","ClassName$1","ACTIVE","BUTTON","FOCUS","Selector$1","DATA_TOGGLE_CARROT","DATA_TOGGLE","INPUT","Event$1","FOCUS_BLUR_DATA_API","Button","triggerChangeEvent","addAriaPressed","NAME$2","EVENT_KEY$2","JQUERY_NO_CONFLICT$2","Default","keyboard","slide","pause","touch","DefaultType","Direction","NEXT","PREV","LEFT","RIGHT","Event$2","SLIDE","SLID","KEYDOWN","MOUSEENTER","MOUSELEAVE","TOUCHSTART","TOUCHMOVE","TOUCHEND","POINTERDOWN","POINTERUP","DRAG_START","LOAD_DATA_API","ClassName$2","CAROUSEL","ITEM","POINTER_EVENT","Selector$2","ACTIVE_ITEM","ITEM_IMG","NEXT_PREV","INDICATORS","DATA_SLIDE","DATA_RIDE","PointerType","TOUCH","PEN","Carousel","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","maxTouchPoints","_pointerEvent","PointerEvent","MSPointerEvent","_addEventListeners","_slide","nextWhenVisible","cycle","visibilityState","activeIndex","_getItemIndex","direction","_handleSwipe","absDeltax","_keydown","_addTouchEventListeners","move","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","isGoingToWrap","itemIndex","_triggerSlideEvent","eventDirectionName","targetIndex","slideEvent","_setActiveIndicatorElement","indicators","nextIndicator","directionalClassName","orderClassName","activeElementIndex","nextElement","nextElementIndex","isCycling","slidEvent","nextElementInterval","defaultInterval","_dataApiClickHandler","slideIndex","carousels","$carousel","NAME$3","JQUERY_NO_CONFLICT$3","Default$1","DefaultType$1","Event$3","SHOWN","HIDE","HIDDEN","ClassName$3","COLLAPSE","COLLAPSING","COLLAPSED","Dimension","WIDTH","HEIGHT","Selector$3","ACTIVES","Collapse","_isTransitioning","_triggerArray","toggleList","filterElement","foundElem","_selector","_parent","_getParent","_addAriaAndCollapsedClass","actives","activesData","startEvent","_getDimension","setTransitioning","capitalizedDimension","scrollSize","triggerArrayLength","$elem","isTransitioning","hasWidth","_getTargetFromElement","triggerArray","isOpen","$this","$trigger","$target","NAME$4","JQUERY_NO_CONFLICT$4","REGEXP_KEYDOWN","ARROW_UP_KEYCODE","Event$4","CLICK","KEYDOWN_DATA_API","KEYUP_DATA_API","ClassName$4","DISABLED","DROPUP","DROPRIGHT","DROPLEFT","MENURIGHT","MENULEFT","POSITION_STATIC","Selector$4","FORM_CHILD","MENU","NAVBAR_NAV","VISIBLE_ITEMS","AttachmentMap","TOP","TOPEND","BOTTOM","BOTTOMEND","RIGHTEND","LEFTEND","Default$2","boundary","DefaultType$2","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","_getParentFromElement","isActive","_clearMenus","showEvent","referenceElement","_getPopperConfig","hideEvent","_getPlacement","$parentDropdown","offsetConf","popperConfig","toggles","clickEvent","dropdownMenu","_dataApiKeydownHandler","JQUERY_NO_CONFLICT$5","Default$3","backdrop","DefaultType$3","Event$5","FOCUSIN","RESIZE","CLICK_DISMISS","KEYDOWN_DISMISS","MOUSEUP_DISMISS","MOUSEDOWN_DISMISS","ClassName$5","SCROLLBAR_MEASURER","BACKDROP","OPEN","Selector$5","DIALOG","DATA_DISMISS","FIXED_CONTENT","STICKY_CONTENT","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","_hideModal","htmlElement","handleUpdate","ELEMENT_NODE","_enforceFocus","shownEvent","transitionComplete","_this5","_this6","_this7","_resetAdjustments","_resetScrollbar","_removeBackdrop","_this8","backdropTransitionDuration","callbackRemove","_backdropTransitionDuration","isModalOverflowing","scrollHeight","_getScrollbarWidth","_this9","fixedContent","stickyContent","actualPadding","calculatedPadding","actualMargin","calculatedMargin","scrollDiv","scrollbarWidth","_this10","NAME$6","JQUERY_NO_CONFLICT$6","BSCLS_PREFIX_REGEX","DefaultType$4","fallbackPlacement","AttachmentMap$1","AUTO","Default$4","HoverState","OUT","Event$6","INSERTED","FOCUSOUT","ClassName$6","Selector$6","TOOLTIP","TOOLTIP_INNER","ARROW","Trigger","HOVER","MANUAL","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","toggleEnabled","dataKey","DATA_KEY","_getDelegateConfig","_isWithActiveTrigger","_leave","getTipElement","EVENT_KEY","isWithContent","isInTheDom","tipId","NAME","setContent","attachment","_getAttachment","addAttachmentClass","_getContainer","_handlePopperPlacementChange","_fixTransition","prevHoverState","_cleanTipClass","getTitle","CLASS_PREFIX","setElementContent","triggers","eventIn","eventOut","_fixTitle","titleType","$tip","tabClass","popperData","popperInstance","initConfigAnimation","NAME$7","JQUERY_NO_CONFLICT$7","BSCLS_PREFIX_REGEX$1","Default$5","DefaultType$5","ClassName$7","Selector$7","TITLE","CONTENT","Event$7","Popover","_Tooltip","subClass","superClass","_getContent","CLASS_PREFIX$1","NAME$8","JQUERY_NO_CONFLICT$8","Default$6","DefaultType$6","Event$8","ACTIVATE","SCROLL","ClassName$8","DROPDOWN_ITEM","DROPDOWN_MENU","Selector$8","DATA_SPY","NAV_LIST_GROUP","NAV_LINKS","NAV_ITEMS","LIST_ITEMS","DROPDOWN","DROPDOWN_ITEMS","DROPDOWN_TOGGLE","OffsetMethod","OFFSET","POSITION","ScrollSpy","_scrollElement","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","_getOffsetHeight","maxScroll","_activate","_clear","offsetLength","isActiveTarget","queries","$link","scrollSpys","scrollSpysLength","$spy","JQUERY_NO_CONFLICT$9","Event$9","ClassName$9","Selector$9","ACTIVE_UL","DROPDOWN_ACTIVE_CHILD","Tab","listElement","itemSelector","hiddenEvent","activeElements","_transitionComplete","dropdownChild","dropdownElement","dropdownToggleList","JQUERY_NO_CONFLICT$a","Event$a","ClassName$a","SHOWING","DefaultType$7","autohide","Default$7","Selector$a","Toast","withoutTimeout","_close","Scrollspy","clearRect","roundedRect","arcTo","edgeLength","xOffset","yOffset","sqrt","leftX","topY","sideSize","drawImage","clip","bezierCurveTo","drawRoundedRectangle","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellowgreen","loopable","a0","a1","v0","v1","klen","k","_merger","tval","_mergerIf","merger","setFn","extensions","ChartElement","Surrogate","__super__","callCallback","getValueOrDefault","getValueAtIndexOrDefault","Timeout","clearFn","_id","_clearFn","unref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","_onTimeout","clearImmediate","transformData","isCancel","isAbsoluteURL","combineURLs","throwIfCancellationRequested","cancelToken","throwIfRequested","currentVM","globalOptionLineElements","lastDrawnIndex","_loop","_plugins","_cacheId","register","unregister","descriptors","$plugins","animationService","Title","pluginService","PluginBase","canvasHelpers","layoutService","chartX","chartY","pointRelativePosition","getAngleFromPoint","betweenAngles","withinRadius","halfAngle","halfRadius","centreAngle","rangeFromCentre","sA","eA","circumference","tooltipItem","dataLabel","doughnut","pie","getRingIndex","ringIndex","availableWidth","availableHeight","contains0","contains90","contains180","contains270","cutout","getMaxBorderWidth","calculateTotal","calculateCircumference","arcs","hoverWidth","logarithmic","LogarithmicScale","IDMatches","minNotZero","hasStacks","valuesPerStack","valuesForType","minVal","maxVal","log10","generationOptions","dataRange","exp","significand","tickVal","endExp","endSignificand","lastTick","generateTicks","tickValues","_getFirstTickValue","innerDimension","sign","firstTickValue","registerImmediate","messagePrefix","onGlobalMessage","nextHandle","tasksByHandle","currentlyRunningATask","attachTo","runIfPresent","importScripts","postMessageIsAsynchronous","oldOnMessage","canUsePostMessage","task","LinearScale","positiveValues","negativeValues","relativePoints","maxTicks","handleDirectionalChanges","webpackPolyfill","deprecate","categoryPercentage","barPercentage","offsetGridLines","Rectangle","_ruler","getRuler","rectangleOptions","datasetLabel","updateElementGeometry","vscale","getValueScale","ruler","vpixels","calculateBarValuePixels","ipixels","calculateBarIndexPixels","getValueScaleId","getIndexScaleId","getIndexScale","_getStacks","stacks","getStackCount","getStackIndex","stackCount","pixels","barThickness","computeMinSampleSize","imeta","ivalue","computeFlexCategoryTraits","thickness","computeFitCategoryTraits","stackIndex","maxBarThickness","horizontalBar","radar","pointElementOptions","View","routerView","route","_routerViewCache","inactive","_routerRoot","routerViewDepth","registerRouteInstance","propsToPass","resolveProps","encodeReserveRE","encodeReserveReplacer","commaRE","decode","decodeURIComponent","parseQuery","stringifyQuery","val2","trailingSlashRE","createRoute","record","redirectedFrom","router","stringifyQuery$$1","fullPath","getFullPath","formatMatch","START","_stringifyQuery","isSameRoute","isObjectEqual","aKeys","bKeys","aVal","bVal","_Vue","toTypes","eventTypes","Link","required","exactActiveClass","$router","globalActiveClass","linkActiveClass","globalExactActiveClass","linkExactActiveClass","activeClassFallback","exactActiveClassFallback","compareTarget","queryIncludes","isIncludedRoute","guardEvent","findAnchor","resolvePath","firstChar","segment","cleanPath","isarray","pathToRegexp_1","pathToRegexp","parse_1","compile_1","tokensToFunction","tokensToFunction_1","tokensToRegExp_1","tokensToRegExp","PATH_REGEXP","defaultDelimiter","delimiter","asterisk","optional","escapeGroup","escapeString","encodeURIComponentPretty","encodeURI","pretty","attachKeys","re","flags","sensitive","strict","endsWithDelimiter","regexpToRegexp","arrayToRegexp","stringToRegexp","regexpCompileCache","fillParams","routeMsg","createRouteMap","routes","oldPathList","oldPathMap","oldNameMap","pathList","pathMap","nameMap","addRouteRecord","matchAs","pathToRegexpOptions","normalizedPath","normalizePath","caseSensitive","regex","compileRouteRegex","redirect","childMatchAs","alias","aliases","aliasRoute","normalizeLocation","_normalized","rawPath","parsedPath","hashIndex","queryIndex","basePath","extraQuery","_parseQuery","parsedQuery","resolveQuery","createMatcher","currentRoute","_createRoute","paramNames","record$1","matchRoute","originalRedirect","resolveRecordPath","aliasedMatch","aliasedRecord","addRoutes","positionStore","setupScroll","history","replaceState","getStateKey","saveScrollPosition","_key","handleScroll","isPop","app","scrollBehavior","getScrollPosition","shouldScroll","scrollToPosition","isValidPosition","normalizePosition","docRect","elRect","getElementPosition","ua","supportsPushState","Time","genKey","pushState","runQueue","resolveAsyncComponents","hasAsync","flatMapComponents","resolvedDef","History","baseEl","normalizeBase","readyCbs","readyErrorCbs","errorCbs","extractGuards","records","guards","extractGuard","bindGuard","listen","onReady","errorCb","onError","transitionTo","onAbort","confirmTransition","updateRoute","ensureURL","activated","deactivated","resolveQueue","extractLeaveGuards","beforeHooks","extractUpdateHooks","postEnterCbs","poll","bindEnterGuard","extractEnterGuards","resolveHooks","afterHooks","HTML5History","History$$1","expectScroll","supportsScroll","initLocation","getLocation","go","fromRoute","getCurrentLocation","decodeURI","HashHistory","checkFallback","ensureSlash","setupListeners","getHash","replaceHash","pushHash","getUrl","AbstractHistory","VueRouter","apps","registerHook","setupHashListener","_route","beforeEach","beforeResolve","afterEach","back","getMatchedComponents","createHref","normalizedTo","installed","registerInstance","callVal","_router","beforeRouteEnter","beforeRouteLeave","beforeRouteUpdate","vue_router_esm","Router","components_Appvue_type_script_lang_js_","App","axios","unixTime","getTimezoneOffset","dataPoint","bubble","_resolveElementOptions","dsIndex","getPixelForDecimal","labelsFromTicks","getLineValue","lineValue","computeTextSize","parseFontOptions","parseLineHeight","drawBorder","drawOnChartArea","drawTicks","tickMarkLength","zeroLineWidth","zeroLineColor","zeroLineBorderDash","zeroLineBorderDashOffset","scaleLabel","labelString","minRotation","mirror","autoSkipPadding","labelOffset","getPadding","longestTextCache","beforeDataLimits","afterDataLimits","afterBuildTicks","beforeTickToLabelConversion","beforeCalculateTickRotation","calculateTickRotation","afterCalculateTickRotation","tickFont","labelRotation","originalLabelWidth","tickWidth","scaleLabelOpts","isFullWidth","deltaHeight","largestTextWidth","tallestLabelHeightInLines","numberOfLabelLines","lineSpace","tickPadding","longestLabelWidth","labelHeight","firstLabelWidth","lastLabelWidth","handleMargins","finalVal","decimal","valueOffset","getBaseValue","_autoSkip","skipRatio","optionTicks","tickCount","labelRotationRadians","longestRotatedLabel","optionMajorTicks","isRotated","majorTickFontColor","majorTickFont","tl","scaleLabelFontColor","scaleLabelFont","scaleLabelPadding","itemsToDraw","axisWidth","xTickStart","xTickEnd","yTickStart","yTickEnd","lineColor","tx1","ty1","tx2","ty2","labelX","labelY","zeroLineIndex","labelYOffset","xLineValue","aliasPixel","labelXOffset","isLeft","yLineValue","glWidth","glColor","glBorderDash","glBorderDashOffset","itemToDraw","lineCount","scaleLabelX","scaleLabelY","halfLineHeight","pages_Dashboardvue_type_script_lang_js_","stats","workers","workload","refreshStatsPeriodically","recentJobsPeriod","determinePeriod","periods","recentJobs","recentlyFailedPeriod","recentlyFailed","loadStats","max_wait_time","max_wait_queue","loadWorkers","loadWorkload","loadingWorkload","countProcesses","processes","toLocaleString","superVisorDisplayName","supervisor","worker","humanTime","moment_default","humanize","$1","minutes","jobsPerMinute","running","paused","queueWithMaxRuntime","queueWithMaxThroughput","balance","frameDuration","dropFrames","requestAnimFrame","startDigest","framesToDrop","advance","endTime","Cancel","write","expires","domain","secure","cookie","toGMTString","read","RecentJobs_Jobsvue_type_script_lang_js_","RecentJobs_Indexvue_type_script_lang_js_","JobTable","filterByPosition","where","sortByWeight","_tmpIndex_","layoutItem","layoutOptions","layout","leftPadding","rightPadding","topPadding","bottomPadding","leftBoxes","rightBoxes","topBoxes","bottomBoxes","chartAreaBoxes","chartWidth","chartHeight","chartAreaHeight","verticalBoxWidth","horizontalBoxHeight","maxChartAreaWidth","maxChartAreaHeight","minBoxSizes","maxHorizontalLeftPadding","maxHorizontalRightPadding","maxVerticalTopPadding","maxVerticalBottomPadding","horizontalBox","boxPadding","verticalBox","totalLeftBoxesWidth","totalRightBoxesWidth","totalTopBoxesHeight","totalBottomBoxesHeight","fitBox","minBoxSize","findNextWhere","scaleMargin","leftPaddingAddition","topPaddingAddition","newMaxChartAreaHeight","newMaxChartAreaWidth","placeBox","minBox","tickValue","logDelta","tickString","logTick","toExponential","numDecimal","remain","Status_Statusvue_type_script_lang_js_","theActiveClass","basic","dom","_enabled","Radar","filler","CancelToken","executor","resolvePromise","colorNames","rgba","percentaString","hsla","hexDouble","getRgb","getHsl","getAlpha","g","reverseNames","titleX","titleY","titleFont","createNewTitleBlockAndAttach","titleOpts","titleBlock","getRelativePosition","parseVisibleItems","getIntersectItems","getNearestItems","distanceMetric","minDistance","nearestItems","getDistanceMetricForAxis","useX","useY","pt1","pt2","deltaX","deltaY","indexMode","x-axis","nearest","intersectsItem","E","block","parseMaxStyle","styleValue","parentProperty","valueInPixels","isConstrainedValue","getConstraintDimension","domNode","maxStyle","percentageProperty","_getParentNode","constrainedNode","constrainedContainer","hasCNode","hasCContainer","infinity","scaleMerge","getScaleDefaults","slen","filterCallback","filtered","arrayToSearch","startIndex","currentItem","findPreviousWhere","almostEquals","epsilon","almostWhole","rounded","exponent","log","LOG10E","powerOf10","radians","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","atan2","distanceBetweenPoints","pixelWidth","firstPoint","middlePoint","afterPoint","d01","d12","s01","s12","fa","fb","EPSILON","pointBefore","pointCurrent","pointAfter","alphaK","betaK","tauK","squaredMagnitude","pointsWithTangents","deltaK","mK","pointsLen","slopeDeltaX","niceNum","fraction","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","srcElement","boundingRect","currentDevicePixelRatio","getConstraintWidth","getConstraintHeight","_calculatePadding","parentDimension","cw","currentStyle","forceRatio","pixelRatio","pixelSize","arrayOfThings","gc","garbageCollect","longest","thing","nestedThing","gcLen","numberOfLines","CanvasGradient","colorValue","CanvasPattern","minSign","maxSign","setMin","suggestedMin","setMax","suggestedMax","numericGeneratorOptions","fixedStepSize","niceRange","niceMin","niceMax","numSpaces","Metrics_Jobsvue_type_script_lang_js_","EXPANDO_KEY","CSS_PREFIX","CSS_RENDER_MONITOR","CSS_RENDER_ANIMATION","ANIMATION_START_EVENTS","EVENT_TYPES","touchstart","touchmove","touchend","pointerdown","pointermove","pointerup","pointerout","readUsedSize","eventListenerOptions","supports","addResizeListener","ticking","resizer","shrink","_reset","onScroll","createResizer","renderProxy","animationName","watchForRender","removeResizeListener","unwatchForRender","keyframes","_style","renderHeight","renderWidth","displayWidth","displayHeight","initCanvas","proxies","fromNativeEvent","addEvent","PolarArea","Metrics_Indexvue_type_script_lang_js_","rgb2hsl","rgb2hsv","rgb2hwb","rgb2cmyk","rgb2keyword","reverseKeywords","rgb2xyz","rgb2lab","xyz","z","hsl2rgb","t1","t2","t3","hsv2rgb","f","q","hwb2rgb","wh","bl","cmyk2rgb","xyz2rgb","xyz2lab","lab2xyz","lab","lab2lch","lab2rgb","lch2lab","lch","hr","keyword2rgb","cssKeywords","rgb2lch","hsl2hsv","hsl2hwb","hsl2cmyk","hsl2keyword","hsv2hsl","sl","hsv2hwb","hsv2cmyk","hsv2keyword","hwb2hsl","hwb2hsv","hwb2cmyk","hwb2keyword","cmyk2hsl","cmyk2hsv","cmyk2hwb","cmyk2keyword","keyword2hsl","keyword2hsv","keyword2hwb","keyword2cmyk","keyword2lab","keyword2xyz","xyz2lch","lch2xyz","lch2rgb","settle","buildURL","parseHeaders","isURLSameOrigin","btoa","requestData","loadEvent","xDomain","XDomainRequest","onprogress","auth","Authorization","responseURL","cookies","xsrfValue","withCredentials","onDownloadProgress","onUploadProgress","upload","constructors","scaleConstructor","scaleDefaults","updateScaleDefaults","additions","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","asin","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","easingEffects","conversions","Converter","convs","routeSpace","fspace","propagate","mappers","decodeFill","computeBoundary","scaleBottom","scaleTop","scaleZero","resolveTarget","visited","createMapper","isDrawable","drawArea","curve0","curve1","len0","len1","afterDatasetsUpdate","$filler","mapper","beforeDatasetDraw","p0","p1","d0","d1","doFill","ignoreDuplicateOf","hookCallback","hasOwnProp","createUTC","locale","createLocalOrUTC","utc","getParsingFlags","_pf","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","meridiem","rfc2822","weekdayMismatch","_isValid","parsedParts","isNowValid","_d","invalidWeekday","_strict","bigHour","createInvalid","momentProperties","copyConfig","_isAMomentObject","_tzm","_isUTC","_offset","_locale","updateInProgress","Moment","updateOffset","isMoment","absFloor","toInt","argumentForCoercion","coercedNumber","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","suppressDeprecationWarnings","firstTime","deprecationHandler","deprecations","deprecateSimple","mergeConfigs","parentConfig","childConfig","Locale","addUnitAlias","shorthand","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","zeroFill","targetLength","forceSign","absNumber","zerosToFill","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","ordinal","localeData","formatMoment","expandFormat","mom","makeFormatFunction","invalidDate","replaceLongDateFormatTokens","longDateFormat","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","regexes","addRegexToken","strictRegex","getParseRegexForToken","regexEscape","p2","p3","p4","addParseToken","addWeekParseToken","_w","addTimeToArrayFromToken","_a","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","daysInYear","isLeapYear","parseTwoDigitYear","getSetYear","makeGetSet","keepTime","set$1","date","daysInMonth","modMonth","monthsShort","months","monthsShortRegex","monthsRegex","monthsParse","MONTHS_IN_FORMAT","defaultLocaleMonths","defaultLocaleMonthsShort","setMonth","dayOfMonth","getSetMonth","defaultMonthsShortRegex","defaultMonthsRegex","computeMonthsParse","cmpLenRev","shortPieces","longPieces","mixedPieces","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","fwdlw","getUTCDay","dayOfYearFromWeeks","resYear","resDayOfYear","localWeekday","weekOffset","dayOfYear","weekOfYear","resWeek","weeksInYear","weekOffsetNext","shiftWeekdays","ws","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","computeWeekdaysParse","minp","shortp","longp","minPieces","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","hFormat","hours","lowercase","matchMeridiem","_meridiemParse","seconds","kInput","_isPm","isPM","_meridiem","pos1","pos2","globalLocale","getSetHour","baseConfig","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","LTS","LT","L","LL","LLL","LLLL","dayOfMonthOrdinalParse","relativeTime","future","past","ss","mm","hh","dd","M","MM","yy","meridiemParse","locales","localeFamilies","normalizeLocale","loadLocale","oldLocale","_abbr","getSetGlobalLocale","getLocale","defineLocale","abbr","parentLocale","names","chooseLocale","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","configFromArray","currentDate","expectedWeekday","yearToUse","nowValue","_useUTC","getUTCMonth","getUTCDate","getFullYear","getMonth","getDate","currentDateArray","weekYear","weekdayOverflow","GG","W","createLocal","_week","curWeek","gg","_dayOfYear","dayOfYearFromWeekInfo","_nextDay","ms","setFullYear","getDay","setUTCMinutes","getUTCMinutes","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","configFromStringAndFormat","untruncateYear","yearStr","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromRFC2822","monthStr","dayStr","hourStr","minuteStr","secondStr","parsedArray","weekdayStr","parsedInput","weekdayProvided","weekdayActual","checkWeekday","obsOffset","militaryOffset","numOffset","hm","calculateOffset","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemHour","isPm","prepareConfig","preparse","tempConfig","bestMoment","scoreToBeat","currentScore","score","configFromStringAndArray","createFromInputFallback","configFromString","configFromObject","configFromInput","isUTC","isObjectEmpty","prototypeMin","prototypeMax","moments","ordering","Duration","years","quarters","weeks","isoWeek","days","unitHasDecimal","isDurationValid","_milliseconds","_days","_months","_bubble","isDuration","absRound","utcOffset","offsetFromString","chunkOffset","cloneWithOffset","setTime","local","getDateOffset","isUtc","aspNetRegex","isoRegex","createDuration","diffRes","parseIso","isBefore","positiveMomentsDifference","inp","isAfter","createAdder","period","addSubtract","isAdding","invalid","monthDiff","anchor2","adjust","wholeMonthDiff","anchor","newLocaleData","defaultFormat","defaultFormatUtc","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","localStartOfDate","utcStartOfDate","addWeekYearFormatToken","getSetWeekYearHelper","weeksTarget","dayOfYearData","isoWeekYear","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetSecond","parseMs","getSetMillisecond","preParsePostFormat","sod","calendarFormat","asFloat","zoneDelta","startOfDate","inputString","postformat","withoutSuffix","fromNow","toNow","invalidAt","localInput","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","parsingFlags","prioritized","unitsObj","u","getPrioritizedUnits","toDate","keepOffset","zone","unix","creationData","isoWeeks","weekInfo","isoWeeksInYear","parseWeekday","parseIsoWeekday","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","parseZone","tZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","dates","isDSTShifted","_isDSTShifted","proto$1","get$1","field","listMonthsImpl","listWeekdaysImpl","localeSorted","_calendar","_longDateFormat","formatUpper","_invalidDate","_ordinal","isFuture","_relativeTime","pastFuture","isFormat","_monthsShort","monthName","_monthsParseExact","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","weekdayName","_weekdaysParseExact","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","_fullWeekdaysParse","isLower","langData","mathAbs","addSubtract$1","absCeil","daysToMonths","monthsToDays","makeAs","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","makeGetter","thresholds","abs$1","toISOString$1","Y","D","totalSign","ymSign","daysSign","hmsSign","proto$2","monthsFromDays","withSuffix","posNegDuration","relativeTime$1","toIsoString","updateLocale","tmpLocale","relativeTimeRounding","roundingFunction","relativeTimeThreshold","threshold","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","titleFontStyle","titleSpacing","titleMarginBottom","titleFontColor","titleAlign","bodySpacing","bodyFontColor","bodyAlign","footerFontStyle","footerSpacing","footerMarginTop","footerFontColor","footerAlign","yPadding","xPadding","caretPadding","caretSize","cornerRadius","multiKeyBackground","displayColors","beforeTitle","tooltipItems","labelCount","afterTitle","beforeBody","beforeLabel","labelColor","labelTextColor","afterLabel","afterBody","beforeFooter","footer","afterFooter","positioners","average","eventPosition","nearestElement","tp","mergeOpacity","colorString","pushOrConcat","toPush","splitNewlines","getBaseModel","tooltipOpts","xAlign","yAlign","_bodyFontFamily","bodyFontFamily","_bodyFontStyle","bodyFontStyle","_bodyAlign","bodyFontSize","_titleFontFamily","titleFontFamily","_titleFontStyle","titleFontSize","_titleAlign","_footerFontFamily","footerFontFamily","_footerFontStyle","footerFontSize","_footerAlign","legendColorBackground","getBeforeAfterBodyLines","_lastActive","getBeforeBody","getBody","bodyItems","bodyItem","getAfterBody","getFooter","existingModel","_active","alignment","backgroundPoint","tooltipSize","caretX","caretY","labelColors","labelTextColors","_eventPosition","itemSort","dataPoints","combinedBodyLength","titleLineCount","footerLineCount","widthPadding","maxLineWidth","getTooltipSize","paddingAndSize","radiusAndPadding","getBackgroundPoint","lf","rf","olf","orf","yf","midX","midY","determineAlignment","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","drawTitle","drawBody","xLinePadding","fillLineOfText","drawColorBoxes","textColor","drawFooter","drawBackground","quadraticCurveTo","hasTooltipContent","FormData","isView","URLSearchParams","product","createInstance","promises"],"mappings":"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IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,KAAAC,IAAA,KACAC,IAAA,KAAAC,IAAA,KACAC,IAAA,KAEAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,KAAAC,IAAA,KACAC,IAAA,KAAAC,IAAA,KACAC,IAAA,KAAAC,IAAA,MAutBAC,GAAAzM,GAntBA,CACA0M,IAAA,QACAC,IAAA,OACA3lE,IAAA,OACA4lE,IAAA,SACApQ,IAAA,UAutBA,SAAAqQ,GAAAC,GACA,WAAAxQ,GAAAwQ,GAsBA,SAAAC,GAAAvnG,GACA,OAAAw2F,GAAA3rG,KAAAmV,GAsCA,SAAAwnG,GAAAz1G,GACA,IAAAzD,GAAA,EACA4W,EAAAc,MAAAjU,EAAAyV,MAKA,OAHAzV,EAAA4mB,QAAA,SAAAxyB,EAAAM,GACAye,IAAA5W,GAAA,CAAA7H,EAAAN,KAEA+e,EAWA,SAAAuiG,GAAAz8D,EAAA/tB,GACA,gBAAA0b,GACA,OAAAqS,EAAA/tB,EAAA0b,KAaA,SAAA+uE,GAAArjF,EAAAgP,GAMA,IALA,IAAA/kC,GAAA,EACAlE,EAAAi6B,EAAAj6B,OACA6uG,EAAA,EACA/zF,EAAA,KAEA5W,EAAAlE,GAAA,CACA,IAAAjE,EAAAk+B,EAAA/1B,GACAnI,IAAAktC,GAAAltC,IAAA4oG,IACA1qE,EAAA/1B,GAAAygG,EACA7pF,EAAA+zF,KAAA3qG,GAGA,OAAA4W,EAUA,SAAAyiG,GAAA9vG,GACA,IAAAvJ,GAAA,EACA4W,EAAAc,MAAAnO,EAAA2P,MAKA,OAHA3P,EAAA8gB,QAAA,SAAAxyB,GACA+e,IAAA5W,GAAAnI,IAEA+e,EAUA,SAAA0iG,GAAA/vG,GACA,IAAAvJ,GAAA,EACA4W,EAAAc,MAAAnO,EAAA2P,MAKA,OAHA3P,EAAA8gB,QAAA,SAAAxyB,GACA+e,IAAA5W,GAAA,CAAAnI,OAEA+e,EAoDA,SAAA2iG,GAAA7nG,GACA,OAAAunG,GAAAvnG,GAkCA,SAAAA,GACA,IAAAkF,EAAAoxF,GAAA3tB,UAAA,EACA,KAAA2tB,GAAAzrG,KAAAmV,MACAkF,EAEA,OAAAA,EAtCA4iG,CAAA9nG,GACA45F,GAAA55F,GAUA,SAAA+nG,GAAA/nG,GACA,OAAAunG,GAAAvnG,GAoCA,SAAAA,GACA,OAAAA,EAAA0Y,MAAA49E,KAAA,GApCA0R,CAAAhoG,GAhkBA,SAAAA,GACA,OAAAA,EAAAgX,MAAA,IAgkBAixF,CAAAjoG,GAUA,IAAAkoG,GAAA1N,GA/6BA,CACA2N,QAAU,IACVC,OAAS,IACTC,OAAS,IACTC,SAAW,IACXC,QAAU,MAg/BV,IA0zeAjiF,GA1zeA,SAAAkiF,EAAAvyG,GAIA,IA6BAwB,EA7BAuO,GAHA/P,EAAA,MAAAA,EAAA5O,GAAAi/B,GAAAx7B,SAAAzD,GAAAzB,SAAAqQ,EAAAqwB,GAAAmiF,KAAAphH,GAAAqvG,MAGA1wF,MACA6zB,EAAA5jC,EAAA4jC,KACA/+B,GAAA7E,EAAA6E,MACAygE,GAAAtlE,EAAAslE,SACA3vE,GAAAqK,EAAArK,KACAhG,GAAAqQ,EAAArQ,OACAk1C,GAAA7kC,EAAA6kC,OACAlH,GAAA39B,EAAA29B,OACAlhB,GAAAzc,EAAAyc,UAGAuuD,GAAAj7D,EAAAlf,UACA4hH,GAAAntC,GAAAz0E,UACA6hH,GAAA/iH,GAAAkB,UAGA8hH,GAAA3yG,EAAA,sBAGA4yG,GAAAH,GAAApjG,SAGAve,GAAA4hH,GAAA5hH,eAGA+hH,GAAA,EAGAC,IACAtxG,EAAA,SAAA4lC,KAAAurE,OAAA/uG,MAAA+uG,GAAA/uG,KAAAmvG,UAAA,KACA,iBAAAvxG,EAAA,GAQAwxG,GAAAN,GAAArjG,SAGA4jG,GAAAL,GAAAxjH,KAAAO,IAGAujH,GAAA9hH,GAAAi/B,EAGA8iF,GAAAtuE,GAAA,IACA+tE,GAAAxjH,KAAA0B,IAAAwP,QAAAm9F,GAAA,QACAn9F,QAAA,uEAIA8yG,GAAA1R,GAAA1hG,EAAAozG,OAAA9hH,EACAtB,GAAAgQ,EAAAhQ,OACAqjH,GAAArzG,EAAAqzG,WACAC,GAAAF,MAAAE,YAAAhiH,EACAiiH,GAAA/B,GAAA7hH,GAAAyvC,eAAAzvC,IACA6jH,GAAA7jH,GAAAY,OACAkjH,GAAAf,GAAAe,qBACApyE,GAAA2pC,GAAA3pC,OACAqyE,GAAA1jH,MAAA2jH,mBAAAriH,EACAsiH,GAAA5jH,MAAA4yC,SAAAtxC,EACAuiH,GAAA7jH,MAAAC,YAAAqB,EAEA1B,GAAA,WACA,IACA,IAAAmlD,EAAA++D,GAAAnkH,GAAA,kBAEA,OADAolD,EAAA,GAAe,OACfA,EACO,MAAAr4C,KALP,GASAq3G,GAAA/zG,EAAAwtB,eAAAp8B,GAAAo8B,cAAAxtB,EAAAwtB,aACAwmF,GAAApwE,KAAA2c,MAAAnvD,GAAAwyC,KAAA2c,KAAA3c,EAAA2c,IACA0zD,GAAAj0G,EAAA2Y,aAAAvnB,GAAAunB,YAAA3Y,EAAA2Y,WAGAu7F,GAAAv+G,GAAA6d,KACA2gG,GAAAx+G,GAAAkN,MACAuxG,GAAAzkH,GAAA0kH,sBACAC,GAAAlB,MAAA14E,SAAAppC,EACAijH,GAAAv0G,EAAAkkB,SACAswF,GAAAxpC,GAAArvE,KACA84G,GAAAjD,GAAA7hH,GAAAiU,KAAAjU,IACA+kH,GAAA/+G,GAAAI,IACA4+G,GAAAh/G,GAAAC,IACAg/G,GAAAhxE,EAAA2c,IACAs0D,GAAA70G,EAAA/N,SACA6iH,GAAAn/G,GAAAgsC,OACAozE,GAAA/pC,GAAAl1D,QAGAk/F,GAAAlB,GAAA9zG,EAAA,YACAi1G,GAAAnB,GAAA9zG,EAAA,OACAsY,GAAAw7F,GAAA9zG,EAAA,WACA+oE,GAAA+qC,GAAA9zG,EAAA,OACAk1G,GAAApB,GAAA9zG,EAAA,WACAm1G,GAAArB,GAAAnkH,GAAA,UAGAylH,GAAAF,IAAA,IAAAA,GAGAG,GAAA,GAGAC,GAAAC,GAAAP,IACAQ,GAAAD,GAAAN,IACAQ,GAAAF,GAAAj9F,IACAo9F,GAAAH,GAAAxsC,IACA4sC,GAAAJ,GAAAL,IAGAU,GAAA5lH,MAAAa,UAAAS,EACAukH,GAAAD,MAAAE,QAAAxkH,EACAykH,GAAAH,MAAAvmG,SAAA/d,EAyHA,SAAA0kH,GAAA9lH,GACA,GAAA+lH,GAAA/lH,KAAA6hB,GAAA7hB,mBAAAgmH,IAAA,CACA,GAAAhmH,aAAAimH,GACA,OAAAjmH,EAEA,GAAAY,GAAA1B,KAAAc,EAAA,eACA,OAAAkmH,GAAAlmH,GAGA,WAAAimH,GAAAjmH,GAWA,IAAAmmH,GAAA,WACA,SAAA1lH,KACA,gBAAAoxC,GACA,IAAAvH,GAAAuH,GACA,SAEA,GAAAyxE,GACA,OAAAA,GAAAzxE,GAEApxC,EAAAE,UAAAkxC,EACA,IAAA9yB,EAAA,IAAAte,EAEA,OADAA,EAAAE,UAAAS,EACA2d,GAZA,GAqBA,SAAAqnG,MAWA,SAAAH,GAAAjmH,EAAAqmH,GACAn/G,KAAAo/G,YAAAtmH,EACAkH,KAAAq/G,YAAA,GACAr/G,KAAAs/G,YAAAH,EACAn/G,KAAAu/G,UAAA,EACAv/G,KAAAw/G,WAAAtlH,EAgFA,SAAA4kH,GAAAhmH,GACAkH,KAAAo/G,YAAAtmH,EACAkH,KAAAq/G,YAAA,GACAr/G,KAAAy/G,QAAA,EACAz/G,KAAA0/G,cAAA,EACA1/G,KAAA2/G,cAAA,GACA3/G,KAAA4/G,cAAAxc,EACApjG,KAAA6/G,UAAA,GAgHA,SAAAC,GAAAC,GACA,IAAA9+G,GAAA,EACAlE,EAAA,MAAAgjH,EAAA,EAAAA,EAAAhjH,OAGA,IADAiD,KAAAmL,UACAlK,EAAAlE,GAAA,CACA,IAAAijH,EAAAD,EAAA9+G,GACAjB,KAAAwK,IAAAw1G,EAAA,GAAAA,EAAA,KAiGA,SAAAC,GAAAF,GACA,IAAA9+G,GAAA,EACAlE,EAAA,MAAAgjH,EAAA,EAAAA,EAAAhjH,OAGA,IADAiD,KAAAmL,UACAlK,EAAAlE,GAAA,CACA,IAAAijH,EAAAD,EAAA9+G,GACAjB,KAAAwK,IAAAw1G,EAAA,GAAAA,EAAA,KA8GA,SAAAE,GAAAH,GACA,IAAA9+G,GAAA,EACAlE,EAAA,MAAAgjH,EAAA,EAAAA,EAAAhjH,OAGA,IADAiD,KAAAmL,UACAlK,EAAAlE,GAAA,CACA,IAAAijH,EAAAD,EAAA9+G,GACAjB,KAAAwK,IAAAw1G,EAAA,GAAAA,EAAA,KAiGA,SAAAG,GAAArtG,GACA,IAAA7R,GAAA,EACAlE,EAAA,MAAA+V,EAAA,EAAAA,EAAA/V,OAGA,IADAiD,KAAAogH,SAAA,IAAAF,KACAj/G,EAAAlE,GACAiD,KAAA67C,IAAA/oC,EAAA7R,IA6CA,SAAAo/G,GAAAN,GACA,IAAA37G,EAAApE,KAAAogH,SAAA,IAAAH,GAAAF,GACA//G,KAAAma,KAAA/V,EAAA+V,KAqGA,SAAAmmG,GAAAxnH,EAAAynH,GACA,IAAAC,EAAA7lG,GAAA7hB,GACA2nH,GAAAD,GAAAE,GAAA5nH,GACA6nH,GAAAH,IAAAC,GAAAn9E,GAAAxqC,GACA8nH,GAAAJ,IAAAC,IAAAE,GAAAxV,GAAAryG,GACA+nH,EAAAL,GAAAC,GAAAE,GAAAC,EACA/oG,EAAAgpG,EAAAxT,GAAAv0G,EAAAiE,OAAAwpC,IAAA,GACAxpC,EAAA8a,EAAA9a,OAEA,QAAA3D,KAAAN,GACAynH,IAAA7mH,GAAA1B,KAAAc,EAAAM,IACAynH,IAEA,UAAAznH,GAEAunH,IAAA,UAAAvnH,GAAA,UAAAA,IAEAwnH,IAAA,UAAAxnH,GAAA,cAAAA,GAAA,cAAAA,IAEA0nH,GAAA1nH,EAAA2D,KAEA8a,EAAA/a,KAAA1D,GAGA,OAAAye,EAUA,SAAAkpG,GAAA/pF,GACA,IAAAj6B,EAAAi6B,EAAAj6B,OACA,OAAAA,EAAAi6B,EAAAgqF,GAAA,EAAAjkH,EAAA,IAAA7C,EAWA,SAAA+mH,GAAAjqF,EAAA19B,GACA,OAAA4nH,GAAAC,GAAAnqF,GAAAoqF,GAAA9nH,EAAA,EAAA09B,EAAAj6B,SAUA,SAAAskH,GAAArqF,GACA,OAAAkqF,GAAAC,GAAAnqF,IAYA,SAAAsqF,GAAA/nH,EAAAH,EAAAN,IACAA,IAAAoB,GAAA6vC,GAAAxwC,EAAAH,GAAAN,MACAA,IAAAoB,GAAAd,KAAAG,IACAgoH,GAAAhoH,EAAAH,EAAAN,GAcA,SAAA0oH,GAAAjoH,EAAAH,EAAAN,GACA,IAAA2oH,EAAAloH,EAAAH,GACAM,GAAA1B,KAAAuB,EAAAH,IAAA2wC,GAAA03E,EAAA3oH,KACAA,IAAAoB,GAAAd,KAAAG,IACAgoH,GAAAhoH,EAAAH,EAAAN,GAYA,SAAA4oH,GAAA1qF,EAAA59B,GAEA,IADA,IAAA2D,EAAAi6B,EAAAj6B,OACAA,KACA,GAAAgtC,GAAA/S,EAAAj6B,GAAA,GAAA3D,GACA,OAAA2D,EAGA,SAcA,SAAA4kH,GAAAt1D,EAAAlK,EAAAkpD,EAAAC,GAIA,OAHAsW,GAAAv1D,EAAA,SAAAvzD,EAAAM,EAAAizD,GACAlK,EAAAmpD,EAAAxyG,EAAAuyG,EAAAvyG,GAAAuzD,KAEAi/C,EAYA,SAAAuW,GAAAtoH,EAAAue,GACA,OAAAve,GAAAuoH,GAAAhqG,EAAAtL,GAAAsL,GAAAve,GAyBA,SAAAgoH,GAAAhoH,EAAAH,EAAAN,GACA,aAAAM,GAAAZ,GACAA,GAAAe,EAAAH,EAAA,CACAssB,cAAA,EACAjtB,YAAA,EACAK,QACA6sB,UAAA,IAGApsB,EAAAH,GAAAN,EAYA,SAAAipH,GAAAxoH,EAAAyoH,GAMA,IALA,IAAA/gH,GAAA,EACAlE,EAAAilH,EAAAjlH,OACA8a,EAAAc,EAAA5b,GACAw6C,EAAA,MAAAh+C,IAEA0H,EAAAlE,GACA8a,EAAA5W,GAAAs2C,EAAAr9C,EAAAxB,GAAAa,EAAAyoH,EAAA/gH,IAEA,OAAA4W,EAYA,SAAAupG,GAAA/uB,EAAA4vB,EAAAC,GASA,OARA7vB,OACA6vB,IAAAhoH,IACAm4F,KAAA6vB,EAAA7vB,EAAA6vB,GAEAD,IAAA/nH,IACAm4F,KAAA4vB,EAAA5vB,EAAA4vB,IAGA5vB,EAmBA,SAAA8vB,GAAArpH,EAAAspH,EAAAC,EAAAjpH,EAAAG,EAAAqmD,GACA,IAAA/nC,EACAyqG,EAAAF,EAAAzgB,EACA4gB,EAAAH,EAAAxgB,EACA4gB,EAAAJ,EAAAvgB,EAKA,GAHAwgB,IACAxqG,EAAAte,EAAA8oH,EAAAvpH,EAAAM,EAAAG,EAAAqmD,GAAAyiE,EAAAvpH,IAEA+e,IAAA3d,EACA,OAAA2d,EAEA,IAAAurB,GAAAtqC,GACA,OAAAA,EAEA,IAAA0nH,EAAA7lG,GAAA7hB,GACA,GAAA0nH,GAEA,GADA3oG,EA67GA,SAAAmf,GACA,IAAAj6B,EAAAi6B,EAAAj6B,OACA8a,EAAA,IAAAmf,EAAAuM,YAAAxmC,GAOA,OAJAA,GAAA,iBAAAi6B,EAAA,IAAAt9B,GAAA1B,KAAAg/B,EAAA,WACAnf,EAAA5W,MAAA+1B,EAAA/1B,MACA4W,EAAA0lB,MAAAvG,EAAAuG,OAEA1lB,EAt8GA4qG,CAAA3pH,IACAwpH,EACA,OAAAnB,GAAAroH,EAAA+e,OAEO,CACP,IAAA0kB,EAAAmmF,GAAA5pH,GACA6pH,EAAApmF,GAAAwnE,GAAAxnE,GAAAynE,EAEA,GAAA1gE,GAAAxqC,GACA,OAAA8pH,GAAA9pH,EAAAwpH,GAEA,GAAA/lF,GAAA6nE,GAAA7nE,GAAAinE,GAAAmf,IAAAppH,GAEA,GADAse,EAAA0qG,GAAAI,EAAA,GAA0CE,GAAA/pH,IAC1CwpH,EACA,OAAAC,EAinEA,SAAAzqG,EAAAve,GACA,OAAAuoH,GAAAhqG,EAAAgrG,GAAAhrG,GAAAve,GAjnEAwpH,CAAAjqH,EAnHA,SAAAS,EAAAue,GACA,OAAAve,GAAAuoH,GAAAhqG,EAAAkrG,GAAAlrG,GAAAve,GAkHA0pH,CAAAprG,EAAA/e,IAomEA,SAAAgf,EAAAve,GACA,OAAAuoH,GAAAhqG,EAAAorG,GAAAprG,GAAAve,GApmEA4pH,CAAArqH,EAAA+oH,GAAAhqG,EAAA/e,QAES,CACT,IAAA0wG,GAAAjtE,GACA,OAAAhjC,EAAAT,EAAA,GAEA+e,EA48GA,SAAAte,EAAAgjC,EAAA+lF,GACA,IAvlDAc,EAbAC,EACAxrG,EAmmDA+yB,EAAArxC,EAAAgqC,YACA,OAAAhH,GACA,KAAAsoE,GACA,OAAAye,GAAA/pH,GAEA,KAAAoqG,EACA,KAAAC,EACA,WAAAh5D,GAAArxC,GAEA,KAAAurG,GACA,OA1nDA,SAAAye,EAAAjB,GACA,IAAAr5C,EAAAq5C,EAAAgB,GAAAC,EAAAt6C,QAAAs6C,EAAAt6C,OACA,WAAAs6C,EAAAhgF,YAAA0lC,EAAAs6C,EAAAC,WAAAD,EAAAE,YAwnDAC,CAAAnqH,EAAA+oH,GAEA,KAAAvd,GAAA,KAAAC,GACA,KAAAC,GAAA,KAAAC,GAAA,KAAAC,GACA,KAAAC,GAAA,KAAAC,GAAA,KAAAC,GAAA,KAAAC,GACA,OAAAoe,GAAApqH,EAAA+oH,GAEA,KAAAre,EACA,WAAAr5D,EAEA,KAAAs5D,EACA,KAAAM,GACA,WAAA55D,EAAArxC,GAEA,KAAA+qG,GACA,OA5nDAzsF,EAAA,IADAwrG,EA6nDA9pH,GA5nDAgqC,YAAA8/E,EAAAvrG,OAAAkvF,GAAAh3D,KAAAqzE,KACA/nC,UAAA+nC,EAAA/nC,UACAzjE,EA4nDA,KAAA0sF,GACA,WAAA35D,EAEA,KAAA65D,GACA,OAtnDA2e,EAsnDA7pH,EArnDAklH,GAAAlmH,GAAAkmH,GAAAzmH,KAAAorH,IAAA,IAv3DAQ,CAAA9qH,EAAAyjC,EAAA+lF,IAIA1iE,MAAA,IAAAygE,IACA,IAAAh6C,EAAAzmB,EAAAlnD,IAAAI,GACA,GAAAutE,EACA,OAAAA,EAIA,GAFAzmB,EAAAp1C,IAAA1R,EAAA+e,GAEAozF,GAAAnyG,GAKA,OAJAA,EAAAwyB,QAAA,SAAAu4F,GACAhsG,EAAAgkC,IAAAsmE,GAAA0B,EAAAzB,EAAAC,EAAAwB,EAAA/qH,EAAA8mD,MAGA/nC,EAGA,GAAAizF,GAAAhyG,GAKA,OAJAA,EAAAwyB,QAAA,SAAAu4F,EAAAzqH,GACAye,EAAArN,IAAApR,EAAA+oH,GAAA0B,EAAAzB,EAAAC,EAAAjpH,EAAAN,EAAA8mD,MAGA/nC,EAGA,IAIA2N,EAAAg7F,EAAAtmH,GAJAsoH,EACAD,EAAAuB,GAAAC,GACAxB,EAAAS,GAAAx2G,IAEA1T,GASA,OARAyyG,GAAA/lF,GAAA1sB,EAAA,SAAA+qH,EAAAzqH,GACAosB,IAEAq+F,EAAA/qH,EADAM,EAAAyqH,IAIArC,GAAA3pG,EAAAze,EAAA+oH,GAAA0B,EAAAzB,EAAAC,EAAAjpH,EAAAN,EAAA8mD,MAEA/nC,EAyBA,SAAAmsG,GAAAzqH,EAAAue,EAAA0N,GACA,IAAAzoB,EAAAyoB,EAAAzoB,OACA,SAAAxD,EACA,OAAAwD,EAGA,IADAxD,EAAAhB,GAAAgB,GACAwD,KAAA,CACA,IAAA3D,EAAAosB,EAAAzoB,GACA2uG,EAAA5zF,EAAA1e,GACAN,EAAAS,EAAAH,GAEA,GAAAN,IAAAoB,KAAAd,KAAAG,KAAAmyG,EAAA5yG,GACA,SAGA,SAaA,SAAAmrH,GAAAtmE,EAAAwC,EAAAxxC,GACA,sBAAAgvC,EACA,UAAAt4B,GAAAk8E,GAEA,OAAAhgF,GAAA,WAAoCo8B,EAAArgD,MAAApD,EAAAyU,IAA+BwxC,GAcnE,SAAA+jE,GAAAltF,EAAAlkB,EAAAu4F,EAAAW,GACA,IAAA/qG,GAAA,EACAukC,EAAAqmE,GACAsY,GAAA,EACApnH,EAAAi6B,EAAAj6B,OACA8a,EAAA,GACAusG,EAAAtxG,EAAA/V,OAEA,IAAAA,EACA,OAAA8a,EAEAwzF,IACAv4F,EAAAm5F,GAAAn5F,EAAAw6F,GAAAjC,KAEAW,GACAxmE,EAAAumE,GACAoY,GAAA,GAEArxG,EAAA/V,QAAAskG,IACA77D,EAAAgoE,GACA2W,GAAA,EACArxG,EAAA,IAAAqtG,GAAArtG,IAEAuxG,EACA,OAAApjH,EAAAlE,GAAA,CACA,IAAAjE,EAAAk+B,EAAA/1B,GACAmtD,EAAA,MAAAi9C,EAAAvyG,EAAAuyG,EAAAvyG,GAGA,GADAA,EAAAkzG,GAAA,IAAAlzG,IAAA,EACAqrH,GAAA/1D,KAAA,CAEA,IADA,IAAAk2D,EAAAF,EACAE,KACA,GAAAxxG,EAAAwxG,KAAAl2D,EACA,SAAAi2D,EAGAxsG,EAAA/a,KAAAhE,QAEA0sC,EAAA1yB,EAAAs7C,EAAA49C,IACAn0F,EAAA/a,KAAAhE,GAGA,OAAA+e,EAvkCA+mG,GAAA2F,iBAAA,CAQAhxE,OAAAwyD,GAQA9mB,SAAA+mB,GAQA/7B,YAAAg8B,GAQAue,SAAA,GAQAC,QAAA,CAQAxrF,EAAA2lF,KAKAA,GAAAnlH,UAAAylH,GAAAzlH,UACAmlH,GAAAnlH,UAAA8pC,YAAAq7E,GAEAG,GAAAtlH,UAAAwlH,GAAAC,GAAAzlH,WACAslH,GAAAtlH,UAAA8pC,YAAAw7E,GAsHAD,GAAArlH,UAAAwlH,GAAAC,GAAAzlH,WACAqlH,GAAArlH,UAAA8pC,YAAAu7E,GAoGAgB,GAAArmH,UAAA0R,MAvEA,WACAnL,KAAAogH,SAAArC,MAAA,SACA/9G,KAAAma,KAAA,GAsEA2lG,GAAArmH,UAAA,OAzDA,SAAAL,GACA,IAAAye,EAAA7X,KAAA61C,IAAAz8C,WAAA4G,KAAAogH,SAAAhnH,GAEA,OADA4G,KAAAma,MAAAtC,EAAA,IACAA,GAuDAioG,GAAArmH,UAAAf,IA3CA,SAAAU,GACA,IAAAgL,EAAApE,KAAAogH,SACA,GAAArC,GAAA,CACA,IAAAlmG,EAAAzT,EAAAhL,GACA,OAAAye,IAAA2pF,EAAAtnG,EAAA2d,EAEA,OAAAne,GAAA1B,KAAAoM,EAAAhL,GAAAgL,EAAAhL,GAAAc,GAsCA4lH,GAAArmH,UAAAo8C,IA1BA,SAAAz8C,GACA,IAAAgL,EAAApE,KAAAogH,SACA,OAAArC,GAAA35G,EAAAhL,KAAAc,EAAAR,GAAA1B,KAAAoM,EAAAhL,IAyBA0mH,GAAArmH,UAAA+Q,IAZA,SAAApR,EAAAN,GACA,IAAAsL,EAAApE,KAAAogH,SAGA,OAFApgH,KAAAma,MAAAna,KAAA61C,IAAAz8C,GAAA,IACAgL,EAAAhL,GAAA2kH,IAAAjlH,IAAAoB,EAAAsnG,EAAA1oG,EACAkH,MAyHAigH,GAAAxmH,UAAA0R,MApFA,WACAnL,KAAAogH,SAAA,GACApgH,KAAAma,KAAA,GAmFA8lG,GAAAxmH,UAAA,OAvEA,SAAAL,GACA,IAAAgL,EAAApE,KAAAogH,SACAn/G,EAAAygH,GAAAt9G,EAAAhL,GAEA,QAAA6H,EAAA,IAIAA,GADAmD,EAAArH,OAAA,EAEAqH,EAAA6oC,MAEAhD,GAAAjyC,KAAAoM,EAAAnD,EAAA,KAEAjB,KAAAma,KACA,KA0DA8lG,GAAAxmH,UAAAf,IA9CA,SAAAU,GACA,IAAAgL,EAAApE,KAAAogH,SACAn/G,EAAAygH,GAAAt9G,EAAAhL,GAEA,OAAA6H,EAAA,EAAA/G,EAAAkK,EAAAnD,GAAA,IA2CAg/G,GAAAxmH,UAAAo8C,IA/BA,SAAAz8C,GACA,OAAAsoH,GAAA1hH,KAAAogH,SAAAhnH,IAAA,GA+BA6mH,GAAAxmH,UAAA+Q,IAlBA,SAAApR,EAAAN,GACA,IAAAsL,EAAApE,KAAAogH,SACAn/G,EAAAygH,GAAAt9G,EAAAhL,GAQA,OANA6H,EAAA,KACAjB,KAAAma,KACA/V,EAAAtH,KAAA,CAAA1D,EAAAN,KAEAsL,EAAAnD,GAAA,GAAAnI,EAEAkH,MA2GAkgH,GAAAzmH,UAAA0R,MAtEA,WACAnL,KAAAma,KAAA,EACAna,KAAAogH,SAAA,CACAl2F,KAAA,IAAA41F,GACAp7G,IAAA,IAAAm5G,IAAAoC,IACAttG,OAAA,IAAAmtG,KAkEAI,GAAAzmH,UAAA,OArDA,SAAAL,GACA,IAAAye,EAAA6sG,GAAA1kH,KAAA5G,GAAA,OAAAA,GAEA,OADA4G,KAAAma,MAAAtC,EAAA,IACAA,GAmDAqoG,GAAAzmH,UAAAf,IAvCA,SAAAU,GACA,OAAAsrH,GAAA1kH,KAAA5G,GAAAV,IAAAU,IAuCA8mH,GAAAzmH,UAAAo8C,IA3BA,SAAAz8C,GACA,OAAAsrH,GAAA1kH,KAAA5G,GAAAy8C,IAAAz8C,IA2BA8mH,GAAAzmH,UAAA+Q,IAdA,SAAApR,EAAAN,GACA,IAAAsL,EAAAsgH,GAAA1kH,KAAA5G,GACA+gB,EAAA/V,EAAA+V,KAIA,OAFA/V,EAAAoG,IAAApR,EAAAN,GACAkH,KAAAma,MAAA/V,EAAA+V,QAAA,IACAna,MA2DAmgH,GAAA1mH,UAAAoiD,IAAAskE,GAAA1mH,UAAAqD,KAnBA,SAAAhE,GAEA,OADAkH,KAAAogH,SAAA51G,IAAA1R,EAAA0oG,GACAxhG,MAkBAmgH,GAAA1mH,UAAAo8C,IANA,SAAA/8C,GACA,OAAAkH,KAAAogH,SAAAvqE,IAAA/8C,IAuGAunH,GAAA5mH,UAAA0R,MA3EA,WACAnL,KAAAogH,SAAA,IAAAH,GACAjgH,KAAAma,KAAA,GA0EAkmG,GAAA5mH,UAAA,OA9DA,SAAAL,GACA,IAAAgL,EAAApE,KAAAogH,SACAvoG,EAAAzT,EAAA,OAAAhL,GAGA,OADA4G,KAAAma,KAAA/V,EAAA+V,KACAtC,GA0DAwoG,GAAA5mH,UAAAf,IA9CA,SAAAU,GACA,OAAA4G,KAAAogH,SAAA1nH,IAAAU,IA8CAinH,GAAA5mH,UAAAo8C,IAlCA,SAAAz8C,GACA,OAAA4G,KAAAogH,SAAAvqE,IAAAz8C,IAkCAinH,GAAA5mH,UAAA+Q,IArBA,SAAApR,EAAAN,GACA,IAAAsL,EAAApE,KAAAogH,SACA,GAAAh8G,aAAA67G,GAAA,CACA,IAAA0E,EAAAvgH,EAAAg8G,SACA,IAAAvC,IAAA8G,EAAA5nH,OAAAskG,EAAA,EAGA,OAFAsjB,EAAA7nH,KAAA,CAAA1D,EAAAN,IACAkH,KAAAma,OAAA/V,EAAA+V,KACAna,KAEAoE,EAAApE,KAAAogH,SAAA,IAAAF,GAAAyE,GAIA,OAFAvgH,EAAAoG,IAAApR,EAAAN,GACAkH,KAAAma,KAAA/V,EAAA+V,KACAna,MA4cA,IAAA4hH,GAAAgD,GAAAC,IAUAC,GAAAF,GAAAG,IAAA,GAWA,SAAAC,GAAA34D,EAAAq/C,GACA,IAAA7zF,GAAA,EAKA,OAJA+pG,GAAAv1D,EAAA,SAAAvzD,EAAAmI,EAAAorD,GAEA,OADAx0C,IAAA6zF,EAAA5yG,EAAAmI,EAAAorD,KAGAx0C,EAaA,SAAAotG,GAAAjuF,EAAAq0E,EAAAW,GAIA,IAHA,IAAA/qG,GAAA,EACAlE,EAAAi6B,EAAAj6B,SAEAkE,EAAAlE,GAAA,CACA,IAAAjE,EAAAk+B,EAAA/1B,GACA+9D,EAAAqsC,EAAAvyG,GAEA,SAAAkmE,IAAA5Q,IAAAl0D,EACA8kE,OAAAkmD,GAAAlmD,GACAgtC,EAAAhtC,EAAA5Q,IAEA,IAAAA,EAAA4Q,EACAnnD,EAAA/e,EAGA,OAAA+e,EAuCA,SAAAstG,GAAA94D,EAAAq/C,GACA,IAAA7zF,EAAA,GAMA,OALA+pG,GAAAv1D,EAAA,SAAAvzD,EAAAmI,EAAAorD,GACAq/C,EAAA5yG,EAAAmI,EAAAorD,IACAx0C,EAAA/a,KAAAhE,KAGA+e,EAcA,SAAAutG,GAAApuF,EAAAynB,EAAAitD,EAAA2Z,EAAAxtG,GACA,IAAA5W,GAAA,EACAlE,EAAAi6B,EAAAj6B,OAKA,IAHA2uG,MAAA4Z,IACAztG,MAAA,MAEA5W,EAAAlE,GAAA,CACA,IAAAjE,EAAAk+B,EAAA/1B,GACAw9C,EAAA,GAAAitD,EAAA5yG,GACA2lD,EAAA,EAEA2mE,GAAAtsH,EAAA2lD,EAAA,EAAAitD,EAAA2Z,EAAAxtG,GAEAq0F,GAAAr0F,EAAA/e,GAESusH,IACTxtG,IAAA9a,QAAAjE,GAGA,OAAA+e,EAcA,IAAA0tG,GAAAC,KAYAC,GAAAD,IAAA,GAUA,SAAAX,GAAAtrH,EAAA8xG,GACA,OAAA9xG,GAAAgsH,GAAAhsH,EAAA8xG,EAAA7+F,IAWA,SAAAu4G,GAAAxrH,EAAA8xG,GACA,OAAA9xG,GAAAksH,GAAAlsH,EAAA8xG,EAAA7+F,IAYA,SAAAk5G,GAAAnsH,EAAAisB,GACA,OAAAmmF,GAAAnmF,EAAA,SAAApsB,GACA,OAAAooB,GAAAjoB,EAAAH,MAYA,SAAAusH,GAAApsH,EAAAolF,GAMA,IAHA,IAAA19E,EAAA,EACAlE,GAHA4hF,EAAAinC,GAAAjnC,EAAAplF,IAGAwD,OAEA,MAAAxD,GAAA0H,EAAAlE,GACAxD,IAAAssH,GAAAlnC,EAAA19E,OAEA,OAAAA,MAAAlE,EAAAxD,EAAAW,EAcA,SAAA4rH,GAAAvsH,EAAAwsH,EAAAC,GACA,IAAAnuG,EAAAkuG,EAAAxsH,GACA,OAAAohB,GAAAphB,GAAAse,EAAAq0F,GAAAr0F,EAAAmuG,EAAAzsH,IAUA,SAAA0sH,GAAAntH,GACA,aAAAA,EACAA,IAAAoB,EAAAwqG,GAAAP,EAEAsY,UAAAlkH,GAAAO,GAq2FA,SAAAA,GACA,IAAAotH,EAAAxsH,GAAA1B,KAAAc,EAAA2jH,IACAlgF,EAAAzjC,EAAA2jH,IAEA,IACA3jH,EAAA2jH,IAAAviH,EACA,IAAAisH,GAAA,EACO,MAAA7gH,IAEP,IAAAuS,EAAA+jG,GAAA5jH,KAAAc,GAQA,OAPAqtH,IACAD,EACAptH,EAAA2jH,IAAAlgF,SAEAzjC,EAAA2jH,KAGA5kG,EAr3FAuuG,CAAAttH,GAy4GA,SAAAA,GACA,OAAA8iH,GAAA5jH,KAAAc,GAz4GAutH,CAAAvtH,GAYA,SAAAwtH,GAAAxtH,EAAAytH,GACA,OAAAztH,EAAAytH,EAWA,SAAAC,GAAAjtH,EAAAH,GACA,aAAAG,GAAAG,GAAA1B,KAAAuB,EAAAH,GAWA,SAAAqtH,GAAAltH,EAAAH,GACA,aAAAG,GAAAH,KAAAb,GAAAgB,GA0BA,SAAAmtH,GAAAC,EAAAtb,EAAAW,GASA,IARA,IAAAxmE,EAAAwmE,EAAAD,GAAAF,GACA9uG,EAAA4pH,EAAA,GAAA5pH,OACA6pH,EAAAD,EAAA5pH,OACA8pH,EAAAD,EACAE,EAAAnuG,EAAAiuG,GACAG,EAAAC,IACAnvG,EAAA,GAEAgvG,KAAA,CACA,IAAA7vF,EAAA2vF,EAAAE,GACAA,GAAAxb,IACAr0E,EAAAi1E,GAAAj1E,EAAAs2E,GAAAjC,KAEA0b,EAAAxJ,GAAAvmF,EAAAj6B,OAAAgqH,GACAD,EAAAD,IAAA7a,IAAAX,GAAAtuG,GAAA,KAAAi6B,EAAAj6B,QAAA,KACA,IAAAojH,GAAA0G,GAAA7vF,GACA98B,EAEA88B,EAAA2vF,EAAA,GAEA,IAAA1lH,GAAA,EACA64E,EAAAgtC,EAAA,GAEAzC,EACA,OAAApjH,EAAAlE,GAAA8a,EAAA9a,OAAAgqH,GAAA,CACA,IAAAjuH,EAAAk+B,EAAA/1B,GACAmtD,EAAAi9C,IAAAvyG,KAGA,GADAA,EAAAkzG,GAAA,IAAAlzG,IAAA,IACAghF,EACA0zB,GAAA1zB,EAAA1rB,GACA5oB,EAAA3tB,EAAAu2C,EAAA49C,IACA,CAEA,IADA6a,EAAAD,IACAC,GAAA,CACA,IAAAn2E,EAAAo2E,EAAAD,GACA,KAAAn2E,EACA88D,GAAA98D,EAAA0d,GACA5oB,EAAAmhF,EAAAE,GAAAz4D,EAAA49C,IAEA,SAAAqY,EAGAvqC,GACAA,EAAAh9E,KAAAsxD,GAEAv2C,EAAA/a,KAAAhE,IAGA,OAAA+e,EA+BA,SAAAovG,GAAA1tH,EAAAolF,EAAAhwE,GAGA,IAAAgvC,EAAA,OADApkD,EAAAwtB,GAAAxtB,EADAolF,EAAAinC,GAAAjnC,EAAAplF,KAEAA,IAAAssH,GAAA77E,GAAA20C,KACA,aAAAhhC,EAAAzjD,EAAAoD,GAAAqgD,EAAApkD,EAAAoV,GAUA,SAAAu4G,GAAApuH,GACA,OAAA+lH,GAAA/lH,IAAAmtH,GAAAntH,IAAA0qG,EAuCA,SAAA2jB,GAAAruH,EAAAytH,EAAAnE,EAAAC,EAAAziE,GACA,OAAA9mD,IAAAytH,IAGA,MAAAztH,GAAA,MAAAytH,IAAA1H,GAAA/lH,KAAA+lH,GAAA0H,GACAztH,MAAAytH,KAmBA,SAAAhtH,EAAAgtH,EAAAnE,EAAAC,EAAA+E,EAAAxnE,GACA,IAAAynE,EAAA1sG,GAAAphB,GACA+tH,EAAA3sG,GAAA4rG,GACAgB,EAAAF,EAAA5jB,EAAAif,GAAAnpH,GACAiuH,EAAAF,EAAA7jB,EAAAif,GAAA6D,GAKAkB,GAHAF,KAAA/jB,EAAAY,EAAAmjB,IAGAnjB,EACAsjB,GAHAF,KAAAhkB,EAAAY,EAAAojB,IAGApjB,EACAujB,EAAAJ,GAAAC,EAEA,GAAAG,GAAArkF,GAAA/pC,GAAA,CACA,IAAA+pC,GAAAijF,GACA,SAEAc,GAAA,EACAI,GAAA,EAEA,GAAAE,IAAAF,EAEA,OADA7nE,MAAA,IAAAygE,IACAgH,GAAAlc,GAAA5xG,GACAquH,GAAAruH,EAAAgtH,EAAAnE,EAAAC,EAAA+E,EAAAxnE,GAy0EA,SAAArmD,EAAAgtH,EAAAhqF,EAAA6lF,EAAAC,EAAA+E,EAAAxnE,GACA,OAAArjB,GACA,KAAAuoE,GACA,GAAAvrG,EAAAkqH,YAAA8C,EAAA9C,YACAlqH,EAAAiqH,YAAA+C,EAAA/C,WACA,SAEAjqH,IAAA0vE,OACAs9C,IAAAt9C,OAEA,KAAA47B,GACA,QAAAtrG,EAAAkqH,YAAA8C,EAAA9C,aACA2D,EAAA,IAAAnL,GAAA1iH,GAAA,IAAA0iH,GAAAsK,KAKA,KAAA5iB,EACA,KAAAC,EACA,KAAAM,EAGA,OAAAn6D,IAAAxwC,GAAAgtH,GAEA,KAAAziB,EACA,OAAAvqG,EAAAnB,MAAAmuH,EAAAnuH,MAAAmB,EAAAkC,SAAA8qH,EAAA9qH,QAEA,KAAA6oG,GACA,KAAAE,GAIA,OAAAjrG,GAAAgtH,EAAA,GAEA,KAAAtiB,EACA,IAAAvxF,EAAAynG,GAEA,KAAA5V,GACA,IAAAsjB,EAAAzF,EAAAtgB,EAGA,GAFApvF,MAAA4nG,IAEA/gH,EAAA4gB,MAAAosG,EAAApsG,OAAA0tG,EACA,SAGA,IAAAxhD,EAAAzmB,EAAAlnD,IAAAa,GACA,GAAA8sE,EACA,OAAAA,GAAAkgD,EAEAnE,GAAArgB,EAGAniD,EAAAp1C,IAAAjR,EAAAgtH,GACA,IAAA1uG,EAAA+vG,GAAAl1G,EAAAnZ,GAAAmZ,EAAA6zG,GAAAnE,EAAAC,EAAA+E,EAAAxnE,GAEA,OADAA,EAAA,OAAArmD,GACAse,EAEA,KAAA4sF,GACA,GAAAga,GACA,OAAAA,GAAAzmH,KAAAuB,IAAAklH,GAAAzmH,KAAAuuH,GAGA,SAt4EAuB,CAAAvuH,EAAAgtH,EAAAgB,EAAAnF,EAAAC,EAAA+E,EAAAxnE,GAEA,KAAAwiE,EAAAtgB,GAAA,CACA,IAAAimB,EAAAN,GAAA/tH,GAAA1B,KAAAuB,EAAA,eACAyuH,EAAAN,GAAAhuH,GAAA1B,KAAAuuH,EAAA,eAEA,GAAAwB,GAAAC,EAAA,CACA,IAAAC,EAAAF,EAAAxuH,EAAAT,QAAAS,EACA2uH,EAAAF,EAAAzB,EAAAztH,QAAAytH,EAGA,OADA3mE,MAAA,IAAAygE,IACA+G,EAAAa,EAAAC,EAAA9F,EAAAC,EAAAziE,IAGA,QAAA+nE,IAGA/nE,MAAA,IAAAygE,IAq4EA,SAAA9mH,EAAAgtH,EAAAnE,EAAAC,EAAA+E,EAAAxnE,GACA,IAAAioE,EAAAzF,EAAAtgB,EACAqmB,EAAApE,GAAAxqH,GACA6uH,EAAAD,EAAAprH,OAEA6pH,EADA7C,GAAAwC,GACAxpH,OAEA,GAAAqrH,GAAAxB,IAAAiB,EACA,SAGA,IADA,IAAA5mH,EAAAmnH,EACAnnH,KAAA,CACA,IAAA7H,EAAA+uH,EAAAlnH,GACA,KAAA4mH,EAAAzuH,KAAAmtH,EAAA7sH,GAAA1B,KAAAuuH,EAAAntH,IACA,SAIA,IAAAitE,EAAAzmB,EAAAlnD,IAAAa,GACA,GAAA8sE,GAAAzmB,EAAAlnD,IAAA6tH,GACA,OAAAlgD,GAAAkgD,EAEA,IAAA1uG,GAAA,EACA+nC,EAAAp1C,IAAAjR,EAAAgtH,GACA3mE,EAAAp1C,IAAA+7G,EAAAhtH,GAGA,IADA,IAAA8uH,EAAAR,IACA5mH,EAAAmnH,GAAA,CACAhvH,EAAA+uH,EAAAlnH,GACA,IAAAwgH,EAAAloH,EAAAH,GACAkvH,EAAA/B,EAAAntH,GAEA,GAAAipH,EACA,IAAAkG,EAAAV,EACAxF,EAAAiG,EAAA7G,EAAAroH,EAAAmtH,EAAAhtH,EAAAqmD,GACAyiE,EAAAZ,EAAA6G,EAAAlvH,EAAAG,EAAAgtH,EAAA3mE,GAGA,KAAA2oE,IAAAruH,EACAunH,IAAA6G,GAAAlB,EAAA3F,EAAA6G,EAAAlG,EAAAC,EAAAziE,GACA2oE,GACA,CACA1wG,GAAA,EACA,MAEAwwG,MAAA,eAAAjvH,GAEA,GAAAye,IAAAwwG,EAAA,CACA,IAAAG,EAAAjvH,EAAAgqC,YACAklF,EAAAlC,EAAAhjF,YAGAilF,GAAAC,GACA,gBAAAlvH,GAAA,gBAAAgtH,KACA,mBAAAiC,mBACA,mBAAAC,qBACA5wG,GAAA,GAKA,OAFA+nC,EAAA,OAAArmD,GACAqmD,EAAA,OAAA2mE,GACA1uG,EAj8EA6wG,CAAAnvH,EAAAgtH,EAAAnE,EAAAC,EAAA+E,EAAAxnE,IA3DA+oE,CAAA7vH,EAAAytH,EAAAnE,EAAAC,EAAA8E,GAAAvnE,IAmFA,SAAAgpE,GAAArvH,EAAAue,EAAA+wG,EAAAxG,GACA,IAAAphH,EAAA4nH,EAAA9rH,OACAA,EAAAkE,EACA6nH,GAAAzG,EAEA,SAAA9oH,EACA,OAAAwD,EAGA,IADAxD,EAAAhB,GAAAgB,GACA0H,KAAA,CACA,IAAAmD,EAAAykH,EAAA5nH,GACA,GAAA6nH,GAAA1kH,EAAA,GACAA,EAAA,KAAA7K,EAAA6K,EAAA,MACAA,EAAA,KAAA7K,GAEA,SAGA,OAAA0H,EAAAlE,GAAA,CAEA,IAAA3D,GADAgL,EAAAykH,EAAA5nH,IACA,GACAwgH,EAAAloH,EAAAH,GACA2vH,EAAA3kH,EAAA,GAEA,GAAA0kH,GAAA1kH,EAAA,IACA,GAAAq9G,IAAAvnH,KAAAd,KAAAG,GACA,aAES,CACT,IAAAqmD,EAAA,IAAAygE,GACA,GAAAgC,EACA,IAAAxqG,EAAAwqG,EAAAZ,EAAAsH,EAAA3vH,EAAAG,EAAAue,EAAA8nC,GAEA,KAAA/nC,IAAA3d,EACAitH,GAAA4B,EAAAtH,EAAA3f,EAAAC,EAAAsgB,EAAAziE,GACA/nC,GAEA,UAIA,SAWA,SAAAmxG,GAAAlwH,GACA,SAAAsqC,GAAAtqC,KAo4FA6kD,EAp4FA7kD,EAq4FA4iH,UAAA/9D,MAl4FAn8B,GAAA1oB,GAAAijH,GAAA5U,IACA3pG,KAAA2gH,GAAArlH,IAg4FA,IAAA6kD,EAp1FA,SAAAsrE,GAAAnwH,GAGA,yBAAAA,EACAA,EAEA,MAAAA,EACA01E,GAEA,iBAAA11E,EACA6hB,GAAA7hB,GACAowH,GAAApwH,EAAA,GAAAA,EAAA,IACAqwH,GAAArwH,GAEAU,GAAAV,GAUA,SAAAswH,GAAA7vH,GACA,IAAA8vH,GAAA9vH,GACA,OAAA8jH,GAAA9jH,GAEA,IAAAse,EAAA,GACA,QAAAze,KAAAb,GAAAgB,GACAG,GAAA1B,KAAAuB,EAAAH,IAAA,eAAAA,GACAye,EAAA/a,KAAA1D,GAGA,OAAAye,EAUA,SAAAyxG,GAAA/vH,GACA,IAAA6pC,GAAA7pC,GACA,OAo8FA,SAAAA,GACA,IAAAse,EAAA,GACA,SAAAte,EACA,QAAAH,KAAAb,GAAAgB,GACAse,EAAA/a,KAAA1D,GAGA,OAAAye,EA38FA0xG,CAAAhwH,GAEA,IAAAiwH,EAAAH,GAAA9vH,GACAse,EAAA,GAEA,QAAAze,KAAAG,GACA,eAAAH,IAAAowH,GAAA9vH,GAAA1B,KAAAuB,EAAAH,KACAye,EAAA/a,KAAA1D,GAGA,OAAAye,EAYA,SAAA4xG,GAAA3wH,EAAAytH,GACA,OAAAztH,EAAAytH,EAWA,SAAAmD,GAAAr9D,EAAAg/C,GACA,IAAApqG,GAAA,EACA4W,EAAAyxB,GAAA+iB,GAAA1zC,EAAA0zC,EAAAtvD,QAAA,GAKA,OAHA6kH,GAAAv1D,EAAA,SAAAvzD,EAAAM,EAAAizD,GACAx0C,IAAA5W,GAAAoqG,EAAAvyG,EAAAM,EAAAizD,KAEAx0C,EAUA,SAAAsxG,GAAArxG,GACA,IAAA+wG,EAAAc,GAAA7xG,GACA,UAAA+wG,EAAA9rH,QAAA8rH,EAAA,MACAe,GAAAf,EAAA,MAAAA,EAAA,OAEA,SAAAtvH,GACA,OAAAA,IAAAue,GAAA8wG,GAAArvH,EAAAue,EAAA+wG,IAYA,SAAAK,GAAAvqC,EAAAoqC,GACA,OAAAc,GAAAlrC,IAAAmrC,GAAAf,GACAa,GAAA/D,GAAAlnC,GAAAoqC,GAEA,SAAAxvH,GACA,IAAAkoH,EAAA/oH,GAAAa,EAAAolF,GACA,OAAA8iC,IAAAvnH,GAAAunH,IAAAsH,EACAgB,GAAAxwH,EAAAolF,GACAwoC,GAAA4B,EAAAtH,EAAA3f,EAAAC,IAeA,SAAAioB,GAAAzwH,EAAAue,EAAAmyG,EAAA5H,EAAAziE,GACArmD,IAAAue,GAGAytG,GAAAztG,EAAA,SAAAixG,EAAA3vH,GACA,GAAAgqC,GAAA2lF,GACAnpE,MAAA,IAAAygE,IA+BA,SAAA9mH,EAAAue,EAAA1e,EAAA6wH,EAAAC,EAAA7H,EAAAziE,GACA,IAAA6hE,EAAA0I,GAAA5wH,EAAAH,GACA2vH,EAAAoB,GAAAryG,EAAA1e,GACAitE,EAAAzmB,EAAAlnD,IAAAqwH,GAEA,GAAA1iD,EACAi7C,GAAA/nH,EAAAH,EAAAitE,OADA,CAIA,IAAA+jD,EAAA/H,EACAA,EAAAZ,EAAAsH,EAAA3vH,EAAA,GAAAG,EAAAue,EAAA8nC,GACA1lD,EAEAiqH,EAAAiG,IAAAlwH,EAEA,GAAAiqH,EAAA,CACA,IAAA3D,EAAA7lG,GAAAouG,GACApI,GAAAH,GAAAl9E,GAAAylF,GACAsB,GAAA7J,IAAAG,GAAAxV,GAAA4d,GAEAqB,EAAArB,EACAvI,GAAAG,GAAA0J,EACA1vG,GAAA8mG,GACA2I,EAAA3I,EAEA6I,GAAA7I,GACA2I,EAAAjJ,GAAAM,GAEAd,GACAwD,GAAA,EACAiG,EAAAxH,GAAAmG,GAAA,IAEAsB,GACAlG,GAAA,EACAiG,EAAAzG,GAAAoF,GAAA,IAGAqB,EAAA,GAGA//E,GAAA0+E,IAAArI,GAAAqI,IACAqB,EAAA3I,EACAf,GAAAe,GACA2I,EAAAG,GAAA9I,GAEAr+E,GAAAq+E,KAAAjgG,GAAAigG,KACA2I,EAAAvH,GAAAkG,KAIA5E,GAAA,EAGAA,IAEAvkE,EAAAp1C,IAAAu+G,EAAAqB,GACAF,EAAAE,EAAArB,EAAAkB,EAAA5H,EAAAziE,GACAA,EAAA,OAAAmpE,IAEAzH,GAAA/nH,EAAAH,EAAAgxH,IAzFAI,CAAAjxH,EAAAue,EAAA1e,EAAA6wH,EAAAD,GAAA3H,EAAAziE,OAEA,CACA,IAAAwqE,EAAA/H,EACAA,EAAA8H,GAAA5wH,EAAAH,GAAA2vH,EAAA3vH,EAAA,GAAAG,EAAAue,EAAA8nC,GACA1lD,EAEAkwH,IAAAlwH,IACAkwH,EAAArB,GAEAzH,GAAA/nH,EAAAH,EAAAgxH,KAEOpH,IAwFP,SAAAyH,GAAAzzF,EAAA19B,GACA,IAAAyD,EAAAi6B,EAAAj6B,OACA,GAAAA,EAIA,OAAA+jH,GADAxnH,KAAA,EAAAyD,EAAA,EACAA,GAAAi6B,EAAA19B,GAAAY,EAYA,SAAAwwH,GAAAr+D,EAAAs+D,EAAAC,GACA,IAAA3pH,GAAA,EAUA,OATA0pH,EAAA1e,GAAA0e,EAAA5tH,OAAA4tH,EAAA,CAAAn8C,IAAA8+B,GAAAud,OAhvFA,SAAA7zF,EAAA8zF,GACA,IAAA/tH,EAAAi6B,EAAAj6B,OAGA,IADAi6B,EAAA3N,KAAAyhG,GACA/tH,KACAi6B,EAAAj6B,GAAAi6B,EAAAj6B,GAAAjE,MAEA,OAAAk+B,EAkvFA+zF,CAPArB,GAAAr9D,EAAA,SAAAvzD,EAAAM,EAAAizD,GAIA,OAAgB2+D,SAHhB/e,GAAA0e,EAAA,SAAAtf,GACA,OAAAA,EAAAvyG,KAEgBmI,UAAAnI,WAGhB,SAAAS,EAAAgtH,GACA,OAm4BA,SAAAhtH,EAAAgtH,EAAAqE,GAOA,IANA,IAAA3pH,GAAA,EACAgqH,EAAA1xH,EAAAyxH,SACAE,EAAA3E,EAAAyE,SACAjuH,EAAAkuH,EAAAluH,OACAouH,EAAAP,EAAA7tH,SAEAkE,EAAAlE,GAAA,CACA,IAAA8a,EAAAuzG,GAAAH,EAAAhqH,GAAAiqH,EAAAjqH,IACA,GAAA4W,EAAA,CACA,GAAA5W,GAAAkqH,EACA,OAAAtzG,EAEA,IAAA6L,EAAAknG,EAAA3pH,GACA,OAAA4W,GAAA,QAAA6L,GAAA,MAUA,OAAAnqB,EAAA0H,MAAAslH,EAAAtlH,MA35BAoqH,CAAA9xH,EAAAgtH,EAAAqE,KA4BA,SAAAU,GAAA/xH,EAAAyoH,EAAAtW,GAKA,IAJA,IAAAzqG,GAAA,EACAlE,EAAAilH,EAAAjlH,OACA8a,EAAA,KAEA5W,EAAAlE,GAAA,CACA,IAAA4hF,EAAAqjC,EAAA/gH,GACAnI,EAAA6sH,GAAApsH,EAAAolF,GAEA+sB,EAAA5yG,EAAA6lF,IACA4sC,GAAA1zG,EAAA+tG,GAAAjnC,EAAAplF,GAAAT,GAGA,OAAA+e,EA2BA,SAAA2zG,GAAAx0F,EAAAlkB,EAAAu4F,EAAAW,GACA,IAAAtxG,EAAAsxG,EAAAgB,GAAAlB,GACA7qG,GAAA,EACAlE,EAAA+V,EAAA/V,OACA+8E,EAAA9iD,EAQA,IANAA,IAAAlkB,IACAA,EAAAquG,GAAAruG,IAEAu4F,IACAvxB,EAAAmyB,GAAAj1E,EAAAs2E,GAAAjC,OAEApqG,EAAAlE,GAKA,IAJA,IAAA6vG,EAAA,EACA9zG,EAAAga,EAAA7R,GACAmtD,EAAAi9C,IAAAvyG,MAEA8zG,EAAAlyG,EAAAo/E,EAAA1rB,EAAAw+C,EAAAZ,KAAA,GACAlyB,IAAA9iD,GACAiT,GAAAjyC,KAAA8hF,EAAA8yB,EAAA,GAEA3iE,GAAAjyC,KAAAg/B,EAAA41E,EAAA,GAGA,OAAA51E,EAYA,SAAAy0F,GAAAz0F,EAAA00F,GAIA,IAHA,IAAA3uH,EAAAi6B,EAAA00F,EAAA3uH,OAAA,EACAu+E,EAAAv+E,EAAA,EAEAA,KAAA,CACA,IAAAkE,EAAAyqH,EAAA3uH,GACA,GAAAA,GAAAu+E,GAAAr6E,IAAA6kC,EAAA,CACA,IAAAA,EAAA7kC,EACA6/G,GAAA7/G,GACAgpC,GAAAjyC,KAAAg/B,EAAA/1B,EAAA,GAEA0qH,GAAA30F,EAAA/1B,IAIA,OAAA+1B,EAYA,SAAAgqF,GAAAiB,EAAAC,GACA,OAAAD,EAAAlF,GAAAW,MAAAwE,EAAAD,EAAA,IAkCA,SAAA2J,GAAAj5G,EAAArZ,GACA,IAAAue,EAAA,GACA,IAAAlF,GAAArZ,EAAA,GAAAA,EAAA2pG,EACA,OAAAprF,EAIA,GACAve,EAAA,IACAue,GAAAlF,IAEArZ,EAAAyjH,GAAAzjH,EAAA,MAEAqZ,YAEOrZ,GAEP,OAAAue,EAWA,SAAAg0G,GAAAluE,EAAAr3C,GACA,OAAAwlH,GAAAC,GAAApuE,EAAAr3C,EAAAkoE,IAAA7wB,EAAA,IAUA,SAAAquE,GAAA3/D,GACA,OAAA00D,GAAAjuG,GAAAu5C,IAWA,SAAA4/D,GAAA5/D,EAAA/yD,GACA,IAAA09B,EAAAlkB,GAAAu5C,GACA,OAAA60D,GAAAlqF,EAAAoqF,GAAA9nH,EAAA,EAAA09B,EAAAj6B,SAaA,SAAAwuH,GAAAhyH,EAAAolF,EAAA7lF,EAAAupH,GACA,IAAAj/E,GAAA7pC,GACA,OAAAA,EASA,IALA,IAAA0H,GAAA,EACAlE,GAHA4hF,EAAAinC,GAAAjnC,EAAAplF,IAGAwD,OACAu+E,EAAAv+E,EAAA,EACA08F,EAAAlgG,EAEA,MAAAkgG,KAAAx4F,EAAAlE,GAAA,CACA,IAAA3D,EAAAysH,GAAAlnC,EAAA19E,IACAmpH,EAAAtxH,EAEA,GAAAmI,GAAAq6E,EAAA,CACA,IAAAmmC,EAAAhoB,EAAArgG,IACAgxH,EAAA/H,IAAAZ,EAAAroH,EAAAqgG,GAAAv/F,KACAA,IACAkwH,EAAAhnF,GAAAq+E,GACAA,EACAX,GAAAniC,EAAA19E,EAAA,WAGAugH,GAAA/nB,EAAArgG,EAAAgxH,GACA3wB,IAAArgG,GAEA,OAAAG,EAWA,IAAA2yH,GAAAlO,GAAA,SAAArgE,EAAAv5C,GAEA,OADA45G,GAAAxzG,IAAAmzC,EAAAv5C,GACAu5C,GAFA6wB,GAaA29C,GAAA3zH,GAAA,SAAAmlD,EAAAhrC,GACA,OAAAna,GAAAmlD,EAAA,YACAj4B,cAAA,EACAjtB,YAAA,EACAK,MAAAszH,GAAAz5G,GACAgT,UAAA,KALA6oD,GAgBA,SAAA69C,GAAAhgE,GACA,OAAA60D,GAAApuG,GAAAu5C,IAYA,SAAAigE,GAAAt1F,EAAA1wB,EAAAkU,GACA,IAAAvZ,GAAA,EACAlE,EAAAi6B,EAAAj6B,OAEAuJ,EAAA,IACAA,KAAAvJ,EAAA,EAAAA,EAAAuJ,IAEAkU,IAAAzd,IAAAyd,GACA,IACAA,GAAAzd,GAEAA,EAAAuJ,EAAAkU,EAAA,EAAAA,EAAAlU,IAAA,EACAA,KAAA,EAGA,IADA,IAAAuR,EAAAc,EAAA5b,KACAkE,EAAAlE,GACA8a,EAAA5W,GAAA+1B,EAAA/1B,EAAAqF,GAEA,OAAAuR,EAYA,SAAA00G,GAAAlgE,EAAAq/C,GACA,IAAA7zF,EAMA,OAJA+pG,GAAAv1D,EAAA,SAAAvzD,EAAAmI,EAAAorD,GAEA,QADAx0C,EAAA6zF,EAAA5yG,EAAAmI,EAAAorD,QAGAx0C,EAeA,SAAA20G,GAAAx1F,EAAAl+B,EAAA2zH,GACA,IAAAC,EAAA,EACAz9E,EAAA,MAAAjY,EAAA01F,EAAA11F,EAAAj6B,OAEA,oBAAAjE,SAAAm2C,GAAAq0D,EAAA,CACA,KAAAopB,EAAAz9E,GAAA,CACA,IAAA09E,EAAAD,EAAAz9E,IAAA,EACAmf,EAAAp3B,EAAA21F,GAEA,OAAAv+D,IAAA82D,GAAA92D,KACAq+D,EAAAr+D,GAAAt1D,EAAAs1D,EAAAt1D,GACA4zH,EAAAC,EAAA,EAEA19E,EAAA09E,EAGA,OAAA19E,EAEA,OAAA29E,GAAA51F,EAAAl+B,EAAA01E,GAAAi+C,GAgBA,SAAAG,GAAA51F,EAAAl+B,EAAAuyG,EAAAohB,GACA3zH,EAAAuyG,EAAAvyG,GASA,IAPA,IAAA4zH,EAAA,EACAz9E,EAAA,MAAAjY,EAAA,EAAAA,EAAAj6B,OACA8vH,EAAA/zH,KACAg0H,EAAA,OAAAh0H,EACAi0H,EAAA7H,GAAApsH,GACAk0H,EAAAl0H,IAAAoB,EAEAwyH,EAAAz9E,GAAA,CACA,IAAA09E,EAAA5P,IAAA2P,EAAAz9E,GAAA,GACAmf,EAAAi9C,EAAAr0E,EAAA21F,IACAM,EAAA7+D,IAAAl0D,EACAgzH,EAAA,OAAA9+D,EACA++D,EAAA/+D,KACAg/D,EAAAlI,GAAA92D,GAEA,GAAAy+D,EACA,IAAAQ,EAAAZ,GAAAU,OAEAE,EADSL,EACTG,IAAAV,GAAAQ,GACSH,EACTK,GAAAF,IAAAR,IAAAS,GACSH,EACTI,GAAAF,IAAAC,IAAAT,IAAAW,IACSF,IAAAE,IAGTX,EAAAr+D,GAAAt1D,EAAAs1D,EAAAt1D,GAEAu0H,EACAX,EAAAC,EAAA,EAEA19E,EAAA09E,EAGA,OAAApP,GAAAtuE,EAAAo0D,GAYA,SAAAiqB,GAAAt2F,EAAAq0E,GAMA,IALA,IAAApqG,GAAA,EACAlE,EAAAi6B,EAAAj6B,OACA6uG,EAAA,EACA/zF,EAAA,KAEA5W,EAAAlE,GAAA,CACA,IAAAjE,EAAAk+B,EAAA/1B,GACAmtD,EAAAi9C,IAAAvyG,KAEA,IAAAmI,IAAA8oC,GAAAqkB,EAAA0rB,GAAA,CACA,IAAAA,EAAA1rB,EACAv2C,EAAA+zF,KAAA,IAAA9yG,EAAA,EAAAA,GAGA,OAAA+e,EAWA,SAAA01G,GAAAz0H,GACA,uBAAAA,EACAA,EAEAosH,GAAApsH,GACAqqG,GAEArqG,EAWA,SAAA00H,GAAA10H,GAEA,oBAAAA,EACA,OAAAA,EAEA,GAAA6hB,GAAA7hB,GAEA,OAAAmzG,GAAAnzG,EAAA00H,IAAA,GAEA,GAAAtI,GAAApsH,GACA,OAAA6lH,MAAA3mH,KAAAc,GAAA,GAEA,IAAA+e,EAAA/e,EAAA,GACA,WAAA+e,GAAA,EAAA/e,IAAAkqG,EAAA,KAAAnrF,EAYA,SAAA41G,GAAAz2F,EAAAq0E,EAAAW,GACA,IAAA/qG,GAAA,EACAukC,EAAAqmE,GACA9uG,EAAAi6B,EAAAj6B,OACAonH,GAAA,EACAtsG,EAAA,GACAiiE,EAAAjiE,EAEA,GAAAm0F,EACAmY,GAAA,EACA3+E,EAAAumE,QAEA,GAAAhvG,GAAAskG,EAAA,CACA,IAAA72F,EAAA6gG,EAAA,KAAAqiB,GAAA12F,GACA,GAAAxsB,EACA,OAAA8vG,GAAA9vG,GAEA25G,GAAA,EACA3+E,EAAAgoE,GACA1zB,EAAA,IAAAqmC,QAGArmC,EAAAuxB,EAAA,GAAAxzF,EAEAwsG,EACA,OAAApjH,EAAAlE,GAAA,CACA,IAAAjE,EAAAk+B,EAAA/1B,GACAmtD,EAAAi9C,IAAAvyG,KAGA,GADAA,EAAAkzG,GAAA,IAAAlzG,IAAA,EACAqrH,GAAA/1D,KAAA,CAEA,IADA,IAAAu/D,EAAA7zC,EAAA/8E,OACA4wH,KACA,GAAA7zC,EAAA6zC,KAAAv/D,EACA,SAAAi2D,EAGAhZ,GACAvxB,EAAAh9E,KAAAsxD,GAEAv2C,EAAA/a,KAAAhE,QAEA0sC,EAAAs0C,EAAA1rB,EAAA49C,KACAlyB,IAAAjiE,GACAiiE,EAAAh9E,KAAAsxD,GAEAv2C,EAAA/a,KAAAhE,IAGA,OAAA+e,EAWA,SAAA8zG,GAAApyH,EAAAolF,GAGA,cADAplF,EAAAwtB,GAAAxtB,EADAolF,EAAAinC,GAAAjnC,EAAAplF,aAEAA,EAAAssH,GAAA77E,GAAA20C,KAaA,SAAAivC,GAAAr0H,EAAAolF,EAAAkvC,EAAAxL,GACA,OAAAkJ,GAAAhyH,EAAAolF,EAAAkvC,EAAAlI,GAAApsH,EAAAolF,IAAA0jC,GAcA,SAAAyL,GAAA92F,EAAA00E,EAAAqiB,EAAAlhB,GAIA,IAHA,IAAA9vG,EAAAi6B,EAAAj6B,OACAkE,EAAA4rG,EAAA9vG,GAAA,GAEA8vG,EAAA5rG,QAAAlE,IACA2uG,EAAA10E,EAAA/1B,KAAA+1B,KAEA,OAAA+2F,EACAzB,GAAAt1F,EAAA61E,EAAA,EAAA5rG,EAAA4rG,EAAA5rG,EAAA,EAAAlE,GACAuvH,GAAAt1F,EAAA61E,EAAA5rG,EAAA,IAAA4rG,EAAA9vG,EAAAkE,GAaA,SAAA+sH,GAAAl1H,EAAAm1H,GACA,IAAAp2G,EAAA/e,EAIA,OAHA+e,aAAAinG,KACAjnG,IAAA/e,SAEAqzG,GAAA8hB,EAAA,SAAAp2G,EAAAq2G,GACA,OAAAA,EAAAvwE,KAAArgD,MAAA4wH,EAAAhmD,QAAAgkC,GAAA,CAAAr0F,GAAAq2G,EAAAv/G,QACOkJ,GAaP,SAAAs2G,GAAAxH,EAAAtb,EAAAW,GACA,IAAAjvG,EAAA4pH,EAAA5pH,OACA,GAAAA,EAAA,EACA,OAAAA,EAAA0wH,GAAA9G,EAAA,OAKA,IAHA,IAAA1lH,GAAA,EACA4W,EAAAc,EAAA5b,KAEAkE,EAAAlE,GAIA,IAHA,IAAAi6B,EAAA2vF,EAAA1lH,GACA4lH,GAAA,IAEAA,EAAA9pH,GACA8pH,GAAA5lH,IACA4W,EAAA5W,GAAAijH,GAAArsG,EAAA5W,IAAA+1B,EAAA2vF,EAAAE,GAAAxb,EAAAW,IAIA,OAAAyhB,GAAArI,GAAAvtG,EAAA,GAAAwzF,EAAAW,GAYA,SAAAoiB,GAAA5oG,EAAA1S,EAAAu7G,GAMA,IALA,IAAAptH,GAAA,EACAlE,EAAAyoB,EAAAzoB,OACAuxH,EAAAx7G,EAAA/V,OACA8a,EAAA,KAEA5W,EAAAlE,GAAA,CACA,IAAAjE,EAAAmI,EAAAqtH,EAAAx7G,EAAA7R,GAAA/G,EACAm0H,EAAAx2G,EAAA2N,EAAAvkB,GAAAnI,GAEA,OAAA+e,EAUA,SAAA02G,GAAAz1H,GACA,OAAAwxH,GAAAxxH,KAAA,GAUA,SAAA01H,GAAA11H,GACA,yBAAAA,IAAA01E,GAWA,SAAAo3C,GAAA9sH,EAAAS,GACA,OAAAohB,GAAA7hB,GACAA,EAEA+wH,GAAA/wH,EAAAS,GAAA,CAAAT,GAAA21H,GAAAx2G,GAAAnf,IAYA,IAAA41H,GAAA7C,GAWA,SAAA8C,GAAA33F,EAAA1wB,EAAAkU,GACA,IAAAzd,EAAAi6B,EAAAj6B,OAEA,OADAyd,MAAAtgB,EAAA6C,EAAAyd,GACAlU,GAAAkU,GAAAzd,EAAAi6B,EAAAs1F,GAAAt1F,EAAA1wB,EAAAkU,GASA,IAAA4b,GAAAumF,IAAA,SAAAv6G,GACA,OAAApI,GAAAo8B,aAAAh0B,IAWA,SAAAwgH,GAAA35C,EAAAq5C,GACA,GAAAA,EACA,OAAAr5C,EAAA/wD,QAEA,IAAAnb,EAAAksE,EAAAlsE,OACA8a,EAAAqkG,MAAAn/G,GAAA,IAAAksE,EAAA1lC,YAAAxmC,GAGA,OADAksE,EAAA/+B,KAAAryB,GACAA,EAUA,SAAAyrG,GAAAsL,GACA,IAAA/2G,EAAA,IAAA+2G,EAAArrF,YAAAqrF,EAAAnL,YAEA,OADA,IAAAxH,GAAApkG,GAAArN,IAAA,IAAAyxG,GAAA2S,IACA/2G,EAgDA,SAAA8rG,GAAAkL,EAAAvM,GACA,IAAAr5C,EAAAq5C,EAAAgB,GAAAuL,EAAA5lD,QAAA4lD,EAAA5lD,OACA,WAAA4lD,EAAAtrF,YAAA0lC,EAAA4lD,EAAArL,WAAAqL,EAAA9xH,QAWA,SAAAquH,GAAAtyH,EAAAytH,GACA,GAAAztH,IAAAytH,EAAA,CACA,IAAAuI,EAAAh2H,IAAAoB,EACA4yH,EAAA,OAAAh0H,EACAi2H,EAAAj2H,KACAi0H,EAAA7H,GAAApsH,GAEAm0H,EAAA1G,IAAArsH,EACAgzH,EAAA,OAAA3G,EACA4G,EAAA5G,KACA6G,EAAAlI,GAAAqB,GAEA,IAAA2G,IAAAE,IAAAL,GAAAj0H,EAAAytH,GACAwG,GAAAE,GAAAE,IAAAD,IAAAE,GACAN,GAAAG,GAAAE,IACA2B,GAAA3B,IACA4B,EACA,SAEA,IAAAjC,IAAAC,IAAAK,GAAAt0H,EAAAytH,GACA6G,GAAA0B,GAAAC,IAAAjC,IAAAC,GACAG,GAAA4B,GAAAC,IACA9B,GAAA8B,IACA5B,EACA,SAGA,SAuDA,SAAA6B,GAAArgH,EAAAsgH,EAAAC,EAAAC,GAUA,IATA,IAAAC,GAAA,EACAC,EAAA1gH,EAAA5R,OACAuyH,EAAAJ,EAAAnyH,OACAwyH,GAAA,EACAC,EAAAP,EAAAlyH,OACA0yH,EAAAnS,GAAA+R,EAAAC,EAAA,GACAz3G,EAAAc,EAAA62G,EAAAC,GACAC,GAAAP,IAEAI,EAAAC,GACA33G,EAAA03G,GAAAN,EAAAM,GAEA,OAAAH,EAAAE,IACAI,GAAAN,EAAAC,KACAx3G,EAAAq3G,EAAAE,IAAAzgH,EAAAygH,IAGA,KAAAK,KACA53G,EAAA03G,KAAA5gH,EAAAygH,KAEA,OAAAv3G,EAcA,SAAA83G,GAAAhhH,EAAAsgH,EAAAC,EAAAC,GAWA,IAVA,IAAAC,GAAA,EACAC,EAAA1gH,EAAA5R,OACA6yH,GAAA,EACAN,EAAAJ,EAAAnyH,OACA8yH,GAAA,EACAC,EAAAb,EAAAlyH,OACA0yH,EAAAnS,GAAA+R,EAAAC,EAAA,GACAz3G,EAAAc,EAAA82G,EAAAK,GACAJ,GAAAP,IAEAC,EAAAK,GACA53G,EAAAu3G,GAAAzgH,EAAAygH,GAGA,IADA,IAAAphG,EAAAohG,IACAS,EAAAC,GACAj4G,EAAAmW,EAAA6hG,GAAAZ,EAAAY,GAEA,OAAAD,EAAAN,IACAI,GAAAN,EAAAC,KACAx3G,EAAAmW,EAAAkhG,EAAAU,IAAAjhH,EAAAygH,MAGA,OAAAv3G,EAWA,SAAAspG,GAAArpG,EAAAkf,GACA,IAAA/1B,GAAA,EACAlE,EAAA+a,EAAA/a,OAGA,IADAi6B,MAAAre,EAAA5b,MACAkE,EAAAlE,GACAi6B,EAAA/1B,GAAA6W,EAAA7W,GAEA,OAAA+1B,EAaA,SAAA8qF,GAAAhqG,EAAA0N,EAAAjsB,EAAA8oH,GACA,IAAA0N,GAAAx2H,EACAA,MAAA,IAKA,IAHA,IAAA0H,GAAA,EACAlE,EAAAyoB,EAAAzoB,SAEAkE,EAAAlE,GAAA,CACA,IAAA3D,EAAAosB,EAAAvkB,GAEAmpH,EAAA/H,EACAA,EAAA9oH,EAAAH,GAAA0e,EAAA1e,KAAAG,EAAAue,GACA5d,EAEAkwH,IAAAlwH,IACAkwH,EAAAtyG,EAAA1e,IAEA22H,EACAxO,GAAAhoH,EAAAH,EAAAgxH,GAEA5I,GAAAjoH,EAAAH,EAAAgxH,GAGA,OAAA7wH,EAmCA,SAAAy2H,GAAA7tE,EAAA8tE,GACA,gBAAA5jE,EAAAg/C,GACA,IAAA1tD,EAAAhjC,GAAA0xC,GAAA++C,GAAAuW,GACArW,EAAA2kB,MAAA,GAEA,OAAAtyE,EAAA0O,EAAAlK,EAAA0oE,GAAAxf,EAAA,GAAAC,IAWA,SAAA4kB,GAAAC,GACA,OAAAtE,GAAA,SAAAtyH,EAAA62H,GACA,IAAAnvH,GAAA,EACAlE,EAAAqzH,EAAArzH,OACAslH,EAAAtlH,EAAA,EAAAqzH,EAAArzH,EAAA,GAAA7C,EACAm2H,EAAAtzH,EAAA,EAAAqzH,EAAA,GAAAl2H,EAWA,IATAmoH,EAAA8N,EAAApzH,OAAA,sBAAAslH,GACAtlH,IAAAslH,GACAnoH,EAEAm2H,GAAAC,GAAAF,EAAA,GAAAA,EAAA,GAAAC,KACAhO,EAAAtlH,EAAA,EAAA7C,EAAAmoH,EACAtlH,EAAA,GAEAxD,EAAAhB,GAAAgB,KACA0H,EAAAlE,GAAA,CACA,IAAA+a,EAAAs4G,EAAAnvH,GACA6W,GACAq4G,EAAA52H,EAAAue,EAAA7W,EAAAohH,GAGA,OAAA9oH,IAYA,SAAAqrH,GAAAlY,EAAAG,GACA,gBAAAxgD,EAAAg/C,GACA,SAAAh/C,EACA,OAAAA,EAEA,IAAA/iB,GAAA+iB,GACA,OAAAqgD,EAAArgD,EAAAg/C,GAMA,IAJA,IAAAtuG,EAAAsvD,EAAAtvD,OACAkE,EAAA4rG,EAAA9vG,GAAA,EACAwzH,EAAAh4H,GAAA8zD,IAEAwgD,EAAA5rG,QAAAlE,KACA,IAAAsuG,EAAAklB,EAAAtvH,KAAAsvH,KAIA,OAAAlkE,GAWA,SAAAm5D,GAAA3Y,GACA,gBAAAtzG,EAAA8xG,EAAA0a,GAMA,IALA,IAAA9kH,GAAA,EACAsvH,EAAAh4H,GAAAgB,GACAisB,EAAAugG,EAAAxsH,GACAwD,EAAAyoB,EAAAzoB,OAEAA,KAAA,CACA,IAAA3D,EAAAosB,EAAAqnF,EAAA9vG,IAAAkE,GACA,QAAAoqG,EAAAklB,EAAAn3H,KAAAm3H,GACA,MAGA,OAAAh3H,GAgCA,SAAAi3H,GAAAC,GACA,gBAAA99G,GAGA,IAAA+6F,EAAAwM,GAFAvnG,EAAAsF,GAAAtF,IAGA+nG,GAAA/nG,GACAzY,EAEA+/G,EAAAvM,EACAA,EAAA,GACA/6F,EAAApX,OAAA,GAEAm1H,EAAAhjB,EACAihB,GAAAjhB,EAAA,GAAAnpG,KAAA,IACAoO,EAAAuF,MAAA,GAEA,OAAA+hG,EAAAwW,KAAAC,GAWA,SAAAC,GAAA7hH,GACA,gBAAA6D,GACA,OAAAw5F,GAAAykB,GAAAC,GAAAl+G,GAAAzJ,QAAA6/F,GAAA,KAAAj6F,EAAA,KAYA,SAAAgiH,GAAAlmF,GACA,kBAIA,IAAAj8B,EAAAb,UACA,OAAAa,EAAA5R,QACA,kBAAA6tC,EACA,kBAAAA,EAAAj8B,EAAA,IACA,kBAAAi8B,EAAAj8B,EAAA,GAAAA,EAAA,IACA,kBAAAi8B,EAAAj8B,EAAA,GAAAA,EAAA,GAAAA,EAAA,IACA,kBAAAi8B,EAAAj8B,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,IACA,kBAAAi8B,EAAAj8B,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,IACA,kBAAAi8B,EAAAj8B,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,IACA,kBAAAi8B,EAAAj8B,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,IAEA,IAAAoiH,EAAA9R,GAAAr0E,EAAAnxC,WACAoe,EAAA+yB,EAAAttC,MAAAyzH,EAAApiH,GAIA,OAAAy0B,GAAAvrB,KAAAk5G,GAgDA,SAAAC,GAAAC,GACA,gBAAA5kE,EAAAq/C,EAAAkB,GACA,IAAA2jB,EAAAh4H,GAAA8zD,GACA,IAAA/iB,GAAA+iB,GAAA,CACA,IAAAg/C,EAAAwf,GAAAnf,EAAA,GACAr/C,EAAA7/C,GAAA6/C,GACAq/C,EAAA,SAAAtyG,GAAqC,OAAAiyG,EAAAklB,EAAAn3H,KAAAm3H,IAErC,IAAAtvH,EAAAgwH,EAAA5kE,EAAAq/C,EAAAkB,GACA,OAAA3rG,GAAA,EAAAsvH,EAAAllB,EAAAh/C,EAAAprD,MAAA/G,GAWA,SAAAg3H,GAAArkB,GACA,OAAAskB,GAAA,SAAAC,GACA,IAAAr0H,EAAAq0H,EAAAr0H,OACAkE,EAAAlE,EACAs0H,EAAAtS,GAAAtlH,UAAA63H,KAKA,IAHAzkB,GACAukB,EAAA1yG,UAEAzd,KAAA,CACA,IAAA08C,EAAAyzE,EAAAnwH,GACA,sBAAA08C,EACA,UAAAt4B,GAAAk8E,GAEA,GAAA8vB,IAAAE,GAAA,WAAAC,GAAA7zE,GACA,IAAA4zE,EAAA,IAAAxS,GAAA,OAIA,IADA99G,EAAAswH,EAAAtwH,EAAAlE,IACAkE,EAAAlE,GAAA,CAGA,IAAAomE,EAAAquD,GAFA7zE,EAAAyzE,EAAAnwH,IAGAmD,EAAA,WAAA++D,EAAAvhB,GAAAjE,GAAAzjD,EAMAq3H,EAJAntH,GAAAqtH,GAAArtH,EAAA,KACAA,EAAA,KAAAm+F,EAAAJ,EAAAE,EAAAG,KACAp+F,EAAA,GAAArH,QAAA,GAAAqH,EAAA,GAEAmtH,EAAAC,GAAAptH,EAAA,KAAA9G,MAAAi0H,EAAAntH,EAAA,IAEA,GAAAu5C,EAAA5gD,QAAA00H,GAAA9zE,GACA4zE,EAAApuD,KACAouD,EAAAD,KAAA3zE,GAGA,kBACA,IAAAhvC,EAAAb,UACAhV,EAAA6V,EAAA,GAEA,GAAA4iH,GAAA,GAAA5iH,EAAA5R,QAAA4d,GAAA7hB,GACA,OAAAy4H,EAAAG,MAAA54H,WAKA,IAHA,IAAAmI,EAAA,EACA4W,EAAA9a,EAAAq0H,EAAAnwH,GAAA3D,MAAA0C,KAAA2O,GAAA7V,IAEAmI,EAAAlE,GACA8a,EAAAu5G,EAAAnwH,GAAAjJ,KAAAgI,KAAA6X,GAEA,OAAAA,KAwBA,SAAA85G,GAAAh0E,EAAAykE,EAAAl6C,EAAA+mD,EAAAC,EAAA0C,EAAAC,EAAAC,EAAAC,EAAAC,GACA,IAAAC,EAAA7P,EAAA7f,EACA2vB,EAAA9P,EAAApgB,EACAmwB,EAAA/P,EAAAngB,EACAktB,EAAA/M,GAAAjgB,EAAAC,GACAgwB,EAAAhQ,EAAA3f,EACA73D,EAAAunF,EAAAj4H,EAAA42H,GAAAnzE,GA6CA,OA3CA,SAAA4zE,IAKA,IAJA,IAAAx0H,EAAA+Q,UAAA/Q,OACA4R,EAAAgK,EAAA5b,GACAkE,EAAAlE,EAEAkE,KACA0N,EAAA1N,GAAA6M,UAAA7M,GAEA,GAAAkuH,EACA,IAAAnpF,EAAAqsF,GAAAd,GACAe,EA1/HA,SAAAt7F,EAAAgP,GAIA,IAHA,IAAAjpC,EAAAi6B,EAAAj6B,OACA8a,EAAA,EAEA9a,KACAi6B,EAAAj6B,KAAAipC,KACAnuB,EAGA,OAAAA,EAi/HA06G,CAAA5jH,EAAAq3B,GASA,GAPAipF,IACAtgH,EAAAqgH,GAAArgH,EAAAsgH,EAAAC,EAAAC,IAEAyC,IACAjjH,EAAAghH,GAAAhhH,EAAAijH,EAAAC,EAAA1C,IAEApyH,GAAAu1H,EACAnD,GAAApyH,EAAAi1H,EAAA,CACA,IAAAQ,EAAAnY,GAAA1rG,EAAAq3B,GACA,OAAAysF,GACA90E,EAAAykE,EAAAuP,GAAAJ,EAAAvrF,YAAAkiC,EACAv5D,EAAA6jH,EAAAV,EAAAC,EAAAC,EAAAj1H,GAGA,IAAAg0H,EAAAmB,EAAAhqD,EAAAloE,KACAmhB,EAAAgxG,EAAApB,EAAApzE,KAcA,OAZA5gD,EAAA4R,EAAA5R,OACA+0H,EACAnjH,EA83CA,SAAAqoB,EAAA00F,GAKA,IAJA,IAAAgH,EAAA17F,EAAAj6B,OACAA,EAAAwgH,GAAAmO,EAAA3uH,OAAA21H,GACAC,EAAAxR,GAAAnqF,GAEAj6B,KAAA,CACA,IAAAkE,EAAAyqH,EAAA3uH,GACAi6B,EAAAj6B,GAAA+jH,GAAA7/G,EAAAyxH,GAAAC,EAAA1xH,GAAA/G,EAEA,OAAA88B,EAv4CA47F,CAAAjkH,EAAAmjH,GACSM,GAAAr1H,EAAA,GACT4R,EAAA+P,UAEAuzG,GAAAF,EAAAh1H,IACA4R,EAAA5R,OAAAg1H,GAEA/xH,aAAAhG,IAAAgG,gBAAAuxH,IACApwG,EAAAypB,GAAAkmF,GAAA3vG,IAEAA,EAAA7jB,MAAAyzH,EAAApiH,IAaA,SAAAkkH,GAAA1wE,EAAA2wE,GACA,gBAAAv5H,EAAA8xG,GACA,OA59DA,SAAA9xG,EAAA4oD,EAAAkpD,EAAAC,GAIA,OAHAuZ,GAAAtrH,EAAA,SAAAT,EAAAM,EAAAG,GACA4oD,EAAAmpD,EAAAD,EAAAvyG,GAAAM,EAAAG,KAEA+xG,EAw9DAynB,CAAAx5H,EAAA4oD,EAAA2wE,EAAAznB,GAAA,KAYA,SAAA2nB,GAAAp+E,EAAAyF,GACA,gBAAAvhD,EAAAytH,GACA,IAAA1uG,EACA,GAAA/e,IAAAoB,GAAAqsH,IAAArsH,EACA,OAAAmgD,EAKA,GAHAvhD,IAAAoB,IACA2d,EAAA/e,GAEAytH,IAAArsH,EAAA,CACA,GAAA2d,IAAA3d,EACA,OAAAqsH,EAEA,iBAAAztH,GAAA,iBAAAytH,GACAztH,EAAA00H,GAAA10H,GACAytH,EAAAiH,GAAAjH,KAEAztH,EAAAy0H,GAAAz0H,GACAytH,EAAAgH,GAAAhH,IAEA1uG,EAAA+8B,EAAA97C,EAAAytH,GAEA,OAAA1uG,GAWA,SAAAo7G,GAAAC,GACA,OAAA/B,GAAA,SAAAxG,GAEA,OADAA,EAAA1e,GAAA0e,EAAArd,GAAAud,OACAgB,GAAA,SAAAl9G,GACA,IAAAu5D,EAAAloE,KACA,OAAAkzH,EAAAvI,EAAA,SAAAtf,GACA,OAAA/tG,GAAA+tG,EAAAnjC,EAAAv5D,SAeA,SAAAwkH,GAAAp2H,EAAAq2H,GAGA,IAAAC,GAFAD,MAAAl5H,EAAA,IAAAszH,GAAA4F,IAEAr2H,OACA,GAAAs2H,EAAA,EACA,OAAAA,EAAAzH,GAAAwH,EAAAr2H,GAAAq2H,EAEA,IAAAv7G,EAAA+zG,GAAAwH,EAAAtW,GAAA//G,EAAAy9G,GAAA4Y,KACA,OAAAlZ,GAAAkZ,GACAzE,GAAAjU,GAAA7iG,GAAA,EAAA9a,GAAAwH,KAAA,IACAsT,EAAAK,MAAA,EAAAnb,GA6CA,SAAAgnB,GAAA8oF,GACA,gBAAAvmG,EAAAkU,EAAA6W,GAaA,OAZAA,GAAA,iBAAAA,GAAAi/F,GAAAhqH,EAAAkU,EAAA6W,KACA7W,EAAA6W,EAAAn3B,GAGAoM,EAAAgtH,GAAAhtH,GACAkU,IAAAtgB,GACAsgB,EAAAlU,EACAA,EAAA,GAEAkU,EAAA84G,GAAA94G,GAr7CA,SAAAlU,EAAAkU,EAAA6W,EAAAw7E,GAKA,IAJA,IAAA5rG,GAAA,EACAlE,EAAAugH,GAAAR,IAAAtiG,EAAAlU,IAAA+qB,GAAA,OACAxZ,EAAAc,EAAA5b,GAEAA,KACA8a,EAAAg1F,EAAA9vG,IAAAkE,GAAAqF,EACAA,GAAA+qB,EAEA,OAAAxZ,EA+6CA07G,CAAAjtH,EAAAkU,EADA6W,MAAAn3B,EAAAoM,EAAAkU,EAAA,KAAA84G,GAAAjiG,GACAw7E,IAWA,SAAA2mB,GAAA5+E,GACA,gBAAA97C,EAAAytH,GAKA,MAJA,iBAAAztH,GAAA,iBAAAytH,IACAztH,EAAA20E,GAAA30E,GACAytH,EAAA94C,GAAA84C,IAEA3xE,EAAA97C,EAAAytH,IAqBA,SAAAkM,GAAA90E,EAAAykE,EAAAqR,EAAAztF,EAAAkiC,EAAA+mD,EAAAC,EAAA4C,EAAAC,EAAAC,GACA,IAAA0B,EAAAtR,EAAAjgB,EAMAigB,GAAAsR,EAAArxB,EAAAC,GACA8f,KAAAsR,EAAApxB,EAAAD,IAEAH,IACAkgB,KAAApgB,EAAAC,IAEA,IAAA0xB,EAAA,CACAh2E,EAAAykE,EAAAl6C,EAVAwrD,EAAAzE,EAAA/0H,EAFAw5H,EAAAxE,EAAAh1H,EAGAw5H,EAAAx5H,EAAA+0H,EAFAyE,EAAAx5H,EAAAg1H,EAYA4C,EAAAC,EAAAC,GAGAn6G,EAAA47G,EAAAn2H,MAAApD,EAAAy5H,GAKA,OAJAlC,GAAA9zE,IACAi2E,GAAA/7G,EAAA87G,GAEA97G,EAAAmuB,cACA6tF,GAAAh8G,EAAA8lC,EAAAykE,GAUA,SAAA0R,GAAArD,GACA,IAAA9yE,EAAAp/C,GAAAkyH,GACA,gBAAAp+B,EAAA0hC,GAGA,GAFA1hC,EAAA5kB,GAAA4kB,GACA0hC,EAAA,MAAAA,EAAA,EAAAxW,GAAAyW,GAAAD,GAAA,KACA,CAGA,IAAAE,GAAAh8G,GAAAo6E,GAAA,KAAA1oE,MAAA,KAIA,SADAsqG,GAAAh8G,GAFA0lC,EAAAs2E,EAAA,SAAAA,EAAA,GAAAF,KAEA,KAAApqG,MAAA,MACA,SAAAsqG,EAAA,GAAAF,IAEA,OAAAp2E,EAAA00C,IAWA,IAAAq7B,GAAA/7C,IAAA,EAAA2oC,GAAA,IAAA3oC,GAAA,YAAAqxB,EAAA,SAAAlwF,GACA,WAAA6+D,GAAA7+D,IADA/M,GAWA,SAAAmuH,GAAAnO,GACA,gBAAAxsH,GACA,IAAAgjC,EAAAmmF,GAAAnpH,GACA,OAAAgjC,GAAA0nE,EACAkW,GAAA5gH,GAEAgjC,GAAAgoE,GACAgW,GAAAhhH,GAz3IA,SAAAA,EAAAisB,GACA,OAAAymF,GAAAzmF,EAAA,SAAApsB,GACA,OAAAA,EAAAG,EAAAH,MAy3IA+6H,CAAA56H,EAAAwsH,EAAAxsH,KA6BA,SAAA66H,GAAAz2E,EAAAykE,EAAAl6C,EAAA+mD,EAAAC,EAAA4C,EAAAC,EAAAC,GACA,IAAAG,EAAA/P,EAAAngB,EACA,IAAAkwB,GAAA,mBAAAx0E,EACA,UAAAt4B,GAAAk8E,GAEA,IAAAxkG,EAAAkyH,IAAAlyH,OAAA,EASA,GARAA,IACAqlH,KAAA/f,EAAAC,GACA2sB,EAAAC,EAAAh1H,GAEA63H,MAAA73H,EAAA63H,EAAAzU,GAAA0W,GAAAjC,GAAA,GACAC,MAAA93H,EAAA83H,EAAAgC,GAAAhC,GACAj1H,GAAAmyH,IAAAnyH,OAAA,EAEAqlH,EAAA9f,EAAA,CACA,IAAAsvB,EAAA3C,EACA4C,EAAA3C,EAEAD,EAAAC,EAAAh1H,EAEA,IAAAkK,EAAA+tH,EAAAj4H,EAAA0nD,GAAAjE,GAEAg2E,EAAA,CACAh2E,EAAAykE,EAAAl6C,EAAA+mD,EAAAC,EAAA0C,EAAAC,EACAC,EAAAC,EAAAC,GAkBA,GAfA5tH,GAy6BA,SAAAA,EAAA0T,GACA,IAAAsqG,EAAAh+G,EAAA,GACAiwH,EAAAv8G,EAAA,GACAw8G,EAAAlS,EAAAiS,EACAlQ,EAAAmQ,GAAAtyB,EAAAC,EAAAM,GAEAgyB,EACAF,GAAA9xB,GAAA6f,GAAAjgB,GACAkyB,GAAA9xB,GAAA6f,GAAA5f,GAAAp+F,EAAA,GAAArH,QAAA+a,EAAA,IACAu8G,IAAA9xB,EAAAC,IAAA1qF,EAAA,GAAA/a,QAAA+a,EAAA,IAAAsqG,GAAAjgB,EAGA,IAAAgiB,IAAAoQ,EACA,OAAAnwH,EAGAiwH,EAAAryB,IACA59F,EAAA,GAAA0T,EAAA,GAEAw8G,GAAAlS,EAAApgB,EAAA,EAAAE,GAGA,IAAAppG,EAAAgf,EAAA,GACA,GAAAhf,EAAA,CACA,IAAAm2H,EAAA7qH,EAAA,GACAA,EAAA,GAAA6qH,EAAAD,GAAAC,EAAAn2H,EAAAgf,EAAA,IAAAhf,EACAsL,EAAA,GAAA6qH,EAAA5U,GAAAj2G,EAAA,GAAAs9F,GAAA5pF,EAAA,IAGAhf,EAAAgf,EAAA,MAEAm3G,EAAA7qH,EAAA,GACAA,EAAA,GAAA6qH,EAAAU,GAAAV,EAAAn2H,EAAAgf,EAAA,IAAAhf,EACAsL,EAAA,GAAA6qH,EAAA5U,GAAAj2G,EAAA,GAAAs9F,GAAA5pF,EAAA,KAGAhf,EAAAgf,EAAA,MAEA1T,EAAA,GAAAtL,GAGAu7H,EAAA9xB,IACAn+F,EAAA,SAAAA,EAAA,GAAA0T,EAAA,GAAAylG,GAAAn5G,EAAA,GAAA0T,EAAA,KAGA,MAAA1T,EAAA,KACAA,EAAA,GAAA0T,EAAA,IAGA1T,EAAA,GAAA0T,EAAA,GACA1T,EAAA,GAAAkwH,EA19BA9+C,CAAAm+C,EAAAvvH,GAEAu5C,EAAAg2E,EAAA,GACAvR,EAAAuR,EAAA,GACAzrD,EAAAyrD,EAAA,GACA1E,EAAA0E,EAAA,GACAzE,EAAAyE,EAAA,KACA3B,EAAA2B,EAAA,GAAAA,EAAA,KAAAz5H,EACAi4H,EAAA,EAAAx0E,EAAA5gD,OACAugH,GAAAqW,EAAA,GAAA52H,EAAA,KAEAqlH,GAAAjgB,EAAAC,KACAggB,KAAAjgB,EAAAC,IAEAggB,MAAApgB,EAGAnqF,EADOuqG,GAAAjgB,GAAAigB,GAAAhgB,EApgBP,SAAAzkD,EAAAykE,EAAA4P,GACA,IAAApnF,EAAAkmF,GAAAnzE,GAwBA,OAtBA,SAAA4zE,IAMA,IALA,IAAAx0H,EAAA+Q,UAAA/Q,OACA4R,EAAAgK,EAAA5b,GACAkE,EAAAlE,EACAipC,EAAAqsF,GAAAd,GAEAtwH,KACA0N,EAAA1N,GAAA6M,UAAA7M,GAEA,IAAAiuH,EAAAnyH,EAAA,GAAA4R,EAAA,KAAAq3B,GAAAr3B,EAAA5R,EAAA,KAAAipC,EACA,GACAq0E,GAAA1rG,EAAAq3B,GAGA,OADAjpC,GAAAmyH,EAAAnyH,QACAi1H,EACAS,GACA90E,EAAAykE,EAAAuP,GAAAJ,EAAAvrF,YAAA9rC,EACAyU,EAAAugH,EAAAh1H,IAAA83H,EAAAj1H,GAGAO,GADA0C,aAAAhG,IAAAgG,gBAAAuxH,EAAA3mF,EAAA+S,EACA39C,KAAA2O,IA8eA6lH,CAAA72E,EAAAykE,EAAA4P,GACO5P,GAAA/f,GAAA+f,IAAApgB,EAAAK,IAAA6sB,EAAAnyH,OAGP40H,GAAAr0H,MAAApD,EAAAy5H,GA9OA,SAAAh2E,EAAAykE,EAAAl6C,EAAA+mD,GACA,IAAAiD,EAAA9P,EAAApgB,EACAp3D,EAAAkmF,GAAAnzE,GAkBA,OAhBA,SAAA4zE,IAQA,IAPA,IAAAnC,GAAA,EACAC,EAAAvhH,UAAA/Q,OACAwyH,GAAA,EACAC,EAAAP,EAAAlyH,OACA4R,EAAAgK,EAAA62G,EAAAH,GACAluG,EAAAnhB,aAAAhG,IAAAgG,gBAAAuxH,EAAA3mF,EAAA+S,IAEA4xE,EAAAC,GACA7gH,EAAA4gH,GAAAN,EAAAM,GAEA,KAAAF,KACA1gH,EAAA4gH,KAAAzhH,YAAAshH,GAEA,OAAA9xH,GAAA6jB,EAAA+wG,EAAAhqD,EAAAloE,KAAA2O,IA0NA8lH,CAAA92E,EAAAykE,EAAAl6C,EAAA+mD,QAJA,IAAAp3G,EAhmBA,SAAA8lC,EAAAykE,EAAAl6C,GACA,IAAAgqD,EAAA9P,EAAApgB,EACAp3D,EAAAkmF,GAAAnzE,GAMA,OAJA,SAAA4zE,IAEA,OADAvxH,aAAAhG,IAAAgG,gBAAAuxH,EAAA3mF,EAAA+S,GACArgD,MAAA40H,EAAAhqD,EAAAloE,KAAA8N,YA0lBA4mH,CAAA/2E,EAAAykE,EAAAl6C,GASA,OAAA2rD,IADAzvH,EAAA8nH,GAAA0H,IACA/7G,EAAA87G,GAAAh2E,EAAAykE,GAeA,SAAAuS,GAAAlT,EAAAsH,EAAA3vH,EAAAG,GACA,OAAAkoH,IAAAvnH,GACA6vC,GAAA03E,EAAAnG,GAAAliH,MAAAM,GAAA1B,KAAAuB,EAAAH,GACA2vH,EAEAtH,EAiBA,SAAAmT,GAAAnT,EAAAsH,EAAA3vH,EAAAG,EAAAue,EAAA8nC,GAOA,OANAxc,GAAAq+E,IAAAr+E,GAAA2lF,KAEAnpE,EAAAp1C,IAAAu+G,EAAAtH,GACAuI,GAAAvI,EAAAsH,EAAA7uH,EAAA06H,GAAAh1E,GACAA,EAAA,OAAAmpE,IAEAtH,EAYA,SAAAoT,GAAA/7H,GACA,OAAAuxC,GAAAvxC,GAAAoB,EAAApB,EAgBA,SAAA8uH,GAAA5wF,EAAAuvF,EAAAnE,EAAAC,EAAA+E,EAAAxnE,GACA,IAAAioE,EAAAzF,EAAAtgB,EACA4wB,EAAA17F,EAAAj6B,OACA6pH,EAAAL,EAAAxpH,OAEA,GAAA21H,GAAA9L,KAAAiB,GAAAjB,EAAA8L,GACA,SAGA,IAAArsD,EAAAzmB,EAAAlnD,IAAAs+B,GACA,GAAAqvC,GAAAzmB,EAAAlnD,IAAA6tH,GACA,OAAAlgD,GAAAkgD,EAEA,IAAAtlH,GAAA,EACA4W,GAAA,EACAiiE,EAAAsoC,EAAArgB,EAAA,IAAAoe,GAAAjmH,EAMA,IAJA0lD,EAAAp1C,IAAAwsB,EAAAuvF,GACA3mE,EAAAp1C,IAAA+7G,EAAAvvF,KAGA/1B,EAAAyxH,GAAA,CACA,IAAAoC,EAAA99F,EAAA/1B,GACAqnH,EAAA/B,EAAAtlH,GAEA,GAAAohH,EACA,IAAAkG,EAAAV,EACAxF,EAAAiG,EAAAwM,EAAA7zH,EAAAslH,EAAAvvF,EAAA4oB,GACAyiE,EAAAyS,EAAAxM,EAAArnH,EAAA+1B,EAAAuvF,EAAA3mE,GAEA,GAAA2oE,IAAAruH,EAAA,CACA,GAAAquH,EACA,SAEA1wG,GAAA,EACA,MAGA,GAAAiiE,GACA,IAAAwyB,GAAAia,EAAA,SAAA+B,EAAAzB,GACA,IAAArZ,GAAA1zB,EAAA+sC,KACAiO,IAAAxM,GAAAlB,EAAA0N,EAAAxM,EAAAlG,EAAAC,EAAAziE,IACA,OAAAk6B,EAAAh9E,KAAA+pH,KAEe,CACfhvG,GAAA,EACA,YAES,GACTi9G,IAAAxM,IACAlB,EAAA0N,EAAAxM,EAAAlG,EAAAC,EAAAziE,GACA,CACA/nC,GAAA,EACA,OAKA,OAFA+nC,EAAA,OAAA5oB,GACA4oB,EAAA,OAAA2mE,GACA1uG,EAyKA,SAAAs5G,GAAAxzE,GACA,OAAAmuE,GAAAC,GAAApuE,EAAAzjD,EAAA66H,IAAAp3E,EAAA,IAUA,SAAAomE,GAAAxqH,GACA,OAAAusH,GAAAvsH,EAAAiT,GAAA02G,IAWA,SAAAY,GAAAvqH,GACA,OAAAusH,GAAAvsH,EAAAypH,GAAAF,IAUA,IAAAlhE,GAAAo8D,GAAA,SAAArgE,GACA,OAAAqgE,GAAAtlH,IAAAilD,IADA53C,GAWA,SAAAyrH,GAAA7zE,GAKA,IAJA,IAAA9lC,EAAA8lC,EAAAvlD,KAAA,GACA4+B,EAAAinF,GAAApmG,GACA9a,EAAArD,GAAA1B,KAAAimH,GAAApmG,GAAAmf,EAAAj6B,OAAA,EAEAA,KAAA,CACA,IAAAqH,EAAA4yB,EAAAj6B,GACAi4H,EAAA5wH,EAAAu5C,KACA,SAAAq3E,MAAAr3E,EACA,OAAAv5C,EAAAhM,KAGA,OAAAyf,EAUA,SAAAw6G,GAAA10E,GAEA,OADAjkD,GAAA1B,KAAA4mH,GAAA,eAAAA,GAAAjhE,GACA3X,YAcA,SAAA6kF,KACA,IAAAhzG,EAAA+mG,GAAAvT,aAEA,OADAxzF,MAAAwzF,GAAA4d,GAAApxG,EACA/J,UAAA/Q,OAAA8a,EAAA/J,UAAA,GAAAA,UAAA,IAAA+J,EAWA,SAAA6sG,GAAAhgH,EAAAtL,GACA,IAgYAN,EACAwC,EAjYA8I,EAAAM,EAAA07G,SACA,OAiYA,WADA9kH,SADAxC,EA/XAM,KAiYA,UAAAkC,GAAA,UAAAA,GAAA,WAAAA,EACA,cAAAxC,EACA,OAAAA,GAlYAsL,EAAA,iBAAAhL,EAAA,iBACAgL,EAAAM,IAUA,SAAAilH,GAAApwH,GAIA,IAHA,IAAAse,EAAArL,GAAAjT,GACAwD,EAAA8a,EAAA9a,OAEAA,KAAA,CACA,IAAA3D,EAAAye,EAAA9a,GACAjE,EAAAS,EAAAH,GAEAye,EAAA9a,GAAA,CAAA3D,EAAAN,EAAAgxH,GAAAhxH,IAEA,OAAA+e,EAWA,SAAA6kG,GAAAnjH,EAAAH,GACA,IAAAN,EAnvJA,SAAAS,EAAAH,GACA,aAAAG,EAAAW,EAAAX,EAAAH,GAkvJA+jG,CAAA5jG,EAAAH,GACA,OAAA4vH,GAAAlwH,KAAAoB,EAqCA,IAAAgpH,GAAAlG,GAAA,SAAAzjH,GACA,aAAAA,EACA,IAEAA,EAAAhB,GAAAgB,GACAoyG,GAAAqR,GAAAzjH,GAAA,SAAA6pH,GACA,OAAA/G,GAAArkH,KAAAuB,EAAA6pH,OANA6R,GAiBAnS,GAAA9F,GAAA,SAAAzjH,GAEA,IADA,IAAAse,EAAA,GACAte,GACA2yG,GAAAr0F,EAAAqrG,GAAA3pH,IACAA,EAAA4iH,GAAA5iH,GAEA,OAAAse,GANAo9G,GAgBAvS,GAAAuD,GA2EA,SAAAiP,GAAA37H,EAAAolF,EAAAw2C,GAOA,IAJA,IAAAl0H,GAAA,EACAlE,GAHA4hF,EAAAinC,GAAAjnC,EAAAplF,IAGAwD,OACA8a,GAAA,IAEA5W,EAAAlE,GAAA,CACA,IAAA3D,EAAAysH,GAAAlnC,EAAA19E,IACA,KAAA4W,EAAA,MAAAte,GAAA47H,EAAA57H,EAAAH,IACA,MAEAG,IAAAH,GAEA,OAAAye,KAAA5W,GAAAlE,EACA8a,KAEA9a,EAAA,MAAAxD,EAAA,EAAAA,EAAAwD,SACAq4H,GAAAr4H,IAAA+jH,GAAA1nH,EAAA2D,KACA4d,GAAAphB,IAAAmnH,GAAAnnH,IA6BA,SAAAspH,GAAAtpH,GACA,yBAAAA,EAAAgqC,aAAA8lF,GAAA9vH,GAEA,GADA0lH,GAAA9C,GAAA5iH,IA8EA,SAAA+rH,GAAAxsH,GACA,OAAA6hB,GAAA7hB,IAAA4nH,GAAA5nH,OACAwjH,IAAAxjH,KAAAwjH,KAWA,SAAAwE,GAAAhoH,EAAAiE,GACA,IAAAzB,SAAAxC,EAGA,SAFAiE,EAAA,MAAAA,EAAAkmG,EAAAlmG,KAGA,UAAAzB,GACA,UAAAA,GAAA+rG,GAAA7pG,KAAA1E,KACAA,GAAA,GAAAA,EAAA,MAAAA,EAAAiE,EAaA,SAAAuzH,GAAAx3H,EAAAmI,EAAA1H,GACA,IAAA6pC,GAAA7pC,GACA,SAEA,IAAA+B,SAAA2F,EACA,mBAAA3F,EACAguC,GAAA/vC,IAAAunH,GAAA7/G,EAAA1H,EAAAwD,QACA,UAAAzB,GAAA2F,KAAA1H,IAEAwwC,GAAAxwC,EAAA0H,GAAAnI,GAaA,SAAA+wH,GAAA/wH,EAAAS,GACA,GAAAohB,GAAA7hB,GACA,SAEA,IAAAwC,SAAAxC,EACA,kBAAAwC,GAAA,UAAAA,GAAA,WAAAA,GACA,MAAAxC,IAAAosH,GAAApsH,KAGAqtG,GAAA3oG,KAAA1E,KAAAotG,GAAA1oG,KAAA1E,IACA,MAAAS,GAAAT,KAAAP,GAAAgB,GAyBA,SAAAk4H,GAAA9zE,GACA,IAAAwlB,EAAAquD,GAAA7zE,GACA4oE,EAAA3H,GAAAz7C,GAEA,sBAAAojD,KAAApjD,KAAA27C,GAAArlH,WACA,SAEA,GAAAkkD,IAAA4oE,EACA,SAEA,IAAAniH,EAAAw9C,GAAA2kE,GACA,QAAAniH,GAAAu5C,IAAAv5C,EAAA,IA7SAw5G,IAAA8E,GAAA,IAAA9E,GAAA,IAAAyX,YAAA,MAAAvwB,IACA+Y,IAAA6E,GAAA,IAAA7E,KAAA5Z,GACA/iF,IA9zLA,oBA8zLAwhG,GAAAxhG,GAAAnY,YACA4oE,IAAA+wC,GAAA,IAAA/wC,KAAA4yB,IACAuZ,IAAA4E,GAAA,IAAA5E,KAAAnZ,MACA+d,GAAA,SAAA5pH,GACA,IAAA+e,EAAAouG,GAAAntH,GACA8xC,EAAA/yB,GAAAusF,EAAAtrG,EAAAyqC,YAAArpC,EACAo7H,EAAA1qF,EAAAuzE,GAAAvzE,GAAA,GAEA,GAAA0qF,EACA,OAAAA,GACA,KAAApX,GAAA,OAAApZ,GACA,KAAAsZ,GAAA,OAAAna,EACA,KAAAoa,GAAA,MA10LA,mBA20LA,KAAAC,GAAA,OAAA/Z,GACA,KAAAga,GAAA,OAAA5Z,GAGA,OAAA9sF,IA+SA,IAAA09G,GAAAha,GAAA/5F,GAAAg0G,GASA,SAAAnM,GAAAvwH,GACA,IAAA8xC,EAAA9xC,KAAAyqC,YAGA,OAAAzqC,KAFA,mBAAA8xC,KAAAnxC,WAAA6hH,IAaA,SAAAwO,GAAAhxH,GACA,OAAAA,OAAAsqC,GAAAtqC,GAYA,SAAA8wH,GAAAxwH,EAAA2vH,GACA,gBAAAxvH,GACA,aAAAA,GAGAA,EAAAH,KAAA2vH,IACAA,IAAA7uH,GAAAd,KAAAb,GAAAgB,KAsIA,SAAAwyH,GAAApuE,EAAAr3C,EAAAspB,GAEA,OADAtpB,EAAAg3G,GAAAh3G,IAAApM,EAAAyjD,EAAA5gD,OAAA,EAAAuJ,EAAA,GACA,WAMA,IALA,IAAAqI,EAAAb,UACA7M,GAAA,EACAlE,EAAAugH,GAAA3uG,EAAA5R,OAAAuJ,EAAA,GACA0wB,EAAAre,EAAA5b,KAEAkE,EAAAlE,GACAi6B,EAAA/1B,GAAA0N,EAAArI,EAAArF,GAEAA,GAAA,EAEA,IADA,IAAAw0H,EAAA98G,EAAArS,EAAA,KACArF,EAAAqF,GACAmvH,EAAAx0H,GAAA0N,EAAA1N,GAGA,OADAw0H,EAAAnvH,GAAAspB,EAAAoH,GACA15B,GAAAqgD,EAAA39C,KAAAy1H,IAYA,SAAA1uG,GAAAxtB,EAAAolF,GACA,OAAAA,EAAA5hF,OAAA,EAAAxD,EAAAosH,GAAApsH,EAAA+yH,GAAA3tC,EAAA,OAiCA,SAAAwrC,GAAA5wH,EAAAH,GACA,gBAAAA,EAIA,OAAAG,EAAAH,GAiBA,IAAAw6H,GAAA8B,GAAAxJ,IAUA3qG,GAAAs7F,IAAA,SAAAl/D,EAAAwC,GACA,OAAAnmD,GAAAunB,WAAAo8B,EAAAwC,IAWA2rE,GAAA4J,GAAAvJ,IAYA,SAAA0H,GAAAtC,EAAAtpG,EAAAm6F,GACA,IAAAtqG,EAAAmQ,EAAA,GACA,OAAA6jG,GAAAyF,EAtbA,SAAAz5G,EAAA69G,GACA,IAAA54H,EAAA44H,EAAA54H,OACA,IAAAA,EACA,OAAA+a,EAEA,IAAAwjE,EAAAv+E,EAAA,EAGA,OAFA44H,EAAAr6C,IAAAv+E,EAAA,WAAA44H,EAAAr6C,GACAq6C,IAAApxH,KAAAxH,EAAA,YACA+a,EAAA5O,QAAAw9F,GAAA,uBAA6CivB,EAAA,UA8a7CC,CAAA99G,EAqHA,SAAA69G,EAAAvT,GAOA,OANA7W,GAAAhI,EAAA,SAAA0wB,GACA,IAAAn7H,EAAA,KAAAm7H,EAAA,GACA7R,EAAA6R,EAAA,KAAApoB,GAAA8pB,EAAA78H,IACA68H,EAAA74H,KAAAhE,KAGA68H,EAAAtsG,OA5HAwsG,CAljBA,SAAA/9G,GACA,IAAAuT,EAAAvT,EAAAuT,MAAAs7E,IACA,OAAAt7E,IAAA,GAAA1B,MAAAi9E,IAAA,GAgjBAkvB,CAAAh+G,GAAAsqG,KAYA,SAAAsT,GAAA/3E,GACA,IAAA/2C,EAAA,EACAmvH,EAAA,EAEA,kBACA,IAAAC,EAAAxY,KACAl+D,EAAAujD,GAAAmzB,EAAAD,GAGA,GADAA,EAAAC,EACA12E,EAAA,GACA,KAAA14C,GAAAg8F,EACA,OAAA90F,UAAA,QAGAlH,EAAA,EAEA,OAAA+2C,EAAArgD,MAAApD,EAAA4T,YAYA,SAAAozG,GAAAlqF,EAAA7c,GACA,IAAAlZ,GAAA,EACAlE,EAAAi6B,EAAAj6B,OACAu+E,EAAAv+E,EAAA,EAGA,IADAod,MAAAjgB,EAAA6C,EAAAod,IACAlZ,EAAAkZ,GAAA,CACA,IAAA87G,EAAAjV,GAAA//G,EAAAq6E,GACAxiF,EAAAk+B,EAAAi/F,GAEAj/F,EAAAi/F,GAAAj/F,EAAA/1B,GACA+1B,EAAA/1B,GAAAnI,EAGA,OADAk+B,EAAAj6B,OAAAod,EACA6c,EAUA,IAAAy3F,GAnTA,SAAA9wE,GACA,IAAA9lC,EAAAq+G,GAAAv4E,EAAA,SAAAvkD,GAIA,OAHAs3C,EAAAv2B,OAAAsnF,GACA/wD,EAAAvlC,QAEA/R,IAGAs3C,EAAA74B,EAAA64B,MACA,OAAA74B,EA0SAs+G,CAAA,SAAAxjH,GACA,IAAAkF,EAAA,GAOA,OANA,KAAAlF,EAAAvX,WAAA,IACAyc,EAAA/a,KAAA,IAEA6V,EAAAzJ,QAAAk9F,GAAA,SAAA/6E,EAAAgnE,EAAA+jC,EAAAC,GACAx+G,EAAA/a,KAAAs5H,EAAAC,EAAAntH,QAAA49F,GAAA,MAAAzU,GAAAhnE,KAEAxT,IAUA,SAAAguG,GAAA/sH,GACA,oBAAAA,GAAAosH,GAAApsH,GACA,OAAAA,EAEA,IAAA+e,EAAA/e,EAAA,GACA,WAAA+e,GAAA,EAAA/e,IAAAkqG,EAAA,KAAAnrF,EAUA,SAAAsmG,GAAAxgE,GACA,SAAAA,EAAA,CACA,IACA,OAAA69D,GAAAxjH,KAAA2lD,GACS,MAAAr4C,IACT,IACA,OAAAq4C,EAAA,GACS,MAAAr4C,KAET,SA4BA,SAAA05G,GAAAuS,GACA,GAAAA,aAAAzS,GACA,OAAAyS,EAAA35G,QAEA,IAAAC,EAAA,IAAAknG,GAAAwS,EAAAnS,YAAAmS,EAAAjS,WAIA,OAHAznG,EAAAwnG,YAAA8B,GAAAoQ,EAAAlS,aACAxnG,EAAA0nG,UAAAgS,EAAAhS,UACA1nG,EAAA2nG,WAAA+R,EAAA/R,WACA3nG,EAsIA,IAAAy+G,GAAAzK,GAAA,SAAA70F,EAAAlkB,GACA,OAAAw3G,GAAAtzF,GACAktF,GAAAltF,EAAAouF,GAAAtyG,EAAA,EAAAw3G,IAAA,IACA,KA6BAiM,GAAA1K,GAAA,SAAA70F,EAAAlkB,GACA,IAAAu4F,EAAArhE,GAAAl3B,GAIA,OAHAw3G,GAAAjf,KACAA,EAAAnxG,GAEAowH,GAAAtzF,GACAktF,GAAAltF,EAAAouF,GAAAtyG,EAAA,EAAAw3G,IAAA,GAAAO,GAAAxf,EAAA,IACA,KA0BAmrB,GAAA3K,GAAA,SAAA70F,EAAAlkB,GACA,IAAAk5F,EAAAhiE,GAAAl3B,GAIA,OAHAw3G,GAAAte,KACAA,EAAA9xG,GAEAowH,GAAAtzF,GACAktF,GAAAltF,EAAAouF,GAAAtyG,EAAA,EAAAw3G,IAAA,GAAApwH,EAAA8xG,GACA,KAsOA,SAAA7gF,GAAA6L,EAAA00E,EAAAkB,GACA,IAAA7vG,EAAA,MAAAi6B,EAAA,EAAAA,EAAAj6B,OACA,IAAAA,EACA,SAEA,IAAAkE,EAAA,MAAA2rG,EAAA,EAAAonB,GAAApnB,GAIA,OAHA3rG,EAAA,IACAA,EAAAq8G,GAAAvgH,EAAAkE,EAAA,IAEA0rG,GAAA31E,EAAA6zF,GAAAnf,EAAA,GAAAzqG,GAsCA,SAAAw1H,GAAAz/F,EAAA00E,EAAAkB,GACA,IAAA7vG,EAAA,MAAAi6B,EAAA,EAAAA,EAAAj6B,OACA,IAAAA,EACA,SAEA,IAAAkE,EAAAlE,EAAA,EAOA,OANA6vG,IAAA1yG,IACA+G,EAAA+yH,GAAApnB,GACA3rG,EAAA2rG,EAAA,EACA0Q,GAAAvgH,EAAAkE,EAAA,GACAs8G,GAAAt8G,EAAAlE,EAAA,IAEA4vG,GAAA31E,EAAA6zF,GAAAnf,EAAA,GAAAzqG,GAAA,GAiBA,SAAA8zH,GAAA/9F,GAEA,OADA,MAAAA,KAAAj6B,OACAqoH,GAAApuF,EAAA,MAgGA,SAAA+R,GAAA/R,GACA,OAAAA,KAAAj6B,OAAAi6B,EAAA,GAAA98B,EA0EA,IAAAw8H,GAAA7K,GAAA,SAAAlF,GACA,IAAA3uE,EAAAi0D,GAAA0a,EAAA4H,IACA,OAAAv2E,EAAAj7C,QAAAi7C,EAAA,KAAA2uE,EAAA,GACAD,GAAA1uE,GACA,KA0BA2+E,GAAA9K,GAAA,SAAAlF,GACA,IAAAtb,EAAArhE,GAAA28E,GACA3uE,EAAAi0D,GAAA0a,EAAA4H,IAOA,OALAljB,IAAArhE,GAAAgO,GACAqzD,EAAAnxG,EAEA89C,EAAA/K,MAEA+K,EAAAj7C,QAAAi7C,EAAA,KAAA2uE,EAAA,GACAD,GAAA1uE,EAAA6yE,GAAAxf,EAAA,IACA,KAwBAurB,GAAA/K,GAAA,SAAAlF,GACA,IAAA3a,EAAAhiE,GAAA28E,GACA3uE,EAAAi0D,GAAA0a,EAAA4H,IAMA,OAJAviB,EAAA,mBAAAA,IAAA9xG,IAEA89C,EAAA/K,MAEA+K,EAAAj7C,QAAAi7C,EAAA,KAAA2uE,EAAA,GACAD,GAAA1uE,EAAA99C,EAAA8xG,GACA,KAoCA,SAAAhiE,GAAAhT,GACA,IAAAj6B,EAAA,MAAAi6B,EAAA,EAAAA,EAAAj6B,OACA,OAAAA,EAAAi6B,EAAAj6B,EAAA,GAAA7C,EAuFA,IAAA28H,GAAAhL,GAAAiL,IAsBA,SAAAA,GAAA9/F,EAAAlkB,GACA,OAAAkkB,KAAAj6B,QAAA+V,KAAA/V,OACAyuH,GAAAx0F,EAAAlkB,GACAkkB,EAqFA,IAAA+/F,GAAA5F,GAAA,SAAAn6F,EAAA00F,GACA,IAAA3uH,EAAA,MAAAi6B,EAAA,EAAAA,EAAAj6B,OACA8a,EAAAkqG,GAAA/qF,EAAA00F,GAMA,OAJAD,GAAAz0F,EAAAi1E,GAAAyf,EAAA,SAAAzqH,GACA,OAAA6/G,GAAA7/G,EAAAlE,IAAAkE,MACOooB,KAAA+hG,KAEPvzG,IA2EA,SAAA6G,GAAAsY,GACA,aAAAA,IAAA2mF,GAAA3lH,KAAAg/B,GAkaA,IAAAggG,GAAAnL,GAAA,SAAAlF,GACA,OAAA8G,GAAArI,GAAAuB,EAAA,EAAA2D,IAAA,MA0BA2M,GAAApL,GAAA,SAAAlF,GACA,IAAAtb,EAAArhE,GAAA28E,GAIA,OAHA2D,GAAAjf,KACAA,EAAAnxG,GAEAuzH,GAAArI,GAAAuB,EAAA,EAAA2D,IAAA,GAAAO,GAAAxf,EAAA,MAwBA6rB,GAAArL,GAAA,SAAAlF,GACA,IAAA3a,EAAAhiE,GAAA28E,GAEA,OADA3a,EAAA,mBAAAA,IAAA9xG,EACAuzH,GAAArI,GAAAuB,EAAA,EAAA2D,IAAA,GAAApwH,EAAA8xG,KAgGA,SAAAmrB,GAAAngG,GACA,IAAAA,MAAAj6B,OACA,SAEA,IAAAA,EAAA,EAOA,OANAi6B,EAAA20E,GAAA30E,EAAA,SAAAogG,GACA,GAAA9M,GAAA8M,GAEA,OADAr6H,EAAAugH,GAAA8Z,EAAAr6H,WACA,IAGAswG,GAAAtwG,EAAA,SAAAkE,GACA,OAAAgrG,GAAAj1E,EAAAw1E,GAAAvrG,MAyBA,SAAAo2H,GAAArgG,EAAAq0E,GACA,IAAAr0E,MAAAj6B,OACA,SAEA,IAAA8a,EAAAs/G,GAAAngG,GACA,aAAAq0E,EACAxzF,EAEAo0F,GAAAp0F,EAAA,SAAAu/G,GACA,OAAA95H,GAAA+tG,EAAAnxG,EAAAk9H,KAwBA,IAAAE,GAAAzL,GAAA,SAAA70F,EAAAlkB,GACA,OAAAw3G,GAAAtzF,GACAktF,GAAAltF,EAAAlkB,GACA,KAqBAykH,GAAA1L,GAAA,SAAAlF,GACA,OAAAwH,GAAAxiB,GAAAgb,EAAA2D,OA0BAkN,GAAA3L,GAAA,SAAAlF,GACA,IAAAtb,EAAArhE,GAAA28E,GAIA,OAHA2D,GAAAjf,KACAA,EAAAnxG,GAEAi0H,GAAAxiB,GAAAgb,EAAA2D,IAAAO,GAAAxf,EAAA,MAwBAosB,GAAA5L,GAAA,SAAAlF,GACA,IAAA3a,EAAAhiE,GAAA28E,GAEA,OADA3a,EAAA,mBAAAA,IAAA9xG,EACAi0H,GAAAxiB,GAAAgb,EAAA2D,IAAApwH,EAAA8xG,KAmBA0rB,GAAA7L,GAAAsL,IA6DA,IAAAQ,GAAA9L,GAAA,SAAAlF,GACA,IAAA5pH,EAAA4pH,EAAA5pH,OACAsuG,EAAAtuG,EAAA,EAAA4pH,EAAA5pH,EAAA,GAAA7C,EAGA,OADAmxG,EAAA,mBAAAA,GAAAsb,EAAA15E,MAAAo+D,GAAAnxG,EACAm9H,GAAA1Q,EAAAtb,KAkCA,SAAAvwE,GAAAhiC,GACA,IAAA+e,EAAA+mG,GAAA9lH,GAEA,OADA+e,EAAAynG,WAAA,EACAznG,EAsDA,SAAAy5G,GAAAx4H,EAAAuuC,GACA,OAAAA,EAAAvuC,GAmBA,IAAA8+H,GAAAzG,GAAA,SAAAnP,GACA,IAAAjlH,EAAAilH,EAAAjlH,OACAuJ,EAAAvJ,EAAAilH,EAAA,KACAlpH,EAAAkH,KAAAo/G,YACA/3E,EAAA,SAAA9tC,GAA0C,OAAAwoH,GAAAxoH,EAAAyoH,IAE1C,QAAAjlH,EAAA,GAAAiD,KAAAq/G,YAAAtiH,SACAjE,aAAAgmH,IAAAgC,GAAAx6G,KAGAxN,IAAAof,MAAA5R,MAAAvJ,EAAA,OACAsiH,YAAAviH,KAAA,CACA6gD,KAAA2zE,GACA3iH,KAAA,CAAA04B,GACA6gC,QAAAhuE,IAEA,IAAA6kH,GAAAjmH,EAAAkH,KAAAs/G,WAAAgS,KAAA,SAAAt6F,GAIA,OAHAj6B,IAAAi6B,EAAAj6B,QACAi6B,EAAAl6B,KAAA5C,GAEA88B,KAZAh3B,KAAAsxH,KAAAjqF,KA+PA,IAAAwwF,GAAA7H,GAAA,SAAAn4G,EAAA/e,EAAAM,GACAM,GAAA1B,KAAA6f,EAAAze,KACAye,EAAAze,GAEAmoH,GAAA1pG,EAAAze,EAAA,KAmIA,IAAAyxB,GAAAmmG,GAAA7lG,IAqBA2sG,GAAA9G,GAAAyF,IA2GA,SAAAnrG,GAAA+gC,EAAAg/C,GAEA,OADA1wF,GAAA0xC,GAAAk/C,GAAAqW,IACAv1D,EAAAw+D,GAAAxf,EAAA,IAuBA,SAAA0sB,GAAA1rE,EAAAg/C,GAEA,OADA1wF,GAAA0xC,GAAAm/C,GAAAsZ,IACAz4D,EAAAw+D,GAAAxf,EAAA,IA0BA,IAAAnwE,GAAA80F,GAAA,SAAAn4G,EAAA/e,EAAAM,GACAM,GAAA1B,KAAA6f,EAAAze,GACAye,EAAAze,GAAA0D,KAAAhE,GAEAyoH,GAAA1pG,EAAAze,EAAA,CAAAN,MAsEA,IAAAk/H,GAAAnM,GAAA,SAAAx/D,EAAAsyB,EAAAhwE,GACA,IAAA1N,GAAA,EACA0hH,EAAA,mBAAAhkC,EACA9mE,EAAAyxB,GAAA+iB,GAAA1zC,EAAA0zC,EAAAtvD,QAAA,GAKA,OAHA6kH,GAAAv1D,EAAA,SAAAvzD,GACA+e,IAAA5W,GAAA0hH,EAAArlH,GAAAqhF,EAAA7lF,EAAA6V,GAAAs4G,GAAAnuH,EAAA6lF,EAAAhwE,KAEAkJ,IA+BAogH,GAAAjI,GAAA,SAAAn4G,EAAA/e,EAAAM,GACAmoH,GAAA1pG,EAAAze,EAAAN,KA6CA,SAAA4L,GAAA2nD,EAAAg/C,GAEA,OADA1wF,GAAA0xC,GAAA4/C,GAAAyd,IACAr9D,EAAAw+D,GAAAxf,EAAA,IAkFA,IAAA6sB,GAAAlI,GAAA,SAAAn4G,EAAA/e,EAAAM,GACAye,EAAAze,EAAA,KAAA0D,KAAAhE,IACK,WAAc,gBAmSnB,IAAAq/H,GAAAtM,GAAA,SAAAx/D,EAAAs+D,GACA,SAAAt+D,EACA,SAEA,IAAAtvD,EAAA4tH,EAAA5tH,OAMA,OALAA,EAAA,GAAAuzH,GAAAjkE,EAAAs+D,EAAA,GAAAA,EAAA,IACAA,EAAA,GACO5tH,EAAA,GAAAuzH,GAAA3F,EAAA,GAAAA,EAAA,GAAAA,EAAA,MACPA,EAAA,CAAAA,EAAA,KAEAD,GAAAr+D,EAAA+4D,GAAAuF,EAAA,SAqBAxhE,GAAAyzD,IAAA,WACA,OAAA5iH,GAAAwyC,KAAA2c,OA0DA,SAAA4oE,GAAAp0E,EAAArkD,EAAA+2H,GAGA,OAFA/2H,EAAA+2H,EAAAn2H,EAAAZ,EACAA,EAAAqkD,GAAA,MAAArkD,EAAAqkD,EAAA5gD,OAAAzD,EACA86H,GAAAz2E,EAAA4kD,EAAAroG,QAAAZ,GAoBA,SAAA+zD,GAAA/zD,EAAAqkD,GACA,IAAA9lC,EACA,sBAAA8lC,EACA,UAAAt4B,GAAAk8E,GAGA,OADAjoG,EAAA06H,GAAA16H,GACA,WAOA,QANAA,EAAA,IACAue,EAAA8lC,EAAArgD,MAAA0C,KAAA8N,YAEAxU,GAAA,IACAqkD,EAAAzjD,GAEA2d,GAuCA,IAAAxe,GAAAwyH,GAAA,SAAAluE,EAAAuqB,EAAA+mD,GACA,IAAA7M,EAAApgB,EACA,GAAAitB,EAAAlyH,OAAA,CACA,IAAAmyH,EAAA7U,GAAA4U,EAAAoD,GAAAh5H,KACA+oH,GAAA/f,EAEA,OAAA+xB,GAAAz2E,EAAAykE,EAAAl6C,EAAA+mD,EAAAC,KAgDAkJ,GAAAvM,GAAA,SAAAtyH,EAAAH,EAAA61H,GACA,IAAA7M,EAAApgB,EAAAC,EACA,GAAAgtB,EAAAlyH,OAAA,CACA,IAAAmyH,EAAA7U,GAAA4U,EAAAoD,GAAA+F,KACAhW,GAAA/f,EAEA,OAAA+xB,GAAAh7H,EAAAgpH,EAAA7oH,EAAA01H,EAAAC,KAsJA,SAAAjuG,GAAA08B,EAAAwC,EAAAl7C,GACA,IAAAozH,EACAC,EACAC,EACA1gH,EACA2gH,EACAC,EACAC,EAAA,EACAC,GAAA,EACAC,GAAA,EACAlI,GAAA,EAEA,sBAAA/yE,EACA,UAAAt4B,GAAAk8E,GAUA,SAAAs3B,EAAA99F,GACA,IAAApsB,EAAA0pH,EACAnwD,EAAAowD,EAKA,OAHAD,EAAAC,EAAAp+H,EACAw+H,EAAA39F,EACAljB,EAAA8lC,EAAArgD,MAAA4qE,EAAAv5D,GAuBA,SAAAmqH,EAAA/9F,GACA,IAAAg+F,EAAAh+F,EAAA09F,EAMA,OAAAA,IAAAv+H,GAAA6+H,GAAA54E,GACA44E,EAAA,GAAAH,GANA79F,EAAA29F,GAMAH,EAGA,SAAAS,IACA,IAAAj+F,EAAAouB,KACA,GAAA2vE,EAAA/9F,GACA,OAAAk+F,EAAAl+F,GAGAy9F,EAAAj3G,GAAAy3G,EA3BA,SAAAj+F,GACA,IAEAm+F,EAAA/4E,GAFAplB,EAAA09F,GAIA,OAAAG,EACArb,GAAA2b,EAAAX,GAJAx9F,EAAA29F,IAKAQ,EAoBAC,CAAAp+F,IAGA,SAAAk+F,EAAAl+F,GAKA,OAJAy9F,EAAAt+H,EAIAw2H,GAAA2H,EACAQ,EAAA99F,IAEAs9F,EAAAC,EAAAp+H,EACA2d,GAeA,SAAAuhH,IACA,IAAAr+F,EAAAouB,KACAkwE,EAAAP,EAAA/9F,GAMA,GAJAs9F,EAAAvqH,UACAwqH,EAAAt4H,KACAy4H,EAAA19F,EAEAs+F,EAAA,CACA,GAAAb,IAAAt+H,EACA,OAzEA,SAAA6gC,GAMA,OAJA29F,EAAA39F,EAEAy9F,EAAAj3G,GAAAy3G,EAAA74E,GAEAw4E,EAAAE,EAAA99F,GAAAljB,EAmEAyhH,CAAAb,GAEA,GAAAG,EAGA,OADAJ,EAAAj3G,GAAAy3G,EAAA74E,GACA04E,EAAAJ,GAMA,OAHAD,IAAAt+H,IACAs+H,EAAAj3G,GAAAy3G,EAAA74E,IAEAtoC,EAIA,OA1GAsoC,EAAAstB,GAAAttB,IAAA,EACA/c,GAAAn+B,KACA0zH,IAAA1zH,EAAA0zH,QAEAJ,GADAK,EAAA,YAAA3zH,GACAq4G,GAAA7vC,GAAAxoE,EAAAszH,UAAA,EAAAp4E,GAAAo4E,EACA7H,EAAA,aAAAzrH,MAAAyrH,YAmGA0I,EAAAG,OAnCA,WACAf,IAAAt+H,GACAk8B,GAAAoiG,GAEAE,EAAA,EACAL,EAAAI,EAAAH,EAAAE,EAAAt+H,GA+BAk/H,EAAAI,MA5BA,WACA,OAAAhB,IAAAt+H,EAAA2d,EAAAohH,EAAA9vE,OA4BAiwE,EAqBA,IAAA/2E,GAAAwpE,GAAA,SAAAluE,EAAAhvC,GACA,OAAAs1G,GAAAtmE,EAAA,EAAAhvC,KAsBAunD,GAAA21D,GAAA,SAAAluE,EAAAwC,EAAAxxC,GACA,OAAAs1G,GAAAtmE,EAAA8vB,GAAAttB,IAAA,EAAAxxC,KAqEA,SAAAunH,GAAAv4E,EAAA87E,GACA,sBAAA97E,GAAA,MAAA87E,GAAA,mBAAAA,EACA,UAAAp0G,GAAAk8E,GAEA,IAAAm4B,EAAA,WACA,IAAA/qH,EAAAb,UACA1U,EAAAqgI,IAAAn8H,MAAA0C,KAAA2O,KAAA,GACA+hC,EAAAgpF,EAAAhpF,MAEA,GAAAA,EAAAmF,IAAAz8C,GACA,OAAAs3C,EAAAh4C,IAAAU,GAEA,IAAAye,EAAA8lC,EAAArgD,MAAA0C,KAAA2O,GAEA,OADA+qH,EAAAhpF,QAAAlmC,IAAApR,EAAAye,IAAA64B,EACA74B,GAGA,OADA6hH,EAAAhpF,MAAA,IAAAwlF,GAAAyD,OAAAzZ,IACAwZ,EA0BA,SAAAljH,GAAAk1F,GACA,sBAAAA,EACA,UAAArmF,GAAAk8E,GAEA,kBACA,IAAA5yF,EAAAb,UACA,OAAAa,EAAA5R,QACA,cAAA2uG,EAAA1zG,KAAAgI,MACA,cAAA0rG,EAAA1zG,KAAAgI,KAAA2O,EAAA,IACA,cAAA+8F,EAAA1zG,KAAAgI,KAAA2O,EAAA,GAAAA,EAAA,IACA,cAAA+8F,EAAA1zG,KAAAgI,KAAA2O,EAAA,GAAAA,EAAA,GAAAA,EAAA,IAEA,OAAA+8F,EAAApuG,MAAA0C,KAAA2O,IAlCAunH,GAAAyD,MAAAzZ,GA2FA,IAAA0Z,GAAAlL,GAAA,SAAA/wE,EAAAk8E,GAKA,IAAAC,GAJAD,EAAA,GAAAA,EAAA98H,QAAA4d,GAAAk/G,EAAA,IACA5tB,GAAA4tB,EAAA,GAAAvsB,GAAAud,OACA5e,GAAAmZ,GAAAyU,EAAA,GAAAvsB,GAAAud,QAEA9tH,OACA,OAAA8uH,GAAA,SAAAl9G,GAIA,IAHA,IAAA1N,GAAA,EACAlE,EAAAwgH,GAAA5uG,EAAA5R,OAAA+8H,KAEA74H,EAAAlE,GACA4R,EAAA1N,GAAA44H,EAAA54H,GAAAjJ,KAAAgI,KAAA2O,EAAA1N,IAEA,OAAA3D,GAAAqgD,EAAA39C,KAAA2O,OAqCAorH,GAAAlO,GAAA,SAAAluE,EAAAsxE,GACA,IAAAC,EAAA7U,GAAA4U,EAAAoD,GAAA0H,KACA,OAAA3F,GAAAz2E,EAAA0kD,EAAAnoG,EAAA+0H,EAAAC,KAmCA8K,GAAAnO,GAAA,SAAAluE,EAAAsxE,GACA,IAAAC,EAAA7U,GAAA4U,EAAAoD,GAAA2H,KACA,OAAA5F,GAAAz2E,EAAA2kD,EAAApoG,EAAA+0H,EAAAC,KAyBA+K,GAAA9I,GAAA,SAAAxzE,EAAA+tE,GACA,OAAA0I,GAAAz2E,EAAA6kD,EAAAtoG,MAAAwxH,KAiaA,SAAA3hF,GAAAjxC,EAAAytH,GACA,OAAAztH,IAAAytH,GAAAztH,MAAAytH,KA0BA,IAAAzvE,GAAA08E,GAAAlN,IAyBA4T,GAAA1G,GAAA,SAAA16H,EAAAytH,GACA,OAAAztH,GAAAytH,IAqBA7F,GAAAwG,GAAA,WAAkD,OAAAp5G,UAAlD,IAAsEo5G,GAAA,SAAApuH,GACtE,OAAA+lH,GAAA/lH,IAAAY,GAAA1B,KAAAc,EAAA,YACAujH,GAAArkH,KAAAc,EAAA,WA0BA6hB,GAAAhC,EAAAgC,QAmBAiuD,GAAA8hC,GAAA4C,GAAA5C,IA93PA,SAAA5xG,GACA,OAAA+lH,GAAA/lH,IAAAmtH,GAAAntH,IAAA+rG,IAw5PA,SAAAv7D,GAAAxwC,GACA,aAAAA,GAAAs8H,GAAAt8H,EAAAiE,UAAAykB,GAAA1oB,GA4BA,SAAAwxH,GAAAxxH,GACA,OAAA+lH,GAAA/lH,IAAAwwC,GAAAxwC,GA0CA,IAAAwqC,GAAA45E,IAAAsY,GAmBA5qB,GAAAD,GAAA2C,GAAA3C,IAz+PA,SAAA7xG,GACA,OAAA+lH,GAAA/lH,IAAAmtH,GAAAntH,IAAA8qG,GAgpQA,SAAAu2B,GAAArhI,GACA,IAAA+lH,GAAA/lH,GACA,SAEA,IAAAyjC,EAAA0pF,GAAAntH,GACA,OAAAyjC,GAAAunE,GAAAvnE,GAAAsnE,GACA,iBAAA/qG,EAAA2C,SAAA,iBAAA3C,EAAAV,OAAAiyC,GAAAvxC,GAkDA,SAAA0oB,GAAA1oB,GACA,IAAAsqC,GAAAtqC,GACA,SAIA,IAAAyjC,EAAA0pF,GAAAntH,GACA,OAAAyjC,GAAAwnE,GAAAxnE,GAAAynE,GAAAznE,GAAAmnE,GAAAnnE,GAAA8nE,GA6BA,SAAA+1B,GAAAthI,GACA,uBAAAA,MAAAk7H,GAAAl7H,GA6BA,SAAAs8H,GAAAt8H,GACA,uBAAAA,GACAA,GAAA,GAAAA,EAAA,MAAAA,GAAAmqG,EA4BA,SAAA7/D,GAAAtqC,GACA,IAAAwC,SAAAxC,EACA,aAAAA,IAAA,UAAAwC,GAAA,YAAAA,GA2BA,SAAAujH,GAAA/lH,GACA,aAAAA,GAAA,iBAAAA,EAoBA,IAAAgyG,GAAAD,GAAAyC,GAAAzC,IA7vQA,SAAA/xG,GACA,OAAA+lH,GAAA/lH,IAAA4pH,GAAA5pH,IAAAmrG,GA88QA,SAAA/oF,GAAApiB,GACA,uBAAAA,GACA+lH,GAAA/lH,IAAAmtH,GAAAntH,IAAAorG,EA+BA,SAAA75D,GAAAvxC,GACA,IAAA+lH,GAAA/lH,IAAAmtH,GAAAntH,IAAAsrG,EACA,SAEA,IAAAz5D,EAAAwxE,GAAArjH,GACA,UAAA6xC,EACA,SAEA,IAAAC,EAAAlxC,GAAA1B,KAAA2yC,EAAA,gBAAAA,EAAApH,YACA,yBAAAqH,mBACA4wE,GAAAxjH,KAAA4yC,IAAAixE,GAoBA,IAAAtuC,GAAAw9B,GAAAuC,GAAAvC,IA77QA,SAAAjyG,GACA,OAAA+lH,GAAA/lH,IAAAmtH,GAAAntH,IAAAwrG,IA8+QA,IAAA2G,GAAAD,GAAAsC,GAAAtC,IAp+QA,SAAAlyG,GACA,OAAA+lH,GAAA/lH,IAAA4pH,GAAA5pH,IAAAyrG,IAs/QA,SAAA81B,GAAAvhI,GACA,uBAAAA,IACA6hB,GAAA7hB,IAAA+lH,GAAA/lH,IAAAmtH,GAAAntH,IAAA0rG,GAoBA,SAAA0gB,GAAApsH,GACA,uBAAAA,GACA+lH,GAAA/lH,IAAAmtH,GAAAntH,IAAA2rG,GAoBA,IAAA0G,GAAAD,GAAAoC,GAAApC,IAxhRA,SAAApyG,GACA,OAAA+lH,GAAA/lH,IACAs8H,GAAAt8H,EAAAiE,WAAAwsG,GAAA0c,GAAAntH,KA8mRA,IAAA+9C,GAAA28E,GAAA/J,IAyBA6Q,GAAA9G,GAAA,SAAA16H,EAAAytH,GACA,OAAAztH,GAAAytH,IA0BA,SAAAh9E,GAAAzwC,GACA,IAAAA,EACA,SAEA,GAAAwwC,GAAAxwC,GACA,OAAAuhI,GAAAvhI,GAAA4hH,GAAA5hH,GAAAqoH,GAAAroH,GAEA,GAAA0jH,IAAA1jH,EAAA0jH,IACA,OA/5VA,SAAAhxE,GAIA,IAHA,IAAApnC,EACAyT,EAAA,KAEAzT,EAAAonC,EAAAzF,QAAA4G,MACA90B,EAAA/a,KAAAsH,EAAAtL,OAEA,OAAA+e,EAw5VA0iH,CAAAzhI,EAAA0jH,OAEA,IAAAjgF,EAAAmmF,GAAA5pH,GAGA,OAFAyjC,GAAA0nE,EAAAkW,GAAA59E,GAAAgoE,GAAA+V,GAAAxnG,IAEAha,GA0BA,SAAAw6H,GAAAx6H,GACA,OAAAA,GAGAA,EAAA20E,GAAA30E,MACAkqG,GAAAlqG,KAAAkqG,GACAlqG,EAAA,QACAoqG,EAEApqG,OAAA,EAPA,IAAAA,IAAA,EAoCA,SAAAk7H,GAAAl7H,GACA,IAAA+e,EAAAy7G,GAAAx6H,GACA0hI,EAAA3iH,EAAA,EAEA,OAAAA,KAAA2iH,EAAA3iH,EAAA2iH,EAAA3iH,EAAA,EA8BA,SAAA4iH,GAAA3hI,GACA,OAAAA,EAAAsoH,GAAA4S,GAAAl7H,GAAA,EAAAsqG,GAAA,EA0BA,SAAA31B,GAAA30E,GACA,oBAAAA,EACA,OAAAA,EAEA,GAAAosH,GAAApsH,GACA,OAAAqqG,EAEA,GAAA//D,GAAAtqC,GAAA,CACA,IAAAytH,EAAA,mBAAAztH,EAAA4lH,QAAA5lH,EAAA4lH,UAAA5lH,EACAA,EAAAsqC,GAAAmjF,KAAA,GAAAA,EAEA,oBAAAztH,EACA,WAAAA,OAEAA,IAAAoQ,QAAAq9F,GAAA,IACA,IAAAm0B,EAAAxzB,GAAA1pG,KAAA1E,GACA,OAAA4hI,GAAAtzB,GAAA5pG,KAAA1E,GACAmxG,GAAAnxG,EAAAof,MAAA,GAAAwiH,EAAA,KACAzzB,GAAAzpG,KAAA1E,GAAAqqG,GAAArqG,EA2BA,SAAAyxH,GAAAzxH,GACA,OAAAgpH,GAAAhpH,EAAAkqH,GAAAlqH,IAsDA,SAAAmf,GAAAnf,GACA,aAAAA,EAAA,GAAA00H,GAAA10H,GAqCA,IAAAitB,GAAAmqG,GAAA,SAAA32H,EAAAue,GACA,GAAAuxG,GAAAvxG,IAAAwxB,GAAAxxB,GACAgqG,GAAAhqG,EAAAtL,GAAAsL,GAAAve,QAGA,QAAAH,KAAA0e,EACApe,GAAA1B,KAAA8f,EAAA1e,IACAooH,GAAAjoH,EAAAH,EAAA0e,EAAA1e,MAoCAuhI,GAAAzK,GAAA,SAAA32H,EAAAue,GACAgqG,GAAAhqG,EAAAkrG,GAAAlrG,GAAAve,KAgCAqhI,GAAA1K,GAAA,SAAA32H,EAAAue,EAAAmyG,EAAA5H,GACAP,GAAAhqG,EAAAkrG,GAAAlrG,GAAAve,EAAA8oH,KA+BAwY,GAAA3K,GAAA,SAAA32H,EAAAue,EAAAmyG,EAAA5H,GACAP,GAAAhqG,EAAAtL,GAAAsL,GAAAve,EAAA8oH,KAoBAyY,GAAA3J,GAAApP,IA8DA,IAAAtkH,GAAAouH,GAAA,SAAAtyH,EAAA62H,GACA72H,EAAAhB,GAAAgB,GAEA,IAAA0H,GAAA,EACAlE,EAAAqzH,EAAArzH,OACAszH,EAAAtzH,EAAA,EAAAqzH,EAAA,GAAAl2H,EAMA,IAJAm2H,GAAAC,GAAAF,EAAA,GAAAA,EAAA,GAAAC,KACAtzH,EAAA,KAGAkE,EAAAlE,GAMA,IALA,IAAA+a,EAAAs4G,EAAAnvH,GACAukB,EAAAw9F,GAAAlrG,GACAijH,GAAA,EACAC,EAAAx1G,EAAAzoB,SAEAg+H,EAAAC,GAAA,CACA,IAAA5hI,EAAAosB,EAAAu1G,GACAjiI,EAAAS,EAAAH,IAEAN,IAAAoB,GACA6vC,GAAAjxC,EAAAwiH,GAAAliH,MAAAM,GAAA1B,KAAAuB,EAAAH,MACAG,EAAAH,GAAA0e,EAAA1e,IAKA,OAAAG,IAsBA0hI,GAAApP,GAAA,SAAAl9G,GAEA,OADAA,EAAA7R,KAAA5C,EAAA06H,IACAt3H,GAAA49H,GAAAhhI,EAAAyU,KAgSA,SAAAjW,GAAAa,EAAAolF,EAAAtkC,GACA,IAAAxiC,EAAA,MAAAte,EAAAW,EAAAyrH,GAAApsH,EAAAolF,GACA,OAAA9mE,IAAA3d,EAAAmgD,EAAAxiC,EA4DA,SAAAkyG,GAAAxwH,EAAAolF,GACA,aAAAplF,GAAA27H,GAAA37H,EAAAolF,EAAA8nC,IAqBA,IAAAr7E,GAAAynF,GAAA,SAAAh7G,EAAA/e,EAAAM,GACA,MAAAN,GACA,mBAAAA,EAAAmf,WACAnf,EAAA8iH,GAAA5jH,KAAAc,IAGA+e,EAAA/e,GAAAM,GACKgzH,GAAA59C,KA4BL2sD,GAAAtI,GAAA,SAAAh7G,EAAA/e,EAAAM,GACA,MAAAN,GACA,mBAAAA,EAAAmf,WACAnf,EAAA8iH,GAAA5jH,KAAAc,IAGAY,GAAA1B,KAAA6f,EAAA/e,GACA+e,EAAA/e,GAAAgE,KAAA1D,GAEAye,EAAA/e,GAAA,CAAAM,IAEKyxH,IAoBLuQ,GAAAvP,GAAA5E,IA8BA,SAAAz6G,GAAAjT,GACA,OAAA+vC,GAAA/vC,GAAA+mH,GAAA/mH,GAAA6vH,GAAA7vH,GA0BA,SAAAypH,GAAAzpH,GACA,OAAA+vC,GAAA/vC,GAAA+mH,GAAA/mH,GAAA,GAAA+vH,GAAA/vH,GAuGA,IAAA0qC,GAAAisF,GAAA,SAAA32H,EAAAue,EAAAmyG,GACAD,GAAAzwH,EAAAue,EAAAmyG,KAkCAiR,GAAAhL,GAAA,SAAA32H,EAAAue,EAAAmyG,EAAA5H,GACA2H,GAAAzwH,EAAAue,EAAAmyG,EAAA5H,KAuBAgZ,GAAAlK,GAAA,SAAA53H,EAAAyoH,GACA,IAAAnqG,EAAA,GACA,SAAAte,EACA,OAAAse,EAEA,IAAAyqG,GAAA,EACAN,EAAA/V,GAAA+V,EAAA,SAAArjC,GAGA,OAFAA,EAAAinC,GAAAjnC,EAAAplF,GACA+oH,MAAA3jC,EAAA5hF,OAAA,GACA4hF,IAEAmjC,GAAAvoH,EAAAuqH,GAAAvqH,GAAAse,GACAyqG,IACAzqG,EAAAsqG,GAAAtqG,EAAA8pF,EAAAC,EAAAC,EAAAgzB,KAGA,IADA,IAAA93H,EAAAilH,EAAAjlH,OACAA,KACA4uH,GAAA9zG,EAAAmqG,EAAAjlH,IAEA,OAAA8a,IA4CA,IAAAujG,GAAA+V,GAAA,SAAA53H,EAAAyoH,GACA,aAAAzoH,EAAA,GAjlTA,SAAAA,EAAAyoH,GACA,OAAAsJ,GAAA/xH,EAAAyoH,EAAA,SAAAlpH,EAAA6lF,GACA,OAAAorC,GAAAxwH,EAAAolF,KA+kTgC28C,CAAA/hI,EAAAyoH,KAqBhC,SAAAuZ,GAAAhiI,EAAAmyG,GACA,SAAAnyG,EACA,SAEA,IAAAisB,EAAAymF,GAAA6X,GAAAvqH,GAAA,SAAAye,GACA,OAAAA,KAGA,OADA0zF,EAAAmf,GAAAnf,GACA4f,GAAA/xH,EAAAisB,EAAA,SAAA1sB,EAAA6lF,GACA,OAAA+sB,EAAA5yG,EAAA6lF,EAAA,MA4IA,IAAA68C,GAAAtH,GAAA1nH,IA0BAivH,GAAAvH,GAAAlR,IA4KA,SAAAlwG,GAAAvZ,GACA,aAAAA,EAAA,GAAAg0G,GAAAh0G,EAAAiT,GAAAjT,IAkNA,IAAAynD,GAAA2vE,GAAA,SAAA94G,EAAA6jH,EAAAz6H,GAEA,OADAy6H,IAAAlrG,cACA3Y,GAAA5W,EAAA8sE,GAAA2tD,QAkBA,SAAA3tD,GAAAp7D,GACA,OAAAgpH,GAAA1jH,GAAAtF,GAAA6d,eAqBA,SAAAqgG,GAAAl+G,GAEA,OADAA,EAAAsF,GAAAtF,KACAA,EAAAzJ,QAAAo+F,GAAAuG,IAAA3kG,QAAA8/F,GAAA,IAsHA,IAAA4yB,GAAAjL,GAAA,SAAA94G,EAAA6jH,EAAAz6H,GACA,OAAA4W,GAAA5W,EAAA,QAAAy6H,EAAAlrG,gBAuBAqrG,GAAAlL,GAAA,SAAA94G,EAAA6jH,EAAAz6H,GACA,OAAA4W,GAAA5W,EAAA,QAAAy6H,EAAAlrG,gBAoBAsrG,GAAAtL,GAAA,eA0NA,IAAAuL,GAAApL,GAAA,SAAA94G,EAAA6jH,EAAAz6H,GACA,OAAA4W,GAAA5W,EAAA,QAAAy6H,EAAAlrG,gBAgEA,IAAAwrG,GAAArL,GAAA,SAAA94G,EAAA6jH,EAAAz6H,GACA,OAAA4W,GAAA5W,EAAA,QAAA06H,GAAAD,KA6hBA,IAAAO,GAAAtL,GAAA,SAAA94G,EAAA6jH,EAAAz6H,GACA,OAAA4W,GAAA5W,EAAA,QAAAy6H,EAAA7vG,gBAoBA8vG,GAAAnL,GAAA,eAqBA,SAAAI,GAAAj+G,EAAAgiC,EAAA07E,GAIA,OAHA19G,EAAAsF,GAAAtF,IACAgiC,EAAA07E,EAAAn2H,EAAAy6C,KAEAz6C,EApvbA,SAAAyY,GACA,OAAAy2F,GAAA5rG,KAAAmV,GAovbAupH,CAAAvpH,GAxhbA,SAAAA,GACA,OAAAA,EAAA0Y,MAAA69E,KAAA,GAuhbAizB,CAAAxpH,GA3ncA,SAAAA,GACA,OAAAA,EAAA0Y,MAAAw7E,KAAA,GA0ncAu1B,CAAAzpH,GAEAA,EAAA0Y,MAAAspB,IAAA,GA2BA,IAAA0nF,GAAAxQ,GAAA,SAAAluE,EAAAhvC,GACA,IACA,OAAArR,GAAAqgD,EAAAzjD,EAAAyU,GACO,MAAArJ,GACP,OAAA60H,GAAA70H,KAAA,IAAAmI,GAAAnI,MA8BAg3H,GAAAnL,GAAA,SAAA53H,EAAAgjI,GAKA,OAJAhxB,GAAAgxB,EAAA,SAAAnjI,GACAA,EAAAysH,GAAAzsH,GACAmoH,GAAAhoH,EAAAH,EAAAC,GAAAE,EAAAH,GAAAG,MAEAA,IAqGA,SAAA6yH,GAAAtzH,GACA,kBACA,OAAAA,GAkDA,IAAA0jI,GAAAtL,KAuBAuL,GAAAvL,IAAA,GAkBA,SAAA1iD,GAAA11E,GACA,OAAAA,EA6CA,SAAAuyG,GAAA1tD,GACA,OAAAsrE,GAAA,mBAAAtrE,IAAAwkE,GAAAxkE,EAAAgkD,IAyFA,IAAAlxF,GAAAo7G,GAAA,SAAAltC,EAAAhwE,GACA,gBAAApV,GACA,OAAA0tH,GAAA1tH,EAAAolF,EAAAhwE,MA2BA+tH,GAAA7Q,GAAA,SAAAtyH,EAAAoV,GACA,gBAAAgwE,GACA,OAAAsoC,GAAA1tH,EAAAolF,EAAAhwE,MAwCA,SAAAm6E,GAAAvvF,EAAAue,EAAA7S,GACA,IAAAugB,EAAAhZ,GAAAsL,GACAykH,EAAA7W,GAAA5tG,EAAA0N,GAEA,MAAAvgB,GACAm+B,GAAAtrB,KAAAykH,EAAAx/H,SAAAyoB,EAAAzoB,UACAkI,EAAA6S,EACAA,EAAAve,EACAA,EAAAyG,KACAu8H,EAAA7W,GAAA5tG,EAAAtL,GAAAsL,KAEA,IAAAgjB,IAAAsI,GAAAn+B,IAAA,UAAAA,MAAA61B,OACA6nF,EAAAnhG,GAAAjoB,GAqBA,OAnBAgyG,GAAAgxB,EAAA,SAAA9L,GACA,IAAA9yE,EAAA7lC,EAAA24G,GACAl3H,EAAAk3H,GAAA9yE,EACAglE,IACAppH,EAAAE,UAAAg3H,GAAA,WACA,IAAAtR,EAAAn/G,KAAAs/G,UACA,GAAAxkF,GAAAqkF,EAAA,CACA,IAAAtnG,EAAAte,EAAAyG,KAAAo/G,aAKA,OAJAvnG,EAAAwnG,YAAA8B,GAAAnhH,KAAAq/G,cAEAviH,KAAA,CAA4B6gD,OAAAhvC,KAAAb,UAAAo6D,QAAA3uE,IAC5Bse,EAAAynG,UAAAH,EACAtnG,EAEA,OAAA8lC,EAAArgD,MAAA/D,EAAA2yG,GAAA,CAAAlsG,KAAAlH,SAAAgV,gBAKAvU,EAmCA,SAAAwM,MAiDA,IAAA42H,GAAA1J,GAAAhnB,IA0BA2wB,GAAA3J,GAAAxnB,IA0BAoxB,GAAA5J,GAAA3mB,IAwBA,SAAA9yG,GAAAmlF,GACA,OAAAkrC,GAAAlrC,GAAA6tB,GAAAqZ,GAAAlnC,IA5zXA,SAAAA,GACA,gBAAAplF,GACA,OAAAosH,GAAApsH,EAAAolF,IA0zXAm+C,CAAAn+C,GAuEA,IAAA76D,GAAAC,KAsCAg5G,GAAAh5G,IAAA,GAoBA,SAAAkxG,KACA,SAgBA,SAAAO,KACA,SA+JA,IAAA35E,GAAAm3E,GAAA,SAAAgK,EAAAC,GACA,OAAAD,EAAAC,GACK,GAuBL7gH,GAAA03G,GAAA,QAiBAoJ,GAAAlK,GAAA,SAAAmK,EAAAC,GACA,OAAAD,EAAAC,GACK,GAuBL3xH,GAAAqoH,GAAA,SAwKA,IAgaAh8G,GAhaAulH,GAAArK,GAAA,SAAAsK,EAAAC,GACA,OAAAD,EAAAC,GACK,GAuBL9kH,GAAAq7G,GAAA,SAiBArsG,GAAAurG,GAAA,SAAAwK,EAAAC,GACA,OAAAD,EAAAC,GACK,GA+lBL,OAziBA7e,GAAAtxD,MAj4MA,SAAAh0D,EAAAqkD,GACA,sBAAAA,EACA,UAAAt4B,GAAAk8E,GAGA,OADAjoG,EAAA06H,GAAA16H,GACA,WACA,KAAAA,EAAA,EACA,OAAAqkD,EAAArgD,MAAA0C,KAAA8N,aA23MA8wG,GAAAmT,OACAnT,GAAA74F,UACA64F,GAAA+b,YACA/b,GAAAgc,gBACAhc,GAAAic,cACAjc,GAAAkc,MACAlc,GAAAvxD,UACAuxD,GAAAvlH,QACAulH,GAAA0d,WACA1d,GAAAwZ,WACAxZ,GAAA8e,UAh6KA,WACA,IAAA5vH,UAAA/Q,OACA,SAEA,IAAAjE,EAAAgV,UAAA,GACA,OAAA6M,GAAA7hB,KAAA,CAAAA,IA45KA8lH,GAAA9jF,SACA8jF,GAAA+e,MA79SA,SAAA3mG,EAAA7c,EAAAk2G,GAEAl2G,GADAk2G,EAAAC,GAAAt5F,EAAA7c,EAAAk2G,GAAAl2G,IAAAjgB,GACA,EAEAojH,GAAA0W,GAAA75G,GAAA,GAEA,IAAApd,EAAA,MAAAi6B,EAAA,EAAAA,EAAAj6B,OACA,IAAAA,GAAAod,EAAA,EACA,SAMA,IAJA,IAAAlZ,EAAA,EACA2qG,EAAA,EACA/zF,EAAAc,EAAAmkG,GAAA//G,EAAAod,IAEAlZ,EAAAlE,GACA8a,EAAA+zF,KAAA0gB,GAAAt1F,EAAA/1B,KAAAkZ,GAEA,OAAAtC,GA68SA+mG,GAAAgf,QA37SA,SAAA5mG,GAMA,IALA,IAAA/1B,GAAA,EACAlE,EAAA,MAAAi6B,EAAA,EAAAA,EAAAj6B,OACA6uG,EAAA,EACA/zF,EAAA,KAEA5W,EAAAlE,GAAA,CACA,IAAAjE,EAAAk+B,EAAA/1B,GACAnI,IACA+e,EAAA+zF,KAAA9yG,GAGA,OAAA+e,GAg7SA+mG,GAAAlyG,OAv5SA,WACA,IAAA3P,EAAA+Q,UAAA/Q,OACA,IAAAA,EACA,SAMA,IAJA,IAAA4R,EAAAgK,EAAA5b,EAAA,GACAi6B,EAAAlpB,UAAA,GACA7M,EAAAlE,EAEAkE,KACA0N,EAAA1N,EAAA,GAAA6M,UAAA7M,GAEA,OAAAirG,GAAAvxF,GAAAqc,GAAAmqF,GAAAnqF,GAAA,CAAAA,GAAAouF,GAAAz2G,EAAA,KA44SAiwG,GAAAif,KAlsCA,SAAAlZ,GACA,IAAA5nH,EAAA,MAAA4nH,EAAA,EAAAA,EAAA5nH,OACA+1H,EAAAjI,KASA,OAPAlG,EAAA5nH,EAAAkvG,GAAA0Y,EAAA,SAAAsP,GACA,sBAAAA,EAAA,GACA,UAAA5uG,GAAAk8E,GAEA,OAAAuxB,EAAAmB,EAAA,IAAAA,EAAA,MAJA,GAOApI,GAAA,SAAAl9G,GAEA,IADA,IAAA1N,GAAA,IACAA,EAAAlE,GAAA,CACA,IAAAk3H,EAAAtP,EAAA1jH,GACA,GAAA3D,GAAA22H,EAAA,GAAAj0H,KAAA2O,GACA,OAAArR,GAAA22H,EAAA,GAAAj0H,KAAA2O,OAmrCAiwG,GAAAkf,SArpCA,SAAAhmH,GACA,OAj3YA,SAAAA,GACA,IAAA0N,EAAAhZ,GAAAsL,GACA,gBAAAve,GACA,OAAAyqH,GAAAzqH,EAAAue,EAAA0N,IA82YAu4G,CAAA5b,GAAArqG,EAAA6pF,KAqpCAid,GAAAwN,YACAxN,GAAAiZ,WACAjZ,GAAAzlH,OApsHA,SAAAM,EAAAg6D,GACA,IAAA57C,EAAAonG,GAAAxlH,GACA,aAAAg6D,EAAA57C,EAAAgqG,GAAAhqG,EAAA47C,IAmsHAmrD,GAAAof,MAtsMA,SAAAA,EAAArgF,EAAAq0E,EAAA3B,GAEA,IAAAx4G,EAAAu8G,GAAAz2E,EAAAwkD,EAAAjoG,UADA83H,EAAA3B,EAAAn2H,EAAA83H,GAGA,OADAn6G,EAAAmuB,YAAAg4F,EAAAh4F,YACAnuB,GAmsMA+mG,GAAAqf,WA1pMA,SAAAA,EAAAtgF,EAAAq0E,EAAA3B,GAEA,IAAAx4G,EAAAu8G,GAAAz2E,EAAAykD,EAAAloG,UADA83H,EAAA3B,EAAAn2H,EAAA83H,GAGA,OADAn6G,EAAAmuB,YAAAi4F,EAAAj4F,YACAnuB,GAupMA+mG,GAAA39F,YACA29F,GAAAnhH,YACAmhH,GAAAqc,gBACArc,GAAAv8D,SACAu8D,GAAA1oD,SACA0oD,GAAA0X,cACA1X,GAAA2X,gBACA3X,GAAA4X,kBACA5X,GAAAsf,KA/xSA,SAAAlnG,EAAA19B,EAAA+2H,GACA,IAAAtzH,EAAA,MAAAi6B,EAAA,EAAAA,EAAAj6B,OACA,OAAAA,EAIAuvH,GAAAt1F,GADA19B,EAAA+2H,GAAA/2H,IAAAY,EAAA,EAAA85H,GAAA16H,IACA,IAAAA,EAAAyD,GAHA,IA6xSA6hH,GAAAuf,UA9vSA,SAAAnnG,EAAA19B,EAAA+2H,GACA,IAAAtzH,EAAA,MAAAi6B,EAAA,EAAAA,EAAAj6B,OACA,OAAAA,EAKAuvH,GAAAt1F,EAAA,GADA19B,EAAAyD,GADAzD,EAAA+2H,GAAA/2H,IAAAY,EAAA,EAAA85H,GAAA16H,KAEA,IAAAA,GAJA,IA4vSAslH,GAAAwf,eAltSA,SAAApnG,EAAA00E,GACA,OAAA10E,KAAAj6B,OACA+wH,GAAA92F,EAAA6zF,GAAAnf,EAAA,UACA,IAgtSAkT,GAAAyf,UA1qSA,SAAArnG,EAAA00E,GACA,OAAA10E,KAAAj6B,OACA+wH,GAAA92F,EAAA6zF,GAAAnf,EAAA,OACA,IAwqSAkT,GAAAv9G,KAxoSA,SAAA21B,EAAAl+B,EAAAwN,EAAAkU,GACA,IAAAzd,EAAA,MAAAi6B,EAAA,EAAAA,EAAAj6B,OACA,OAAAA,GAGAuJ,GAAA,iBAAAA,GAAAgqH,GAAAt5F,EAAAl+B,EAAAwN,KACAA,EAAA,EACAkU,EAAAzd,GA/tIA,SAAAi6B,EAAAl+B,EAAAwN,EAAAkU,GACA,IAAAzd,EAAAi6B,EAAAj6B,OAWA,KATAuJ,EAAA0tH,GAAA1tH,IACA,IACAA,KAAAvJ,EAAA,EAAAA,EAAAuJ,IAEAkU,MAAAtgB,GAAAsgB,EAAAzd,IAAAi3H,GAAAx5G,IACA,IACAA,GAAAzd,GAEAyd,EAAAlU,EAAAkU,EAAA,EAAAigH,GAAAjgH,GACAlU,EAAAkU,GACAwc,EAAA1wB,KAAAxN,EAEA,OAAAk+B,EAktIAsnG,CAAAtnG,EAAAl+B,EAAAwN,EAAAkU,IANA,IAsoSAokG,GAAAr1F,OAxtOA,SAAA8iC,EAAAq/C,GAEA,OADA/wF,GAAA0xC,GAAAs/C,GAAAwZ,IACA94D,EAAAw+D,GAAAnf,EAAA,KAutOAkT,GAAA2f,QApoOA,SAAAlyE,EAAAg/C,GACA,OAAA+Z,GAAA1gH,GAAA2nD,EAAAg/C,GAAA,IAooOAuT,GAAA4f,YA7mOA,SAAAnyE,EAAAg/C,GACA,OAAA+Z,GAAA1gH,GAAA2nD,EAAAg/C,GAAArI,IA6mOA4b,GAAA6f,aArlOA,SAAApyE,EAAAg/C,EAAA5sD,GAEA,OADAA,MAAAvkD,EAAA,EAAA85H,GAAAv1E,GACA2mE,GAAA1gH,GAAA2nD,EAAAg/C,GAAA5sD,IAolOAmgE,GAAAmW,WACAnW,GAAA8f,YAhgSA,SAAA1nG,GAEA,OADA,MAAAA,KAAAj6B,OACAqoH,GAAApuF,EAAAgsE,GAAA,IA+/RA4b,GAAA+f,aAx+RA,SAAA3nG,EAAAynB,GAEA,OADA,MAAAznB,KAAAj6B,OAKAqoH,GAAApuF,EADAynB,MAAAvkD,EAAA,EAAA85H,GAAAv1E,IAFA,IAs+RAmgE,GAAA7tF,KAv7LA,SAAA4sB,GACA,OAAAy2E,GAAAz2E,EAAA8kD,IAu7LAmc,GAAA4d,QACA5d,GAAA6d,aACA7d,GAAAggB,UAp9RA,SAAAja,GAKA,IAJA,IAAA1jH,GAAA,EACAlE,EAAA,MAAA4nH,EAAA,EAAAA,EAAA5nH,OACA8a,EAAA,KAEA5W,EAAAlE,GAAA,CACA,IAAAk3H,EAAAtP,EAAA1jH,GACA4W,EAAAo8G,EAAA,IAAAA,EAAA,GAEA,OAAAp8G,GA48RA+mG,GAAAigB,UAz6GA,SAAAtlI,GACA,aAAAA,EAAA,GAAAmsH,GAAAnsH,EAAAiT,GAAAjT,KAy6GAqlH,GAAAkgB,YA/4GA,SAAAvlI,GACA,aAAAA,EAAA,GAAAmsH,GAAAnsH,EAAAypH,GAAAzpH,KA+4GAqlH,GAAA1jF,WACA0jF,GAAA17D,QAr4RA,SAAAlsB,GAEA,OADA,MAAAA,KAAAj6B,OACAuvH,GAAAt1F,EAAA,UAo4RA4nF,GAAA8X,gBACA9X,GAAA+X,kBACA/X,GAAAgY,oBACAhY,GAAAxzE,UACAwzE,GAAAuc,YACAvc,GAAAoZ,aACApZ,GAAAvT,YACAuT,GAAAqZ,SACArZ,GAAApyG,QACAoyG,GAAAoE,UACApE,GAAAl6G,OACAk6G,GAAAmgB,QAxpGA,SAAAxlI,EAAA8xG,GACA,IAAAxzF,EAAA,GAMA,OALAwzF,EAAAwf,GAAAxf,EAAA,GAEAwZ,GAAAtrH,EAAA,SAAAT,EAAAM,EAAAG,GACAgoH,GAAA1pG,EAAAwzF,EAAAvyG,EAAAM,EAAAG,GAAAT,KAEA+e,GAkpGA+mG,GAAAogB,UAnnGA,SAAAzlI,EAAA8xG,GACA,IAAAxzF,EAAA,GAMA,OALAwzF,EAAAwf,GAAAxf,EAAA,GAEAwZ,GAAAtrH,EAAA,SAAAT,EAAAM,EAAAG,GACAgoH,GAAA1pG,EAAAze,EAAAiyG,EAAAvyG,EAAAM,EAAAG,MAEAse,GA6mGA+mG,GAAA17E,QAlgCA,SAAAprB,GACA,OAAAqxG,GAAAhH,GAAArqG,EAAA6pF,KAkgCAid,GAAAqgB,gBAr+BA,SAAAtgD,EAAAoqC,GACA,OAAAG,GAAAvqC,EAAAwjC,GAAA4G,EAAApnB,KAq+BAid,GAAAsX,WACAtX,GAAA36E,SACA26E,GAAAsc,aACAtc,GAAAnuG,UACAmuG,GAAA8d,YACA9d,GAAA91B,SACA81B,GAAApoG,UACAooG,GAAAsgB,OA9yBA,SAAA5lI,GAEA,OADAA,EAAA06H,GAAA16H,GACAuyH,GAAA,SAAAl9G,GACA,OAAA87G,GAAA97G,EAAArV,MA4yBAslH,GAAAyc,QACAzc,GAAAugB,OAj/FA,SAAA5lI,EAAAmyG,GACA,OAAA6vB,GAAAhiI,EAAAid,GAAAq0G,GAAAnf,MAi/FAkT,GAAApnF,KA31LA,SAAAmmB,GACA,OAAA0P,GAAA,EAAA1P,IA21LAihE,GAAAwgB,QAl2NA,SAAA/yE,EAAAs+D,EAAAC,EAAAyF,GACA,aAAAhkE,EACA,IAEA1xC,GAAAgwG,KACAA,EAAA,MAAAA,EAAA,IAAAA,IAGAhwG,GADAiwG,EAAAyF,EAAAn2H,EAAA0wH,KAEAA,EAAA,MAAAA,EAAA,IAAAA,IAEAF,GAAAr+D,EAAAs+D,EAAAC,KAw1NAhM,GAAA+d,QACA/d,GAAAgb,YACAhb,GAAAge,aACAhe,GAAAie,YACAje,GAAAmb,WACAnb,GAAAob,gBACApb,GAAAsZ,aACAtZ,GAAAxD,QACAwD,GAAA2c,UACA3c,GAAAplH,YACAolH,GAAAygB,WA/rBA,SAAA9lI,GACA,gBAAAolF,GACA,aAAAplF,EAAAW,EAAAyrH,GAAApsH,EAAAolF,KA8rBAigC,GAAAiY,QACAjY,GAAAkY,WACAlY,GAAA0gB,UA7pRA,SAAAtoG,EAAAlkB,EAAAu4F,GACA,OAAAr0E,KAAAj6B,QAAA+V,KAAA/V,OACAyuH,GAAAx0F,EAAAlkB,EAAA+3G,GAAAxf,EAAA,IACAr0E,GA2pRA4nF,GAAA2gB,YAjoRA,SAAAvoG,EAAAlkB,EAAAk5F,GACA,OAAAh1E,KAAAj6B,QAAA+V,KAAA/V,OACAyuH,GAAAx0F,EAAAlkB,EAAA5Y,EAAA8xG,GACAh1E,GA+nRA4nF,GAAAmY,UACAnY,GAAA96F,SACA86F,GAAAme,cACAne,GAAAqb,SACArb,GAAAvgF,OArtNA,SAAAguB,EAAAq/C,GAEA,OADA/wF,GAAA0xC,GAAAs/C,GAAAwZ,IACA94D,EAAA71C,GAAAq0G,GAAAnf,EAAA,MAotNAkT,GAAAthE,OAlkRA,SAAAtmB,EAAA00E,GACA,IAAA7zF,EAAA,GACA,IAAAmf,MAAAj6B,OACA,OAAA8a,EAEA,IAAA5W,GAAA,EACAyqH,EAAA,GACA3uH,EAAAi6B,EAAAj6B,OAGA,IADA2uG,EAAAmf,GAAAnf,EAAA,KACAzqG,EAAAlE,GAAA,CACA,IAAAjE,EAAAk+B,EAAA/1B,GACAyqG,EAAA5yG,EAAAmI,EAAA+1B,KACAnf,EAAA/a,KAAAhE,GACA4yH,EAAA5uH,KAAAmE,IAIA,OADAwqH,GAAAz0F,EAAA00F,GACA7zG,GAijRA+mG,GAAA4gB,KAhsLA,SAAA7hF,EAAAr3C,GACA,sBAAAq3C,EACA,UAAAt4B,GAAAk8E,GAGA,OAAAsqB,GAAAluE,EADAr3C,MAAApM,EAAAoM,EAAA0tH,GAAA1tH,KA6rLAs4G,GAAAlgG,WACAkgG,GAAA6gB,WA7qNA,SAAApzE,EAAA/yD,EAAA+2H,GAOA,OALA/2H,GADA+2H,EAAAC,GAAAjkE,EAAA/yD,EAAA+2H,GAAA/2H,IAAAY,GACA,EAEA85H,GAAA16H,IAEAqhB,GAAA0xC,GAAA40D,GAAAgL,IACA5/D,EAAA/yD,IAuqNAslH,GAAAp0G,IAr4FA,SAAAjR,EAAAolF,EAAA7lF,GACA,aAAAS,IAAAgyH,GAAAhyH,EAAAolF,EAAA7lF,IAq4FA8lH,GAAA8gB,QA12FA,SAAAnmI,EAAAolF,EAAA7lF,EAAAupH,GAEA,OADAA,EAAA,mBAAAA,IAAAnoH,EACA,MAAAX,IAAAgyH,GAAAhyH,EAAAolF,EAAA7lF,EAAAupH,IAy2FAzD,GAAA+gB,QAvpNA,SAAAtzE,GAEA,OADA1xC,GAAA0xC,GAAAg1D,GAAAgL,IACAhgE,IAspNAuyD,GAAA1mG,MAzgRA,SAAA8e,EAAA1wB,EAAAkU,GACA,IAAAzd,EAAA,MAAAi6B,EAAA,EAAAA,EAAAj6B,OACA,OAAAA,GAGAyd,GAAA,iBAAAA,GAAA81G,GAAAt5F,EAAA1wB,EAAAkU,IACAlU,EAAA,EACAkU,EAAAzd,IAGAuJ,EAAA,MAAAA,EAAA,EAAA0tH,GAAA1tH,GACAkU,MAAAtgB,EAAA6C,EAAAi3H,GAAAx5G,IAEA8xG,GAAAt1F,EAAA1wB,EAAAkU,IAVA,IAugRAokG,GAAAuZ,UACAvZ,GAAAghB,WAj1QA,SAAA5oG,GACA,OAAAA,KAAAj6B,OACAuwH,GAAAt2F,GACA,IA+0QA4nF,GAAAihB,aA5zQA,SAAA7oG,EAAAq0E,GACA,OAAAr0E,KAAAj6B,OACAuwH,GAAAt2F,EAAA6zF,GAAAxf,EAAA,IACA,IA0zQAuT,GAAAj1F,MA1/DA,SAAAhX,EAAAmtH,EAAAC,GAKA,OAJAA,GAAA,iBAAAA,GAAAzP,GAAA39G,EAAAmtH,EAAAC,KACAD,EAAAC,EAAA7lI,IAEA6lI,MAAA7lI,EAAAkpG,EAAA28B,IAAA,IAIAptH,EAAAsF,GAAAtF,MAEA,iBAAAmtH,GACA,MAAAA,IAAAvyD,GAAAuyD,OAEAA,EAAAtS,GAAAsS,KACA5lB,GAAAvnG,GACAg8G,GAAAjU,GAAA/nG,GAAA,EAAAotH,GAGAptH,EAAAgX,MAAAm2G,EAAAC,GAZA,IAq/DAnhB,GAAAohB,OAjqLA,SAAAriF,EAAAr3C,GACA,sBAAAq3C,EACA,UAAAt4B,GAAAk8E,GAGA,OADAj7F,EAAA,MAAAA,EAAA,EAAAg3G,GAAA0W,GAAA1tH,GAAA,GACAulH,GAAA,SAAAl9G,GACA,IAAAqoB,EAAAroB,EAAArI,GACAmvH,EAAA9G,GAAAhgH,EAAA,EAAArI,GAKA,OAHA0wB,GACAk1E,GAAAupB,EAAAz+F,GAEA15B,GAAAqgD,EAAA39C,KAAAy1H,MAspLA7W,GAAAqhB,KA3yQA,SAAAjpG,GACA,IAAAj6B,EAAA,MAAAi6B,EAAA,EAAAA,EAAAj6B,OACA,OAAAA,EAAAuvH,GAAAt1F,EAAA,EAAAj6B,GAAA,IA0yQA6hH,GAAAshB,KA9wQA,SAAAlpG,EAAA19B,EAAA+2H,GACA,OAAAr5F,KAAAj6B,OAIAuvH,GAAAt1F,EAAA,GADA19B,EAAA+2H,GAAA/2H,IAAAY,EAAA,EAAA85H,GAAA16H,IACA,IAAAA,GAHA,IA6wQAslH,GAAAuhB,UA9uQA,SAAAnpG,EAAA19B,EAAA+2H,GACA,IAAAtzH,EAAA,MAAAi6B,EAAA,EAAAA,EAAAj6B,OACA,OAAAA,EAKAuvH,GAAAt1F,GADA19B,EAAAyD,GADAzD,EAAA+2H,GAAA/2H,IAAAY,EAAA,EAAA85H,GAAA16H,KAEA,IAAAA,EAAAyD,GAJA,IA4uQA6hH,GAAAwhB,eAlsQA,SAAAppG,EAAA00E,GACA,OAAA10E,KAAAj6B,OACA+wH,GAAA92F,EAAA6zF,GAAAnf,EAAA,UACA,IAgsQAkT,GAAAyhB,UA1pQA,SAAArpG,EAAA00E,GACA,OAAA10E,KAAAj6B,OACA+wH,GAAA92F,EAAA6zF,GAAAnf,EAAA,IACA,IAwpQAkT,GAAA0hB,IA7rPA,SAAAxnI,EAAAuuC,GAEA,OADAA,EAAAvuC,GACAA,GA4rPA8lH,GAAA2hB,SA5mLA,SAAA5iF,EAAAwC,EAAAl7C,GACA,IAAA0zH,GAAA,EACAjI,GAAA,EAEA,sBAAA/yE,EACA,UAAAt4B,GAAAk8E,GAMA,OAJAn+D,GAAAn+B,KACA0zH,EAAA,YAAA1zH,MAAA0zH,UACAjI,EAAA,aAAAzrH,MAAAyrH,YAEAzvG,GAAA08B,EAAAwC,EAAA,CACAw4E,UACAJ,QAAAp4E,EACAuwE,cA+lLA9R,GAAA0S,QACA1S,GAAAr1E,WACAq1E,GAAA4c,WACA5c,GAAA6c,aACA7c,GAAA4hB,OArfA,SAAA1nI,GACA,OAAA6hB,GAAA7hB,GACAmzG,GAAAnzG,EAAA+sH,IAEAX,GAAApsH,GAAA,CAAAA,GAAAqoH,GAAAsN,GAAAx2G,GAAAnf,MAkfA8lH,GAAA2L,iBACA3L,GAAAhvF,UAxyFA,SAAAr2B,EAAA8xG,EAAAC,GACA,IAAAkV,EAAA7lG,GAAAphB,GACAknI,EAAAjgB,GAAAl9E,GAAA/pC,IAAA4xG,GAAA5xG,GAGA,GADA8xG,EAAAwf,GAAAxf,EAAA,GACA,MAAAC,EAAA,CACA,IAAA1gE,EAAArxC,KAAAgqC,YAEA+nE,EADAm1B,EACAjgB,EAAA,IAAA51E,EAAA,GAEAxH,GAAA7pC,IACAioB,GAAAopB,GAAAq0E,GAAA9C,GAAA5iH,IAGA,GAMA,OAHAknI,EAAAl1B,GAAAsZ,IAAAtrH,EAAA,SAAAT,EAAAmI,EAAA1H,GACA,OAAA8xG,EAAAC,EAAAxyG,EAAAmI,EAAA1H,KAEA+xG,GAqxFAsT,GAAA8hB,MAnlLA,SAAA/iF,GACA,OAAAo0E,GAAAp0E,EAAA,IAmlLAihE,GAAAoY,SACApY,GAAAqY,WACArY,GAAAsY,aACAtY,GAAA+hB,KAlkQA,SAAA3pG,GACA,OAAAA,KAAAj6B,OAAA0wH,GAAAz2F,GAAA,IAkkQA4nF,GAAAgiB,OAxiQA,SAAA5pG,EAAAq0E,GACA,OAAAr0E,KAAAj6B,OAAA0wH,GAAAz2F,EAAA6zF,GAAAxf,EAAA,QAwiQAuT,GAAAiiB,SAjhQA,SAAA7pG,EAAAg1E,GAEA,OADAA,EAAA,mBAAAA,IAAA9xG,EACA88B,KAAAj6B,OAAA0wH,GAAAz2F,EAAA98B,EAAA8xG,GAAA,IAghQA4S,GAAAkiB,MA9vFA,SAAAvnI,EAAAolF,GACA,aAAAplF,GAAAoyH,GAAApyH,EAAAolF,IA8vFAigC,GAAAuY,SACAvY,GAAAyY,aACAzY,GAAAn5G,OAluFA,SAAAlM,EAAAolF,EAAAkvC,GACA,aAAAt0H,IAAAq0H,GAAAr0H,EAAAolF,EAAA6vC,GAAAX,KAkuFAjP,GAAAmiB,WAvsFA,SAAAxnI,EAAAolF,EAAAkvC,EAAAxL,GAEA,OADAA,EAAA,mBAAAA,IAAAnoH,EACA,MAAAX,IAAAq0H,GAAAr0H,EAAAolF,EAAA6vC,GAAAX,GAAAxL,IAssFAzD,GAAA9rG,UACA8rG,GAAAoiB,SA9oFA,SAAAznI,GACA,aAAAA,EAAA,GAAAg0G,GAAAh0G,EAAAypH,GAAAzpH,KA8oFAqlH,GAAA0Y,WACA1Y,GAAAgS,SACAhS,GAAAz5D,KAzkLA,SAAArsD,EAAAy4H,GACA,OAAAwI,GAAAvL,GAAA+C,GAAAz4H,IAykLA8lH,GAAA2Y,OACA3Y,GAAA4Y,SACA5Y,GAAA6Y,WACA7Y,GAAA8Y,OACA9Y,GAAAqiB,UA10PA,SAAAz7G,EAAA1S,GACA,OAAAs7G,GAAA5oG,GAAA,GAAA1S,GAAA,GAAA0uG,KA00PA5C,GAAAsiB,cAxzPA,SAAA17G,EAAA1S,GACA,OAAAs7G,GAAA5oG,GAAA,GAAA1S,GAAA,GAAAy4G,KAwzPA3M,GAAA+Y,WAGA/Y,GAAAmB,QAAAyb,GACA5c,GAAAuiB,UAAA1F,GACA7c,GAAAj/G,OAAAg7H,GACA/b,GAAAwiB,WAAAxG,GAGA9xC,GAAA81B,OAKAA,GAAA/iE,OACA+iE,GAAAyd,WACAzd,GAAA59D,aACA49D,GAAA7wC,cACA6wC,GAAAxiG,QACAwiG,GAAAyiB,MAlpFA,SAAAhvC,EAAA4vB,EAAAC,GAaA,OAZAA,IAAAhoH,IACAgoH,EAAAD,EACAA,EAAA/nH,GAEAgoH,IAAAhoH,IAEAgoH,GADAA,EAAAz0C,GAAAy0C,KACAA,IAAA,GAEAD,IAAA/nH,IAEA+nH,GADAA,EAAAx0C,GAAAw0C,KACAA,IAAA,GAEAb,GAAA3zC,GAAA4kB,GAAA4vB,EAAAC,IAsoFAtD,GAAAhnG,MA3hLA,SAAA9e,GACA,OAAAqpH,GAAArpH,EAAA+oG,IA2hLA+c,GAAA0iB,UAl+KA,SAAAxoI,GACA,OAAAqpH,GAAArpH,EAAA6oG,EAAAE,IAk+KA+c,GAAA2iB,cAn8KA,SAAAzoI,EAAAupH,GAEA,OAAAF,GAAArpH,EAAA6oG,EAAAE,EADAwgB,EAAA,mBAAAA,IAAAnoH,IAm8KA0kH,GAAA4iB,UA3/KA,SAAA1oI,EAAAupH,GAEA,OAAAF,GAAArpH,EAAA+oG,EADAwgB,EAAA,mBAAAA,IAAAnoH,IA2/KA0kH,GAAA6iB,WAx6KA,SAAAloI,EAAAue,GACA,aAAAA,GAAAksG,GAAAzqH,EAAAue,EAAAtL,GAAAsL,KAw6KA8mG,GAAAiS,UACAjS,GAAA8iB,UAjwCA,SAAA5oI,EAAAuhD,GACA,aAAAvhD,QAAAuhD,EAAAvhD,GAiwCA8lH,GAAAse,UACAte,GAAA+iB,SAv7EA,SAAAhvH,EAAAoF,EAAA1V,GACAsQ,EAAAsF,GAAAtF,GACAoF,EAAAy1G,GAAAz1G,GAEA,IAAAhb,EAAA4V,EAAA5V,OAKAyd,EAJAnY,MAAAnI,EACA6C,EACAqkH,GAAA4S,GAAA3xH,GAAA,EAAAtF,GAIA,OADAsF,GAAA0V,EAAAhb,SACA,GAAA4V,EAAAuF,MAAA7V,EAAAmY,IAAAzC,GA66EA6mG,GAAA70E,MACA60E,GAAArrE,OA/4EA,SAAA5gC,GAEA,OADAA,EAAAsF,GAAAtF,KACAmzF,GAAAtoG,KAAAmV,GACAA,EAAAzJ,QAAA08F,GAAAgU,IACAjnG,GA44EAisG,GAAAgjB,aA13EA,SAAAjvH,GAEA,OADAA,EAAAsF,GAAAtF,KACA2zF,GAAA9oG,KAAAmV,GACAA,EAAAzJ,QAAAm9F,GAAA,QACA1zF,GAu3EAisG,GAAA9vC,MAr5OA,SAAAziB,EAAAq/C,EAAA2kB,GACA,IAAA1yE,EAAAhjC,GAAA0xC,GAAAo/C,GAAAuZ,GAIA,OAHAqL,GAAAC,GAAAjkE,EAAAq/C,EAAA2kB,KACA3kB,EAAAxxG,GAEAyjD,EAAA0O,EAAAw+D,GAAAnf,EAAA,KAi5OAkT,GAAA/zF,QACA+zF,GAAAzzF,aACAyzF,GAAAijB,QAnvHA,SAAAtoI,EAAAmyG,GACA,OAAAe,GAAAlzG,EAAAsxH,GAAAnf,EAAA,GAAAmZ,KAmvHAjG,GAAAkZ,YACAlZ,GAAA6X,iBACA7X,GAAAkjB,YA/sHA,SAAAvoI,EAAAmyG,GACA,OAAAe,GAAAlzG,EAAAsxH,GAAAnf,EAAA,GAAAqZ,KA+sHAnG,GAAAnzG,SACAmzG,GAAAtzF,WACAszF,GAAAmZ,gBACAnZ,GAAAmjB,MAnrHA,SAAAxoI,EAAA8xG,GACA,aAAA9xG,EACAA,EACAgsH,GAAAhsH,EAAAsxH,GAAAxf,EAAA,GAAA2X,KAirHApE,GAAAojB,WAppHA,SAAAzoI,EAAA8xG,GACA,aAAA9xG,EACAA,EACAksH,GAAAlsH,EAAAsxH,GAAAxf,EAAA,GAAA2X,KAkpHApE,GAAAqjB,OAnnHA,SAAA1oI,EAAA8xG,GACA,OAAA9xG,GAAAsrH,GAAAtrH,EAAAsxH,GAAAxf,EAAA,KAmnHAuT,GAAAsjB,YAtlHA,SAAA3oI,EAAA8xG,GACA,OAAA9xG,GAAAwrH,GAAAxrH,EAAAsxH,GAAAxf,EAAA,KAslHAuT,GAAAlmH,OACAkmH,GAAA9nE,MACA8nE,GAAAsb,OACAtb,GAAA/oE,IAv+GA,SAAAt8C,EAAAolF,GACA,aAAAplF,GAAA27H,GAAA37H,EAAAolF,EAAA6nC,KAu+GA5H,GAAAmL,SACAnL,GAAA71E,QACA61E,GAAApwC,YACAowC,GAAAp5E,SAznOA,SAAA6mB,EAAAvzD,EAAA8zG,EAAAyjB,GACAhkE,EAAA/iB,GAAA+iB,KAAAv5C,GAAAu5C,GACAugD,MAAAyjB,EAAA2D,GAAApnB,GAAA,EAEA,IAAA7vG,EAAAsvD,EAAAtvD,OAIA,OAHA6vG,EAAA,IACAA,EAAA0Q,GAAAvgH,EAAA6vG,EAAA,IAEAytB,GAAAhuE,GACAugD,GAAA7vG,GAAAsvD,EAAA3xD,QAAA5B,EAAA8zG,IAAA,IACA7vG,GAAA+uG,GAAAz/C,EAAAvzD,EAAA8zG,IAAA,GAgnOAgS,GAAAlkH,QAvjSA,SAAAs8B,EAAAl+B,EAAA8zG,GACA,IAAA7vG,EAAA,MAAAi6B,EAAA,EAAAA,EAAAj6B,OACA,IAAAA,EACA,SAEA,IAAAkE,EAAA,MAAA2rG,EAAA,EAAAonB,GAAApnB,GAIA,OAHA3rG,EAAA,IACAA,EAAAq8G,GAAAvgH,EAAAkE,EAAA,IAEA6qG,GAAA90E,EAAAl+B,EAAAmI,IA+iSA29G,GAAAr9G,QAhoFA,SAAA8wF,EAAA/rF,EAAAkU,GASA,OARAlU,EAAAgtH,GAAAhtH,GACAkU,IAAAtgB,GACAsgB,EAAAlU,EACAA,EAAA,GAEAkU,EAAA84G,GAAA94G,GAtqVA,SAAA63E,EAAA/rF,EAAAkU,GACA,OAAA63E,GAAAkrB,GAAAj3G,EAAAkU,IAAA63E,EAAAirB,GAAAh3G,EAAAkU,GAwqVA2nH,CADA9vC,EAAA5kB,GAAA4kB,GACA/rF,EAAAkU,IAwnFAokG,GAAAwc,UACAxc,GAAA8B,eACA9B,GAAAjkG,WACAikG,GAAAh2C,iBACAg2C,GAAAt1E,eACAs1E,GAAA0L,qBACA1L,GAAAwjB,UApuKA,SAAAtpI,GACA,WAAAA,IAAA,IAAAA,GACA+lH,GAAA/lH,IAAAmtH,GAAAntH,IAAA6qG,GAmuKAib,GAAAt7E,YACAs7E,GAAAhU,UACAgU,GAAAyjB,UA3qKA,SAAAvpI,GACA,OAAA+lH,GAAA/lH,IAAA,IAAAA,EAAA6oB,WAAA0oB,GAAAvxC,IA2qKA8lH,GAAA0jB,QAvoKA,SAAAxpI,GACA,SAAAA,EACA,SAEA,GAAAwwC,GAAAxwC,KACA6hB,GAAA7hB,IAAA,iBAAAA,GAAA,mBAAAA,EAAAmxC,QACA3G,GAAAxqC,IAAAqyG,GAAAryG,IAAA4nH,GAAA5nH,IACA,OAAAA,EAAAiE,OAEA,IAAAw/B,EAAAmmF,GAAA5pH,GACA,GAAAyjC,GAAA0nE,GAAA1nE,GAAAgoE,GACA,OAAAzrG,EAAAqhB,KAEA,GAAAkvG,GAAAvwH,GACA,OAAAswH,GAAAtwH,GAAAiE,OAEA,QAAA3D,KAAAN,EACA,GAAAY,GAAA1B,KAAAc,EAAAM,GACA,SAGA,UAmnKAwlH,GAAA2jB,QAplKA,SAAAzpI,EAAAytH,GACA,OAAAY,GAAAruH,EAAAytH,IAolKA3H,GAAA4jB,YAjjKA,SAAA1pI,EAAAytH,EAAAlE,GAEA,IAAAxqG,GADAwqG,EAAA,mBAAAA,IAAAnoH,GACAmoH,EAAAvpH,EAAAytH,GAAArsH,EACA,OAAA2d,IAAA3d,EAAAitH,GAAAruH,EAAAytH,EAAArsH,EAAAmoH,KAAAxqG,GA+iKA+mG,GAAAub,WACAvb,GAAA9xF,SAx/JA,SAAAh0B,GACA,uBAAAA,GAAAqkH,GAAArkH,IAw/JA8lH,GAAAp9F,cACAo9F,GAAAwb,aACAxb,GAAAwW,YACAxW,GAAA9T,SACA8T,GAAA6jB,QAxzJA,SAAAlpI,EAAAue,GACA,OAAAve,IAAAue,GAAA8wG,GAAArvH,EAAAue,EAAA6xG,GAAA7xG,KAwzJA8mG,GAAA8jB,YArxJA,SAAAnpI,EAAAue,EAAAuqG,GAEA,OADAA,EAAA,mBAAAA,IAAAnoH,EACA0uH,GAAArvH,EAAAue,EAAA6xG,GAAA7xG,GAAAuqG,IAoxJAzD,GAAAx5G,MArvJA,SAAAtM,GAIA,OAAAoiB,GAAApiB,WAkvJA8lH,GAAAttC,SArtJA,SAAAx4E,GACA,GAAAy8H,GAAAz8H,GACA,UAAA2U,GAAA6zF,GAEA,OAAA0nB,GAAAlwH,IAktJA8lH,GAAA+jB,MAtqJA,SAAA7pI,GACA,aAAAA,GAsqJA8lH,GAAAgkB,OA/rJA,SAAA9pI,GACA,cAAAA,GA+rJA8lH,GAAA1jG,YACA0jG,GAAAx7E,YACAw7E,GAAAC,gBACAD,GAAAv0E,iBACAu0E,GAAArxC,YACAqxC,GAAAikB,cAnjJA,SAAA/pI,GACA,OAAAshI,GAAAthI,QAAAmqG,GAAAnqG,GAAAmqG,GAmjJA2b,GAAA3T,SACA2T,GAAAyb,YACAzb,GAAAsG,YACAtG,GAAAzT,gBACAyT,GAAAp2C,YAj9IA,SAAA1vE,GACA,OAAAA,IAAAoB,GAi9IA0kH,GAAAkkB,UA77IA,SAAAhqI,GACA,OAAA+lH,GAAA/lH,IAAA4pH,GAAA5pH,IAAA6rG,IA67IAia,GAAAmkB,UAz6IA,SAAAjqI,GACA,OAAA+lH,GAAA/lH,IAAAmtH,GAAAntH,IAAA8rG,IAy6IAga,GAAAr6G,KAl9RA,SAAAyyB,EAAA8oG,GACA,aAAA9oG,EAAA,GAAAomF,GAAAplH,KAAAg/B,EAAA8oG,IAk9RAlhB,GAAAgd,aACAhd,GAAA50E,QACA40E,GAAAokB,YAz6RA,SAAAhsG,EAAAl+B,EAAA8zG,GACA,IAAA7vG,EAAA,MAAAi6B,EAAA,EAAAA,EAAAj6B,OACA,IAAAA,EACA,SAEA,IAAAkE,EAAAlE,EAKA,OAJA6vG,IAAA1yG,IAEA+G,GADAA,EAAA+yH,GAAApnB,IACA,EAAA0Q,GAAAvgH,EAAAkE,EAAA,GAAAs8G,GAAAt8G,EAAAlE,EAAA,IAEAjE,KAltMA,SAAAk+B,EAAAl+B,EAAA8zG,GAEA,IADA,IAAA3rG,EAAA2rG,EAAA,EACA3rG,KACA,GAAA+1B,EAAA/1B,KAAAnI,EACA,OAAAmI,EAGA,OAAAA,EA4sMAgiI,CAAAjsG,EAAAl+B,EAAAmI,GACA0rG,GAAA31E,EAAA+1E,GAAA9rG,GAAA,IA85RA29G,GAAAid,aACAjd,GAAAkd,cACAld,GAAA/nE,MACA+nE,GAAA0b,OACA1b,GAAAjgH,IAhfA,SAAAq4B,GACA,OAAAA,KAAAj6B,OACAkoH,GAAAjuF,EAAAw3C,GAAA83C,IACApsH,GA8eA0kH,GAAAskB,MApdA,SAAAlsG,EAAAq0E,GACA,OAAAr0E,KAAAj6B,OACAkoH,GAAAjuF,EAAA6zF,GAAAxf,EAAA,GAAAib,IACApsH,GAkdA0kH,GAAAukB,KAjcA,SAAAnsG,GACA,OAAAi2E,GAAAj2E,EAAAw3C,KAicAowC,GAAAwkB,OAvaA,SAAApsG,EAAAq0E,GACA,OAAA4B,GAAAj2E,EAAA6zF,GAAAxf,EAAA,KAuaAuT,GAAApgH,IAlZA,SAAAw4B,GACA,OAAAA,KAAAj6B,OACAkoH,GAAAjuF,EAAAw3C,GAAAi7C,IACAvvH,GAgZA0kH,GAAAykB,MAtXA,SAAArsG,EAAAq0E,GACA,OAAAr0E,KAAAj6B,OACAkoH,GAAAjuF,EAAA6zF,GAAAxf,EAAA,GAAAoe,IACAvvH,GAoXA0kH,GAAAqW,aACArW,GAAA4W,aACA5W,GAAA0kB,WAztBA,WACA,UAytBA1kB,GAAA2kB,WAzsBA,WACA,UAysBA3kB,GAAA4kB,SAzrBA,WACA,UAyrBA5kB,GAAAye,YACAze,GAAA6kB,IAt5RA,SAAAzsG,EAAA19B,GACA,OAAA09B,KAAAj6B,OAAA0tH,GAAAzzF,EAAAg9F,GAAA16H,IAAAY,GAs5RA0kH,GAAA56C,WAvhCA,WAIA,OAHAhqE,GAAAi/B,IAAAj5B,OACAhG,GAAAi/B,EAAA6iF,IAEA97G,MAohCA4+G,GAAA74G,QACA64G,GAAAz1D,OACAy1D,GAAA8kB,IA/2EA,SAAA/wH,EAAA5V,EAAAq2H,GACAzgH,EAAAsF,GAAAtF,GAGA,IAAAgxH,GAFA5mI,EAAAi3H,GAAAj3H,IAEAy9G,GAAA7nG,GAAA,EACA,IAAA5V,GAAA4mI,GAAA5mI,EACA,OAAA4V,EAEA,IAAAg6G,GAAA5vH,EAAA4mI,GAAA,EACA,OACAxQ,GAAApW,GAAA4P,GAAAyG,GACAzgH,EACAwgH,GAAArW,GAAA6P,GAAAyG,IAo2EAxU,GAAAglB,OAz0EA,SAAAjxH,EAAA5V,EAAAq2H,GACAzgH,EAAAsF,GAAAtF,GAGA,IAAAgxH,GAFA5mI,EAAAi3H,GAAAj3H,IAEAy9G,GAAA7nG,GAAA,EACA,OAAA5V,GAAA4mI,EAAA5mI,EACA4V,EAAAwgH,GAAAp2H,EAAA4mI,EAAAvQ,GACAzgH,GAm0EAisG,GAAAilB,SAzyEA,SAAAlxH,EAAA5V,EAAAq2H,GACAzgH,EAAAsF,GAAAtF,GAGA,IAAAgxH,GAFA5mI,EAAAi3H,GAAAj3H,IAEAy9G,GAAA7nG,GAAA,EACA,OAAA5V,GAAA4mI,EAAA5mI,EACAo2H,GAAAp2H,EAAA4mI,EAAAvQ,GAAAzgH,EACAA,GAmyEAisG,GAAA/jH,SAxwEA,SAAA8X,EAAAmxH,EAAAzT,GAMA,OALAA,GAAA,MAAAyT,EACAA,EAAA,EACOA,IACPA,MAEArmB,GAAAxlG,GAAAtF,GAAAzJ,QAAAs9F,GAAA,IAAAs9B,GAAA,IAmwEAllB,GAAAr0E,OAxpFA,SAAA03E,EAAAC,EAAA6hB,GA2BA,GA1BAA,GAAA,kBAAAA,GAAAzT,GAAArO,EAAAC,EAAA6hB,KACA7hB,EAAA6hB,EAAA7pI,GAEA6pI,IAAA7pI,IACA,kBAAAgoH,GACA6hB,EAAA7hB,EACAA,EAAAhoH,GAEA,kBAAA+nH,IACA8hB,EAAA9hB,EACAA,EAAA/nH,IAGA+nH,IAAA/nH,GAAAgoH,IAAAhoH,GACA+nH,EAAA,EACAC,EAAA,IAGAD,EAAAqR,GAAArR,GACAC,IAAAhoH,GACAgoH,EAAAD,EACAA,EAAA,GAEAC,EAAAoR,GAAApR,IAGAD,EAAAC,EAAA,CACA,IAAA7pE,EAAA4pE,EACAA,EAAAC,EACAA,EAAA7pE,EAEA,GAAA0rF,GAAA9hB,EAAA,GAAAC,EAAA,GACA,IAAA+T,EAAAvY,KACA,OAAAH,GAAA0E,EAAAgU,GAAA/T,EAAAD,EAAAjY,GAAA,QAAAisB,EAAA,IAAAl5H,OAAA,KAAAmlH,GAEA,OAAAlB,GAAAiB,EAAAC,IAqnFAtD,GAAAnyG,OAz8NA,SAAA4/C,EAAAg/C,EAAAC,GACA,IAAA3tD,EAAAhjC,GAAA0xC,GAAA8/C,GAAAiB,GACAhB,EAAAt+F,UAAA/Q,OAAA,EAEA,OAAA4gD,EAAA0O,EAAAw+D,GAAAxf,EAAA,GAAAC,EAAAc,EAAAwV,KAs8NAhD,GAAAolB,YA76NA,SAAA33E,EAAAg/C,EAAAC,GACA,IAAA3tD,EAAAhjC,GAAA0xC,GAAAggD,GAAAe,GACAhB,EAAAt+F,UAAA/Q,OAAA,EAEA,OAAA4gD,EAAA0O,EAAAw+D,GAAAxf,EAAA,GAAAC,EAAAc,EAAA0Y,KA06NAlG,GAAAqlB,OA7uEA,SAAAtxH,EAAArZ,EAAA+2H,GAMA,OAJA/2H,GADA+2H,EAAAC,GAAA39G,EAAArZ,EAAA+2H,GAAA/2H,IAAAY,GACA,EAEA85H,GAAA16H,GAEAsyH,GAAA3zG,GAAAtF,GAAArZ,IAwuEAslH,GAAA11G,QAltEA,WACA,IAAAyF,EAAAb,UACA6E,EAAAsF,GAAAtJ,EAAA,IAEA,OAAAA,EAAA5R,OAAA,EAAA4V,IAAAzJ,QAAAyF,EAAA,GAAAA,EAAA,KA+sEAiwG,GAAA/mG,OApmGA,SAAAte,EAAAolF,EAAAtkC,GAGA,IAAAp5C,GAAA,EACAlE,GAHA4hF,EAAAinC,GAAAjnC,EAAAplF,IAGAwD,OAOA,IAJAA,IACAA,EAAA,EACAxD,EAAAW,KAEA+G,EAAAlE,GAAA,CACA,IAAAjE,EAAA,MAAAS,EAAAW,EAAAX,EAAAssH,GAAAlnC,EAAA19E,KACAnI,IAAAoB,IACA+G,EAAAlE,EACAjE,EAAAuhD,GAEA9gD,EAAAioB,GAAA1oB,KAAAd,KAAAuB,GAAAT,EAEA,OAAAS,GAklGAqlH,GAAAnmG,SACAmmG,GAAAzD,eACAyD,GAAAslB,OAv3NA,SAAA73E,GAEA,OADA1xC,GAAA0xC,GAAA00D,GAAAiL,IACA3/D,IAs3NAuyD,GAAAzkG,KA5yNA,SAAAkyC,GACA,SAAAA,EACA,SAEA,GAAA/iB,GAAA+iB,GACA,OAAAguE,GAAAhuE,GAAAmuD,GAAAnuD,KAAAtvD,OAEA,IAAAw/B,EAAAmmF,GAAAr2D,GACA,OAAA9vB,GAAA0nE,GAAA1nE,GAAAgoE,GACAl4C,EAAAlyC,KAEAivG,GAAA/8D,GAAAtvD,QAkyNA6hH,GAAAmd,aACAnd,GAAAnzF,KA5vNA,SAAA4gC,EAAAq/C,EAAA2kB,GACA,IAAA1yE,EAAAhjC,GAAA0xC,GAAAigD,GAAAigB,GAIA,OAHA8D,GAAAC,GAAAjkE,EAAAq/C,EAAA2kB,KACA3kB,EAAAxxG,GAEAyjD,EAAA0O,EAAAw+D,GAAAnf,EAAA,KAwvNAkT,GAAAulB,YAzpRA,SAAAntG,EAAAl+B,GACA,OAAA0zH,GAAAx1F,EAAAl+B,IAypRA8lH,GAAAwlB,cA7nRA,SAAAptG,EAAAl+B,EAAAuyG,GACA,OAAAuhB,GAAA51F,EAAAl+B,EAAA+xH,GAAAxf,EAAA,KA6nRAuT,GAAAylB,cA1mRA,SAAArtG,EAAAl+B,GACA,IAAAiE,EAAA,MAAAi6B,EAAA,EAAAA,EAAAj6B,OACA,GAAAA,EAAA,CACA,IAAAkE,EAAAurH,GAAAx1F,EAAAl+B,GACA,GAAAmI,EAAAlE,GAAAgtC,GAAA/S,EAAA/1B,GAAAnI,GACA,OAAAmI,EAGA,UAmmRA29G,GAAA0lB,gBA9kRA,SAAAttG,EAAAl+B,GACA,OAAA0zH,GAAAx1F,EAAAl+B,GAAA,IA8kRA8lH,GAAA2lB,kBAljRA,SAAAvtG,EAAAl+B,EAAAuyG,GACA,OAAAuhB,GAAA51F,EAAAl+B,EAAA+xH,GAAAxf,EAAA,QAkjRAuT,GAAA4lB,kBA/hRA,SAAAxtG,EAAAl+B,GAEA,GADA,MAAAk+B,KAAAj6B,OACA,CACA,IAAAkE,EAAAurH,GAAAx1F,EAAAl+B,GAAA,KACA,GAAAixC,GAAA/S,EAAA/1B,GAAAnI,GACA,OAAAmI,EAGA,UAwhRA29G,GAAAod,aACApd,GAAA6lB,WAzmEA,SAAA9xH,EAAAoF,EAAA1V,GAOA,OANAsQ,EAAAsF,GAAAtF,GACAtQ,EAAA,MAAAA,EACA,EACA++G,GAAA4S,GAAA3xH,GAAA,EAAAsQ,EAAA5V,QAEAgb,EAAAy1G,GAAAz1G,GACApF,EAAAuF,MAAA7V,IAAA0V,EAAAhb,SAAAgb,GAmmEA6mG,GAAAn3F,YACAm3F,GAAAzjF,IAzUA,SAAAnE,GACA,OAAAA,KAAAj6B,OACAmwG,GAAAl2E,EAAAw3C,IACA,GAuUAowC,GAAA8lB,MA7SA,SAAA1tG,EAAAq0E,GACA,OAAAr0E,KAAAj6B,OACAmwG,GAAAl2E,EAAA6zF,GAAAxf,EAAA,IACA,GA2SAuT,GAAA+lB,SA3/DA,SAAAhyH,EAAA1N,EAAAorH,GAIA,IAAAh0D,EAAAuiD,GAAA2F,iBAEA8L,GAAAC,GAAA39G,EAAA1N,EAAAorH,KACAprH,EAAA/K,GAEAyY,EAAAsF,GAAAtF,GACA1N,EAAA21H,GAAA,GAA+B31H,EAAAo3D,EAAAs4D,IAE/B,IAIAiQ,EACAC,EALApgB,EAAAmW,GAAA,GAAmC31H,EAAAw/G,QAAApoD,EAAAooD,QAAAkQ,IACnCmQ,EAAAt4H,GAAAi4G,GACAsgB,EAAAx3B,GAAAkX,EAAAqgB,GAIA7jI,EAAA,EACAgpE,EAAAhlE,EAAAglE,aAAAs9B,GACAzvF,EAAA,WAGAktH,EAAAv3F,IACAxoC,EAAAsuC,QAAAg0D,IAAAzvF,OAAA,IACAmyD,EAAAnyD,OAAA,KACAmyD,IAAAg8B,GAAAc,GAAAQ,IAAAzvF,OAAA,KACA7S,EAAAg6E,UAAAsoB,IAAAzvF,OAAA,KACA,KAGAmtH,EAAA,kBACA,cAAAhgI,EACAA,EAAAggI,UACA,6BAAA37B,GAAA,KACA,KAEA32F,EAAAzJ,QAAA87H,EAAA,SAAA35G,EAAA65G,EAAAC,EAAAC,EAAAC,EAAAr3G,GAsBA,OArBAm3G,MAAAC,GAGAttH,GAAAnF,EAAAuF,MAAAjX,EAAA+sB,GAAA9kB,QAAAs+F,GAAAwS,IAGAkrB,IACAN,GAAA,EACA9sH,GAAA,YAAAotH,EAAA,UAEAG,IACAR,GAAA,EACA/sH,GAAA,OAAuButH,EAAA,eAEvBF,IACArtH,GAAA,iBAAAqtH,EAAA,+BAEAlkI,EAAA+sB,EAAA3C,EAAAtuB,OAIAsuB,IAGAvT,GAAA,OAIA,IAAA0sG,EAAAv/G,EAAAu/G,SACAA,IACA1sG,EAAA,iBAA8BA,EAAA,SAG9BA,GAAA+sH,EAAA/sH,EAAA5O,QAAAs8F,GAAA,IAAA1tF,GACA5O,QAAAu8F,GAAA,MACAv8F,QAAAw8F,GAAA,OAGA5tF,EAAA,aAAA0sG,GAAA,gBACAA,EACA,GACA,wBAEA,qBACAogB,EACA,mBACA,KAEAC,EACA,uFAEA,OAEA/sH,EACA,gBAEA,IAAAD,EAAAwkH,GAAA,WACA,OAAAnuD,GAAA42D,EAAAG,EAAA,UAAAntH,GACAxa,MAAApD,EAAA6qI,KAMA,GADAltH,EAAAC,SACAqiH,GAAAtiH,GACA,MAAAA,EAEA,OAAAA,GAm5DA+mG,GAAA0mB,MApsBA,SAAAhsI,EAAA+xG,GAEA,IADA/xG,EAAA06H,GAAA16H,IACA,GAAAA,EAAA2pG,EACA,SAEA,IAAAhiG,EAAAmiG,EACArmG,EAAAwgH,GAAAjkH,EAAA8pG,GAEAiI,EAAAwf,GAAAxf,GACA/xG,GAAA8pG,EAGA,IADA,IAAAvrF,EAAAw1F,GAAAtwG,EAAAsuG,KACApqG,EAAA3H,GACA+xG,EAAApqG,GAEA,OAAA4W,GAsrBA+mG,GAAA0U,YACA1U,GAAAoV,aACApV,GAAA6b,YACA7b,GAAA2mB,QA/3DA,SAAAzsI,GACA,OAAAmf,GAAAnf,GAAA03B,eA+3DAouF,GAAAnxC,YACAmxC,GAAA4mB,cAlsIA,SAAA1sI,GACA,OAAAA,EACAsoH,GAAA4S,GAAAl7H,IAAAmqG,KACA,IAAAnqG,IAAA,GAgsIA8lH,GAAA3mG,YACA2mG,GAAA6mB,QA12DA,SAAA3sI,GACA,OAAAmf,GAAAnf,GAAA+yB,eA02DA+yF,GAAAvwF,KAj1DA,SAAA1b,EAAAygH,EAAA/C,GAEA,IADA19G,EAAAsF,GAAAtF,MACA09G,GAAA+C,IAAAl5H,GACA,OAAAyY,EAAAzJ,QAAAq9F,GAAA,IAEA,IAAA5zF,KAAAygH,EAAA5F,GAAA4F,IACA,OAAAzgH,EAEA,IAAA+6F,EAAAgN,GAAA/nG,GACAg7F,EAAA+M,GAAA0Y,GAIA,OAAAzE,GAAAjhB,EAHAD,GAAAC,EAAAC,GACAC,GAAAF,EAAAC,GAAA,GAEAppG,KAAA,KAq0DAq6G,GAAA8mB,QA/yDA,SAAA/yH,EAAAygH,EAAA/C,GAEA,IADA19G,EAAAsF,GAAAtF,MACA09G,GAAA+C,IAAAl5H,GACA,OAAAyY,EAAAzJ,QAAAu9F,GAAA,IAEA,IAAA9zF,KAAAygH,EAAA5F,GAAA4F,IACA,OAAAzgH,EAEA,IAAA+6F,EAAAgN,GAAA/nG,GAGA,OAAAg8G,GAAAjhB,EAAA,EAFAE,GAAAF,EAAAgN,GAAA0Y,IAAA,GAEA7uH,KAAA,KAqyDAq6G,GAAA+mB,UA/wDA,SAAAhzH,EAAAygH,EAAA/C,GAEA,IADA19G,EAAAsF,GAAAtF,MACA09G,GAAA+C,IAAAl5H,GACA,OAAAyY,EAAAzJ,QAAAs9F,GAAA,IAEA,IAAA7zF,KAAAygH,EAAA5F,GAAA4F,IACA,OAAAzgH,EAEA,IAAA+6F,EAAAgN,GAAA/nG,GAGA,OAAAg8G,GAAAjhB,EAFAD,GAAAC,EAAAgN,GAAA0Y,KAEA7uH,KAAA,KAqwDAq6G,GAAAlkE,SA7tDA,SAAA/nC,EAAA1N,GACA,IAAAlI,EAAA2lG,EACAkjC,EAAAjjC,EAEA,GAAAv/D,GAAAn+B,GAAA,CACA,IAAA66H,EAAA,cAAA76H,IAAA66H,YACA/iI,EAAA,WAAAkI,EAAA+uH,GAAA/uH,EAAAlI,UACA6oI,EAAA,aAAA3gI,EAAAuoH,GAAAvoH,EAAA2gI,YAIA,IAAAjC,GAFAhxH,EAAAsF,GAAAtF,IAEA5V,OACA,GAAAm9G,GAAAvnG,GAAA,CACA,IAAA+6F,EAAAgN,GAAA/nG,GACAgxH,EAAAj2B,EAAA3wG,OAEA,GAAAA,GAAA4mI,EACA,OAAAhxH,EAEA,IAAA6H,EAAAzd,EAAAy9G,GAAAorB,GACA,GAAAprH,EAAA,EACA,OAAAorH,EAEA,IAAA/tH,EAAA61F,EACAihB,GAAAjhB,EAAA,EAAAlzF,GAAAjW,KAAA,IACAoO,EAAAuF,MAAA,EAAAsC,GAEA,GAAAslH,IAAA5lI,EACA,OAAA2d,EAAA+tH,EAKA,GAHAl4B,IACAlzF,GAAA3C,EAAA9a,OAAAyd,GAEA+yD,GAAAuyD,IACA,GAAAntH,EAAAuF,MAAAsC,GAAA+T,OAAAuxG,GAAA,CACA,IAAAz0G,EACAzwB,EAAAid,EAMA,IAJAioH,EAAAxgI,SACAwgI,EAAAryF,GAAAqyF,EAAAhoH,OAAAG,GAAA+uF,GAAAh3D,KAAA8vF,IAAA,MAEAA,EAAAxkD,UAAA,EACAjwD,EAAAy0G,EAAA9vF,KAAAp1C,IACA,IAAAirI,EAAAx6G,EAAApqB,MAEA4W,IAAAK,MAAA,EAAA2tH,IAAA3rI,EAAAsgB,EAAAqrH,SAEO,GAAAlzH,EAAAjY,QAAA8yH,GAAAsS,GAAAtlH,MAAA,CACP,IAAAvZ,EAAA4W,EAAAmrH,YAAAlD,GACA7+H,GAAA,IACA4W,IAAAK,MAAA,EAAAjX,IAGA,OAAA4W,EAAA+tH,GAyqDAhnB,GAAAknB,SAnpDA,SAAAnzH,GAEA,OADAA,EAAAsF,GAAAtF,KACAkzF,GAAAroG,KAAAmV,GACAA,EAAAzJ,QAAAy8F,GAAAkV,IACAloG,GAgpDAisG,GAAAmnB,SAvpBA,SAAAj6G,GACA,IAAA1pB,IAAAq5G,GACA,OAAAxjG,GAAA6T,GAAA1pB,GAspBAw8G,GAAAqd,aACArd,GAAA+c,cAGA/c,GAAA73G,KAAAukB,GACAszF,GAAAonB,UAAAjO,GACAnZ,GAAA90E,MAAAf,GAEA+/C,GAAA81B,IACA9mG,GAAA,GACA+sG,GAAAjG,GAAA,SAAAjhE,EAAA8yE,GACA/2H,GAAA1B,KAAA4mH,GAAAnlH,UAAAg3H,KACA34G,GAAA24G,GAAA9yE,KAGA7lC,IACK,CAAMgjB,OAAA,IAWX8jF,GAAAqnB,QA18gBA,UA68gBA16B,GAAA,0EAAAklB,GACA7R,GAAA6R,GAAAzqF,YAAA44E,KAIArT,GAAA,yBAAAklB,EAAAxvH,GACA69G,GAAArlH,UAAAg3H,GAAA,SAAAn3H,GACAA,MAAAY,EAAA,EAAAojH,GAAA0W,GAAA16H,GAAA,GAEA,IAAAue,EAAA7X,KAAA0/G,eAAAz+G,EACA,IAAA69G,GAAA9+G,MACAA,KAAA4X,QAUA,OARAC,EAAA6nG,aACA7nG,EAAA+nG,cAAArC,GAAAjkH,EAAAue,EAAA+nG,eAEA/nG,EAAAgoG,UAAA/iH,KAAA,CACAqd,KAAAojG,GAAAjkH,EAAA8pG,GACA9nG,KAAAm1H,GAAA54G,EAAA4nG,QAAA,gBAGA5nG,GAGAinG,GAAArlH,UAAAg3H,EAAA,kBAAAn3H,GACA,OAAA0G,KAAA0e,UAAA+xG,GAAAn3H,GAAAolB,aAKA6sF,GAAA,sCAAAklB,EAAAxvH,GACA,IAAA3F,EAAA2F,EAAA,EACAilI,EAAA5qI,GAAAwnG,GA37gBA,GA27gBAxnG,EAEAwjH,GAAArlH,UAAAg3H,GAAA,SAAAplB,GACA,IAAAxzF,EAAA7X,KAAA4X,QAMA,OALAC,EAAA8nG,cAAA7iH,KAAA,CACAuuG,SAAAwf,GAAAxf,EAAA,GACA/vG,SAEAuc,EAAA6nG,aAAA7nG,EAAA6nG,cAAAwmB,EACAruH,KAKA0zF,GAAA,yBAAAklB,EAAAxvH,GACA,IAAAklI,EAAA,QAAAllI,EAAA,YAEA69G,GAAArlH,UAAAg3H,GAAA,WACA,OAAAzwH,KAAAmmI,GAAA,GAAArtI,QAAA,MAKAyyG,GAAA,4BAAAklB,EAAAxvH,GACA,IAAAmlI,EAAA,QAAAnlI,EAAA,YAEA69G,GAAArlH,UAAAg3H,GAAA,WACA,OAAAzwH,KAAA0/G,aAAA,IAAAZ,GAAA9+G,WAAAomI,GAAA,MAIAtnB,GAAArlH,UAAAmkI,QAAA,WACA,OAAA59H,KAAAupB,OAAAilD,KAGAswC,GAAArlH,UAAAoxB,KAAA,SAAA6gF,GACA,OAAA1rG,KAAAupB,OAAAmiF,GAAA3iE,QAGA+1E,GAAArlH,UAAAq+H,SAAA,SAAApsB,GACA,OAAA1rG,KAAA0e,UAAAmM,KAAA6gF,IAGAoT,GAAArlH,UAAAu+H,UAAAnM,GAAA,SAAAltC,EAAAhwE,GACA,yBAAAgwE,EACA,IAAAmgC,GAAA9+G,MAEAA,KAAA0E,IAAA,SAAA5L,GACA,OAAAmuH,GAAAnuH,EAAA6lF,EAAAhwE,OAIAmwG,GAAArlH,UAAA4kC,OAAA,SAAAqtE,GACA,OAAA1rG,KAAAupB,OAAA/S,GAAAq0G,GAAAnf,MAGAoT,GAAArlH,UAAAye,MAAA,SAAA5R,EAAAkU,GACAlU,EAAA0tH,GAAA1tH,GAEA,IAAAuR,EAAA7X,KACA,OAAA6X,EAAA6nG,eAAAp5G,EAAA,GAAAkU,EAAA,GACA,IAAAskG,GAAAjnG,IAEAvR,EAAA,EACAuR,IAAAsoH,WAAA75H,GACOA,IACPuR,IAAAqmH,KAAA53H,IAEAkU,IAAAtgB,IAEA2d,GADA2C,EAAAw5G,GAAAx5G,IACA,EAAA3C,EAAAsmH,WAAA3jH,GAAA3C,EAAAqoH,KAAA1lH,EAAAlU,IAEAuR,IAGAinG,GAAArlH,UAAA2mI,eAAA,SAAA10B,GACA,OAAA1rG,KAAA0e,UAAA2hH,UAAA30B,GAAAhtF,WAGAogG,GAAArlH,UAAA8vC,QAAA,WACA,OAAAvpC,KAAAkgI,KAAA98B,IAIAyhB,GAAA/F,GAAArlH,UAAA,SAAAkkD,EAAA8yE,GACA,IAAA4V,EAAA,qCAAA7oI,KAAAizH,GACA6V,EAAA,kBAAA9oI,KAAAizH,GACA8V,EAAA3nB,GAAA0nB,EAAA,gBAAA7V,EAAA,YAAAA,GACA+V,EAAAF,GAAA,QAAA9oI,KAAAizH,GAEA8V,IAGA3nB,GAAAnlH,UAAAg3H,GAAA,WACA,IAAA33H,EAAAkH,KAAAo/G,YACAzwG,EAAA23H,EAAA,IAAAx4H,UACA24H,EAAA3tI,aAAAgmH,GACAzT,EAAA18F,EAAA,GACA+3H,EAAAD,GAAA9rH,GAAA7hB,GAEAuuC,EAAA,SAAAvuC,GACA,IAAA+e,EAAA0uH,EAAAjpI,MAAAshH,GAAA1S,GAAA,CAAApzG,GAAA6V,IACA,OAAA23H,GAAAnnB,EAAAtnG,EAAA,GAAAA,GAGA6uH,GAAAL,GAAA,mBAAAh7B,GAAA,GAAAA,EAAAtuG,SAEA0pI,EAAAC,GAAA,GAEA,IAAAvnB,EAAAn/G,KAAAs/G,UACAqnB,IAAA3mI,KAAAq/G,YAAAtiH,OACA6pI,EAAAJ,IAAArnB,EACA0nB,EAAAJ,IAAAE,EAEA,IAAAH,GAAAE,EAAA,CACA5tI,EAAA+tI,EAAA/tI,EAAA,IAAAgmH,GAAA9+G,MACA,IAAA6X,EAAA8lC,EAAArgD,MAAAxE,EAAA6V,GAEA,OADAkJ,EAAAwnG,YAAAviH,KAAA,CAAmC6gD,KAAA2zE,GAAA3iH,KAAA,CAAA04B,GAAA6gC,QAAAhuE,IACnC,IAAA6kH,GAAAlnG,EAAAsnG,GAEA,OAAAynB,GAAAC,EACAlpF,EAAArgD,MAAA0C,KAAA2O,IAEAkJ,EAAA7X,KAAAsxH,KAAAjqF,GACAu/F,EAAAN,EAAAzuH,EAAA/e,QAAA,GAAA+e,EAAA/e,QAAA+e,OAKA0zF,GAAA,0DAAAklB,GACA,IAAA9yE,EAAAi2B,GAAA68C,GACAqW,EAAA,0BAAAtpI,KAAAizH,GAAA,aACA+V,EAAA,kBAAAhpI,KAAAizH,GAEA7R,GAAAnlH,UAAAg3H,GAAA,WACA,IAAA9hH,EAAAb,UACA,GAAA04H,IAAAxmI,KAAAs/G,UAAA,CACA,IAAAxmH,EAAAkH,KAAAlH,QACA,OAAA6kD,EAAArgD,MAAAqd,GAAA7hB,KAAA,GAAA6V,GAEA,OAAA3O,KAAA8mI,GAAA,SAAAhuI,GACA,OAAA6kD,EAAArgD,MAAAqd,GAAA7hB,KAAA,GAAA6V,QAMAk2G,GAAA/F,GAAArlH,UAAA,SAAAkkD,EAAA8yE,GACA,IAAA8V,EAAA3nB,GAAA6R,GACA,GAAA8V,EAAA,CACA,IAAAntI,EAAAmtI,EAAAnuI,KAAA,IACA6lH,GAAA7kH,KAAA6kH,GAAA7kH,GAAA,KAEA0D,KAAA,CAAoB1E,KAAAq4H,EAAA9yE,KAAA4oF,OAIpBtoB,GAAA0T,GAAAz3H,EAAA+nG,GAAA7pG,MAAA,EACAA,KAAA,UACAulD,KAAAzjD,IAIA4kH,GAAArlH,UAAAme,MAp5dA,WACA,IAAAC,EAAA,IAAAinG,GAAA9+G,KAAAo/G,aAOA,OANAvnG,EAAAwnG,YAAA8B,GAAAnhH,KAAAq/G,aACAxnG,EAAA4nG,QAAAz/G,KAAAy/G,QACA5nG,EAAA6nG,aAAA1/G,KAAA0/G,aACA7nG,EAAA8nG,cAAAwB,GAAAnhH,KAAA2/G,eACA9nG,EAAA+nG,cAAA5/G,KAAA4/G,cACA/nG,EAAAgoG,UAAAsB,GAAAnhH,KAAA6/G,WACAhoG,GA64dAinG,GAAArlH,UAAAilB,QAl4dA,WACA,GAAA1e,KAAA0/G,aAAA,CACA,IAAA7nG,EAAA,IAAAinG,GAAA9+G,MACA6X,EAAA4nG,SAAA,EACA5nG,EAAA6nG,cAAA,OAEA7nG,EAAA7X,KAAA4X,SACA6nG,UAAA,EAEA,OAAA5nG,GA03dAinG,GAAArlH,UAAAX,MA/2dA,WACA,IAAAk+B,EAAAh3B,KAAAo/G,YAAAtmH,QACAo/B,EAAAl4B,KAAAy/G,QACAe,EAAA7lG,GAAAqc,GACA+vG,EAAA7uG,EAAA,EACAw6F,EAAAlS,EAAAxpF,EAAAj6B,OAAA,EACAktD,EA8oIA,SAAA3jD,EAAAkU,EAAAq/G,GAIA,IAHA,IAAA54H,GAAA,EACAlE,EAAA88H,EAAA98H,SAEAkE,EAAAlE,GAAA,CACA,IAAAqH,EAAAy1H,EAAA54H,GACAkZ,EAAA/V,EAAA+V,KAEA,OAAA/V,EAAA9I,MACA,WAAAgL,GAAA6T,EAA0C,MAC1C,gBAAAK,GAAAL,EAAwC,MACxC,WAAAK,EAAA+iG,GAAA/iG,EAAAlU,EAAA6T,GAA+D,MAC/D,gBAAA7T,EAAAg3G,GAAAh3G,EAAAkU,EAAAL,IAGA,OAAc7T,QAAAkU,OA7pIdwsH,CAAA,EAAAtU,EAAA1yH,KAAA6/G,WACAv5G,EAAA2jD,EAAA3jD,MACAkU,EAAAyvC,EAAAzvC,IACAzd,EAAAyd,EAAAlU,EACArF,EAAA8lI,EAAAvsH,EAAAlU,EAAA,EACAqkH,EAAA3qH,KAAA2/G,cACAsnB,EAAAtc,EAAA5tH,OACA6uG,EAAA,EACAs7B,EAAA3pB,GAAAxgH,EAAAiD,KAAA4/G,eAEA,IAAAY,IAAAumB,GAAArU,GAAA31H,GAAAmqI,GAAAnqI,EACA,OAAAixH,GAAAh3F,EAAAh3B,KAAAq/G,aAEA,IAAAxnG,EAAA,GAEAwsG,EACA,KAAAtnH,KAAA6uG,EAAAs7B,GAAA,CAMA,IAHA,IAAAC,GAAA,EACAruI,EAAAk+B,EAHA/1B,GAAAi3B,KAKAivG,EAAAF,GAAA,CACA,IAAA7iI,EAAAumH,EAAAwc,GACA97B,EAAAjnG,EAAAinG,SACA/vG,EAAA8I,EAAA9I,KACA8yD,EAAAi9C,EAAAvyG,GAEA,GAAAwC,GAAAynG,EACAjqG,EAAAs1D,OACW,IAAAA,EAAA,CACX,GAAA9yD,GAAAwnG,EACA,SAAAuhB,EAEA,MAAAA,GAIAxsG,EAAA+zF,KAAA9yG,EAEA,OAAA+e,GAo0dA+mG,GAAAnlH,UAAAqhI,GAAAlD,GACAhZ,GAAAnlH,UAAAqhC,MAlgQA,WACA,OAAAA,GAAA96B,OAkgQA4+G,GAAAnlH,UAAA2tI,OAr+PA,WACA,WAAAroB,GAAA/+G,KAAAlH,QAAAkH,KAAAs/G,YAq+PAV,GAAAnlH,UAAAssC,KA58PA,WACA/lC,KAAAw/G,aAAAtlH,IACA8F,KAAAw/G,WAAAj2E,GAAAvpC,KAAAlH,UAEA,IAAA6zC,EAAA3sC,KAAAu/G,WAAAv/G,KAAAw/G,WAAAziH,OAGA,OAAc4vC,OAAA7zC,MAFd6zC,EAAAzyC,EAAA8F,KAAAw/G,WAAAx/G,KAAAu/G,eAw8PAX,GAAAnlH,UAAAi4H,MAr5PA,SAAA54H,GAIA,IAHA,IAAA+e,EACAkP,EAAA/mB,KAEA+mB,aAAAm4F,IAAA,CACA,IAAAtnG,EAAAonG,GAAAj4F,GACAnP,EAAA2nG,UAAA,EACA3nG,EAAA4nG,WAAAtlH,EACA2d,EACAiuB,EAAAs5E,YAAAxnG,EAEAC,EAAAD,EAEA,IAAAkuB,EAAAluB,EACAmP,IAAAq4F,YAGA,OADAt5E,EAAAs5E,YAAAtmH,EACA+e,GAq4PA+mG,GAAAnlH,UAAAilB,QA92PA,WACA,IAAA5lB,EAAAkH,KAAAo/G,YACA,GAAAtmH,aAAAgmH,GAAA,CACA,IAAAuoB,EAAAvuI,EAUA,OATAkH,KAAAq/G,YAAAtiH,SACAsqI,EAAA,IAAAvoB,GAAA9+G,QAEAqnI,IAAA3oH,WACA2gG,YAAAviH,KAAA,CACA6gD,KAAA2zE,GACA3iH,KAAA,CAAA+P,IACAwpD,QAAAhuE,IAEA,IAAA6kH,GAAAsoB,EAAArnI,KAAAs/G,WAEA,OAAAt/G,KAAAsxH,KAAA5yG,KAg2PAkgG,GAAAnlH,UAAAke,OAAAinG,GAAAnlH,UAAAilH,QAAAE,GAAAnlH,UAAAX,MA/0PA,WACA,OAAAk1H,GAAAhuH,KAAAo/G,YAAAp/G,KAAAq/G,cAi1PAT,GAAAnlH,UAAAqwC,MAAA80E,GAAAnlH,UAAAsvC,KAEAyzE,KACAoC,GAAAnlH,UAAA+iH,IAz7PA,WACA,OAAAx8G,OA07PA4+G,GAMAzD,GAQAnhH,GAAAi/B,MAIIl/B,EAAA,WACJ,OAAAk/B,IACKjhC,KAAAL,EAAAF,EAAAE,EAAAC,MAAAsC,IAAAtC,EAAAD,QAAAoC,KAaJ/B,KAAAgI,6EChthBD,IAAAo4B,EAAY3gC,EAAQ,QAEpB,SAAA6vI,EAAA3sI,GACA,OAAA0/B,mBAAA1/B,GACAuO,QAAA,aACAA,QAAA,aACAA,QAAA,YACAA,QAAA,aACAA,QAAA,YACAA,QAAA,aACAA,QAAA,aAUAtR,EAAAD,QAAA,SAAA4F,EAAAmhC,EAAA6oG,GAEA,IAAA7oG,EACA,OAAAnhC,EAGA,IAAAiqI,EACA,GAAAD,EACAC,EAAAD,EAAA7oG,QACG,GAAAtG,EAAA8wC,kBAAAxqC,GACH8oG,EAAA9oG,EAAAzmB,eACG,CACH,IAAAu6C,EAAA,GAEAp6B,EAAA9M,QAAAoT,EAAA,SAAA/jC,EAAAvB,GACAuB,UAIAy9B,EAAAzd,QAAAhgB,GACAvB,GAAA,KAEAuB,EAAA,CAAAA,GAGAy9B,EAAA9M,QAAA3wB,EAAA,SAAAiZ,GACAwkB,EAAAwyE,OAAAh3F,GACAA,IAAA6zH,cACSrvG,EAAAgL,SAAAxvB,KACTA,EAAA8tC,KAAAynB,UAAAv1D,IAEA4+C,EAAA11D,KAAAwqI,EAAAluI,GAAA,IAAAkuI,EAAA1zH,SAIA4zH,EAAAh1E,EAAAjuD,KAAA,KAOA,OAJAijI,IACAjqI,KAAA,IAAAA,EAAA7C,QAAA,cAAA8sI,GAGAjqI,6CChEA,iDCAyMmqI,ECKzM,CACAliH,MAAA,UAGAoU,WAAA,CAAAC,OAAAC,EAAA,EAAA0N,SAAA,GAMApjC,KAVA,WAWA,OACAujI,YAAA,EACAC,aAAA,EACAriG,IAAA,KAQA3M,QAtBA,WAsBA,IAAA/E,EAAA7zB,KACAA,KAAA6nI,cAAA7nI,KAAAimC,OAEAjmC,KAAAilC,SAAAY,YAAA,WACAhS,EAAAi0G,iBACA,MAOA/iG,UAlCA,WAmCAC,cAAAhlC,KAAAilC,WAIA9K,QAAA,CACA0tG,cADA,SACAzlI,GAAA,IAAAw4B,EAAA56B,KACAA,KAAA2nI,YAAA,EAEA3nI,KAAAo6B,MAAA1hC,IAAA,4BAAA0J,GACAif,KAAA,SAAAkZ,GACAK,EAAA2K,IAAAhL,EAAAn2B,KAEAw2B,EAAA+sG,YAAA,KAQAG,cAhBA,WAgBA,IAAA3pG,EAAAn+B,KACAA,KAAAo6B,MAAA1hC,IAAA,4BAAAsH,KAAAimC,OACA5kB,KAAA,SAAAkZ,GACA4D,EAAAoH,IAAAG,WAAAnL,EAAAn2B,KAAAshC,cASAL,MA5BA,SA4BAjjC,GAAA,IAAAwjC,EAAA5lC,KACAA,KAAA4nI,cAIA5nI,KAAA4nI,aAAA,EAEA5nI,KAAAo6B,MAAAsC,KAAA,2BAAAt6B,GACAif,KAAA,WACAE,WAAA,WACAqkB,EAAAkiG,gBAEAliG,EAAAgiG,aAAA,GACA,SAQAG,qBAjDA,SAiDAC,GACA,IAAAC,EAAAhvG,EAAAtP,MAAAq+G,EAAA,MACAE,EAAA,GAMA,OAJAD,EAAA38G,QAAA,SAAApoB,GACAglI,GAAA,SAAAhlI,EAAA,YAGAglI,GAUAC,eAnEA,SAmEA/jI,GACA,cAAAs9C,KAAAynB,UAAA/kE,EAAAgkI,QAAAC,IAAAjkI,EAAAgkI,SAAAhkI,EAAA,gCCzGAw/B,EAAgBrrC,OAAA6gC,EAAA,EAAA7gC,CACdmvI,EHRF,WAA0B,IAAAhsG,EAAA17B,KAAaq5B,EAAAqC,EAAApC,eAA0BC,EAAAmC,EAAAlC,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,UAAAA,EAAA,WAAkCoC,YAAA,gBAA2B,CAAApC,EAAA,OAAYoC,YAAA,QAAmB,CAAApC,EAAA,OAAYoC,YAAA,eAA0B,CAAApC,EAAA,OAAYoC,YAAA,OAAkB,CAAApC,EAAA,OAAYoC,YAAA,YAAuB,CAAAD,EAAAE,GAAAF,EAAAG,GAAAH,EAAA6J,IAAAntC,SAAAsjC,EAAAE,GAAA,KAAArC,EAAA,OAAuDoC,YAAA,uBAAkC,CAAApC,EAAA,UAAeoC,YAAA,yBAAArE,GAAA,CAAyCoG,MAAA,SAAAN,GAAyB1B,EAAA2J,MAAA3J,EAAA6J,IAAAnjC,OAAwB,CAAAm3B,EAAA,KAAUoC,YAAA,WAAsB,CAAApC,EAAA,OAAYoC,YAAA,aAAAgL,MAAA,CAAgCC,KAAAlL,EAAAksG,cAAuB,CAAAruG,EAAA,OAAYG,MAAA,CAAOmN,cAAA,+BAAAC,aAAA,mCAA+EpL,EAAAE,GAAA,KAAArC,EAAA,OAAoCoC,YAAA,aAAwB,CAAAD,EAAA6J,IAAA,GAAAhM,EAAA,OAAAA,EAAA,OAAmCoC,YAAA,YAAuB,CAAApC,EAAA,OAAYoC,YAAA,YAAuB,CAAApC,EAAA,UAAAmC,EAAAE,GAAA,UAAAF,EAAAE,GAAA,KAAArC,EAAA,OAAsDoC,YAAA,OAAkB,CAAAD,EAAAE,GAAAF,EAAAG,GAAAH,EAAA6J,IAAAnjC,SAAAs5B,EAAAE,GAAA,KAAArC,EAAA,OAAuDoC,YAAA,YAAuB,CAAApC,EAAA,OAAYoC,YAAA,YAAuB,CAAApC,EAAA,UAAAmC,EAAAE,GAAA,aAAAF,EAAAE,GAAA,KAAArC,EAAA,OAAyDoC,YAAA,OAAkB,CAAAD,EAAAE,GAAAF,EAAAG,GAAAH,EAAA6J,IAAAjP,YAAAoF,EAAAE,GAAA,KAAArC,EAAA,OAA0DoC,YAAA,YAAuB,CAAApC,EAAA,OAAYoC,YAAA,YAAuB,CAAApC,EAAA,UAAAmC,EAAAE,GAAA,YAAAF,EAAAE,GAAA,KAAArC,EAAA,OAAwDoC,YAAA,OAAkB,CAAAD,EAAAE,GAAAF,EAAAG,GAAAH,EAAA6J,IAAAc,QAAAvI,MAAApC,EAAA6J,IAAAc,QAAAvI,KAAA/gC,OAAA2+B,EAAA6J,IAAAc,QAAAvI,KAAAv5B,KAAA,eAAAm3B,EAAAE,GAAA,KAAArC,EAAA,OAAuIoC,YAAA,OAAkB,CAAApC,EAAA,OAAYoC,YAAA,YAAuB,CAAApC,EAAA,UAAAmC,EAAAE,GAAA,iBAAAF,EAAAE,GAAA,KAAArC,EAAA,OAA6DoC,YAAA,OAAkB,CAAAD,EAAAE,GAAAF,EAAAG,GAAAH,EAAAgL,kBAAAhL,EAAA6J,IAAAe,iBAAA5K,EAAAE,GAAA,KAAArC,EAAA,MAAAmC,EAAAE,GAAA,KAAArC,EAAA,OAA0GoC,YAAA,OAAkB,CAAApC,EAAA,OAAYoC,YAAA,YAAuB,CAAApC,EAAA,UAAAmC,EAAAE,GAAA,aAAAF,EAAAE,GAAA,KAAArC,EAAA,OAAyDoC,YAAA,OAAkB,CAAApC,EAAA,OAAYoC,YAAA,mBAAAuB,SAAA,CAAyCoV,UAAA5W,EAAAG,GAAAH,EAAAqsG,qBAAArsG,EAAA6J,IAAAyiG,mBAAiEtsG,EAAAE,GAAA,KAAArC,EAAA,MAAAmC,EAAAE,GAAA,KAAArC,EAAA,OAAiDoC,YAAA,OAAkB,CAAApC,EAAA,OAAYoC,YAAA,YAAuB,CAAApC,EAAA,UAAAmC,EAAAE,GAAA,YAAAF,EAAAE,GAAA,KAAArC,EAAA,OAAwDoC,YAAA,OAAkB,CAAApC,EAAA,KAAUoC,YAAA,iBAAAuB,SAAA,CAAuCoV,UAAA5W,EAAAG,GAAAH,EAAAysG,eAAAzsG,EAAA6J,IAAAc,QAAAjiC,gBAA8Ds3B,EAAAK,SAAAL,EAAAE,GAAA,MAAAF,EAAAisG,YAAAjsG,EAAA6J,IAAAG,WAAA3oC,OAAAw8B,EAAA,OAA0FoC,YAAA,aAAwB,CAAApC,EAAA,OAAYoC,YAAA,eAA0B,CAAAD,EAAAE,GAAA,oBAAAF,EAAAE,GAAA,KAAArC,EAAA,OAAmDoC,YAAA,oBAA+B,CAAApC,EAAA,SAAcoC,YAAA,gCAA2C,CAAApC,EAAA,SAAAA,EAAA,MAAAA,EAAA,MAAAmC,EAAAE,GAAA,SAAAF,EAAAE,GAAA,KAAArC,EAAA,MAAAmC,EAAAE,GAAA,QAAAF,EAAAE,GAAA,KAAArC,EAAA,MAAAmC,EAAAE,GAAA,oBAAAF,EAAAE,GAAA,KAAArC,EAAA,QAAAmC,EAAA8C,GAAA9C,EAAA6J,IAAA,oBAAAF,GAAuM,OAAA9L,EAAA,MAAAA,EAAA,MAAyBoC,YAAA,UAAqB,CAAApC,EAAA,UAAeoC,YAAA,OAAAjC,MAAA,CAA0BrnB,OAAA,aAAAgzB,EAAAM,OAAAkC,QAAA,WAAAxC,EAAAM,UAA0EjK,EAAAE,GAAA,qCAAAF,EAAAG,GAAAwJ,EAAAM,OAAApqC,OAAA,GAAAswB,cAAAwZ,EAAAM,OAAAztB,MAAA,0CAAAwjB,EAAAE,GAAA,KAAArC,EAAA,gBAAA8L,EAAAM,OAAApM,EAAA,KAAiNG,MAAA,CAAOiF,KAAA,mBAAA0G,EAAAjjC,KAAoC,CAAAs5B,EAAAE,GAAA,yCAAAF,EAAAG,GAAAwJ,EAAAjjC,IAAA,wCAAAm3B,EAAA,QAAAmC,EAAAE,GAAAF,EAAAG,GAAAwJ,EAAAjjC,SAAAs5B,EAAAE,GAAA,KAAArC,EAAA,MAAAmC,EAAAE,GAAAF,EAAAG,GAAAH,EAAAgL,kBAAArB,EAAAijG,oBAAoO,KAAA5sG,EAAAE,GAAA,KAAAF,EAAA6J,IAAAG,WAAqHhK,EAAAK,KAArHxC,EAAA,WAAuDG,MAAA,CAAOv1B,KAAA,mDAAuD,KAAAu3B,EAAAK,UACx2G,IGUA,EACA,KACA,KACA,MAIerb,EAAA,QAAAkjB,6CChBfhsC,EAAAD,QAAA,SAAAoL,GAEAA,EAAAwlI,IAAA,SAAA3/H,EAAAmB,GAGA,OAFAA,EAAAzO,KAAA,MAEA,IAAAyH,EAAA6F,EAAAmB,wCCKAnS,EAAAD,QAAA,SAAA8yC,EAAA1gC,EAAA4+B,EAAAxB,EAAA5M,GAOA,OANAkQ,EAAA1gC,SACA4+B,IACA8B,EAAA9B,QAEA8B,EAAAtD,UACAsD,EAAAlQ,WACAkQ,sCCjBA,IAAArS,EAAY3gC,EAAQ,QAEpBG,EAAAD,QACAygC,EAAAowG,uBAIA,WACA,IAEAC,EAFAC,EAAA,kBAAAlrI,KAAAujB,UAAAC,WACA2nH,EAAA/nH,SAAAkoB,cAAA,KASA,SAAA8/F,EAAArrI,GACA,IAAAohC,EAAAphC,EAWA,OATAmrI,IAEAC,EAAAn1G,aAAA,OAAAmL,GACAA,EAAAgqG,EAAAhqG,MAGAgqG,EAAAn1G,aAAA,OAAAmL,GAGA,CACAA,KAAAgqG,EAAAhqG,KACA68B,SAAAmtE,EAAAntE,SAAAmtE,EAAAntE,SAAAtyD,QAAA,YACAiZ,KAAAwmH,EAAAxmH,KACAoM,OAAAo6G,EAAAp6G,OAAAo6G,EAAAp6G,OAAArlB,QAAA,aACAghB,KAAAy+G,EAAAz+G,KAAAy+G,EAAAz+G,KAAAhhB,QAAA,YACA2/H,SAAAF,EAAAE,SACAzvD,KAAAuvD,EAAAvvD,KACA0vD,SAAA,MAAAH,EAAAG,SAAAvtI,OAAA,GACAotI,EAAAG,SACA,IAAAH,EAAAG,UAYA,OARAL,EAAAG,EAAA/vH,OAAAo9B,SAAAtX,MAQA,SAAAoqG,GACA,IAAAhnE,EAAA3pC,EAAAiiG,SAAA0O,GAAAH,EAAAG,KACA,OAAAhnE,EAAAvG,WAAAitE,EAAAjtE,UACAuG,EAAA5/C,OAAAsmH,EAAAtmH,MAhDA,GAsDA,WACA,6CC9DA,IAAA1kB,EAAehG,EAAQ,QACvBiG,EAAcjG,EAAQ,QACtB0L,EAAc1L,EAAQ,QAEtB8H,EAAA9B,EAAA6B,OAAAC,aAkBA,SAAAypI,EAAAxnI,GACA,IAAApD,EAAA4B,KAAAnC,MACA,QAAAO,GAAAG,KAAA6B,IAAAoB,EAAApD,EAAAE,GAAAF,EAAAihB,OAAAjhB,EAAAwnE,UAlBAnoE,EAAAyB,KAAA,UACAC,SAAA,CACA6lE,MAAA,CACA3lD,OAAA,EACAsgB,WAAA,SACAtgC,gBAAAE,EACAC,YAAAD,EACAG,YAAA,EAEAkmE,UAAA,EACAoC,YAAA,EACAF,iBAAA,MAeAlwE,EAAAD,QAAA+F,EAAAiC,OAAA,CACA4B,QAAA,SAAAC,EAAAC,GACA,IAAArD,EAAA4B,KAAAnC,MACA,QAAAO,GAAAG,KAAAwX,IAAAvU,EAAApD,EAAAE,EAAA,GAAAC,KAAAwX,IAAAtU,EAAArD,EAAAK,EAAA,GAAAF,KAAAwX,IAAA3X,EAAAwnE,UAAAxnE,EAAAihB,OAAA,IAGA1d,aAAAqnI,EACApnI,SAAAonI,EACAnnI,SAbA,SAAAJ,GACA,IAAArD,EAAA4B,KAAAnC,MACA,QAAAO,GAAAG,KAAA6B,IAAAqB,EAAArD,EAAAK,GAAAL,EAAAihB,OAAAjhB,EAAAwnE,WAaA9jE,eAAA,WACA,IAAA1D,EAAA4B,KAAAnC,MACA,OACAS,EAAAF,EAAAE,EACAG,EAAAL,EAAAK,IAIAsD,QAAA,WACA,OAAAxD,KAAAyF,GAAAzF,KAAAwX,IAAA/V,KAAAnC,MAAAwhB,OAAA,IAGArd,gBAAA,WACA,IAAA5D,EAAA4B,KAAAnC,MACA,OACAS,EAAAF,EAAAE,EACAG,EAAAL,EAAAK,EACAypB,QAAA9pB,EAAAihB,OAAAjhB,EAAAsB,cAIAE,KAAA,SAAAqH,GACA,IAAA7I,EAAA4B,KAAAnC,MACA4K,EAAAzI,KAAAsI,OACAvI,EAAAC,KAAAC,OAAAF,IACA4/B,EAAAvhC,EAAAuhC,WACA4lC,EAAAnnE,EAAAmnE,SACAlmD,EAAAjhB,EAAAihB,OACA/gB,EAAAF,EAAAE,EACAG,EAAAL,EAAAK,EAGAL,EAAAm5C,YAKAr9C,IAAA+M,GAAAwB,EAAAnK,GAAA2I,EAAAnI,MAPA,KAOAmI,EAAAjI,OAAAyJ,EAAAnK,GAAAmK,EAAAhK,GAAAwI,EAAAlI,KAPA,KAOAkI,EAAAhI,QAAAwJ,EAAAhK,KACAsB,EAAAa,YAAAxC,EAAAoB,aAAAD,EACAQ,EAAAc,UAAAsC,EAAAqF,eAAApK,EAAAsB,YAAAjC,EAAA6B,OAAAH,SAAA6lE,MAAAtlE,aACAK,EAAAY,UAAAvC,EAAAiB,iBAAAE,EACA4D,EAAAgH,OAAA83B,UAAAliC,EAAA4/B,EAAAtgB,EAAA/gB,EAAAG,EAAA8mE,0CCnFA3tE,EAAAD,QAAA,SAAAoL,GAEAA,EAAAkmI,OAAA,SAAArgI,EAAAmB,GAEA,OADAA,EAAAzO,KAAA,SACA,IAAAyH,EAAA6F,EAAAmB,wCCNA,4BCiBem/H,EAXC3wI,OAAA6gC,EAAA,EAAA7gC,CALhB,GCDU,WAAgB,IAAAmjC,EAAA17B,KAAaq5B,EAAAqC,EAAApC,eAA0BC,EAAAmC,EAAAlC,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,SAAmBG,MAAA,CAAOt3B,GAAA,gBAAoB,CAAAm3B,EAAA,MAAWoC,YAAA,mBAA8B,CAAApC,EAAA,eAAoBoC,YAAA,WAAAjC,MAAA,CAA8B6C,IAAA,KAAAkC,GAAA,aAAAsF,eAAA,WAAsD,CAAAxK,EAAA,KAAUoC,YAAA,YAAuB,CAAApC,EAAA,KAAAA,EAAA,OAAAA,EAAA,OAA8BG,MAAA,CAAOmN,cAAA,+BAAAC,aAAA,6BAAiFpL,EAAAE,GAAA,iDAAAF,EAAAE,GAAA,KAAArC,EAAA,eAA4FoC,YAAA,WAAAjC,MAAA,CAA8B6C,IAAA,KAAAkC,GAAA,cAAAsF,eAAA,WAAuD,CAAAxK,EAAA,KAAUoC,YAAA,YAAuB,CAAApC,EAAA,KAAAA,EAAA,OAAAA,EAAA,OAA8BG,MAAA,CAAOmN,cAAA,+BAAAC,aAAA,0BAA8EpL,EAAAE,GAAA,kDAAAF,EAAAE,GAAA,KAAArC,EAAA,eAA6FoC,YAAA,WAAAjC,MAAA,CAA8B6C,IAAA,KAAAkC,GAAA,WAAAsF,eAAA,WAAoD,CAAAxK,EAAA,KAAUoC,YAAA,WAAAjC,MAAA,CAA8BiF,KAAA,MAAY,CAAApF,EAAA,KAAAA,EAAA,OAAAA,EAAA,OAA8BG,MAAA,CAAOmN,cAAA,+BAAAC,aAAA,6BAAiFpL,EAAAE,GAAA,+CAAAF,EAAAE,GAAA,KAAArC,EAAA,eAA0FoC,YAAA,WAAAjC,MAAA,CAA8B6C,IAAA,KAAAkC,GAAA,eAAAsF,eAAA,WAAwD,CAAAxK,EAAA,KAAUoC,YAAA,WAAAjC,MAAA,CAA8BiF,KAAA,MAAY,CAAApF,EAAA,KAAAA,EAAA,OAAAA,EAAA,OAA8BG,MAAA,CAAOmN,cAAA,+BAAAC,aAAA,uBAA2EpL,EAAAE,GAAA,mDAAAF,EAAAE,GAAA,KAAArC,EAAA,eAA8FoC,YAAA,WAAAjC,MAAA,CAA8B6C,IAAA,KAAAkC,GAAA,UAAAsF,eAAA,WAAmD,CAAAxK,EAAA,KAAUoC,YAAA,WAAAjC,MAAA,CAA8BiF,KAAA,MAAY,CAAApF,EAAA,KAAAA,EAAA,OAAAA,EAAA,OAA8BG,MAAA,CAAOmN,cAAA,+BAAAC,aAAA,iCAAqFpL,EAAAE,GAAA,qDAC3uD,IDSnB,EACA,KACA,KACA,cEb0MutG,ECI1M,CACAvvG,WAAA,CAAA4N,SAAA,EAAA0hG,gBCEIE,EAAY7wI,OAAA6gC,EAAA,EAAA7gC,CACd4wI,ELRF,WAA0B,IAAa9vG,EAAbr5B,KAAas5B,eAA0BC,EAAvCv5B,KAAuCw5B,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBoC,YAAA,aAAwB,CAAxG37B,KAAwG88B,GAAA,GAAxG98B,KAAwG47B,GAAA,KAAArC,EAAA,QAAmCoC,YAAA,aAAwB,CAAApC,EAAA,OAAYoC,YAAA,OAAkB,CAAApC,EAAA,OAAYoC,YAAA,YAAuB,CAAApC,EAAA,oBAApOv5B,KAAoO47B,GAAA,KAAArC,EAAA,OAA+CoC,YAAA,aAAwB,CAA3S37B,KAA2S8iF,GAAA,mBAA3S9iF,KAA2S47B,GAAA,KAAArC,EAAA,UAAqDoC,YAAA,wBAAAjC,MAAA,CAA2Ct3B,GAAA,eAAmB,CAA9ZpC,KAA8Z47B,GAAA,+GACxb,YAAoC,IAAavC,EAAbr5B,KAAas5B,eAA0BC,EAAvCv5B,KAAuCw5B,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBoC,YAAA,YAAAjC,MAAA,CAA+Bt3B,GAAA,eAAmB,CAAAm3B,EAAA,OAAYoC,YAAA,OAAkB,CAAApC,EAAA,OAAYoC,YAAA,OAAkB,CAAApC,EAAA,OAAYG,MAAA,CAAO8O,IAAA,8CKUrP,EACA,KACA,KACA,MAIe9nB,EAAA,EAAA0oH,6CCff,IAAAC,EAAa5xI,EAAQ,QACrB4xI,EAAA,mBAAAA,IAAAxwH,OAAAwwH,OAEA,IAAA5rI,EAAehG,EAAQ,QACvB0L,EAAc1L,EAAQ,QACtB68B,EAAY78B,EAAQ,QACpBgS,EAAmBhS,EAAQ,QAG3B6xI,EAAA1tH,OAAA2tH,mBAAA,iBACArmC,EAAAtnF,OAAAqnF,kBAAA,iBAEAumC,EAAA,CACAC,YAAA,CACAhgE,QAAA,EACAtvD,KAAA,EACAuvH,MAAA,8BAEAx+F,OAAA,CACAu+B,QAAA,EACAtvD,KAAA,IACAuvH,MAAA,kBAEAC,OAAA,CACAlgE,QAAA,EACAtvD,KAAA,IACAuvH,MAAA,kBAEAE,KAAA,CACAngE,QAAA,EACAtvD,KAAA,KACAuvH,MAAA,cAEAG,IAAA,CACApgE,QAAA,EACAtvD,KAAA,MACAuvH,MAAA,SAEAI,KAAA,CACArgE,QAAA,EACAtvD,KAAA,OACAuvH,MAAA,WAEAK,MAAA,CACAtgE,QAAA,EACAtvD,KAAA,OACAuvH,MAAA,SAEAM,QAAA,CACAvgE,QAAA,EACAtvD,KAAA,OACAuvH,MAAA,WAEAO,KAAA,CACAxgE,QAAA,EACAtvD,KAAA,SAIA+vH,EAAA3xI,OAAAiU,KAAAg9H,GAEA,SAAAW,EAAA3yH,EAAAoF,GACA,OAAApF,EAAAoF,EAGA,SAAAwtH,EAAA99H,GACA,IAEAzU,EAAA2N,EAAA5C,EAFAsnB,EAAA,GACAmgH,EAAA,GAGA,IAAAxyI,EAAA,EAAA2N,EAAA8G,EAAAvP,OAAiClF,EAAA2N,IAAU3N,EAE3CqyB,EADAtnB,EAAA0J,EAAAzU,MAEAqyB,EAAAtnB,IAAA,EACAynI,EAAAvtI,KAAA8F,IAIA,OAAAynI,EAsFA,SAAApgE,EAAAqgE,EAAAC,EAAAC,EAAAC,GACA,IAAA3mH,EAjCA,SAAAwmH,EAAAlxI,EAAAN,GAKA,IAJA,IAEA6zH,EAAA+d,EAAAC,EAFAC,EAAA,EACAC,EAAAP,EAAAvtI,OAAA,EAGA6tI,GAAA,GAAAA,GAAAC,GAAA,CAKA,GAHAH,EAAAJ,GADA3d,EAAAie,EAAAC,GAAA,GACA,SACAF,EAAAL,EAAA3d,IAEA+d,EAEA,OAAWE,GAAA,KAAAC,GAAAF,GACR,GAAAA,EAAAvxI,GAAAN,EACH8xI,EAAAje,EAAA,MACG,MAAA+d,EAAAtxI,GAAAN,GAGH,OAAW8xI,GAAAF,EAAAG,GAAAF,GAFXE,EAAAle,EAAA,GAOA,OAASie,GAAAD,EAAAE,GAAA,MAUTC,CAAAR,EAAAC,EAAAC,GAGAhvF,EAAA13B,EAAA8mH,GAAA9mH,EAAA+mH,GAAA/mH,EAAA8mH,GAAAN,IAAAvtI,OAAA,GAAAutI,EAAA,GACAvkG,EAAAjiB,EAAA8mH,GAAA9mH,EAAA+mH,GAAA/mH,EAAA+mH,GAAAP,IAAAvtI,OAAA,GAAAutI,EAAA,GAEAS,EAAAhlG,EAAAwkG,GAAA/uF,EAAA+uF,GACA7zH,EAAAq0H,GAAAP,EAAAhvF,EAAA+uF,IAAAQ,EAAA,EACA/8G,GAAA+X,EAAA0kG,GAAAjvF,EAAAivF,IAAA/zH,EAEA,OAAA8kC,EAAAivF,GAAAz8G,EAOA,SAAAg9G,EAAAlyI,EAAAmM,GACA,IAAAgmI,EAAAhmI,EAAAgmI,OACAhwG,EAAAh2B,EAAAgmI,QAAAhmI,EAAAg2B,OAEA,yBAAAgwG,EACAA,EAAAnyI,GAGA,iBAAAA,GAAA,iBAAAmiC,EACAouG,EAAAvwI,EAAAmiC,IAGAniC,aAAAuwI,IACAvwI,EAAAuwI,EAAAvwI,IAGAA,EAAAkb,UACAlb,EAKA,mBAAAmiC,EACAA,EAAAniC,GAGAA,GAGA,SAAA6oD,EAAApkB,EAAAn6B,GACA,GAAAD,EAAAuM,cAAA6tB,GACA,YAGA,IAAAt4B,EAAA7B,EAAA6B,QAAA81B,KACAjiC,EAAAkyI,EAAA5nI,EAAA4Y,cAAAuhB,GAAAt4B,GACA,OAAAnM,EAAAkb,WAIA/O,EAAAwT,OACA3f,EAAAoyI,QAAAjmI,EAAAwT,OAGA3f,EAAA4lH,WAPA,KAwEA,SAAAysB,EAAAn+G,GACA,QAAAn1B,EAAAqyI,EAAAxvI,QAAAsyB,GAAA,EAAAxnB,EAAA0kI,EAAAntI,OAA2DlF,EAAA2N,IAAU3N,EACrE,GAAA2xI,EAAAU,EAAAryI,IAAA4xE,OACA,OAAAygE,EAAAryI,GAWA,SAAAuzI,EAAA5sI,EAAAG,EAAA0sI,EAAApmI,GACA,IAUA81B,EAVAuwG,EAAArmI,EAAA81B,KACAwwG,EAAAD,EAAAt+G,MAlDA,SAAAw+G,EAAAhtI,EAAAG,EAAA0sI,GACA,IACAxzI,EAAAotC,EAAAwmG,EADAjmI,EAAA0kI,EAAAntI,OAGA,IAAAlF,EAAAqyI,EAAAxvI,QAAA8wI,GAAiC3zI,EAAA2N,EAAA,IAAc3N,EAI/C,GAFA4zI,GADAxmG,EAAAukG,EAAAU,EAAAryI,KACA6xI,MAAAzkG,EAAAykG,MAAAzkG,EAAAykG,MAAA3sI,OAAA,GAAAmmG,EAEAj+D,EAAAwkC,QAAAlrE,KAAA6d,MAAAzd,EAAAH,IAAAitI,EAAAxmG,EAAA9qB,QAAAkxH,EACA,OAAAnB,EAAAryI,GAIA,OAAAqyI,EAAA1kI,EAAA,GAqCAkmI,CAAAJ,EAAAE,QAAAhtI,EAAAG,EAAA0sI,GACAM,EAAAR,EAAAI,GACAK,EAAAzoI,EAAAqF,eAAA8iI,EAAAM,SAAAN,EAAAO,cACAC,EAAA,SAAAP,GAAAD,EAAAS,WACAC,EAAA/mI,EAAAvB,MAAAioI,MAAA95H,QACAozB,EAAAukG,EAAA+B,GACAzhG,EAAAu/F,EAAA7qI,GACAwrC,EAAAq/F,EAAA1qI,GACA+E,EAAA,GAgCA,IA7BAkoI,IACAA,EAtFA,SAAAptI,EAAAG,EAAAquB,EAAAq+G,GACA,IAIAxzI,EAAA2N,EAAAimI,EAJA3nH,EAAAnlB,EAAAH,EACAymC,EAAAukG,EAAAx8G,GACAi/G,EAAAhnG,EAAA9qB,KACAuvH,EAAAzkG,EAAAykG,MAGA,IAAAA,EACA,OAAAnrI,KAAA6d,KAAA0H,GAAAunH,EAAAY,IAGA,IAAAp0I,EAAA,EAAA2N,EAAAkkI,EAAA3sI,OAAiClF,EAAA2N,IACjCimI,EAAA/B,EAAA7xI,KACA0G,KAAA6d,KAAA0H,GAAAmoH,EAAAR,KAAAJ,MAF2CxzI,GAO3C,OAAA4zI,EAoEAS,CAAA1tI,EAAAG,EAAA4sI,EAAAF,IAIAS,IACAhiG,IAAAiiG,WAAAD,GACA9hG,IAAA+hG,WAAAD,IAIAhiG,IAAAohG,QAAAY,EAAA,MAAAP,IACAvhG,IAAAkhG,QAAAY,EAAA,MAAAP,IAGA5sI,GACAqrC,EAAA6R,IAAA,EAAA0vF,GAGAxwG,EAAAsuG,EAAAv/F,GAEAkiG,GAAAL,IAAAG,IAAAR,EAAA7yH,QAIAsiB,EAAAmwG,QAAAS,GACA5wG,EAAA8gB,QAAA/R,EAAA/O,IAAAkK,EAAA9qB,KAAAyxH,MAAAL,IAGOxwG,EAAAiP,EAAajP,EAAA8gB,IAAA+vF,EAAAL,GACpB7nI,EAAA5G,MAAAi+B,GAKA,OAFAr3B,EAAA5G,MAAAi+B,GAEAr3B,EAwEA9L,EAAAD,QAAA,WAEA,IA8DAw0I,EAAA73G,EAAA30B,OAAA,CACA8K,WAAA,WACA,IAAA4+H,EACA,UAAA57H,MAAA,wIAGAzN,KAAAiN,oBAEAqnB,EAAA76B,UAAAgR,WAAAzS,KAAAgI,OAGAyF,OAAA,WACA,IACAR,EADAjF,KACAiF,QAOA,OAJAA,EAAA81B,MAAA91B,EAAA81B,KAAAE,OAIA3G,EAAA76B,UAAAgM,OAAAnI,MARA0C,KAQA8N,YAMAkO,cAAA,SAAAD,GAIA,OAHAA,QAAA7hB,IAAA6hB,EAAAhjB,IACAgjB,IAAAhjB,GAEAu7B,EAAA76B,UAAAuiB,cAAAhkB,KAAAgI,KAAA+b,IAGAJ,oBAAA,WACA,IASA9jB,EAAA2E,EAAAgJ,EAAA4mI,EAAAhoI,EAAAioI,EATAnmI,EAAAlG,KACAkE,EAAAgC,EAAAhC,MACAonI,EAAAplI,EAAAjB,QAAA81B,KACA/N,EAAAs+G,EAAAt+G,MAAA,MACAxuB,EAAA0kG,EACAvkG,EAAA2qI,EACAgD,EAAA,GACAjoI,EAAA,GACAC,EAAA,GAIA,IAAAzM,EAAA,EAAA2N,EAAAtB,EAAAE,KAAAE,OAAAvH,OAA+ClF,EAAA2N,IAAU3N,EACzDyM,EAAAxH,KAAA6kD,EAAAz9C,EAAAE,KAAAE,OAAAzM,GAAAqO,IAIA,IAAArO,EAAA,EAAA2N,GAAAtB,EAAAE,KAAAC,UAAA,IAAAtH,OAAyDlF,EAAA2N,IAAU3N,EACnE,GAAAqM,EAAA8L,iBAAAnY,GAIA,GAHAuM,EAAAF,EAAAE,KAAAC,SAAAxM,GAAAuM,KAGAjB,EAAAigC,SAAAh/B,EAAA,IAGA,IAFAC,EAAAxM,GAAA,GAEA2E,EAAA,EAAA4vI,EAAAhoI,EAAArH,OAAqCP,EAAA4vI,IAAU5vI,EAC/C6vI,EAAA1qF,EAAAv9C,EAAA5H,GAAA0J,GACAomI,EAAAxvI,KAAAuvI,GACAhoI,EAAAxM,GAAA2E,GAAA6vI,OAGAC,EAAAxvI,KAAAQ,MAAAgvI,EAAAhoI,GACAD,EAAAxM,GAAAyM,EAAA4T,MAAA,QAGA7T,EAAAxM,GAAA,GAIAyM,EAAAvH,SAEAuH,EAAA8lI,EAAA9lI,GAAA+kB,KAAA8gH,GACA3rI,EAAAD,KAAAC,MAAA8F,EAAA,IACA3F,EAAAJ,KAAAI,MAAA2F,IAAAvH,OAAA,KAGAuvI,EAAAvvI,SACAuvI,EAAAlC,EAAAkC,GAAAjjH,KAAA8gH,GACA3rI,EAAAD,KAAAC,MAAA8tI,EAAA,IACA3tI,EAAAJ,KAAAI,MAAA2tI,IAAAvvI,OAAA,KAGAyB,EAAAmjD,EAAA2pF,EAAA9sI,IAAA0H,IAAA1H,EACAG,EAAAgjD,EAAA2pF,EAAA3sI,IAAAuH,IAAAvH,EAGAH,MAAA0kG,GAAAmmC,IAAA6B,QAAAl+G,GAAAxuB,EACAG,MAAA2qI,GAAAD,IAAAkD,MAAAv/G,GAAA,EAAAruB,EAGAuH,EAAA1H,IAAAD,KAAAC,MAAAG,GACAuH,EAAAvH,IAAAJ,KAAAI,IAAAH,EAAA,EAAAG,GAGAuH,EAAAsmI,YAAAtmI,EAAAuuB,eACAvuB,EAAAumI,OAAA,GACAvmI,EAAAwmI,YAAA,CACAtoI,KAAAkoI,EACAjoI,WACAC,WAIAwwB,WAAA,WACA,IAOAj9B,EAAA2N,EAAA6mI,EAPAnmI,EAAAlG,KACAxB,EAAA0H,EAAA1H,IACAG,EAAAuH,EAAAvH,IACAsG,EAAAiB,EAAAjB,QACAqmI,EAAArmI,EAAA81B,KACAuxG,EAAA,GACA5oI,EAAA,GAGA,OAAAuB,EAAAvB,MAAAoU,QACA,WACAw0H,EAAApmI,EAAAwmI,YAAAtoI,KACA,MACA,aACAkoI,EAAApmI,EAAAwmI,YAAApoI,OACA,MACA,WACA,QACAgoI,EAAAlB,EAAA5sI,EAAAG,EAAAuH,EAAAymI,iBAAAnuI,GAAAyG,GAaA,IAVA,UAAAA,EAAAvD,QAAA4qI,EAAAvvI,SACAyB,EAAA8tI,EAAA,GACA3tI,EAAA2tI,IAAAvvI,OAAA,IAIAyB,EAAAmjD,EAAA2pF,EAAA9sI,IAAA0H,IAAA1H,EACAG,EAAAgjD,EAAA2pF,EAAA3sI,IAAAuH,IAAAvH,EAGA9G,EAAA,EAAA2N,EAAA8mI,EAAAvvI,OAAwClF,EAAA2N,IAAU3N,GAClDw0I,EAAAC,EAAAz0I,KACA2G,GAAA6tI,GAAA1tI,GACA+E,EAAA5G,KAAAuvI,GAcA,OAVAnmI,EAAA1H,MACA0H,EAAAvH,MAGAuH,EAAA0mI,MAAAtB,EAAAt+G,MA3WA,SAAAtpB,EAAA8nI,EAAAhtI,EAAAG,GACA,IAEA9G,EAAAm1B,EAFAhhB,EAAAq9H,EAAAr9H,SAAAq9H,EAAA1qI,GAAAuyC,KAAAm4F,EAAA7qI,KAIA,IAAA3G,EAHAqyI,EAAAntI,OAGA,EAAmBlF,GAAAqyI,EAAAxvI,QAAA8wI,GAA6B3zI,IAEhD,GADAm1B,EAAAk9G,EAAAryI,GACA2xI,EAAAx8G,GAAAy8C,QAAAz9D,EAAA6gI,GAAA7/G,IAAAtpB,EAAA3G,OACA,OAAAiwB,EAIA,OAAAk9G,EAAAsB,EAAAtB,EAAAxvI,QAAA8wI,GAAA,GA+VAsB,CAAAppI,EAAA4nI,EAAAE,QAAAtlI,EAAA1H,IAAA0H,EAAAvH,KACAuH,EAAA6mI,WAAA5B,EAAAjlI,EAAA0mI,OACA1mI,EAAAumI,OAjiBA,SAAAH,EAAA9tI,EAAAG,EAAAquI,GACA,cAAAA,IAAAV,EAAAvvI,OACA,OACA,CAAIg+B,KAAAv8B,EAAAzC,IAAA,GACJ,CAAIg/B,KAAAp8B,EAAA5C,IAAA,IAIJ,IAEAlE,EAAA2N,EAAAg2C,EAAAyxF,EAAAlnG,EAFAukG,EAAA,GACAh+H,EAAA,CAAA9N,GAGA,IAAA3G,EAAA,EAAA2N,EAAA8mI,EAAAvvI,OAAsClF,EAAA2N,IAAU3N,GAChDo1I,EAAAX,EAAAz0I,IACA2G,GAAAyuI,EAAAtuI,GACA2N,EAAAxP,KAAAmwI,GAMA,IAFA3gI,EAAAxP,KAAA6B,GAEA9G,EAAA,EAAA2N,EAAA8G,EAAAvP,OAAiClF,EAAA2N,IAAU3N,EAC3CkuC,EAAAz5B,EAAAzU,EAAA,GACA2jD,EAAAlvC,EAAAzU,EAAA,GACAo1I,EAAA3gI,EAAAzU,QAGAqC,IAAAshD,QAAAthD,IAAA6rC,GAAAxnC,KAAAka,OAAAstB,EAAAyV,GAAA,KAAAyxF,GACA3C,EAAAxtI,KAAA,CAAei+B,KAAAkyG,EAAAlxI,IAAAlE,GAAA2N,EAAA,KAIf,OAAA8kI,EAigBA4C,CAAAhnI,EAAAwmI,YAAAtoI,KAAA5F,EAAAG,EAAAsG,EAAA+nI,cACA9mI,EAAAinI,SA1RA,SAAA7C,EAAA5mI,EAAAlF,EAAAG,EAAAsG,GACA,IAEAi9G,EAAAD,EAFAnjH,EAAA,EACAE,EAAA,EAsBA,OAnBAiG,EAAA+oB,QAAAtqB,EAAA3G,SACAkI,EAAA81B,KAAAv8B,MACA0jH,EAAAx+G,EAAA3G,OAAA,EAAA2G,EAAA,GAAA/E,EACAsjH,EAAAv+G,EAAA,GACA5E,GACAmrE,EAAAqgE,EAAA,OAAApoB,EAAA,OACAj4C,EAAAqgE,EAAA,OAAAroB,EAAA,QACA,GAEAh9G,EAAA81B,KAAAp8B,MACAujH,EAAAx+G,IAAA3G,OAAA,GACAklH,EAAAv+G,EAAA3G,OAAA,EAAA2G,IAAA3G,OAAA,GAAAyB,EACAQ,GACAirE,EAAAqgE,EAAA,OAAApoB,EAAA,OACAj4C,EAAAqgE,EAAA,OAAAroB,EAAA,QACA,IAIA,CAASnjH,OAAAE,SAkQTouI,CAAAlnI,EAAAumI,OAAA/oI,EAAAlF,EAAAG,EAAAsG,GACAiB,EAAAmnI,aA/OA,SAAAjpI,EAAAknI,GACA,IAAAzzI,EAAAy1I,EAAAC,EACA/nI,EAAApB,EAAArH,OAIA,IAAAlF,EAAA,EAAYA,EAAA2N,EAAU3N,IAAA,CAEtB,QADAy1I,EAAAtC,EAAA5mI,EAAAvM,GAAAyzI,IACA7B,cACA,kCAEA,IAAA6D,EAAApiG,UAAA,IAAAoiG,EAAA3D,UAAA,IAAA2D,EAAA1D,SACA2D,GAAA,GAGA,OAAAA,EACA,wBAEA,cA6NAC,CAAAtnI,EAAAwmI,YAAAtoI,KAAAknI,GAhQA,SAAAx4H,EAAA26H,GACA,IACA51I,EAAA2N,EAAA1M,EAAA6yI,EADAjoI,EAAA,GAGA,IAAA7L,EAAA,EAAA2N,EAAAsN,EAAA/V,OAAkClF,EAAA2N,IAAU3N,EAC5CiB,EAAAga,EAAAjb,GACA8zI,IAAA8B,GAAA30I,KAAAuwI,EAAAvwI,GAAAoyI,QAAAuC,GAEA/pI,EAAA5G,KAAA,CACAhE,QACA6yI,UAIA,OAAAjoI,EAoPAgqI,CAAAhqI,EAAAwC,EAAA6mI,aAGAzwH,iBAAA,SAAArb,EAAA6H,GACA,IACA1E,EADApE,KACAkE,MAAAE,KACAknI,EAFAtrI,KAEAiF,QAAA81B,KACAp4B,EAAAyB,EAAAE,QAAArD,EAAAmD,EAAAE,OAAAvH,OAAAqH,EAAAE,OAAArD,GAAA,GACAnI,EAAAsL,EAAAC,SAAAyE,GAAA1E,KAAAnD,GAKA,OAHAkC,EAAAigC,SAAAtqC,KACA6J,EAPA3C,KAOAgc,cAAAljB,IAEAwyI,EAAAqC,cACA3C,EAAAroI,EAAA2oI,GAAArwG,OAAAqwG,EAAAqC,eAEA,iBAAAhrI,EACAA,EAGAqoI,EAAAroI,EAAA2oI,GAAArwG,OAhBAj7B,KAgBAqtI,eAOAO,mBAAA,SAAAz6E,EAAAlyD,EAAAyC,EAAAmqI,GACA,IACA5oI,EADAjF,KACAiF,QACA81B,EAAAo4B,EAAAurD,UACAovB,EAAA7oI,EAAA81B,KAAAgzG,eACAC,EAAAF,EAJA9tI,KAIA4sI,OACAa,EALAztI,KAKA+sI,WACAkB,EAAAH,EAAAL,GACAS,EAAA/6E,EAAAv7C,QAAAszH,QAAAuC,GAAA/uB,UACAyvB,EAAAlpI,EAAAvB,MAAAioI,MACAA,EAAAwC,EAAAt8H,SAAA47H,GAAAQ,GAAAlzG,IAAAmzG,EACAvrI,EAAAwwD,EAAAl4B,OAAA4yG,IAAAlC,EAAAsC,EAAAD,IACA1yH,EAAAqwH,EAAAwC,EAAAlpI,EAAAvB,MAAA6nI,MACA6C,EAAAjrI,EAAAqF,eAAA8S,EAAAxM,SAAAwM,EAAA+yH,cAEA,OAAAD,IAAAzrI,EAAA1B,EAAAyC,GAAAf,GAGA0Z,qBAAA,SAAA3Y,GACA,IACA7L,EAAA2N,EADAlB,EAAA,GAGA,IAAAzM,EAAA,EAAA2N,EAAA9B,EAAA3G,OAAmClF,EAAA2N,IAAU3N,EAC7CyM,EAAAxH,KAAAkD,KAAA4tI,mBAAAvE,EAAA3lI,EAAA7L,GAAAiB,OAAAjB,EAAA6L,IAGA,OAAAY,GAMAgqI,kBAAA,SAAAvzG,GACA,IAAA70B,EAAAlG,KACAma,EAAAjU,EAAAsmI,YAAAtmI,EAAApI,MAAAoI,EAAArH,OACAyH,EAAAJ,EAAAsmI,YAAAtmI,EAAApH,KAAAoH,EAAAnH,IACAhD,EAAAkuE,EAAA/jE,EAAAumI,OAAA,OAAA1xG,EAAA,OAEA,OAAAz0B,EAAA6T,GAAAjU,EAAAinI,SAAAruI,KAAA/C,IAAAmK,EAAAinI,SAAAruI,KAAA,EAAAoH,EAAAinI,SAAAnuI,QAGA+1B,iBAAA,SAAAj8B,EAAAmI,EAAA6H,GACA,IACAiyB,EAAA,KAUA,QARA7gC,IAAA+G,QAAA/G,IAAA4O,IACAiyB,EAJA/6B,KAIA0sI,YAAAroI,SAAAyE,GAAA7H,IAGA,OAAA85B,IACAA,EAAA4mB,EAAA7oD,EARAkH,OAWA,OAAA+6B,EACA,OAZA/6B,KAYAsuI,kBAAAvzG,IAIAzF,gBAAA,SAAAr0B,GACA,IAAAyC,EAAA1D,KAAAuuI,WACA,OAAAttI,GAAA,GAAAA,EAAAyC,EAAA3G,OACAiD,KAAAsuI,kBAAA5qI,EAAAzC,GAAAnI,OACA,MAGAy8B,iBAAA,SAAAC,GACA,IAAAtvB,EAAAlG,KACAma,EAAAjU,EAAAsmI,YAAAtmI,EAAApI,MAAAoI,EAAArH,OACAyH,EAAAJ,EAAAsmI,YAAAtmI,EAAApH,KAAAoH,EAAAnH,IACAhD,GAAAoe,GAAAqb,EAAAlvB,GAAA6T,EAAA,IAAAjU,EAAAinI,SAAAruI,KAAA,EAAAoH,EAAAinI,SAAAruI,MAAAoH,EAAAinI,SAAAnuI,MACA+7B,EAAAkvC,EAAA/jE,EAAAumI,OAAA,MAAA1wI,EAAA,QAEA,OAAAstI,EAAAtuG,IAOAyzG,cAAA,SAAA7rI,GACA,IACA8rI,EADAzuI,KACAiF,QAAAvB,MACAgrI,EAFA1uI,KAEAD,IAAAmd,YAAAva,GAAA7E,MACAmI,EAAA9C,EAAAwrI,UAAAF,EAAAG,aACAC,EAAAtwI,KAAAwf,IAAA9X,GACA6oI,EAAAvwI,KAAAqf,IAAA3X,GAGA,OAAAyoI,EAAAG,EAFA1rI,EAAAqF,eAAAimI,EAAA/0H,SAAAjc,EAAA6B,OAAAwa,iBAEAg1H,GAMAnC,iBAAA,SAAAoC,GACA,IAAA7oI,EAAAlG,KAEA6tI,EAAA3nI,EAAAjB,QAAA81B,KAAAgzG,eAAAtE,YAEAuF,EAAA9oI,EAAA0nI,mBAAAvE,EAAA0F,GAAA,KAAAlB,GACAa,EAAAxoI,EAAAsoI,cAAAQ,GACAzmH,EAAAriB,EAAAuuB,eAAAvuB,EAAApI,MAAAoI,EAAArH,OAEAwsI,EAAA9sI,KAAAkN,MAAA8c,EAAAmmH,GACA,OAAArD,EAAA,EAAAA,EAAA,KAIA5hI,EAAAgX,kBAAA,OAAA0rH,EAjWA,CACA9pI,SAAA,SASA2qI,aAAA,SASAtrI,OAAA,OAEAq5B,KAAA,CACAkwG,QAAA,EACAhwG,QAAA,EACAjO,MAAA,EACAvU,OAAA,EACAw2H,eAAA,EACAlD,YAAA,EACAP,QAAA,cAGAuC,eAAA,CACAtE,YAAA,gBACAv+F,OAAA,YACAy+F,OAAA,SACAC,KAAA,KACAC,IAAA,QACAC,KAAA,KACAC,MAAA,WACAC,QAAA,cACAC,KAAA,SAGAvmI,MAAA,CACAwrI,UAAA,EAUAp3H,OAAA,OAEA6zH,MAAA,CACA95H,SAAA,0CCreAja,EAAAD,QAAiBF,EAAQ,QACzBG,EAAAD,QAAA6W,OAAwB/W,EAAQ,QAChCG,EAAAD,QAAAwS,OAAwB1S,EAAQ,QAChCG,EAAAD,QAAAsN,QAAyBxN,EAAQ,6CCHjC,IAAA03I,EAAkB13I,EAAQ,QAS1BG,EAAAD,QAAA,SAAAoR,EAAAs1B,EAAA9D,GACA,IAAAivC,EAAAjvC,EAAAxwB,OAAAy/D,eAEAjvC,EAAAoL,QAAA6jC,MAAAjvC,EAAAoL,QAGAtH,EAAA8wG,EACA,mCAAA50G,EAAAoL,OACApL,EAAAxwB,OACA,KACAwwB,EAAA4M,QACA5M,IAPAxxB,EAAAwxB,yCCbA3iC,EAAAD,QAAA,SAAAoL,GACAA,EAAAqsI,QAAA,SAAAxmI,EAAAmB,GAEA,OADAA,EAAAzO,KAAA,UACA,IAAAyH,EAAA6F,EAAAmB,wCCHAnS,EAAAD,QAAA,SAAAoL,GAEAA,EAAAssI,SAAA,SAAAzmI,EAAAmB,GAGA,OAFAA,EAAAzO,KAAA,WAEA,IAAAyH,EAAA6F,EAAAmB,4BCEC,SAAApS,EAAAi8B,EAAAmwC,GAAqC,aAKtC,SAAAurE,EAAAv3H,EAAAyN,GACA,QAAA3tB,EAAA,EAAmBA,EAAA2tB,EAAAzoB,OAAkBlF,IAAA,CACrC,IAAA4tB,EAAAD,EAAA3tB,GACA4tB,EAAAhtB,WAAAgtB,EAAAhtB,aAAA,EACAgtB,EAAAC,cAAA,EACA,UAAAD,MAAAE,UAAA,GACAptB,OAAAC,eAAAuf,EAAA0N,EAAArsB,IAAAqsB,IAIA,SAAA8pH,EAAAnqH,EAAAQ,EAAAC,GAGA,OAFAD,GAAA0pH,EAAAlqH,EAAA3rB,UAAAmsB,GACAC,GAAAypH,EAAAlqH,EAAAS,GACAT,EAGA,SAAAoqH,EAAAvyI,EAAA7D,EAAAN,GAYA,OAXAM,KAAA6D,EACA1E,OAAAC,eAAAyE,EAAA7D,EAAA,CACAN,QACAL,YAAA,EACAitB,cAAA,EACAC,UAAA,IAGA1oB,EAAA7D,GAAAN,EAGAmE,EAGA,SAAAwyI,EAAA13H,GACA,QAAAlgB,EAAA,EAAmBA,EAAAiW,UAAA/Q,OAAsBlF,IAAA,CACzC,IAAAigB,EAAA,MAAAhK,UAAAjW,GAAAiW,UAAAjW,GAAA,GACA65E,EAAAn5E,OAAAiU,KAAAsL,GAEA,mBAAAvf,OAAA0kH,wBACAvrC,IAAAhlE,OAAAnU,OAAA0kH,sBAAAnlG,GAAAyR,OAAA,SAAAmmH,GACA,OAAAn3I,OAAA48E,yBAAAr9D,EAAA43H,GAAAj3I,eAIAi5E,EAAApmD,QAAA,SAAAlyB,GACAo2I,EAAAz3H,EAAA3e,EAAA0e,EAAA1e,MAIA,OAAA2e,EAlDA6b,OAAAl6B,eAAA,WAAAk6B,EAAA,QAAAA,EACAmwC,OAAArqE,eAAA,WAAAqqE,EAAA,QAAAA,EAsEA,IAAA4rE,EAAA,gBAsBA,SAAAC,EAAA5jI,GACA,IAAA6nB,EAAA7zB,KAEAohB,GAAA,EASA,OARA2iD,EAAA/jE,MAAAmmD,IAAA0pF,EAAAF,eAAA,WACAvuH,GAAA,IAEAG,WAAA,WACAH,GACAyuH,EAAAC,qBAAAj8G,IAEK7nB,GACLhM,KAcA,IAAA6vI,EAAA,CACAF,eAAA,kBACAI,OAAA,SAAAjkH,GACA,GAEAA,MApDA,IAoDAvtB,KAAAgsC,gBACO3pB,SAAAqvB,eAAAnkB,IAEP,OAAAA,GAEAkkH,uBAAA,SAAArnI,GACA,IAAAwgC,EAAAxgC,EAAA0nC,aAAA,eAEA,IAAAlH,GAAA,MAAAA,EAAA,CACA,IAAA8mG,EAAAtnI,EAAA0nC,aAAA,QACAlH,EAAA8mG,GAAA,MAAAA,IAAA5hH,OAAA,GAGA,OAAA8a,GAAAvoB,SAAA0P,cAAA6Y,KAAA,MAEA+mG,iCAAA,SAAAvnI,GACA,IAAAA,EACA,SAIA,IAAAi3F,EAAA77B,EAAAp7D,GAAAiZ,IAAA,uBACAuuH,EAAApsE,EAAAp7D,GAAAiZ,IAAA,oBACAwuH,EAAAh0I,WAAAwjG,GACAywC,EAAAj0I,WAAA+zI,GAEA,OAAAC,GAAAC,GAKAzwC,IAAAj2E,MAAA,QACAwmH,IAAAxmH,MAAA,QAnFA,KAoFAvtB,WAAAwjG,GAAAxjG,WAAA+zI,KANA,GAQAG,OAAA,SAAA3nI,GACA,OAAAA,EAAAie,cAEAkpH,qBAAA,SAAAnnI,GACAo7D,EAAAp7D,GAAAggD,QAAAgnF,IAGAY,sBAAA,WACA,OAAAz4D,QAAA63D,IAEAtN,UAAA,SAAAplI,GACA,OAAAA,EAAA,IAAAA,GAAA0kB,UAEA6uH,gBAAA,SAAAC,EAAA1mI,EAAA2mI,GACA,QAAAl3I,KAAAk3I,EACA,GAAAn4I,OAAAkB,UAAAC,eAAA1B,KAAA04I,EAAAl3I,GAAA,CACA,IAAA8+E,EAAAo4D,EAAAl3I,GACAV,EAAAiR,EAAAvQ,GACAm3I,EAAA73I,GAAA+2I,EAAAxN,UAAAvpI,GAAA,WAtGAmE,EAsGAnE,EArGA,GAAamf,SAAAjgB,KAAAiF,GAAAouB,MAAA,kBAAAmF,eAuGb,QAAAid,OAAA6qC,GAAA96E,KAAAmzI,GACA,UAAAljI,MAAAgjI,EAAA5kH,cAAA,aAAAryB,EAAA,oBAAAm3I,EAAA,wBAAAr4D,EAAA,MAzGA,IAAAr7E,GA8GA2zI,eAAA,SAAAjoI,GACA,IAAAiY,SAAAqC,gBAAA4tH,aACA,YAIA,sBAAAloI,EAAAmoI,YAAA,CACA,IAAA92I,EAAA2O,EAAAmoI,cACA,OAAA92I,aAAA+2I,WAAA/2I,EAAA,KAGA,OAAA2O,aAAAooI,WACApoI,EAIAA,EAAAuZ,WAIA2tH,EAAAe,eAAAjoI,EAAAuZ,YAHA,OA7FA6hD,EAAA5iD,GAAA6vH,qBAAApB,EACA7rE,EAAAz3C,MAAAoyB,QAAAmxF,EAAAF,gBA9BA,CACA5oF,SAAA4oF,EACA7oF,aAAA6oF,EACAhpF,OAAA,SAAAr6B,GACA,GAAAy3C,EAAAz3C,EAAAvU,QAAA4iC,GAAA36C,MACA,OAAAssB,EAAAi6B,UAAAxV,QAAAzzC,MAAA0C,KAAA8N,aAmIA,IAKAmjI,EAAAltE,EAAA5iD,GAAA,MAIAonC,EAAA,CACA2oF,MAAA,iBACAC,OAAA,kBACAC,eAAA,2BAEAC,EAAA,CACAC,MAAA,QACAC,KAAA,OACAC,KAAA,QASAC,EAEA,WACA,SAAAA,EAAA9oI,GACA3I,KAAA6iC,SAAAl6B,EAIA,IAAA+oI,EAAAD,EAAAh4I,UAqGA,OAlGAi4I,EAAAC,MAAA,SAAAhpI,GACA,IAAAipI,EAAA5xI,KAAA6iC,SAEAl6B,IACAipI,EAAA5xI,KAAA6xI,gBAAAlpI,IAGA,IAAAmpI,EAAA9xI,KAAA+xI,mBAAAH,GAEAE,EAAA/oF,sBAIA/oD,KAAAgyI,eAAAJ,IAGAF,EAAAO,QAAA,WACAluE,EAAAliB,WAAA7hD,KAAA6iC,SApDA,YAqDA7iC,KAAA6iC,SAAA,MAIA6uG,EAAAG,gBAAA,SAAAlpI,GACA,IAAAwgC,EAAA0mG,EAAAG,uBAAArnI,GACAoe,GAAA,EAUA,OARAoiB,IACApiB,EAAAnG,SAAA0P,cAAA6Y,IAGApiB,IACAA,EAAAg9C,EAAAp7D,GAAAgzC,QAAA,IAAA01F,EAAAC,OAAA,IAGAvqH,GAGA2qH,EAAAK,mBAAA,SAAAppI,GACA,IAAAupI,EAAAnuE,EAAAxb,QAAA2oF,OAEA,OADAntE,EAAAp7D,GAAAggD,QAAAupF,GACAA,GAGAR,EAAAM,eAAA,SAAArpI,GACA,IAAAkrB,EAAA7zB,KAIA,GAFA+jE,EAAAp7D,GAAA8uD,YAAA45E,EAAAG,MAEAztE,EAAAp7D,GAAAmvD,SAAAu5E,EAAAE,MAAA,CAMA,IAAA3xC,EAAAiwC,EAAAK,iCAAAvnI,GACAo7D,EAAAp7D,GAAAw9C,IAAA0pF,EAAAF,eAAA,SAAArjH,GACA,OAAAuH,EAAAs+G,gBAAAxpI,EAAA2jB,KACO0kH,qBAAApxC,QARP5/F,KAAAmyI,gBAAAxpI,IAWA+oI,EAAAS,gBAAA,SAAAxpI,GACAo7D,EAAAp7D,GAAAskD,SAAAtE,QAAAJ,EAAA4oF,QAAA7zF,UAIAm0F,EAAAW,iBAAA,SAAAroI,GACA,OAAA/J,KAAA+G,KAAA,WACA,IAAAsrI,EAAAtuE,EAAA/jE,MACAoE,EAAAiuI,EAAAjuI,KAvGA,YAyGAA,IACAA,EAAA,IAAAqtI,EAAAzxI,MACAqyI,EAAAjuI,KA3GA,WA2GAA,IAGA,UAAA2F,GACA3F,EAAA2F,GAAA/J,SAKAyxI,EAAAa,eAAA,SAAAC,GACA,gBAAAjmH,GACAA,GACAA,EAAA07B,iBAGAuqF,EAAAZ,MAAA3xI,QAIAuvI,EAAAkC,EAAA,OACAr4I,IAAA,UACAV,IAAA,WACA,MAlIA,YAsIA+4I,EA3GA,GAoHA1tE,EAAAnjD,UAAA0W,GAAAixB,EAAA6oF,eAzIA,yBAyIAK,EAAAa,eAAA,IAAAb,IAOA1tE,EAAA5iD,GAAA,MAAAswH,EAAAW,iBACAruE,EAAA5iD,GAAA,MAAAiE,YAAAqsH,EAEA1tE,EAAA5iD,GAAA,MAAA6iD,WAAA,WAEA,OADAD,EAAA5iD,GAAA,MAAA8vH,EACAQ,EAAAW,kBASA,IAKAI,EAAAzuE,EAAA5iD,GAAA,OACAsxH,EAAA,CACAC,OAAA,SACAC,OAAA,MACAC,MAAA,SAEAC,EAAA,CACAC,mBAAA,0BACAC,YAAA,0BACAC,MAAA,6BACAN,OAAA,UACAC,OAAA,QAEAM,EAAA,CACA7B,eAAA,2BACA8B,oBAAA,oDASAC,EAEA,WACA,SAAAA,EAAAxqI,GACA3I,KAAA6iC,SAAAl6B,EAIA,IAAA+oI,EAAAyB,EAAA15I,UA2EA,OAxEAi4I,EAAAjuF,OAAA,WACA,IAAA2vF,GAAA,EACAC,GAAA,EACAzB,EAAA7tE,EAAA/jE,KAAA6iC,UAAA8Y,QAAAk3F,EAAAE,aAAA,GAEA,GAAAnB,EAAA,CACA,IAAAr0G,EAAAv9B,KAAA6iC,SAAAvS,cAAAuiH,EAAAG,OAEA,GAAAz1G,EAAA,CACA,aAAAA,EAAAjiC,KACA,GAAAiiC,EAAA8Y,SAAAr2C,KAAA6iC,SAAA+wD,UAAAzvE,SAAAsuH,EAAAC,QACAU,GAAA,MACa,CACb,IAAAl9F,EAAA07F,EAAAthH,cAAAuiH,EAAAH,QAEAx8F,GACA6tB,EAAA7tB,GAAAuhB,YAAAg7E,EAAAC,QAKA,GAAAU,EAAA,CACA,GAAA71G,EAAAm/D,aAAA,aAAAk1C,EAAAl1C,aAAA,aAAAn/D,EAAAq2D,UAAAzvE,SAAA,aAAAytH,EAAAh+C,UAAAzvE,SAAA,YACA,OAGAoZ,EAAA8Y,SAAAr2C,KAAA6iC,SAAA+wD,UAAAzvE,SAAAsuH,EAAAC,QACA3uE,EAAAxmC,GAAAorB,QAAA,UAGAprB,EAAAf,QACA62G,GAAA,GAIAA,GACArzI,KAAA6iC,SAAArP,aAAA,gBAAAxzB,KAAA6iC,SAAA+wD,UAAAzvE,SAAAsuH,EAAAC,SAGAU,GACArvE,EAAA/jE,KAAA6iC,UAAA60B,YAAA+6E,EAAAC,SAIAhB,EAAAO,QAAA,WACAluE,EAAAliB,WAAA7hD,KAAA6iC,SAnFA,aAoFA7iC,KAAA6iC,SAAA,MAIAswG,EAAAf,iBAAA,SAAAroI,GACA,OAAA/J,KAAA+G,KAAA,WACA,IAAA3C,EAAA2/D,EAAA/jE,MAAAoE,KA1FA,aA4FAA,IACAA,EAAA,IAAA+uI,EAAAnzI,MACA+jE,EAAA/jE,MAAAoE,KA9FA,YA8FAA,IAGA,WAAA2F,GACA3F,EAAA2F,QAKAwlI,EAAA4D,EAAA,OACA/5I,IAAA,UACAV,IAAA,WACA,MA3GA,YA+GAy6I,EAjFA,GA0FApvE,EAAAnjD,UAAA0W,GAAA27G,EAAA7B,eAAAyB,EAAAC,mBAAA,SAAAxmH,GACAA,EAAA07B,iBACA,IAAAtR,EAAApqB,EAAAvU,OAEAgsD,EAAArtB,GAAAohB,SAAA26E,EAAAE,UACAj8F,EAAAqtB,EAAArtB,GAAAiF,QAAAk3F,EAAAF,SAGAQ,EAAAf,iBAAAp6I,KAAA+rE,EAAArtB,GAAA,YACGpf,GAAA27G,EAAAC,oBAAAL,EAAAC,mBAAA,SAAAxmH,GACH,IAAAoqB,EAAAqtB,EAAAz3C,EAAAvU,QAAA4jC,QAAAk3F,EAAAF,QAAA,GACA5uE,EAAArtB,GAAAghB,YAAA+6E,EAAAG,MAAA,eAAAp1I,KAAA8uB,EAAAhxB,SAQAyoE,EAAA5iD,GAAA,OAAAgyH,EAAAf,iBACAruE,EAAA5iD,GAAA,OAAAiE,YAAA+tH,EAEApvE,EAAA5iD,GAAA,OAAA6iD,WAAA,WAEA,OADAD,EAAA5iD,GAAA,OAAAqxH,EACAW,EAAAf,kBASA,IAAAkB,EAAA,WAGAC,EAAA,eAEAC,EAAAzvE,EAAA5iD,GAAAmyH,GAQAG,EAAA,CACAxuG,SAAA,IACAyuG,UAAA,EACAC,OAAA,EACAC,MAAA,QACAzuF,MAAA,EACA0uF,OAAA,GAEAC,EAAA,CACA7uG,SAAA,mBACAyuG,SAAA,UACAC,MAAA,mBACAC,MAAA,mBACAzuF,KAAA,UACA0uF,MAAA,WAEAE,EAAA,CACAC,KAAA,OACAC,KAAA,OACAC,KAAA,OACAC,MAAA,SAEAC,EAAA,CACAC,MAAA,oBACAC,KAAA,mBACAC,QAAA,sBACAC,WAAA,yBACAC,WAAA,yBACAC,WAAA,yBACAC,UAAA,wBACAC,SAAA,uBACAC,YAAA,0BACAC,UAAA,wBACAC,WAAA,wBACAC,cAAA,4BACA5D,eAAA,8BAEA6D,EAAA,CACAC,SAAA,WACAxC,OAAA,SACA2B,MAAA,QACAF,MAAA,sBACAD,KAAA,qBACAF,KAAA,qBACAC,KAAA,qBACAkB,KAAA,gBACAC,cAAA,iBAEAC,EAAA,CACA3C,OAAA,UACA4C,YAAA,wBACAH,KAAA,iBACAI,SAAA,qBACAC,UAAA,2CACAC,WAAA,uBACAC,WAAA,gCACAC,UAAA,0BAEAC,EAAA,CACAC,MAAA,QACAC,IAAA,OASAC,EAEA,WACA,SAAAA,EAAAptI,EAAAoB,GACA/J,KAAAg2I,OAAA,KACAh2I,KAAAi2I,UAAA,KACAj2I,KAAAk2I,eAAA,KACAl2I,KAAAm2I,WAAA,EACAn2I,KAAAo2I,YAAA,EACAp2I,KAAAq2I,aAAA,KACAr2I,KAAAs2I,YAAA,EACAt2I,KAAAu2I,YAAA,EACAv2I,KAAAw2I,QAAAx2I,KAAAy2I,WAAA1sI,GACA/J,KAAA6iC,SAAAl6B,EACA3I,KAAA02I,mBAAA12I,KAAA6iC,SAAAvS,cAAA+kH,EAAAI,YACAz1I,KAAA22I,gBAAA,iBAAA/1H,SAAAqC,iBAAAlC,UAAA61H,eAAA,EACA52I,KAAA62I,cAAA/+D,QAAAj/D,OAAAi+H,cAAAj+H,OAAAk+H,gBAEA/2I,KAAAg3I,qBAIA,IAAAtF,EAAAqE,EAAAt8I,UAucA,OApcAi4I,EAAA3rG,KAAA,WACA/lC,KAAAo2I,YACAp2I,KAAAi3I,OAAAlD,EAAAC,OAIAtC,EAAAwF,gBAAA,YAGAt2H,SAAAzb,QAAA4+D,EAAA/jE,KAAA6iC,UAAA8X,GAAA,wBAAAopB,EAAA/jE,KAAA6iC,UAAAjhB,IAAA,eACA5hB,KAAA+lC,QAIA2rG,EAAAl2F,KAAA,WACAx7C,KAAAo2I,YACAp2I,KAAAi3I,OAAAlD,EAAAE,OAIAvC,EAAAkC,MAAA,SAAAtnH,GACAA,IACAtsB,KAAAm2I,WAAA,GAGAn2I,KAAA6iC,SAAAvS,cAAA+kH,EAAAG,aACA3F,EAAAC,qBAAA9vI,KAAA6iC,UACA7iC,KAAAm3I,OAAA,IAGAnyG,cAAAhlC,KAAAi2I,WACAj2I,KAAAi2I,UAAA,MAGAvE,EAAAyF,MAAA,SAAA7qH,GACAA,IACAtsB,KAAAm2I,WAAA,GAGAn2I,KAAAi2I,YACAjxG,cAAAhlC,KAAAi2I,WACAj2I,KAAAi2I,UAAA,MAGAj2I,KAAAw2I,QAAAvxG,WAAAjlC,KAAAm2I,YACAn2I,KAAAi2I,UAAApwG,aAAAjlB,SAAAw2H,gBAAAp3I,KAAAk3I,gBAAAl3I,KAAA+lC,MAAA1sC,KAAA2G,WAAAw2I,QAAAvxG,YAIAysG,EAAAjzG,GAAA,SAAAx9B,GACA,IAAA4yB,EAAA7zB,KAEAA,KAAAk2I,eAAAl2I,KAAA6iC,SAAAvS,cAAA+kH,EAAAC,aAEA,IAAA+B,EAAAr3I,KAAAs3I,cAAAt3I,KAAAk2I,gBAEA,KAAAj1I,EAAAjB,KAAAg2I,OAAAj5I,OAAA,GAAAkE,EAAA,GAIA,GAAAjB,KAAAo2I,WACAryE,EAAA/jE,KAAA6iC,UAAAsjB,IAAAiuF,EAAAE,KAAA,WACA,OAAAzgH,EAAA4K,GAAAx9B,SAFA,CAOA,GAAAo2I,IAAAp2I,EAGA,OAFAjB,KAAA4zI,aACA5zI,KAAAm3I,QAIA,IAAAI,EAAAt2I,EAAAo2I,EAAAtD,EAAAC,KAAAD,EAAAE,KAEAj0I,KAAAi3I,OAAAM,EAAAv3I,KAAAg2I,OAAA/0I,MAGAywI,EAAAO,QAAA,WACAluE,EAAA/jE,KAAA6iC,UAAApL,IAAA87G,GACAxvE,EAAAliB,WAAA7hD,KAAA6iC,SAzLA,eA0LA7iC,KAAAg2I,OAAA,KACAh2I,KAAAw2I,QAAA,KACAx2I,KAAA6iC,SAAA,KACA7iC,KAAAi2I,UAAA,KACAj2I,KAAAm2I,UAAA,KACAn2I,KAAAo2I,WAAA,KACAp2I,KAAAk2I,eAAA,KACAl2I,KAAA02I,mBAAA,MAIAhF,EAAA+E,WAAA,SAAA1sI,GAGA,OAFAA,EAAA0lI,EAAA,GAA+BgE,EAAA1pI,GAC/B8lI,EAAAW,gBAAA8C,EAAAvpI,EAAA+pI,GACA/pI,GAGA2nI,EAAA8F,aAAA,WACA,IAAAC,EAAAl5I,KAAA6B,IAAAJ,KAAAu2I,aAEA,KAAAkB,GApMA,IAoMA,CAIA,IAAAF,EAAAE,EAAAz3I,KAAAu2I,YAEAgB,EAAA,GACAv3I,KAAAw7C,OAIA+7F,EAAA,GACAv3I,KAAA+lC,SAIA2rG,EAAAsF,mBAAA,WACA,IAAAp8G,EAAA56B,KAEAA,KAAAw2I,QAAA9C,UACA3vE,EAAA/jE,KAAA6iC,UAAAvL,GAAA88G,EAAAG,QAAA,SAAAjoH,GACA,OAAAsO,EAAA88G,SAAAprH,KAIA,UAAAtsB,KAAAw2I,QAAA5C,OACA7vE,EAAA/jE,KAAA6iC,UAAAvL,GAAA88G,EAAAI,WAAA,SAAAloH,GACA,OAAAsO,EAAAg5G,MAAAtnH,KACSgL,GAAA88G,EAAAK,WAAA,SAAAnoH,GACT,OAAAsO,EAAAu8G,MAAA7qH,KAIAtsB,KAAA23I,2BAGAjG,EAAAiG,wBAAA,WACA,IAAAx5G,EAAAn+B,KAEA,GAAAA,KAAA22I,gBAAA,CAIA,IAAArwI,EAAA,SAAAgmB,GACA6R,EAAA04G,eAAAjB,EAAAtpH,EAAAk8B,cAAAkC,YAAA7+B,eACAsS,EAAAm4G,YAAAhqH,EAAAk8B,cAAA6B,QACSlsB,EAAA04G,gBACT14G,EAAAm4G,YAAAhqH,EAAAk8B,cAAAuC,QAAA,GAAAV,UAaA7vC,EAAA,SAAA8R,GACA6R,EAAA04G,eAAAjB,EAAAtpH,EAAAk8B,cAAAkC,YAAA7+B,iBACAsS,EAAAo4G,YAAAjqH,EAAAk8B,cAAA6B,QAAAlsB,EAAAm4G,aAGAn4G,EAAAq5G,eAEA,UAAAr5G,EAAAq4G,QAAA5C,QAQAz1G,EAAAy1G,QAEAz1G,EAAAk4G,cACAjgH,aAAA+H,EAAAk4G,cAGAl4G,EAAAk4G,aAAA90H,WAAA,SAAA+K,GACA,OAAA6R,EAAAg5G,MAAA7qH,IAxRA,IAyRW6R,EAAAq4G,QAAAvxG,YAIX8+B,EAAA/jE,KAAA6iC,SAAA2N,iBAAA6kG,EAAAE,WAAAj+G,GAAA88G,EAAAW,WAAA,SAAAzvI,GACA,OAAAA,EAAA0iD,mBAGAhoD,KAAA62I,eACA9yE,EAAA/jE,KAAA6iC,UAAAvL,GAAA88G,EAAAS,YAAA,SAAAvoH,GACA,OAAAhmB,EAAAgmB,KAEAy3C,EAAA/jE,KAAA6iC,UAAAvL,GAAA88G,EAAAU,UAAA,SAAAxoH,GACA,OAAA9R,EAAA8R,KAGAtsB,KAAA6iC,SAAA+wD,UAAA/3C,IAAAo5F,EAAAG,iBAEArxE,EAAA/jE,KAAA6iC,UAAAvL,GAAA88G,EAAAM,WAAA,SAAApoH,GACA,OAAAhmB,EAAAgmB,KAEAy3C,EAAA/jE,KAAA6iC,UAAAvL,GAAA88G,EAAAO,UAAA,SAAAroH,GACA,OAtDA,SAAAA,GAEAA,EAAAk8B,cAAAuC,SAAAz+B,EAAAk8B,cAAAuC,QAAAhuD,OAAA,EACAohC,EAAAo4G,YAAA,EAEAp4G,EAAAo4G,YAAAjqH,EAAAk8B,cAAAuC,QAAA,GAAAV,QAAAlsB,EAAAm4G,YAiDAsB,CAAAtrH,KAEAy3C,EAAA/jE,KAAA6iC,UAAAvL,GAAA88G,EAAAQ,SAAA,SAAAtoH,GACA,OAAA9R,EAAA8R,QAKAolH,EAAAgG,SAAA,SAAAprH,GACA,sBAAA9uB,KAAA8uB,EAAAvU,OAAAi2E,SAIA,OAAA1hE,EAAA0+B,OACA,KAjUA,GAkUA1+B,EAAA07B,iBACAhoD,KAAAw7C,OACA,MAEA,KApUA,GAqUAlvB,EAAA07B,iBACAhoD,KAAA+lC,SAOA2rG,EAAA4F,cAAA,SAAA3uI,GAEA,OADA3I,KAAAg2I,OAAArtI,KAAAuZ,WAAA,GAAAhK,MAAAlgB,KAAA2Q,EAAAuZ,WAAAsuB,iBAAA6kG,EAAAF,OAAA,GACAn1I,KAAAg2I,OAAAt7I,QAAAiO,IAGA+oI,EAAAmG,oBAAA,SAAAN,EAAArhG,GACA,IAAA4hG,EAAAP,IAAAxD,EAAAC,KACA+D,EAAAR,IAAAxD,EAAAE,KAEAoD,EAAAr3I,KAAAs3I,cAAAphG,GAEA8hG,EAAAh4I,KAAAg2I,OAAAj5I,OAAA,EACAk7I,EAAAF,GAAA,IAAAV,GAAAS,GAAAT,IAAAW,EAEA,GAAAC,IAAAj4I,KAAAw2I,QAAArxF,KACA,OAAAjP,EAGA,IAAA6a,EAAAwmF,IAAAxD,EAAAE,MAAA,IACAiE,GAAAb,EAAAtmF,GAAA/wD,KAAAg2I,OAAAj5I,OACA,WAAAm7I,EAAAl4I,KAAAg2I,OAAAh2I,KAAAg2I,OAAAj5I,OAAA,GAAAiD,KAAAg2I,OAAAkC,IAGAxG,EAAAyG,mBAAA,SAAAlvF,EAAAmvF,GACA,IAAAC,EAAAr4I,KAAAs3I,cAAAruF,GAEA2jD,EAAA5sG,KAAAs3I,cAAAt3I,KAAA6iC,SAAAvS,cAAA+kH,EAAAC,cAEAgD,EAAAv0E,EAAAxb,MAAA6rF,EAAAC,MAAA,CACAprF,gBACAsuF,UAAAa,EACA3iE,KAAAm3B,EACAnuE,GAAA45G,IAGA,OADAt0E,EAAA/jE,KAAA6iC,UAAA8lB,QAAA2vF,GACAA,GAGA5G,EAAA6G,2BAAA,SAAA5vI,GACA,GAAA3I,KAAA02I,mBAAA,CACA,IAAA8B,EAAA,GAAAtgI,MAAAlgB,KAAAgI,KAAA02I,mBAAAlmG,iBAAA6kG,EAAA3C,SACA3uE,EAAAy0E,GAAA/gF,YAAAw9E,EAAAvC,QAEA,IAAA+F,EAAAz4I,KAAA02I,mBAAA5vH,SAAA9mB,KAAAs3I,cAAA3uI,IAEA8vI,GACA10E,EAAA00E,GAAArhF,SAAA69E,EAAAvC,UAKAhB,EAAAuF,OAAA,SAAAM,EAAA5uI,GACA,IAWA+vI,EACAC,EACAP,EAbAxyG,EAAA5lC,KAEAk2C,EAAAl2C,KAAA6iC,SAAAvS,cAAA+kH,EAAAC,aAEAsD,EAAA54I,KAAAs3I,cAAAphG,GAEA2iG,EAAAlwI,GAAAutC,GAAAl2C,KAAA63I,oBAAAN,EAAArhG,GAEA4iG,EAAA94I,KAAAs3I,cAAAuB,GAEAE,EAAAjhE,QAAA93E,KAAAi2I,WAeA,GAVAsB,IAAAxD,EAAAC,MACA0E,EAAAzD,EAAAf,KACAyE,EAAA1D,EAAAjB,KACAoE,EAAArE,EAAAG,OAEAwE,EAAAzD,EAAAd,MACAwE,EAAA1D,EAAAhB,KACAmE,EAAArE,EAAAI,OAGA0E,GAAA90E,EAAA80E,GAAA/gF,SAAAm9E,EAAAvC,QACA1yI,KAAAo2I,YAAA,MADA,CAKA,IAAAkC,EAAAt4I,KAAAm4I,mBAAAU,EAAAT,GAEA,IAAAE,EAAAvvF,sBAIA7S,GAAA2iG,EAAA,CAKA74I,KAAAo2I,YAAA,EAEA2C,GACA/4I,KAAA4zI,QAGA5zI,KAAAu4I,2BAAAM,GAEA,IAAAG,EAAAj1E,EAAAxb,MAAA6rF,EAAAE,KAAA,CACArrF,cAAA4vF,EACAtB,UAAAa,EACA3iE,KAAAmjE,EACAn6G,GAAAq6G,IAGA,GAAA/0E,EAAA/jE,KAAA6iC,UAAAi1B,SAAAm9E,EAAAZ,OAAA,CACAtwE,EAAA80E,GAAAzhF,SAAAuhF,GACA9I,EAAAS,OAAAuI,GACA90E,EAAA7tB,GAAAkhB,SAAAshF,GACA30E,EAAA80E,GAAAzhF,SAAAshF,GACA,IAAAO,EAAAp+I,SAAAg+I,EAAAxoG,aAAA,qBAEA4oG,GACAj5I,KAAAw2I,QAAA0C,gBAAAl5I,KAAAw2I,QAAA0C,iBAAAl5I,KAAAw2I,QAAAvxG,SACAjlC,KAAAw2I,QAAAvxG,SAAAg0G,GAEAj5I,KAAAw2I,QAAAvxG,SAAAjlC,KAAAw2I,QAAA0C,iBAAAl5I,KAAAw2I,QAAAvxG,SAGA,IAAA26D,EAAAiwC,EAAAK,iCAAAh6F,GACA6tB,EAAA7tB,GAAAiQ,IAAA0pF,EAAAF,eAAA,WACA5rE,EAAA80E,GAAAphF,YAAAihF,EAAA,IAAAC,GAAAvhF,SAAA69E,EAAAvC,QACA3uE,EAAA7tB,GAAAuhB,YAAAw9E,EAAAvC,OAAA,IAAAiG,EAAA,IAAAD,GACA9yG,EAAAwwG,YAAA,EACA70H,WAAA,WACA,OAAAwiD,EAAAn+B,EAAA/C,UAAA8lB,QAAAqwF,IACW,KACFhI,qBAAApxC,QAET77B,EAAA7tB,GAAAuhB,YAAAw9E,EAAAvC,QACA3uE,EAAA80E,GAAAzhF,SAAA69E,EAAAvC,QACA1yI,KAAAo2I,YAAA,EACAryE,EAAA/jE,KAAA6iC,UAAA8lB,QAAAqwF,GAGAD,GACA/4I,KAAAm3I,WAKApB,EAAA3D,iBAAA,SAAAroI,GACA,OAAA/J,KAAA+G,KAAA,WACA,IAAA3C,EAAA2/D,EAAA/jE,MAAAoE,KAreA,eAueAoyI,EAAA/G,EAAA,GAAsCgE,EAAA1vE,EAAA/jE,MAAAoE,QAEtC,iBAAA2F,IACAysI,EAAA/G,EAAA,GAAoC+G,EAAAzsI,IAGpC,IAAAmkH,EAAA,iBAAAnkH,IAAAysI,EAAA7C,MAOA,GALAvvI,IACAA,EAAA,IAAA2xI,EAAA/1I,KAAAw2I,GACAzyE,EAAA/jE,MAAAoE,KAjfA,cAifAA,IAGA,iBAAA2F,EACA3F,EAAAq6B,GAAA10B,QACS,oBAAAmkH,EAAA,CACT,YAAA9pH,EAAA8pH,GACA,UAAA7oG,UAAA,oBAAA6oG,EAAA,KAGA9pH,EAAA8pH,UACSsoB,EAAAvxG,WACT7gC,EAAAwvI,QACAxvI,EAAA+yI,YAKApB,EAAAoD,qBAAA,SAAA7sH,GACA,IAAA6c,EAAA0mG,EAAAG,uBAAAhwI,MAEA,GAAAmpC,EAAA,CAIA,IAAApxB,EAAAgsD,EAAA56B,GAAA,GAEA,GAAApxB,GAAAgsD,EAAAhsD,GAAA+/C,SAAAm9E,EAAAC,UAAA,CAIA,IAAAnrI,EAAA0lI,EAAA,GAAmC1rE,EAAAhsD,GAAA3T,OAAA2/D,EAAA/jE,MAAAoE,QAEnCg1I,EAAAp5I,KAAAqwC,aAAA,iBAEA+oG,IACArvI,EAAAk7B,UAAA,GAGA8wG,EAAA3D,iBAAAp6I,KAAA+rE,EAAAhsD,GAAAhO,GAEAqvI,GACAr1E,EAAAhsD,GAAA3T,KA3hBA,eA2hBAq6B,GAAA26G,GAGA9sH,EAAA07B,oBAGAunF,EAAAwG,EAAA,OACA38I,IAAA,UACAV,IAAA,WACA,MAriBA,UAuiBK,CACLU,IAAA,UACAV,IAAA,WACA,OAAA+6I,MAIAsC,EA3dA,GAoeAhyE,EAAAnjD,UAAA0W,GAAA88G,EAAAhD,eAAAiE,EAAAK,WAAAK,EAAAoD,sBACAp1E,EAAAlrD,QAAAye,GAAA88G,EAAAY,cAAA,WAGA,IAFA,IAAAqE,EAAA,GAAAnhI,MAAAlgB,KAAA4oB,SAAA4vB,iBAAA6kG,EAAAM,YAEA99I,EAAA,EAAAoD,EAAAo+I,EAAAt8I,OAA2ClF,EAAAoD,EAASpD,IAAA,CACpD,IAAAyhJ,EAAAv1E,EAAAs1E,EAAAxhJ,IAEAk+I,EAAA3D,iBAAAp6I,KAAAshJ,IAAAl1I,WASA2/D,EAAA5iD,GAAAmyH,GAAAyC,EAAA3D,iBACAruE,EAAA5iD,GAAAmyH,GAAAluH,YAAA2wH,EAEAhyE,EAAA5iD,GAAAmyH,GAAAtvE,WAAA,WAEA,OADAD,EAAA5iD,GAAAmyH,GAAAE,EACAuC,EAAA3D,kBASA,IAAAmH,EAAA,WAKAC,EAAAz1E,EAAA5iD,GAAAo4H,GACAE,EAAA,CACAh2F,QAAA,EACA18B,OAAA,IAEA2yH,EAAA,CACAj2F,OAAA,UACA18B,OAAA,oBAEA4yH,EAAA,CACAnI,KAAA,mBACAoI,MAAA,oBACAC,KAAA,mBACAC,OAAA,qBACA1I,eAAA,8BAEA2I,EAAA,CACAvI,KAAA,OACAwI,SAAA,WACAC,WAAA,aACAC,UAAA,aAEAC,EAAA,CACAC,MAAA,QACAC,OAAA,UAEAC,EAAA,CACAC,QAAA,qBACAxH,YAAA,4BASAyH,EAEA,WACA,SAAAA,EAAA7xI,EAAAoB,GACA/J,KAAAy6I,kBAAA,EACAz6I,KAAA6iC,SAAAl6B,EACA3I,KAAAw2I,QAAAx2I,KAAAy2I,WAAA1sI,GACA/J,KAAA06I,cAAA,GAAAxiI,MAAAlgB,KAAA4oB,SAAA4vB,iBAAA,mCAAA7nC,EAAAvG,GAAA,6CAAAuG,EAAAvG,GAAA,OAGA,IAFA,IAAAu4I,EAAA,GAAAziI,MAAAlgB,KAAA4oB,SAAA4vB,iBAAA8pG,EAAAvH,cAEAl7I,EAAA,EAAAoD,EAAA0/I,EAAA59I,OAA8ClF,EAAAoD,EAASpD,IAAA,CACvD,IAAAgyC,EAAA8wG,EAAA9iJ,GACAsxC,EAAA0mG,EAAAG,uBAAAnmG,GACA+wG,EAAA,GAAA1iI,MAAAlgB,KAAA4oB,SAAA4vB,iBAAArH,IAAA5f,OAAA,SAAAsxH,GACA,OAAAA,IAAAlyI,IAGA,OAAAwgC,GAAAyxG,EAAA79I,OAAA,IACAiD,KAAA86I,UAAA3xG,EAEAnpC,KAAA06I,cAAA59I,KAAA+sC,IAIA7pC,KAAA+6I,QAAA/6I,KAAAw2I,QAAAzvH,OAAA/mB,KAAAg7I,aAAA,KAEAh7I,KAAAw2I,QAAAzvH,QACA/mB,KAAAi7I,0BAAAj7I,KAAA6iC,SAAA7iC,KAAA06I,eAGA16I,KAAAw2I,QAAA/yF,QACAzjD,KAAAyjD,SAKA,IAAAiuF,EAAA8I,EAAA/gJ,UA4OA,OAzOAi4I,EAAAjuF,OAAA,WACAsgB,EAAA/jE,KAAA6iC,UAAAi1B,SAAAiiF,EAAAvI,MACAxxI,KAAAkyB,OAEAlyB,KAAAwjD,QAIAkuF,EAAAluF,KAAA,WACA,IAMA03F,EACAC,EAPAtnH,EAAA7zB,KAEA,KAAAA,KAAAy6I,kBAAA12E,EAAA/jE,KAAA6iC,UAAAi1B,SAAAiiF,EAAAvI,QAOAxxI,KAAA+6I,SASA,KARAG,EAAA,GAAAhjI,MAAAlgB,KAAAgI,KAAA+6I,QAAAvqG,iBAAA8pG,EAAAC,UAAAhxH,OAAA,SAAAsgB,GACA,uBAAAhW,EAAA2iH,QAAAzvH,OACA8iB,EAAAwG,aAAA,iBAAAxc,EAAA2iH,QAAAzvH,OAGA8iB,EAAA+pD,UAAAzvE,SAAA41H,EAAAC,aAGAj9I,SACAm+I,EAAA,MAIAA,IACAC,EAAAp3E,EAAAm3E,GAAAxlG,IAAA11C,KAAA86I,WAAA12I,KAhHA,iBAkHA+2I,EAAAV,mBAHA,CAQA,IAAAW,EAAAr3E,EAAAxb,MAAAoxF,EAAAnI,MAGA,GAFAztE,EAAA/jE,KAAA6iC,UAAA8lB,QAAAyyF,IAEAA,EAAAryF,qBAAA,CAIAmyF,IACAV,EAAApI,iBAAAp6I,KAAA+rE,EAAAm3E,GAAAxlG,IAAA11C,KAAA86I,WAAA,QAEAK,GACAp3E,EAAAm3E,GAAA92I,KAlIA,cAkIA,OAIA,IAAAusD,EAAA3wD,KAAAq7I,gBAEAt3E,EAAA/jE,KAAA6iC,UAAA40B,YAAAsiF,EAAAC,UAAA5iF,SAAA2iF,EAAAE,YACAj6I,KAAA6iC,SAAAh3B,MAAA8kD,GAAA,EAEA3wD,KAAA06I,cAAA39I,QACAgnE,EAAA/jE,KAAA06I,eAAAjjF,YAAAsiF,EAAAG,WAAA7mG,KAAA,oBAGArzC,KAAAs7I,kBAAA,GAEA,IASAC,EAAA5qF,EAAA,GAAA9kC,cAAA8kC,EAAAz4C,MAAA,GACAsjI,EAAA,SAAAD,EACA37C,EAAAiwC,EAAAK,iCAAAlwI,KAAA6iC,UACAkhC,EAAA/jE,KAAA6iC,UAAAsjB,IAAA0pF,EAAAF,eAZA,WACA5rE,EAAAlwC,EAAAgP,UAAA40B,YAAAsiF,EAAAE,YAAA7iF,SAAA2iF,EAAAC,UAAA5iF,SAAA2iF,EAAAvI,MACA39G,EAAAgP,SAAAh3B,MAAA8kD,GAAA,GAEA98B,EAAAynH,kBAAA,GAEAv3E,EAAAlwC,EAAAgP,UAAA8lB,QAAAgxF,EAAAC,SAMA5I,qBAAApxC,GACA5/F,KAAA6iC,SAAAh3B,MAAA8kD,GAAA3wD,KAAA6iC,SAAA24G,GAAA,QAGA9J,EAAAx/G,KAAA,WACA,IAAA0I,EAAA56B,KAEA,IAAAA,KAAAy6I,kBAAA12E,EAAA/jE,KAAA6iC,UAAAi1B,SAAAiiF,EAAAvI,MAAA,CAIA,IAAA4J,EAAAr3E,EAAAxb,MAAAoxF,EAAAE,MAGA,GAFA91E,EAAA/jE,KAAA6iC,UAAA8lB,QAAAyyF,IAEAA,EAAAryF,qBAAA,CAIA,IAAA4H,EAAA3wD,KAAAq7I,gBAEAr7I,KAAA6iC,SAAAh3B,MAAA8kD,GAAA3wD,KAAA6iC,SAAA3c,wBAAAyqC,GAAA,KACAk/E,EAAAS,OAAAtwI,KAAA6iC,UACAkhC,EAAA/jE,KAAA6iC,UAAAu0B,SAAA2iF,EAAAE,YAAAxiF,YAAAsiF,EAAAC,UAAAviF,YAAAsiF,EAAAvI,MACA,IAAAiK,EAAAz7I,KAAA06I,cAAA39I,OAEA,GAAA0+I,EAAA,EACA,QAAA5jJ,EAAA,EAAuBA,EAAA4jJ,EAAwB5jJ,IAAA,CAC/C,IAAA8wD,EAAA3oD,KAAA06I,cAAA7iJ,GACAsxC,EAAA0mG,EAAAG,uBAAArnF,GAEA,UAAAxf,EAAA,CACA,IAAAuyG,EAAA33E,EAAA,GAAA7rD,MAAAlgB,KAAA4oB,SAAA4vB,iBAAArH,KAEAuyG,EAAA5jF,SAAAiiF,EAAAvI,OACAztE,EAAApb,GAAAyO,SAAA2iF,EAAAG,WAAA7mG,KAAA,qBAMArzC,KAAAs7I,kBAAA,GAQAt7I,KAAA6iC,SAAAh3B,MAAA8kD,GAAA,GACA,IAAAivC,EAAAiwC,EAAAK,iCAAAlwI,KAAA6iC,UACAkhC,EAAA/jE,KAAA6iC,UAAAsjB,IAAA0pF,EAAAF,eARA,WACA/0G,EAAA0gH,kBAAA,GAEAv3E,EAAAnpC,EAAAiI,UAAA40B,YAAAsiF,EAAAE,YAAA7iF,SAAA2iF,EAAAC,UAAArxF,QAAAgxF,EAAAG,UAKA9I,qBAAApxC,MAGA8xC,EAAA4J,iBAAA,SAAAK,GACA37I,KAAAy6I,iBAAAkB,GAGAjK,EAAAO,QAAA,WACAluE,EAAAliB,WAAA7hD,KAAA6iC,SAvNA,eAwNA7iC,KAAAw2I,QAAA,KACAx2I,KAAA+6I,QAAA,KACA/6I,KAAA6iC,SAAA,KACA7iC,KAAA06I,cAAA,KACA16I,KAAAy6I,iBAAA,MAIA/I,EAAA+E,WAAA,SAAA1sI,GAKA,OAJAA,EAAA0lI,EAAA,GAA+BgK,EAAA1vI,IAC/B05C,OAAAq0B,QAAA/tE,EAAA05C,QAEAosF,EAAAW,gBAAA+I,EAAAxvI,EAAA2vI,GACA3vI,GAGA2nI,EAAA2J,cAAA,WACA,IAAAO,EAAA73E,EAAA/jE,KAAA6iC,UAAAi1B,SAAAqiF,EAAAC,OACA,OAAAwB,EAAAzB,EAAAC,MAAAD,EAAAE,QAGA3I,EAAAsJ,WAAA,WACA,IAEAj0H,EAFAoX,EAAAn+B,KAIA6vI,EAAAxN,UAAAriI,KAAAw2I,QAAAzvH,SACAA,EAAA/mB,KAAAw2I,QAAAzvH,YAEA,IAAA/mB,KAAAw2I,QAAAzvH,OAAAkN,SACAlN,EAAA/mB,KAAAw2I,QAAAzvH,OAAA,KAGAA,EAAAnG,SAAA0P,cAAAtwB,KAAAw2I,QAAAzvH,QAGA,IAAAoiB,EAAA,yCAAAnpC,KAAAw2I,QAAAzvH,OAAA,KACAD,EAAA,GAAA5O,MAAAlgB,KAAA+uB,EAAAypB,iBAAArH,IAIA,OAHA46B,EAAAj9C,GAAA/f,KAAA,SAAAlP,EAAA8Q,GACAw1B,EAAA88G,0BAAAT,EAAAqB,sBAAAlzI,GAAA,CAAAA,MAEAoe,GAGA2qH,EAAAuJ,0BAAA,SAAAtyI,EAAAmzI,GACA,IAAAC,EAAAh4E,EAAAp7D,GAAAmvD,SAAAiiF,EAAAvI,MAEAsK,EAAA/+I,QACAgnE,EAAA+3E,GAAApkF,YAAAqiF,EAAAG,WAAA6B,GAAA1oG,KAAA,gBAAA0oG,IAKAvB,EAAAqB,sBAAA,SAAAlzI,GACA,IAAAwgC,EAAA0mG,EAAAG,uBAAArnI,GACA,OAAAwgC,EAAAvoB,SAAA0P,cAAA6Y,GAAA,MAGAqxG,EAAApI,iBAAA,SAAAroI,GACA,OAAA/J,KAAA+G,KAAA,WACA,IAAAi1I,EAAAj4E,EAAA/jE,MACAoE,EAAA43I,EAAA53I,KArRA,eAuRAoyI,EAAA/G,EAAA,GAAsCgK,EAAAuC,EAAA53I,OAAA,iBAAA2F,OAAA,IAWtC,IATA3F,GAAAoyI,EAAA/yF,QAAA,YAAAjmD,KAAAuM,KACAysI,EAAA/yF,QAAA,GAGAr/C,IACAA,EAAA,IAAAo2I,EAAAx6I,KAAAw2I,GACAwF,EAAA53I,KA/RA,cA+RAA,IAGA,iBAAA2F,EAAA,CACA,YAAA3F,EAAA2F,GACA,UAAAsb,UAAA,oBAAAtb,EAAA,KAGA3F,EAAA2F,SAKAwlI,EAAAiL,EAAA,OACAphJ,IAAA,UACAV,IAAA,WACA,MAhTA,UAkTK,CACLU,IAAA,UACAV,IAAA,WACA,OAAA+gJ,MAIAe,EA9QA,GAuRAz2E,EAAAnjD,UAAA0W,GAAAqiH,EAAAvI,eAAAkJ,EAAAvH,YAAA,SAAAzmH,GAEA,MAAAA,EAAAu7B,cAAAmmC,SACA1hE,EAAA07B,iBAGA,IAAAi0F,EAAAl4E,EAAA/jE,MACAmpC,EAAA0mG,EAAAG,uBAAAhwI,MACAg0C,EAAA,GAAA97B,MAAAlgB,KAAA4oB,SAAA4vB,iBAAArH,IACA46B,EAAA/vB,GAAAjtC,KAAA,WACA,IAAAm1I,EAAAn4E,EAAA/jE,MACAoE,EAAA83I,EAAA93I,KA5UA,eA6UA2F,EAAA3F,EAAA,SAAA63I,EAAA73I,OAEAo2I,EAAApI,iBAAAp6I,KAAAkkJ,EAAAnyI,OASAg6D,EAAA5iD,GAAAo4H,GAAAiB,EAAApI,iBACAruE,EAAA5iD,GAAAo4H,GAAAn0H,YAAAo1H,EAEAz2E,EAAA5iD,GAAAo4H,GAAAv1E,WAAA,WAEA,OADAD,EAAA5iD,GAAAo4H,GAAAC,EACAgB,EAAApI,kBASA,IAAA+J,EAAA,WAKAC,EAAAr4E,EAAA5iD,GAAAg7H,GAaAE,EAAA,IAAA5uG,OAAA6uG,YACAC,EAAA,CACA1C,KAAA,mBACAC,OAAA,qBACAtI,KAAA,mBACAoI,MAAA,oBACA4C,MAAA,oBACApL,eAAA,6BACAqL,iBAAA,+BACAC,eAAA,8BAEAC,EAAA,CACAC,SAAA,WACApL,KAAA,OACAqL,OAAA,SACAC,UAAA,YACAC,SAAA,WACAC,UAAA,sBACAC,SAAA,qBACAC,gBAAA,mBAEAC,EAAA,CACApK,YAAA,2BACAqK,WAAA,iBACAC,KAAA,iBACAC,WAAA,cACAC,cAAA,+DAEAC,EAAA,CACAC,IAAA,YACAC,OAAA,UACAC,OAAA,eACAC,UAAA,aACAzJ,MAAA,cACA0J,SAAA,YACA3J,KAAA,aACA4J,QAAA,YAEAC,EAAA,CACA/vH,OAAA,EACA+C,MAAA,EACAitH,SAAA,eACA/1H,UAAA,SACA3kB,QAAA,WAEA26I,EAAA,CACAjwH,OAAA,2BACA+C,KAAA,UACAitH,SAAA,mBACA/1H,UAAA,mBACA3kB,QAAA,UASA46I,EAEA,WACA,SAAAA,EAAAv1I,EAAAoB,GACA/J,KAAA6iC,SAAAl6B,EACA3I,KAAAm+I,QAAA,KACAn+I,KAAAw2I,QAAAx2I,KAAAy2I,WAAA1sI,GACA/J,KAAAo+I,MAAAp+I,KAAAq+I,kBACAr+I,KAAAs+I,UAAAt+I,KAAAu+I,gBAEAv+I,KAAAg3I,qBAIA,IAAAtF,EAAAwM,EAAAzkJ,UA0YA,OAvYAi4I,EAAAjuF,OAAA,WACA,IAAAzjD,KAAA6iC,SAAApF,WAAAsmC,EAAA/jE,KAAA6iC,UAAAi1B,SAAA6kF,EAAAC,UAAA,CAIA,IAAA71H,EAAAm3H,EAAAM,sBAAAx+I,KAAA6iC,UAEA47G,EAAA16E,EAAA/jE,KAAAo+I,OAAAtmF,SAAA6kF,EAAAnL,MAIA,GAFA0M,EAAAQ,eAEAD,EAAA,CAIA,IAAAx1F,EAAA,CACAA,cAAAjpD,KAAA6iC,UAEA87G,EAAA56E,EAAAxb,MAAAg0F,EAAA/K,KAAAvoF,GAGA,GAFA8a,EAAAh9C,GAAA4hC,QAAAg2F,IAEAA,EAAA51F,qBAAA,CAKA,IAAA/oD,KAAAs+I,UAAA,CAKA,YAAA1qH,EACA,UAAAvO,UAAA,oEAGA,IAAAu5H,EAAA5+I,KAAA6iC,SAEA,WAAA7iC,KAAAw2I,QAAAvuH,UACA22H,EAAA73H,EACS8oH,EAAAxN,UAAAriI,KAAAw2I,QAAAvuH,aACT22H,EAAA5+I,KAAAw2I,QAAAvuH,eAEA,IAAAjoB,KAAAw2I,QAAAvuH,UAAAgM,SACA2qH,EAAA5+I,KAAAw2I,QAAAvuH,UAAA,KAOA,iBAAAjoB,KAAAw2I,QAAAwH,UACAj6E,EAAAh9C,GAAAqwC,SAAAulF,EAAAO,iBAGAl9I,KAAAm+I,QAAA,IAAAvqH,EAAAgrH,EAAA5+I,KAAAo+I,MAAAp+I,KAAA6+I,oBAOA,iBAAAj+H,SAAAqC,iBAAA,IAAA8gD,EAAAh9C,GAAA40B,QAAAwhG,EAAAG,YAAAvgJ,QACAgnE,EAAAnjD,SAAAyB,MAAAyE,WAAAwQ,GAAA,iBAAAysC,EAAAh+D,MAGA/F,KAAA6iC,SAAArG,QAEAx8B,KAAA6iC,SAAArP,aAAA,oBAEAuwC,EAAA/jE,KAAAo+I,OAAA1mF,YAAAilF,EAAAnL,MACAztE,EAAAh9C,GAAA2wC,YAAAilF,EAAAnL,MAAA7oF,QAAAob,EAAAxb,MAAAg0F,EAAA3C,MAAA3wF,QAGAyoF,EAAAluF,KAAA,WACA,KAAAxjD,KAAA6iC,SAAApF,UAAAsmC,EAAA/jE,KAAA6iC,UAAAi1B,SAAA6kF,EAAAC,WAAA74E,EAAA/jE,KAAAo+I,OAAAtmF,SAAA6kF,EAAAnL,OAAA,CAIA,IAAAvoF,EAAA,CACAA,cAAAjpD,KAAA6iC,UAEA87G,EAAA56E,EAAAxb,MAAAg0F,EAAA/K,KAAAvoF,GAEAliC,EAAAm3H,EAAAM,sBAAAx+I,KAAA6iC,UAEAkhC,EAAAh9C,GAAA4hC,QAAAg2F,GAEAA,EAAA51F,uBAIAgb,EAAA/jE,KAAAo+I,OAAA1mF,YAAAilF,EAAAnL,MACAztE,EAAAh9C,GAAA2wC,YAAAilF,EAAAnL,MAAA7oF,QAAAob,EAAAxb,MAAAg0F,EAAA3C,MAAA3wF,OAGAyoF,EAAAx/G,KAAA,WACA,IAAAlyB,KAAA6iC,SAAApF,WAAAsmC,EAAA/jE,KAAA6iC,UAAAi1B,SAAA6kF,EAAAC,WAAA74E,EAAA/jE,KAAAo+I,OAAAtmF,SAAA6kF,EAAAnL,MAAA,CAIA,IAAAvoF,EAAA,CACAA,cAAAjpD,KAAA6iC,UAEAi8G,EAAA/6E,EAAAxb,MAAAg0F,EAAA1C,KAAA5wF,GAEAliC,EAAAm3H,EAAAM,sBAAAx+I,KAAA6iC,UAEAkhC,EAAAh9C,GAAA4hC,QAAAm2F,GAEAA,EAAA/1F,uBAIAgb,EAAA/jE,KAAAo+I,OAAA1mF,YAAAilF,EAAAnL,MACAztE,EAAAh9C,GAAA2wC,YAAAilF,EAAAnL,MAAA7oF,QAAAob,EAAAxb,MAAAg0F,EAAAzC,OAAA7wF,OAGAyoF,EAAAO,QAAA,WACAluE,EAAAliB,WAAA7hD,KAAA6iC,SAlNA,eAmNAkhC,EAAA/jE,KAAA6iC,UAAApL,IAlNA,gBAmNAz3B,KAAA6iC,SAAA,KACA7iC,KAAAo+I,MAAA,KAEA,OAAAp+I,KAAAm+I,UACAn+I,KAAAm+I,QAAAptI,UAEA/Q,KAAAm+I,QAAA,OAIAzM,EAAAjsI,OAAA,WACAzF,KAAAs+I,UAAAt+I,KAAAu+I,gBAEA,OAAAv+I,KAAAm+I,SACAn+I,KAAAm+I,QAAAvxH,kBAKA8kH,EAAAsF,mBAAA,WACA,IAAAnjH,EAAA7zB,KAEA+jE,EAAA/jE,KAAA6iC,UAAAvL,GAAAilH,EAAAC,MAAA,SAAAlwH,GACAA,EAAA07B,iBACA17B,EAAA27B,kBAEAp0B,EAAA4vB,YAIAiuF,EAAA+E,WAAA,SAAA1sI,GAGA,OAFAA,EAAA0lI,EAAA,GAA+BzvI,KAAAujC,YAAAkwG,QAAA1vE,EAAA/jE,KAAA6iC,UAAAz+B,OAAA2F,GAC/B8lI,EAAAW,gBAAA2L,EAAApyI,EAAA/J,KAAAujC,YAAAuwG,aACA/pI,GAGA2nI,EAAA2M,gBAAA,WACA,IAAAr+I,KAAAo+I,MAAA,CACA,IAAAr3H,EAAAm3H,EAAAM,sBAAAx+I,KAAA6iC,UAEA9b,IACA/mB,KAAAo+I,MAAAr3H,EAAAuJ,cAAA6sH,EAAAE,OAIA,OAAAr9I,KAAAo+I,OAGA1M,EAAAqN,cAAA,WACA,IAAAC,EAAAj7E,EAAA/jE,KAAA6iC,SAAA3gB,YACA6G,EAAAy0H,EAAAG,OAgBA,OAdAqB,EAAAlnF,SAAA6kF,EAAAE,SACA9zH,EAAAy0H,EAAAC,IAEA15E,EAAA/jE,KAAAo+I,OAAAtmF,SAAA6kF,EAAAK,aACAj0H,EAAAy0H,EAAAE,SAEOsB,EAAAlnF,SAAA6kF,EAAAG,WACP/zH,EAAAy0H,EAAArJ,MACO6K,EAAAlnF,SAAA6kF,EAAAI,UACPh0H,EAAAy0H,EAAAtJ,KACOnwE,EAAA/jE,KAAAo+I,OAAAtmF,SAAA6kF,EAAAK,aACPj0H,EAAAy0H,EAAAI,WAGA70H,GAGA2oH,EAAA6M,cAAA,WACA,OAAAx6E,EAAA/jE,KAAA6iC,UAAA8Y,QAAA,WAAA5+C,OAAA,GAGA20I,EAAAmN,iBAAA,WACA,IAAAjkH,EAAA56B,KAEAi/I,EAAA,GAEA,mBAAAj/I,KAAAw2I,QAAAxoH,OACAixH,EAAA99H,GAAA,SAAA/c,GAEA,OADAA,EAAA6hB,QAAAwpH,EAAA,GAAyCrrI,EAAA6hB,QAAA2U,EAAA47G,QAAAxoH,OAAA5pB,EAAA6hB,UAAA,IACzC7hB,GAGA66I,EAAAjxH,OAAAhuB,KAAAw2I,QAAAxoH,OAGA,IAAAkxH,EAAA,CACAn2H,UAAA/oB,KAAA++I,gBACA9zH,UAAA,CACA+C,OAAAixH,EACAluH,KAAA,CACAlf,QAAA7R,KAAAw2I,QAAAzlH,MAEAtB,gBAAA,CACAtH,kBAAAnoB,KAAAw2I,QAAAwH,YAYA,MANA,WAAAh+I,KAAAw2I,QAAAlzI,UACA47I,EAAAj0H,UAAAsI,WAAA,CACA1hB,SAAA,IAIAqtI,GAIAhB,EAAA9L,iBAAA,SAAAroI,GACA,OAAA/J,KAAA+G,KAAA,WACA,IAAA3C,EAAA2/D,EAAA/jE,MAAAoE,KArUA,eAuUAoyI,EAAA,iBAAAzsI,IAAA,KAOA,GALA3F,IACAA,EAAA,IAAA85I,EAAAl+I,KAAAw2I,GACAzyE,EAAA/jE,MAAAoE,KA3UA,cA2UAA,IAGA,iBAAA2F,EAAA,CACA,YAAA3F,EAAA2F,GACA,UAAAsb,UAAA,oBAAAtb,EAAA,KAGA3F,EAAA2F,SAKAm0I,EAAAQ,YAAA,SAAApyH,GACA,IAAAA,GA3UA,IA2UAA,EAAA0+B,QAAA,UAAA1+B,EAAAhxB,MAjVA,IAiVAgxB,EAAA0+B,OAMA,IAFA,IAAAm0F,EAAA,GAAAjnI,MAAAlgB,KAAA4oB,SAAA4vB,iBAAA2sG,EAAApK,cAEAl7I,EAAA,EAAAoD,EAAAkkJ,EAAApiJ,OAA2ClF,EAAAoD,EAASpD,IAAA,CACpD,IAAAkvB,EAAAm3H,EAAAM,sBAAAW,EAAAtnJ,IAEA+Q,EAAAm7D,EAAAo7E,EAAAtnJ,IAAAuM,KAlWA,eAmWA6kD,EAAA,CACAA,cAAAk2F,EAAAtnJ,IAOA,GAJAy0B,GAAA,UAAAA,EAAAhxB,OACA2tD,EAAAm2F,WAAA9yH,GAGA1jB,EAAA,CAIA,IAAAy2I,EAAAz2I,EAAAw1I,MAEA,GAAAr6E,EAAAh9C,GAAA+wC,SAAA6kF,EAAAnL,SAIAllH,IAAA,UAAAA,EAAAhxB,MAAA,kBAAAkC,KAAA8uB,EAAAvU,OAAAi2E,UAAA,UAAA1hE,EAAAhxB,MA7WA,IA6WAgxB,EAAA0+B,QAAA+Y,EAAA5/C,SAAA4C,EAAAuF,EAAAvU,SAAA,CAIA,IAAA+mI,EAAA/6E,EAAAxb,MAAAg0F,EAAA1C,KAAA5wF,GACA8a,EAAAh9C,GAAA4hC,QAAAm2F,GAEAA,EAAA/1F,uBAMA,iBAAAnoC,SAAAqC,iBACA8gD,EAAAnjD,SAAAyB,MAAAyE,WAAA2Q,IAAA,iBAAAssC,EAAAh+D,MAGAo5I,EAAAtnJ,GAAA27B,aAAA,yBACAuwC,EAAAs7E,GAAA5nF,YAAAklF,EAAAnL,MACAztE,EAAAh9C,GAAA0wC,YAAAklF,EAAAnL,MAAA7oF,QAAAob,EAAAxb,MAAAg0F,EAAAzC,OAAA7wF,SAIAi1F,EAAAM,sBAAA,SAAA71I,GACA,IAAAoe,EACAoiB,EAAA0mG,EAAAG,uBAAArnI,GAMA,OAJAwgC,IACApiB,EAAAnG,SAAA0P,cAAA6Y,IAGApiB,GAAApe,EAAAuZ,YAIAg8H,EAAAoB,uBAAA,SAAAhzH,GAQA,sBAAA9uB,KAAA8uB,EAAAvU,OAAAi2E,WA1ZA,KA0ZA1hE,EAAA0+B,OA5ZA,KA4ZA1+B,EAAA0+B,QApZA,KAoZA1+B,EAAA0+B,OAtZA,KAsZA1+B,EAAA0+B,OAAA+Y,EAAAz3C,EAAAvU,QAAA4jC,QAAAwhG,EAAAE,MAAAtgJ,SAAAs/I,EAAA7+I,KAAA8uB,EAAA0+B,UAIA1+B,EAAA07B,iBACA17B,EAAA27B,mBAEAjoD,KAAAy9B,WAAAsmC,EAAA/jE,MAAA83D,SAAA6kF,EAAAC,WAAA,CAIA,IAAA71H,EAAAm3H,EAAAM,sBAAAx+I,MAEAy+I,EAAA16E,EAAAh9C,GAAA+wC,SAAA6kF,EAAAnL,MAEA,GAAAiN,QA3aA,KA2aAnyH,EAAA0+B,OAzaA,KAyaA1+B,EAAA0+B,OAAA,CAUA,IAAA1+C,EAAA,GAAA4L,MAAAlgB,KAAA+uB,EAAAypB,iBAAA2sG,EAAAI,gBAEA,OAAAjxI,EAAAvP,OAAA,CAIA,IAAAkE,EAAAqL,EAAA5R,QAAA4xB,EAAAvU,QArbA,KAubAuU,EAAA0+B,OAAA/pD,EAAA,GAEAA,IAvbA,KA0bAqrB,EAAA0+B,OAAA/pD,EAAAqL,EAAAvP,OAAA,GAEAkE,IAGAA,EAAA,IACAA,EAAA,GAGAqL,EAAArL,GAAAu7B,aAhCA,CACA,GA5aA,KA4aAlQ,EAAA0+B,MAAA,CACA,IAAAvH,EAAA18B,EAAAuJ,cAAA6sH,EAAApK,aACAhvE,EAAAtgB,GAAAkF,QAAA,SAGAob,EAAA/jE,MAAA2oD,QAAA,YA6BA4mF,EAAA2O,EAAA,OACA9kJ,IAAA,UACAV,IAAA,WACA,MAtdA,UAwdK,CACLU,IAAA,UACAV,IAAA,WACA,OAAAqlJ,IAEK,CACL3kJ,IAAA,cACAV,IAAA,WACA,OAAAulJ,MAIAC,EAtZA,GA+ZAn6E,EAAAnjD,UAAA0W,GAAAilH,EAAAE,iBAAAU,EAAApK,YAAAmL,EAAAoB,wBAAAhoH,GAAAilH,EAAAE,iBAAAU,EAAAE,KAAAa,EAAAoB,wBAAAhoH,GAAAilH,EAAAnL,eAAA,IAAAmL,EAAAG,eAAAwB,EAAAQ,aAAApnH,GAAAilH,EAAAnL,eAAA+L,EAAApK,YAAA,SAAAzmH,GACAA,EAAA07B,iBACA17B,EAAA27B,kBAEAi2F,EAAA9L,iBAAAp6I,KAAA+rE,EAAA/jE,MAAA,YACGs3B,GAAAilH,EAAAnL,eAAA+L,EAAAC,WAAA,SAAA93I,GACHA,EAAA2iD,oBAQA8b,EAAA5iD,GAAAg7H,GAAA+B,EAAA9L,iBACAruE,EAAA5iD,GAAAg7H,GAAA/2H,YAAA84H,EAEAn6E,EAAA5iD,GAAAg7H,GAAAn4E,WAAA,WAEA,OADAD,EAAA5iD,GAAAg7H,GAAAC,EACA8B,EAAA9L,kBASA,IAKAmN,EAAAx7E,EAAA5iD,GAAA,MAGAq+H,EAAA,CACAC,UAAA,EACA/L,UAAA,EACAl3G,OAAA,EACAgnB,MAAA,GAEAk8F,EAAA,CACAD,SAAA,mBACA/L,SAAA,UACAl3G,MAAA,UACAgnB,KAAA,WAEAm8F,EAAA,CACA9F,KAAA,gBACAC,OAAA,kBACAtI,KAAA,gBACAoI,MAAA,iBACAgG,QAAA,mBACAC,OAAA,kBACAC,cAAA,yBACAC,gBAAA,2BACAC,gBAAA,2BACAC,kBAAA,6BACA7O,eAAA,2BAEA8O,EAAA,CACAC,mBAAA,0BACAC,SAAA,iBACAC,KAAA,aACA9O,KAAA,OACAC,KAAA,QAEA8O,GAAA,CACAC,OAAA,gBACAxN,YAAA,wBACAyN,aAAA,yBACAC,cAAA,oDACAC,eAAA,eASAC,GAEA,WACA,SAAAA,EAAAh4I,EAAAoB,GACA/J,KAAAw2I,QAAAx2I,KAAAy2I,WAAA1sI,GACA/J,KAAA6iC,SAAAl6B,EACA3I,KAAA4gJ,QAAAj4I,EAAA2nB,cAAAgwH,GAAAC,QACAvgJ,KAAA6gJ,UAAA,KACA7gJ,KAAA8gJ,UAAA,EACA9gJ,KAAA+gJ,oBAAA,EACA/gJ,KAAAghJ,sBAAA,EACAhhJ,KAAAy6I,kBAAA,EACAz6I,KAAAihJ,gBAAA,EAIA,IAAAvP,EAAAiP,EAAAlnJ,UA8bA,OA3bAi4I,EAAAjuF,OAAA,SAAAwF,GACA,OAAAjpD,KAAA8gJ,SAAA9gJ,KAAAkyB,OAAAlyB,KAAAwjD,KAAAyF,IAGAyoF,EAAAluF,KAAA,SAAAyF,GACA,IAAAp1B,EAAA7zB,KAEA,IAAAA,KAAA8gJ,WAAA9gJ,KAAAy6I,iBAAA,CAIA12E,EAAA/jE,KAAA6iC,UAAAi1B,SAAAooF,EAAA3O,QACAvxI,KAAAy6I,kBAAA,GAGA,IAAAkE,EAAA56E,EAAAxb,MAAAo3F,EAAAnO,KAAA,CACAvoF,kBAEA8a,EAAA/jE,KAAA6iC,UAAA8lB,QAAAg2F,GAEA3+I,KAAA8gJ,UAAAnC,EAAA51F,uBAIA/oD,KAAA8gJ,UAAA,EAEA9gJ,KAAAkhJ,kBAEAlhJ,KAAAmhJ,gBAEAnhJ,KAAAohJ,gBAEAphJ,KAAAqhJ,kBAEArhJ,KAAAshJ,kBAEAv9E,EAAA/jE,KAAA6iC,UAAAvL,GAAAqoH,EAAAG,cAAAQ,GAAAE,aAAA,SAAAl0H,GACA,OAAAuH,EAAA3B,KAAA5F,KAEAy3C,EAAA/jE,KAAA4gJ,SAAAtpH,GAAAqoH,EAAAM,kBAAA,WACAl8E,EAAAlwC,EAAAgP,UAAAsjB,IAAAw5F,EAAAK,gBAAA,SAAA1zH,GACAy3C,EAAAz3C,EAAAvU,QAAA4iC,GAAA9mB,EAAAgP,YACAhP,EAAAmtH,sBAAA,OAKAhhJ,KAAAuhJ,cAAA,WACA,OAAA1tH,EAAA2tH,aAAAv4F,QAIAyoF,EAAAx/G,KAAA,SAAA5F,GACA,IAAAsO,EAAA56B,KAMA,GAJAssB,GACAA,EAAA07B,iBAGAhoD,KAAA8gJ,WAAA9gJ,KAAAy6I,iBAAA,CAIA,IAAAqE,EAAA/6E,EAAAxb,MAAAo3F,EAAA9F,MAGA,GAFA91E,EAAA/jE,KAAA6iC,UAAA8lB,QAAAm2F,GAEA9+I,KAAA8gJ,WAAAhC,EAAA/1F,qBAAA,CAIA/oD,KAAA8gJ,UAAA,EACA,IAAAnxI,EAAAo0D,EAAA/jE,KAAA6iC,UAAAi1B,SAAAooF,EAAA3O,MAeA,GAbA5hI,IACA3P,KAAAy6I,kBAAA,GAGAz6I,KAAAqhJ,kBAEArhJ,KAAAshJ,kBAEAv9E,EAAAnjD,UAAA6W,IAAAkoH,EAAAC,SACA77E,EAAA/jE,KAAA6iC,UAAA40B,YAAAyoF,EAAA1O,MACAztE,EAAA/jE,KAAA6iC,UAAApL,IAAAkoH,EAAAG,eACA/7E,EAAA/jE,KAAA4gJ,SAAAnpH,IAAAkoH,EAAAM,mBAEAtwI,EAAA,CACA,IAAAiwF,EAAAiwC,EAAAK,iCAAAlwI,KAAA6iC,UACAkhC,EAAA/jE,KAAA6iC,UAAAsjB,IAAA0pF,EAAAF,eAAA,SAAArjH,GACA,OAAAsO,EAAA6mH,WAAAn1H,KACS0kH,qBAAApxC,QAET5/F,KAAAyhJ,gBAIA/P,EAAAO,QAAA,WACA,CAAAp5H,OAAA7Y,KAAA6iC,SAAA7iC,KAAA4gJ,SAAAt1H,QAAA,SAAAo2H,GACA,OAAA39E,EAAA29E,GAAAjqH,IAxKA,eAgLAssC,EAAAnjD,UAAA6W,IAAAkoH,EAAAC,SACA77E,EAAAliB,WAAA7hD,KAAA6iC,SAlLA,YAmLA7iC,KAAAw2I,QAAA,KACAx2I,KAAA6iC,SAAA,KACA7iC,KAAA4gJ,QAAA,KACA5gJ,KAAA6gJ,UAAA,KACA7gJ,KAAA8gJ,SAAA,KACA9gJ,KAAA+gJ,mBAAA,KACA/gJ,KAAAghJ,qBAAA,KACAhhJ,KAAAy6I,iBAAA,KACAz6I,KAAAihJ,gBAAA,MAGAvP,EAAAiQ,aAAA,WACA3hJ,KAAAohJ,iBAIA1P,EAAA+E,WAAA,SAAA1sI,GAGA,OAFAA,EAAA0lI,EAAA,GAA+B+P,EAAAz1I,GAC/B8lI,EAAAW,gBAvMA,QAuMAzmI,EAAA21I,GACA31I,GAGA2nI,EAAA8P,aAAA,SAAAv4F,GACA,IAAA9qB,EAAAn+B,KAEA2P,EAAAo0D,EAAA/jE,KAAA6iC,UAAAi1B,SAAAooF,EAAA3O,MAEAvxI,KAAA6iC,SAAA3gB,YAAAliB,KAAA6iC,SAAA3gB,WAAAP,WAAAiC,KAAAg+H,cAEAhhI,SAAAyB,KAAA2mB,YAAAhpC,KAAA6iC,UAGA7iC,KAAA6iC,SAAAh3B,MAAAvI,QAAA,QAEAtD,KAAA6iC,SAAApP,gBAAA,eAEAzzB,KAAA6iC,SAAArP,aAAA,iBAEAxzB,KAAA6iC,SAAAzc,UAAA,EAEAzW,GACAkgI,EAAAS,OAAAtwI,KAAA6iC,UAGAkhC,EAAA/jE,KAAA6iC,UAAAu0B,SAAA8oF,EAAA1O,MAEAxxI,KAAAw2I,QAAAh6G,OACAx8B,KAAA6hJ,gBAGA,IAAAC,EAAA/9E,EAAAxb,MAAAo3F,EAAA/F,MAAA,CACA3wF,kBAGA84F,EAAA,WACA5jH,EAAAq4G,QAAAh6G,OACA2B,EAAA0E,SAAArG,QAGA2B,EAAAs8G,kBAAA,EACA12E,EAAA5lC,EAAA0E,UAAA8lB,QAAAm5F,IAGA,GAAAnyI,EAAA,CACA,IAAAiwF,EAAAiwC,EAAAK,iCAAAlwI,KAAA4gJ,SACA78E,EAAA/jE,KAAA4gJ,SAAAz6F,IAAA0pF,EAAAF,eAAAoS,GAAA/Q,qBAAApxC,QAEAmiD,KAIArQ,EAAAmQ,cAAA,WACA,IAAAj8G,EAAA5lC,KAEA+jE,EAAAnjD,UAAA6W,IAAAkoH,EAAAC,SACAtoH,GAAAqoH,EAAAC,QAAA,SAAAtzH,GACA1L,WAAA0L,EAAAvU,QAAA6tB,EAAA/C,WAAAvW,EAAAvU,QAAA,IAAAgsD,EAAAn+B,EAAA/C,UAAAgT,IAAAvpB,EAAAvU,QAAAhb,QACA6oC,EAAA/C,SAAArG,WAKAk1G,EAAA2P,gBAAA,WACA,IAAAW,EAAAhiJ,KAEAA,KAAA8gJ,UAAA9gJ,KAAAw2I,QAAA9C,SACA3vE,EAAA/jE,KAAA6iC,UAAAvL,GAAAqoH,EAAAI,gBAAA,SAAAzzH,GArQA,KAsQAA,EAAA0+B,QACA1+B,EAAA07B,iBAEAg6F,EAAA9vH,UAGOlyB,KAAA8gJ,UACP/8E,EAAA/jE,KAAA6iC,UAAApL,IAAAkoH,EAAAI,kBAIArO,EAAA4P,gBAAA,WACA,IAAAW,EAAAjiJ,KAEAA,KAAA8gJ,SACA/8E,EAAAlrD,QAAAye,GAAAqoH,EAAAE,OAAA,SAAAvzH,GACA,OAAA21H,EAAAN,aAAAr1H,KAGAy3C,EAAAlrD,QAAA4e,IAAAkoH,EAAAE,SAIAnO,EAAA+P,WAAA,WACA,IAAAS,EAAAliJ,KAEAA,KAAA6iC,SAAAh3B,MAAAvI,QAAA,OAEAtD,KAAA6iC,SAAArP,aAAA,kBAEAxzB,KAAA6iC,SAAApP,gBAAA,cAEAzzB,KAAAy6I,kBAAA,EAEAz6I,KAAAuhJ,cAAA,WACAx9E,EAAAnjD,SAAAyB,MAAAo1C,YAAAyoF,EAAAG,MAEA6B,EAAAC,oBAEAD,EAAAE,kBAEAr+E,EAAAm+E,EAAAr/G,UAAA8lB,QAAAg3F,EAAA7F,WAIApI,EAAA2Q,gBAAA,WACAriJ,KAAA6gJ,YACA98E,EAAA/jE,KAAA6gJ,WAAAvjG,SACAt9C,KAAA6gJ,UAAA,OAIAnP,EAAA6P,cAAA,SAAAzyI,GACA,IAAAwzI,EAAAtiJ,KAEAkZ,EAAA6qD,EAAA/jE,KAAA6iC,UAAAi1B,SAAAooF,EAAA3O,MAAA2O,EAAA3O,KAAA,GAEA,GAAAvxI,KAAA8gJ,UAAA9gJ,KAAAw2I,QAAAiJ,SAAA,CAgCA,GA/BAz/I,KAAA6gJ,UAAAjgI,SAAAkoB,cAAA,OACA9oC,KAAA6gJ,UAAA9uG,UAAAmuG,EAAAE,SAEAlnI,GACAlZ,KAAA6gJ,UAAAjtD,UAAA/3C,IAAA3iC,GAGA6qD,EAAA/jE,KAAA6gJ,WAAApzF,SAAA7sC,SAAAyB,MACA0hD,EAAA/jE,KAAA6iC,UAAAvL,GAAAqoH,EAAAG,cAAA,SAAAxzH,GACAg2H,EAAAtB,qBACAsB,EAAAtB,sBAAA,EAIA10H,EAAAvU,SAAAuU,EAAAu7B,gBAIA,WAAAy6F,EAAA9L,QAAAiJ,SACA6C,EAAAz/G,SAAArG,QAEA8lH,EAAApwH,UAIAhZ,GACA22H,EAAAS,OAAAtwI,KAAA6gJ,WAGA98E,EAAA/jE,KAAA6gJ,WAAAzpF,SAAA8oF,EAAA1O,OAEA1iI,EACA,OAGA,IAAAoK,EAEA,YADApK,IAIA,IAAAyzI,EAAA1S,EAAAK,iCAAAlwI,KAAA6gJ,WACA98E,EAAA/jE,KAAA6gJ,WAAA16F,IAAA0pF,EAAAF,eAAA7gI,GAAAkiI,qBAAAuR,QACO,IAAAviJ,KAAA8gJ,UAAA9gJ,KAAA6gJ,UAAA,CACP98E,EAAA/jE,KAAA6gJ,WAAAppF,YAAAyoF,EAAA1O,MAEA,IAAAgR,EAAA,WACAF,EAAAD,kBAEAvzI,GACAA,KAIA,GAAAi1D,EAAA/jE,KAAA6iC,UAAAi1B,SAAAooF,EAAA3O,MAAA,CACA,IAAAkR,EAAA5S,EAAAK,iCAAAlwI,KAAA6gJ,WAEA98E,EAAA/jE,KAAA6gJ,WAAA16F,IAAA0pF,EAAAF,eAAA6S,GAAAxR,qBAAAyR,QAEAD,SAEO1zI,GACPA,KAQA4iI,EAAA0P,cAAA,WACA,IAAAsB,EAAA1iJ,KAAA6iC,SAAA8/G,aAAA/hI,SAAAqC,gBAAAuD,cAEAxmB,KAAA+gJ,oBAAA2B,IACA1iJ,KAAA6iC,SAAAh3B,MAAA40B,YAAAzgC,KAAAihJ,gBAAA,MAGAjhJ,KAAA+gJ,qBAAA2B,IACA1iJ,KAAA6iC,SAAAh3B,MAAA80B,aAAA3gC,KAAAihJ,gBAAA,OAIAvP,EAAAyQ,kBAAA,WACAniJ,KAAA6iC,SAAAh3B,MAAA40B,YAAA,GACAzgC,KAAA6iC,SAAAh3B,MAAA80B,aAAA,IAGA+wG,EAAAwP,gBAAA,WACA,IAAA/6H,EAAAvF,SAAAyB,KAAA6D,wBACAlmB,KAAA+gJ,mBAAA56H,EAAArnB,KAAAqnB,EAAAnnB,MAAA6Z,OAAA0P,WACAvoB,KAAAihJ,gBAAAjhJ,KAAA4iJ,sBAGAlR,EAAAyP,cAAA,WACA,IAAA0B,EAAA7iJ,KAEA,GAAAA,KAAA+gJ,mBAAA,CAGA,IAAA+B,EAAA,GAAA5qI,MAAAlgB,KAAA4oB,SAAA4vB,iBAAA8vG,GAAAG,gBACAsC,EAAA,GAAA7qI,MAAAlgB,KAAA4oB,SAAA4vB,iBAAA8vG,GAAAI,iBAEA38E,EAAA++E,GAAA/7I,KAAA,SAAA9F,EAAA0H,GACA,IAAAq6I,EAAAr6I,EAAAkD,MAAA80B,aACAsiH,EAAAl/E,EAAAp7D,GAAAiZ,IAAA,iBACAmiD,EAAAp7D,GAAAvE,KAAA,gBAAA4+I,GAAAphI,IAAA,gBAAAxlB,WAAA6mJ,GAAAJ,EAAA5B,gBAAA,QAGAl9E,EAAAg/E,GAAAh8I,KAAA,SAAA9F,EAAA0H,GACA,IAAAu6I,EAAAv6I,EAAAkD,MAAAme,YACAm5H,EAAAp/E,EAAAp7D,GAAAiZ,IAAA,gBACAmiD,EAAAp7D,GAAAvE,KAAA,eAAA8+I,GAAAthI,IAAA,eAAAxlB,WAAA+mJ,GAAAN,EAAA5B,gBAAA,QAGA,IAAA+B,EAAApiI,SAAAyB,KAAAxW,MAAA80B,aACAsiH,EAAAl/E,EAAAnjD,SAAAyB,MAAAT,IAAA,iBACAmiD,EAAAnjD,SAAAyB,MAAAje,KAAA,gBAAA4+I,GAAAphI,IAAA,gBAAAxlB,WAAA6mJ,GAAAjjJ,KAAAihJ,gBAAA,MAGAl9E,EAAAnjD,SAAAyB,MAAA+0C,SAAA8oF,EAAAG,OAGA3O,EAAA0Q,gBAAA,WAEA,IAAAU,EAAA,GAAA5qI,MAAAlgB,KAAA4oB,SAAA4vB,iBAAA8vG,GAAAG,gBACA18E,EAAA++E,GAAA/7I,KAAA,SAAA9F,EAAA0H,GACA,IAAAuf,EAAA67C,EAAAp7D,GAAAvE,KAAA,iBACA2/D,EAAAp7D,GAAAk5C,WAAA,iBACAl5C,EAAAkD,MAAA80B,aAAAzY,GAAA,KAGA,IAAA/oB,EAAA,GAAA+Y,MAAAlgB,KAAA4oB,SAAA4vB,iBAAA,GAAA8vG,GAAAI,iBACA38E,EAAA5kE,GAAA4H,KAAA,SAAA9F,EAAA0H,GACA,IAAAwpD,EAAA4R,EAAAp7D,GAAAvE,KAAA,qBAEA,IAAA+tD,GACA4R,EAAAp7D,GAAAiZ,IAAA,eAAAuwC,GAAAtQ,WAAA,kBAIA,IAAA35B,EAAA67C,EAAAnjD,SAAAyB,MAAAje,KAAA,iBACA2/D,EAAAnjD,SAAAyB,MAAAw/B,WAAA,iBACAjhC,SAAAyB,KAAAxW,MAAA80B,aAAAzY,GAAA,IAGAwpH,EAAAkR,mBAAA,WAEA,IAAAQ,EAAAxiI,SAAAkoB,cAAA,OACAs6G,EAAArxG,UAAAmuG,EAAAC,mBACAv/H,SAAAyB,KAAA2mB,YAAAo6G,GACA,IAAAC,EAAAD,EAAAl9H,wBAAApoB,MAAAslJ,EAAA78H,YAEA,OADA3F,SAAAyB,KAAA8R,YAAAivH,GACAC,GAIA1C,EAAAvO,iBAAA,SAAAroI,EAAAk/C,GACA,OAAAjpD,KAAA+G,KAAA,WACA,IAAA3C,EAAA2/D,EAAA/jE,MAAAoE,KAjeA,YAmeAoyI,EAAA/G,EAAA,GAAsC+P,EAAAz7E,EAAA/jE,MAAAoE,OAAA,iBAAA2F,OAAA,IAOtC,GALA3F,IACAA,EAAA,IAAAu8I,EAAA3gJ,KAAAw2I,GACAzyE,EAAA/jE,MAAAoE,KAveA,WAueAA,IAGA,iBAAA2F,EAAA,CACA,YAAA3F,EAAA2F,GACA,UAAAsb,UAAA,oBAAAtb,EAAA,KAGA3F,EAAA2F,GAAAk/C,QACSutF,EAAAhzF,MACTp/C,EAAAo/C,KAAAyF,MAKAsmF,EAAAoR,EAAA,OACAvnJ,IAAA,UACAV,IAAA,WACA,MA1fA,UA4fK,CACLU,IAAA,UACAV,IAAA,WACA,OAAA8mJ,MAIAmB,EA5cA,GAqdA58E,EAAAnjD,UAAA0W,GAAAqoH,EAAAvO,eAAAkP,GAAAvN,YAAA,SAAAzmH,GACA,IAEAvU,EAFAurI,EAAAtjJ,KAGAmpC,EAAA0mG,EAAAG,uBAAAhwI,MAEAmpC,IACApxB,EAAA6I,SAAA0P,cAAA6Y,IAGA,IAAAp/B,EAAAg6D,EAAAhsD,GAAA3T,KArhBA,YAqhBA,SAAAqrI,EAAA,GAAyE1rE,EAAAhsD,GAAA3T,OAAA2/D,EAAA/jE,MAAAoE,QAEzE,MAAApE,KAAAguF,SAAA,SAAAhuF,KAAAguF,SACA1hE,EAAA07B,iBAGA,IAAAk0F,EAAAn4E,EAAAhsD,GAAAouC,IAAAw5F,EAAAnO,KAAA,SAAAmN,GACAA,EAAA51F,sBAKAmzF,EAAA/1F,IAAAw5F,EAAA7F,OAAA,WACA/1E,EAAAu/E,GAAA3oG,GAAA,aACA2oG,EAAA9mH,YAKAmkH,GAAAvO,iBAAAp6I,KAAA+rE,EAAAhsD,GAAAhO,EAAA/J,QAQA+jE,EAAA5iD,GAAA,MAAAw/H,GAAAvO,iBACAruE,EAAA5iD,GAAA,MAAAiE,YAAAu7H,GAEA58E,EAAA5iD,GAAA,MAAA6iD,WAAA,WAEA,OADAD,EAAA5iD,GAAA,MAAAo+H,EACAoB,GAAAvO,kBASA,IAAAmR,GAAA,UAIAC,GAAAz/E,EAAA5iD,GAAA,QAEAsiI,GAAA,IAAAh2G,OAAA,6BACAi2G,GAAA,CACA9/I,UAAA,UACA+gI,SAAA,SACAjiI,MAAA,4BACAimD,QAAA,SACAuN,MAAA,kBACA1xC,KAAA,UACA2kB,SAAA,mBACApgB,UAAA,oBACAiF,OAAA,kBACA4gC,UAAA,2BACA+0F,kBAAA,iBACA3F,SAAA,oBAEA4F,GAAA,CACAC,KAAA,OACApG,IAAA,MACAtJ,MAAA,QACAwJ,OAAA,SACAzJ,KAAA,QAEA4P,GAAA,CACAlgJ,WAAA,EACA+gI,SAAA,uGACAh8E,QAAA,cACAjmD,MAAA,GACAwzD,MAAA,EACA1xC,MAAA,EACA2kB,UAAA,EACApgB,UAAA,MACAiF,OAAA,EACA4gC,WAAA,EACA+0F,kBAAA,OACA3F,SAAA,gBAEA+F,GAAA,CACAvS,KAAA,OACAwS,IAAA,OAEAC,GAAA,CACApK,KAAA,kBACAC,OAAA,oBACAtI,KAAA,kBACAoI,MAAA,mBACAsK,SAAA,sBACA1H,MAAA,mBACAoD,QAAA,qBACAuE,SAAA,sBACA3P,WAAA,wBACAC,WAAA,yBAEA2P,GAAA,CACA7S,KAAA,OACAC,KAAA,QAEA6S,GAAA,CACAC,QAAA,WACAC,cAAA,iBACAC,MAAA,UAEAC,GAAA,CACAC,MAAA,QACA9R,MAAA,QACA4J,MAAA,QACAmI,OAAA,UASAj7I,GAEA,WACA,SAAAA,EAAAf,EAAAoB,GAKA,YAAA6pB,EACA,UAAAvO,UAAA,mEAIArlB,KAAA4kJ,YAAA,EACA5kJ,KAAA6kJ,SAAA,EACA7kJ,KAAA8kJ,YAAA,GACA9kJ,KAAA+kJ,eAAA,GACA/kJ,KAAAm+I,QAAA,KAEAn+I,KAAA2I,UACA3I,KAAA+J,OAAA/J,KAAAy2I,WAAA1sI,GACA/J,KAAAglJ,IAAA,KAEAhlJ,KAAAilJ,gBAIA,IAAAvT,EAAAhoI,EAAAjQ,UAkiBA,OA/hBAi4I,EAAAwT,OAAA,WACAllJ,KAAA4kJ,YAAA,GAGAlT,EAAAn0F,QAAA,WACAv9C,KAAA4kJ,YAAA,GAGAlT,EAAAyT,cAAA,WACAnlJ,KAAA4kJ,YAAA5kJ,KAAA4kJ,YAGAlT,EAAAjuF,OAAA,SAAAn3B,GACA,GAAAtsB,KAAA4kJ,WAIA,GAAAt4H,EAAA,CACA,IAAA84H,EAAAplJ,KAAAujC,YAAA8hH,SACAz8I,EAAAm7D,EAAAz3C,EAAAu7B,eAAAzjD,KAAAghJ,GAEAx8I,IACAA,EAAA,IAAA5I,KAAAujC,YAAAjX,EAAAu7B,cAAA7nD,KAAAslJ,sBACAvhF,EAAAz3C,EAAAu7B,eAAAzjD,KAAAghJ,EAAAx8I,IAGAA,EAAAm8I,eAAArnH,OAAA90B,EAAAm8I,eAAArnH,MAEA90B,EAAA28I,uBACA38I,EAAAqwF,OAAA,KAAArwF,GAEAA,EAAA48I,OAAA,KAAA58I,OAEO,CACP,GAAAm7D,EAAA/jE,KAAAylJ,iBAAA3tF,SAAAssF,GAAA5S,MAGA,YAFAxxI,KAAAwlJ,OAAA,KAAAxlJ,MAKAA,KAAAi5F,OAAA,KAAAj5F,QAIA0xI,EAAAO,QAAA,WACA77G,aAAAp2B,KAAA6kJ,UACA9gF,EAAAliB,WAAA7hD,KAAA2I,QAAA3I,KAAAujC,YAAA8hH,UACAthF,EAAA/jE,KAAA2I,SAAA8uB,IAAAz3B,KAAAujC,YAAAmiH,WACA3hF,EAAA/jE,KAAA2I,SAAAgzC,QAAA,UAAAlkB,IAAA,iBAEAz3B,KAAAglJ,KACAjhF,EAAA/jE,KAAAglJ,KAAA1nG,SAGAt9C,KAAA4kJ,WAAA,KACA5kJ,KAAA6kJ,SAAA,KACA7kJ,KAAA8kJ,YAAA,KACA9kJ,KAAA+kJ,eAAA,KAEA,OAAA/kJ,KAAAm+I,SACAn+I,KAAAm+I,QAAAptI,UAGA/Q,KAAAm+I,QAAA,KACAn+I,KAAA2I,QAAA,KACA3I,KAAA+J,OAAA,KACA/J,KAAAglJ,IAAA,MAGAtT,EAAAluF,KAAA,WACA,IAAA3vB,EAAA7zB,KAEA,YAAA+jE,EAAA/jE,KAAA2I,SAAAiZ,IAAA,WACA,UAAAnU,MAAA,uCAGA,IAAAkxI,EAAA56E,EAAAxb,MAAAvoD,KAAAujC,YAAAglB,MAAAipF,MAEA,GAAAxxI,KAAA2lJ,iBAAA3lJ,KAAA4kJ,WAAA,CACA7gF,EAAA/jE,KAAA2I,SAAAggD,QAAAg2F,GACA,IAAAhyE,EAAAkjE,EAAAe,eAAA5wI,KAAA2I,SACAi9I,EAAA7hF,EAAA5/C,SAAA,OAAAwoD,IAAA3sE,KAAA2I,QAAAkZ,cAAAoB,gBAAAjjB,KAAA2I,SAEA,GAAAg2I,EAAA51F,uBAAA68F,EACA,OAGA,IAAAZ,EAAAhlJ,KAAAylJ,gBACAI,EAAAhW,EAAAE,OAAA/vI,KAAAujC,YAAAuiH,MACAd,EAAAxxH,aAAA,KAAAqyH,GACA7lJ,KAAA2I,QAAA6qB,aAAA,mBAAAqyH,GACA7lJ,KAAA+lJ,aAEA/lJ,KAAA+J,OAAAnG,WACAmgE,EAAAihF,GAAA5tF,SAAAgtF,GAAA7S,MAGA,IAAAxoH,EAAA,mBAAA/oB,KAAA+J,OAAAgf,UAAA/oB,KAAA+J,OAAAgf,UAAA/wB,KAAAgI,KAAAglJ,EAAAhlJ,KAAA2I,SAAA3I,KAAA+J,OAAAgf,UAEAi9H,EAAAhmJ,KAAAimJ,eAAAl9H,GAEA/oB,KAAAkmJ,mBAAAF,GAEA,IAAAp3F,EAAA5uD,KAAAmmJ,gBAEApiF,EAAAihF,GAAA5gJ,KAAApE,KAAAujC,YAAA8hH,SAAArlJ,MAEA+jE,EAAA5/C,SAAAnkB,KAAA2I,QAAAkZ,cAAAoB,gBAAAjjB,KAAAglJ,MACAjhF,EAAAihF,GAAAv3F,SAAAmB,GAGAmV,EAAA/jE,KAAA2I,SAAAggD,QAAA3oD,KAAAujC,YAAAglB,MAAA27F,UACAlkJ,KAAAm+I,QAAA,IAAAvqH,EAAA5zB,KAAA2I,QAAAq8I,EAAA,CACAj8H,UAAAi9H,EACA/6H,UAAA,CACA+C,OAAA,CACAA,OAAAhuB,KAAA+J,OAAAikB,QAEA+C,KAAA,CACAK,SAAApxB,KAAA+J,OAAA45I,mBAEAxzH,MAAA,CACAxnB,QAAA07I,GAAAG,OAEA/0H,gBAAA,CACAtH,kBAAAnoB,KAAA+J,OAAAi0I,WAGA9uH,SAAA,SAAA9qB,GACAA,EAAA6sB,oBAAA7sB,EAAA2kB,WACA8K,EAAAuyH,6BAAAhiJ,IAGA+qB,SAAA,SAAA/qB,GACA,OAAAyvB,EAAAuyH,6BAAAhiJ,MAGA2/D,EAAAihF,GAAA5tF,SAAAgtF,GAAA5S,MAKA,iBAAA5wH,SAAAqC,iBACA8gD,EAAAnjD,SAAAyB,MAAAyE,WAAAwQ,GAAA,iBAAAysC,EAAAh+D,MAGA,IAAAquD,EAAA,WACAvgC,EAAA9pB,OAAAnG,WACAiwB,EAAAwyH,iBAGA,IAAAC,EAAAzyH,EAAAixH,YACAjxH,EAAAixH,YAAA,KACA/gF,EAAAlwC,EAAAlrB,SAAAggD,QAAA90B,EAAA0P,YAAAglB,MAAAqxF,OAEA0M,IAAAvC,GAAAC,KACAnwH,EAAA2xH,OAAA,KAAA3xH,IAIA,GAAAkwC,EAAA/jE,KAAAglJ,KAAAltF,SAAAssF,GAAA7S,MAAA,CACA,IAAA3xC,EAAAiwC,EAAAK,iCAAAlwI,KAAAglJ,KACAjhF,EAAA/jE,KAAAglJ,KAAA7+F,IAAA0pF,EAAAF,eAAAv7E,GAAA48E,qBAAApxC,QAEAxrC,MAKAs9E,EAAAx/G,KAAA,SAAApjB,GACA,IAAA8rB,EAAA56B,KAEAglJ,EAAAhlJ,KAAAylJ,gBACA3G,EAAA/6E,EAAAxb,MAAAvoD,KAAAujC,YAAAglB,MAAAsxF,MAEAzlF,EAAA,WACAx5B,EAAAkqH,cAAAf,GAAAvS,MAAAwT,EAAA9iI,YACA8iI,EAAA9iI,WAAAiS,YAAA6wH,GAGApqH,EAAA2rH,iBAEA3rH,EAAAjyB,QAAA8qB,gBAAA,oBAEAswC,EAAAnpC,EAAAjyB,SAAAggD,QAAA/tB,EAAA2I,YAAAglB,MAAAuxF,QAEA,OAAAl/G,EAAAujH,SACAvjH,EAAAujH,QAAAptI,UAGAjC,GACAA,KAMA,GAFAi1D,EAAA/jE,KAAA2I,SAAAggD,QAAAm2F,IAEAA,EAAA/1F,qBAAA,CAeA,GAXAgb,EAAAihF,GAAAvtF,YAAA2sF,GAAA5S,MAGA,iBAAA5wH,SAAAqC,iBACA8gD,EAAAnjD,SAAAyB,MAAAyE,WAAA2Q,IAAA,iBAAAssC,EAAAh+D,MAGA/F,KAAA+kJ,eAAAN,GAAAjI,QAAA,EACAx8I,KAAA+kJ,eAAAN,GAAA7R,QAAA,EACA5yI,KAAA+kJ,eAAAN,GAAAC,QAAA,EAEA3gF,EAAA/jE,KAAAglJ,KAAAltF,SAAAssF,GAAA7S,MAAA,CACA,IAAA3xC,EAAAiwC,EAAAK,iCAAA8U,GACAjhF,EAAAihF,GAAA7+F,IAAA0pF,EAAAF,eAAAv7E,GAAA48E,qBAAApxC,QAEAxrC,IAGAp0D,KAAA8kJ,YAAA,KAGApT,EAAAjsI,OAAA,WACA,OAAAzF,KAAAm+I,SACAn+I,KAAAm+I,QAAAvxH,kBAKA8kH,EAAAiU,cAAA,WACA,OAAA7tE,QAAA93E,KAAAwmJ,aAGA9U,EAAAwU,mBAAA,SAAAF,GACAjiF,EAAA/jE,KAAAylJ,iBAAAruF,SAAAqvF,cAAAT,IAGAtU,EAAA+T,cAAA,WAEA,OADAzlJ,KAAAglJ,IAAAhlJ,KAAAglJ,KAAAjhF,EAAA/jE,KAAA+J,OAAA46H,UAAA,GACA3kI,KAAAglJ,KAGAtT,EAAAqU,WAAA,WACA,IAAAf,EAAAhlJ,KAAAylJ,gBACAzlJ,KAAA0mJ,kBAAA3iF,EAAAihF,EAAAx0G,iBAAA6zG,GAAAE,gBAAAvkJ,KAAAwmJ,YACAziF,EAAAihF,GAAAvtF,YAAA2sF,GAAA7S,KAAA,IAAA6S,GAAA5S,OAGAE,EAAAgV,kBAAA,SAAArU,EAAAl2I,GACA,IAAAqoB,EAAAxkB,KAAA+J,OAAAya,KAEA,iBAAAroB,MAAAwlB,UAAAxlB,EAAA83B,QAEAzP,EACAu/C,EAAA5nE,GAAA4qB,SAAA4zB,GAAA03F,IACAA,EAAA77F,QAAA0W,OAAA/wD,GAGAk2I,EAAAluI,KAAA4/D,EAAA5nE,GAAAgI,QAGAkuI,EAAA7tH,EAAA,eAAAroB,IAIAu1I,EAAA8U,SAAA,WACA,IAAA9jJ,EAAA1C,KAAA2I,QAAA0nC,aAAA,uBAMA,OAJA3tC,IACAA,EAAA,mBAAA1C,KAAA+J,OAAArH,MAAA1C,KAAA+J,OAAArH,MAAA1K,KAAAgI,KAAA2I,SAAA3I,KAAA+J,OAAArH,OAGAA,GAIAgvI,EAAAyU,cAAA,WACA,WAAAnmJ,KAAA+J,OAAA6kD,UACAhuC,SAAAyB,KAGAwtH,EAAAxN,UAAAriI,KAAA+J,OAAA6kD,WACAmV,EAAA/jE,KAAA+J,OAAA6kD,WAGAmV,EAAAnjD,UAAAiK,KAAA7qB,KAAA+J,OAAA6kD,YAGA8iF,EAAAuU,eAAA,SAAAl9H,GACA,OAAA66H,GAAA76H,EAAA8C,gBAGA6lH,EAAAuT,cAAA,WACA,IAAA9mH,EAAAn+B,KAEA2mJ,EAAA3mJ,KAAA+J,OAAA4+C,QAAAh/B,MAAA,KACAg9H,EAAAr7H,QAAA,SAAAq9B,GACA,aAAAA,EACAob,EAAA5lC,EAAAx1B,SAAA2uB,GAAA6G,EAAAoF,YAAAglB,MAAAi0F,MAAAr+G,EAAAp0B,OAAAo/B,SAAA,SAAA7c,GACA,OAAA6R,EAAAslB,OAAAn3B,UAES,GAAAq8B,IAAA87F,GAAAE,OAAA,CACT,IAAAiC,EAAAj+F,IAAA87F,GAAAC,MAAAvmH,EAAAoF,YAAAglB,MAAAisF,WAAAr2G,EAAAoF,YAAAglB,MAAAq3F,QACAiH,EAAAl+F,IAAA87F,GAAAC,MAAAvmH,EAAAoF,YAAAglB,MAAAksF,WAAAt2G,EAAAoF,YAAAglB,MAAA47F,SACApgF,EAAA5lC,EAAAx1B,SAAA2uB,GAAAsvH,EAAAzoH,EAAAp0B,OAAAo/B,SAAA,SAAA7c,GACA,OAAA6R,EAAA86D,OAAA3sE,KACWgL,GAAAuvH,EAAA1oH,EAAAp0B,OAAAo/B,SAAA,SAAA7c,GACX,OAAA6R,EAAAqnH,OAAAl5H,QAIAy3C,EAAA/jE,KAAA2I,SAAAgzC,QAAA,UAAArkB,GAAA,2BACA6G,EAAAx1B,SACAw1B,EAAAjM,SAIAlyB,KAAA+J,OAAAo/B,SACAnpC,KAAA+J,OAAA0lI,EAAA,GAAsCzvI,KAAA+J,OAAA,CACtC4+C,QAAA,SACAxf,SAAA,KAGAnpC,KAAA8mJ,aAIApV,EAAAoV,UAAA,WACA,IAAAC,SAAA/mJ,KAAA2I,QAAA0nC,aAAA,wBAEArwC,KAAA2I,QAAA0nC,aAAA,qBAAA02G,KACA/mJ,KAAA2I,QAAA6qB,aAAA,sBAAAxzB,KAAA2I,QAAA0nC,aAAA,cACArwC,KAAA2I,QAAA6qB,aAAA,cAIAk+G,EAAAz4C,OAAA,SAAA3sE,EAAA1jB,GACA,IAAAw8I,EAAAplJ,KAAAujC,YAAA8hH,UACAz8I,KAAAm7D,EAAAz3C,EAAAu7B,eAAAzjD,KAAAghJ,MAGAx8I,EAAA,IAAA5I,KAAAujC,YAAAjX,EAAAu7B,cAAA7nD,KAAAslJ,sBACAvhF,EAAAz3C,EAAAu7B,eAAAzjD,KAAAghJ,EAAAx8I,IAGA0jB,IACA1jB,EAAAm8I,eAAA,YAAAz4H,EAAAhxB,KAAAmpJ,GAAA7R,MAAA6R,GAAAC,QAAA,GAGA3gF,EAAAn7D,EAAA68I,iBAAA3tF,SAAAssF,GAAA5S,OAAA5oI,EAAAk8I,cAAAf,GAAAvS,KACA5oI,EAAAk8I,YAAAf,GAAAvS,MAIAp7G,aAAAxtB,EAAAi8I,UACAj8I,EAAAk8I,YAAAf,GAAAvS,KAEA5oI,EAAAmB,OAAAmsD,OAAAttD,EAAAmB,OAAAmsD,MAAA1S,KAKA56C,EAAAi8I,SAAAtjI,WAAA,WACA3Y,EAAAk8I,cAAAf,GAAAvS,MACA5oI,EAAA46C,QAEO56C,EAAAmB,OAAAmsD,MAAA1S,MARP56C,EAAA46C,SAWAkuF,EAAA8T,OAAA,SAAAl5H,EAAA1jB,GACA,IAAAw8I,EAAAplJ,KAAAujC,YAAA8hH,UACAz8I,KAAAm7D,EAAAz3C,EAAAu7B,eAAAzjD,KAAAghJ,MAGAx8I,EAAA,IAAA5I,KAAAujC,YAAAjX,EAAAu7B,cAAA7nD,KAAAslJ,sBACAvhF,EAAAz3C,EAAAu7B,eAAAzjD,KAAAghJ,EAAAx8I,IAGA0jB,IACA1jB,EAAAm8I,eAAA,aAAAz4H,EAAAhxB,KAAAmpJ,GAAA7R,MAAA6R,GAAAC,QAAA,GAGA97I,EAAA28I,yBAIAnvH,aAAAxtB,EAAAi8I,UACAj8I,EAAAk8I,YAAAf,GAAAC,IAEAp7I,EAAAmB,OAAAmsD,OAAAttD,EAAAmB,OAAAmsD,MAAAhkC,KAKAtpB,EAAAi8I,SAAAtjI,WAAA,WACA3Y,EAAAk8I,cAAAf,GAAAC,KACAp7I,EAAAspB,QAEOtpB,EAAAmB,OAAAmsD,MAAAhkC,MARPtpB,EAAAspB,SAWAw/G,EAAA6T,qBAAA,WACA,QAAA58F,KAAA3oD,KAAA+kJ,eACA,GAAA/kJ,KAAA+kJ,eAAAp8F,GACA,SAIA,UAGA+oF,EAAA+E,WAAA,SAAA1sI,GAmBA,MAhBA,iBAFAA,EAAA0lI,EAAA,GAA+BzvI,KAAAujC,YAAAkwG,QAAA1vE,EAAA/jE,KAAA2I,SAAAvE,OAAA,iBAAA2F,OAAA,KAE/BmsD,QACAnsD,EAAAmsD,MAAA,CACA1S,KAAAz5C,EAAAmsD,MACAhkC,KAAAnoB,EAAAmsD,QAIA,iBAAAnsD,EAAArH,QACAqH,EAAArH,MAAAqH,EAAArH,MAAAuV,YAGA,iBAAAlO,EAAA5N,UACA4N,EAAA5N,QAAA4N,EAAA5N,QAAA8b,YAGA43H,EAAAW,gBAAA+S,GAAAx5I,EAAA/J,KAAAujC,YAAAuwG,aACA/pI,GAGA2nI,EAAA4T,mBAAA,WACA,IAAAv7I,EAAA,GAEA,GAAA/J,KAAA+J,OACA,QAAA3Q,KAAA4G,KAAA+J,OACA/J,KAAAujC,YAAAkwG,QAAAr6I,KAAA4G,KAAA+J,OAAA3Q,KACA2Q,EAAA3Q,GAAA4G,KAAA+J,OAAA3Q,IAKA,OAAA2Q,GAGA2nI,EAAA6U,eAAA,WACA,IAAAS,EAAAjjF,EAAA/jE,KAAAylJ,iBACAwB,EAAAD,EAAA3zG,KAAA,SAAAhoB,MAAAo4H,IAEA,OAAAwD,KAAAlqJ,QACAiqJ,EAAAvvF,YAAAwvF,EAAA1iJ,KAAA,MAIAmtI,EAAA0U,6BAAA,SAAAc,GACA,IAAAC,EAAAD,EAAA/hI,SACAnlB,KAAAglJ,IAAAmC,EAAAn/H,OAEAhoB,KAAAumJ,iBAEAvmJ,KAAAkmJ,mBAAAlmJ,KAAAimJ,eAAAiB,EAAAn+H,aAGA2oH,EAAA2U,eAAA,WACA,IAAArB,EAAAhlJ,KAAAylJ,gBACA2B,EAAApnJ,KAAA+J,OAAAnG,UAEA,OAAAohJ,EAAA30G,aAAA,iBAIA0zB,EAAAihF,GAAAvtF,YAAA2sF,GAAA7S,MACAvxI,KAAA+J,OAAAnG,WAAA,EACA5D,KAAAkyB,OACAlyB,KAAAwjD,OACAxjD,KAAA+J,OAAAnG,UAAAwjJ,IAIA19I,EAAA0oI,iBAAA,SAAAroI,GACA,OAAA/J,KAAA+G,KAAA,WACA,IAAA3C,EAAA2/D,EAAA/jE,MAAAoE,KA/kBA,cAilBAoyI,EAAA,iBAAAzsI,KAEA,IAAA3F,IAAA,eAAA5G,KAAAuM,MAIA3F,IACAA,EAAA,IAAAsF,EAAA1J,KAAAw2I,GACAzyE,EAAA/jE,MAAAoE,KAzlBA,aAylBAA,IAGA,iBAAA2F,GAAA,CACA,YAAA3F,EAAA2F,GACA,UAAAsb,UAAA,oBAAAtb,EAAA,KAGA3F,EAAA2F,SAKAwlI,EAAA7lI,EAAA,OACAtQ,IAAA,UACAV,IAAA,WACA,MA1mBA,UA4mBK,CACLU,IAAA,UACAV,IAAA,WACA,OAAAorJ,KAEK,CACL1qJ,IAAA,OACAV,IAAA,WACA,OAAA6qJ,KAEK,CACLnqJ,IAAA,WACAV,IAAA,WACA,MAxnBA,eA0nBK,CACLU,IAAA,QACAV,IAAA,WACA,OAAAurJ,KAEK,CACL7qJ,IAAA,YACAV,IAAA,WACA,MAjoBA,gBAmoBK,CACLU,IAAA,cACAV,IAAA,WACA,OAAAgrJ,OAIAh6I,EA3jBA,GAokBAq6D,EAAA5iD,GAAA,QAAAzX,GAAA0oI,iBACAruE,EAAA5iD,GAAA,QAAAiE,YAAA1b,GAEAq6D,EAAA5iD,GAAA,QAAA6iD,WAAA,WAEA,OADAD,EAAA5iD,GAAA,QAAAqiI,GACA95I,GAAA0oI,kBASA,IAAAiV,GAAA,UAIAC,GAAAvjF,EAAA5iD,GAAA,QAEAomI,GAAA,IAAA95G,OAAA,6BAEA+5G,GAAA/X,EAAA,GAAkC/lI,GAAA+pI,QAAA,CAClC1qH,UAAA,QACA4/B,QAAA,QACAxsD,QAAA,GACAwoI,SAAA,wIAGA8iB,GAAAhY,EAAA,GAAsC/lI,GAAAoqI,YAAA,CACtC33I,QAAA,8BAGAurJ,GAAA,CACAnW,KAAA,OACAC,KAAA,QAEAmW,GAAA,CACAC,MAAA,kBACAC,QAAA,iBAEAC,GAAA,CACAjO,KAAA,kBACAC,OAAA,oBACAtI,KAAA,kBACAoI,MAAA,mBACAsK,SAAA,sBACA1H,MAAA,mBACAoD,QAAA,qBACAuE,SAAA,sBACA3P,WAAA,wBACAC,WAAA,yBASAsT,GAEA,SAAAC,GA9rGA,IAAAC,EAAAC,EAisGA,SAAAH,IACA,OAAAC,EAAA1qJ,MAAA0C,KAAA8N,YAAA9N,KAlsGAkoJ,EA+rGAF,GA/rGAC,EA+rGAF,GA9rGAtuJ,UAAAlB,OAAAY,OAAA+uJ,EAAAzuJ,WACAwuJ,EAAAxuJ,UAAA8pC,YAAA0kH,EACAA,EAAAxzE,UAAAyzE,EAksGA,IAAAxW,EAAAqW,EAAAtuJ,UA6GA,OA1GAi4I,EAAAiU,cAAA,WACA,OAAA3lJ,KAAAwmJ,YAAAxmJ,KAAAmoJ,eAGAzW,EAAAwU,mBAAA,SAAAF,GACAjiF,EAAA/jE,KAAAylJ,iBAAAruF,SAAAgxF,cAAApC,IAGAtU,EAAA+T,cAAA,WAEA,OADAzlJ,KAAAglJ,IAAAhlJ,KAAAglJ,KAAAjhF,EAAA/jE,KAAA+J,OAAA46H,UAAA,GACA3kI,KAAAglJ,KAGAtT,EAAAqU,WAAA,WACA,IAAAiB,EAAAjjF,EAAA/jE,KAAAylJ,iBAEAzlJ,KAAA0mJ,kBAAAM,EAAAn8H,KAAA88H,GAAAC,OAAA5nJ,KAAAwmJ,YAEA,IAAArqJ,EAAA6D,KAAAmoJ,cAEA,mBAAAhsJ,IACAA,IAAAnE,KAAAgI,KAAA2I,UAGA3I,KAAA0mJ,kBAAAM,EAAAn8H,KAAA88H,GAAAE,SAAA1rJ,GACA6qJ,EAAAvvF,YAAAiwF,GAAAnW,KAAA,IAAAmW,GAAAlW,OAIAE,EAAAyW,YAAA,WACA,OAAAnoJ,KAAA2I,QAAA0nC,aAAA,iBAAArwC,KAAA+J,OAAA5N,SAGAu1I,EAAA6U,eAAA,WACA,IAAAS,EAAAjjF,EAAA/jE,KAAAylJ,iBACAwB,EAAAD,EAAA3zG,KAAA,SAAAhoB,MAAAk8H,IAEA,OAAAN,KAAAlqJ,OAAA,GACAiqJ,EAAAvvF,YAAAwvF,EAAA1iJ,KAAA,MAKAwjJ,EAAA3V,iBAAA,SAAAroI,GACA,OAAA/J,KAAA+G,KAAA,WACA,IAAA3C,EAAA2/D,EAAA/jE,MAAAoE,KArGA,cAuGAoyI,EAAA,iBAAAzsI,IAAA,KAEA,IAAA3F,IAAA,eAAA5G,KAAAuM,MAIA3F,IACAA,EAAA,IAAA2jJ,EAAA/nJ,KAAAw2I,GACAzyE,EAAA/jE,MAAAoE,KA/GA,aA+GAA,IAGA,iBAAA2F,GAAA,CACA,YAAA3F,EAAA2F,GACA,UAAAsb,UAAA,oBAAAtb,EAAA,KAGA3F,EAAA2F,SAKAwlI,EAAAwY,EAAA,OACA3uJ,IAAA,UAEAV,IAAA,WACA,MAjIA,UAmIK,CACLU,IAAA,UACAV,IAAA,WACA,OAAA8uJ,KAEK,CACLpuJ,IAAA,OACAV,IAAA,WACA,OAAA2uJ,KAEK,CACLjuJ,IAAA,WACAV,IAAA,WACA,MA/IA,eAiJK,CACLU,IAAA,QACAV,IAAA,WACA,OAAAovJ,KAEK,CACL1uJ,IAAA,YACAV,IAAA,WACA,MAxJA,gBA0JK,CACLU,IAAA,cACAV,IAAA,WACA,OAAA+uJ,OAIAM,EApHA,CAqHGr+I,IAQHq6D,EAAA5iD,GAAA,QAAA4mI,GAAA3V,iBACAruE,EAAA5iD,GAAA,QAAAiE,YAAA2iI,GAEAhkF,EAAA5iD,GAAA,QAAA6iD,WAAA,WAEA,OADAD,EAAA5iD,GAAA,QAAAmmI,GACAS,GAAA3V,kBASA,IAAAiW,GAAA,YAKAC,GAAAvkF,EAAA5iD,GAAAknI,IACAE,GAAA,CACAv6H,OAAA,GACAvd,OAAA,OACAsH,OAAA,IAEAywI,GAAA,CACAx6H,OAAA,SACAvd,OAAA,SACAsH,OAAA,oBAEA0wI,GAAA,CACAC,SAAA,wBACAC,OAAA,sBACA3T,cAAA,8BAEA4T,GAAA,CACAC,cAAA,gBACAC,cAAA,gBACApW,OAAA,UAEAqW,GAAA,CACAC,SAAA,sBACAtW,OAAA,UACAuW,eAAA,oBACAC,UAAA,YACAC,UAAA,YACAC,WAAA,mBACAC,SAAA,YACAC,eAAA,iBACAC,gBAAA,oBAEAC,GAAA,CACAC,OAAA,SACAC,SAAA,YASAC,GAEA,WACA,SAAAA,EAAAhhJ,EAAAoB,GACA,IAAA8pB,EAAA7zB,KAEAA,KAAA6iC,SAAAl6B,EACA3I,KAAA4pJ,eAAA,SAAAjhJ,EAAAqlF,QAAAn1E,OAAAlQ,EACA3I,KAAAw2I,QAAAx2I,KAAAy2I,WAAA1sI,GACA/J,KAAA86I,UAAA96I,KAAAw2I,QAAAz+H,OAAA,IAAAgxI,GAAAG,UAAA,IAAAlpJ,KAAAw2I,QAAAz+H,OAAA,IAAAgxI,GAAAK,WAAA,IAAAppJ,KAAAw2I,QAAAz+H,OAAA,IAAAgxI,GAAAO,eACAtpJ,KAAAmtI,SAAA,GACAntI,KAAA6pJ,SAAA,GACA7pJ,KAAA8pJ,cAAA,KACA9pJ,KAAA+pJ,cAAA,EACAhmF,EAAA/jE,KAAA4pJ,gBAAAtyH,GAAAmxH,GAAAE,OAAA,SAAAr8H,GACA,OAAAuH,EAAAm2H,SAAA19H,KAEAtsB,KAAAiqJ,UAEAjqJ,KAAAgqJ,WAIA,IAAAtY,EAAAiY,EAAAlwJ,UAqMA,OAlMAi4I,EAAAuY,QAAA,WACA,IAAArvH,EAAA56B,KAEAkqJ,EAAAlqJ,KAAA4pJ,iBAAA5pJ,KAAA4pJ,eAAA/wI,OAAA2wI,GAAAC,OAAAD,GAAAE,SACAS,EAAA,SAAAnqJ,KAAAw2I,QAAA/lI,OAAAy5I,EAAAlqJ,KAAAw2I,QAAA/lI,OACA25I,EAAAD,IAAAX,GAAAE,SAAA1pJ,KAAAqqJ,gBAAA,EACArqJ,KAAAmtI,SAAA,GACAntI,KAAA6pJ,SAAA,GACA7pJ,KAAA+pJ,cAAA/pJ,KAAAsqJ,mBACA,IAAA5uG,EAAA,GAAAxjC,MAAAlgB,KAAA4oB,SAAA4vB,iBAAAxwC,KAAA86I,YACAp/F,EAAAh3C,IAAA,SAAAiE,GACA,IAAAoP,EACAwyI,EAAA1a,EAAAG,uBAAArnI,GAMA,GAJA4hJ,IACAxyI,EAAA6I,SAAA0P,cAAAi6H,IAGAxyI,EAAA,CACA,IAAAyyI,EAAAzyI,EAAAmO,wBAEA,GAAAskI,EAAA1sJ,OAAA0sJ,EAAA3rJ,OAEA,OAAAklE,EAAAhsD,GAAAoyI,KAAAprJ,IAAAqrJ,EAAAG,GAIA,cACOhhI,OAAA,SAAA3mB,GACP,OAAAA,IACOymB,KAAA,SAAA7R,EAAAoF,GACP,OAAApF,EAAA,GAAAoF,EAAA,KACO0O,QAAA,SAAA1oB,GACPg4B,EAAAuyG,SAAArwI,KAAA8F,EAAA,IAEAg4B,EAAAivH,SAAA/sJ,KAAA8F,EAAA,OAIA8uI,EAAAO,QAAA,WACAluE,EAAAliB,WAAA7hD,KAAA6iC,SAhHA,gBAiHAkhC,EAAA/jE,KAAA4pJ,gBAAAnyH,IAhHA,iBAiHAz3B,KAAA6iC,SAAA,KACA7iC,KAAA4pJ,eAAA,KACA5pJ,KAAAw2I,QAAA,KACAx2I,KAAA86I,UAAA,KACA96I,KAAAmtI,SAAA,KACAntI,KAAA6pJ,SAAA,KACA7pJ,KAAA8pJ,cAAA,KACA9pJ,KAAA+pJ,cAAA,MAIArY,EAAA+E,WAAA,SAAA1sI,GAGA,oBAFAA,EAAA0lI,EAAA,GAA+B8Y,GAAA,iBAAAx+I,OAAA,KAE/BgO,OAAA,CACA,IAAA3V,EAAA2hE,EAAAh6D,EAAAgO,QAAAs7B,KAAA,MAEAjxC,IACAA,EAAAytI,EAAAE,OAAAsY,IACAtkF,EAAAh6D,EAAAgO,QAAAs7B,KAAA,KAAAjxC,IAGA2H,EAAAgO,OAAA,IAAA3V,EAIA,OADAytI,EAAAW,gBAAA6X,GAAAt+I,EAAAy+I,IACAz+I,GAGA2nI,EAAA2Y,cAAA,WACA,OAAArqJ,KAAA4pJ,iBAAA/wI,OAAA7Y,KAAA4pJ,eAAAjnF,YAAA3iE,KAAA4pJ,eAAAxjI,WAGAsrH,EAAA4Y,iBAAA,WACA,OAAAtqJ,KAAA4pJ,eAAAjH,cAAApkJ,KAAAI,IAAAiiB,SAAAyB,KAAAsgI,aAAA/hI,SAAAqC,gBAAA0/H,eAGAjR,EAAA+Y,iBAAA,WACA,OAAAzqJ,KAAA4pJ,iBAAA/wI,cAAA2P,YAAAxoB,KAAA4pJ,eAAA1jI,wBAAArnB,QAGA6yI,EAAAsY,SAAA,WACA,IAAA5jI,EAAApmB,KAAAqqJ,gBAAArqJ,KAAAw2I,QAAAxoH,OAEA20H,EAAA3iJ,KAAAsqJ,mBAEAI,EAAA1qJ,KAAAw2I,QAAAxoH,OAAA20H,EAAA3iJ,KAAAyqJ,mBAMA,GAJAzqJ,KAAA+pJ,gBAAApH,GACA3iJ,KAAAiqJ,UAGA7jI,GAAAskI,EAAA,CACA,IAAA3yI,EAAA/X,KAAA6pJ,SAAA7pJ,KAAA6pJ,SAAA9sJ,OAAA,GAEAiD,KAAA8pJ,gBAAA/xI,GACA/X,KAAA2qJ,UAAA5yI,OAJA,CAUA,GAAA/X,KAAA8pJ,eAAA1jI,EAAApmB,KAAAmtI,SAAA,IAAAntI,KAAAmtI,SAAA,KAKA,OAJAntI,KAAA8pJ,cAAA,UAEA9pJ,KAAA4qJ,SAOA,IAFA,IAAAC,EAAA7qJ,KAAAmtI,SAAApwI,OAEAlF,EAAAgzJ,EAAgChzJ,KAAK,CACrC,IAAAizJ,EAAA9qJ,KAAA8pJ,gBAAA9pJ,KAAA6pJ,SAAAhyJ,IAAAuuB,GAAApmB,KAAAmtI,SAAAt1I,UAAA,IAAAmI,KAAAmtI,SAAAt1I,EAAA,IAAAuuB,EAAApmB,KAAAmtI,SAAAt1I,EAAA,IAEAizJ,GACA9qJ,KAAA2qJ,UAAA3qJ,KAAA6pJ,SAAAhyJ,OAKA65I,EAAAiZ,UAAA,SAAA5yI,GACA/X,KAAA8pJ,cAAA/xI,EAEA/X,KAAA4qJ,SAEA,IAAAG,EAAA/qJ,KAAA86I,UAAAnxH,MAAA,KAAAjlB,IAAA,SAAAykC,GACA,OAAAA,EAAA,iBAAApxB,EAAA,MAAAoxB,EAAA,UAAApxB,EAAA,OAGAizI,EAAAjnF,EAAA,GAAA7rD,MAAAlgB,KAAA4oB,SAAA4vB,iBAAAu6G,EAAAxmJ,KAAA,QAEAymJ,EAAAlzF,SAAA8wF,GAAAC,gBACAmC,EAAArvG,QAAAotG,GAAAM,UAAAx+H,KAAAk+H,GAAAQ,iBAAAnyF,SAAAwxF,GAAAlW,QACAsY,EAAA5zF,SAAAwxF,GAAAlW,UAGAsY,EAAA5zF,SAAAwxF,GAAAlW,QAGAsY,EAAAjvG,QAAAgtG,GAAAE,gBAAAztG,KAAAutG,GAAAG,UAAA,KAAAH,GAAAK,YAAAhyF,SAAAwxF,GAAAlW,QAEAsY,EAAAjvG,QAAAgtG,GAAAE,gBAAAztG,KAAAutG,GAAAI,WAAAriI,SAAAiiI,GAAAG,WAAA9xF,SAAAwxF,GAAAlW,SAGA3uE,EAAA/jE,KAAA4pJ,gBAAAjhG,QAAA8/F,GAAAC,SAAA,CACAz/F,cAAAlxC,KAIA25H,EAAAkZ,OAAA,WACA,GAAA1yI,MAAAlgB,KAAA4oB,SAAA4vB,iBAAAxwC,KAAA86I,YAAAvxH,OAAA,SAAAjG,GACA,OAAAA,EAAAswE,UAAAzvE,SAAAykI,GAAAlW,UACOpnH,QAAA,SAAAhI,GACP,OAAAA,EAAAswE,UAAAt2C,OAAAsrG,GAAAlW,WAKAiX,EAAAvX,iBAAA,SAAAroI,GACA,OAAA/J,KAAA+G,KAAA,WACA,IAAA3C,EAAA2/D,EAAA/jE,MAAAoE,KA3OA,gBA6OAoyI,EAAA,iBAAAzsI,KAOA,GALA3F,IACAA,EAAA,IAAAulJ,EAAA3pJ,KAAAw2I,GACAzyE,EAAA/jE,MAAAoE,KAjPA,eAiPAA,IAGA,iBAAA2F,EAAA,CACA,YAAA3F,EAAA2F,GACA,UAAAsb,UAAA,oBAAAtb,EAAA,KAGA3F,EAAA2F,SAKAwlI,EAAAoa,EAAA,OACAvwJ,IAAA,UACAV,IAAA,WACA,MAlQA,UAoQK,CACLU,IAAA,UACAV,IAAA,WACA,OAAA6vJ,OAIAoB,EA1NA,GAmOA5lF,EAAAlrD,QAAAye,GAAAmxH,GAAAzT,cAAA,WAIA,IAHA,IAAAiW,EAAA,GAAA/yI,MAAAlgB,KAAA4oB,SAAA4vB,iBAAAu4G,GAAAC,WACAkC,EAAAD,EAAAluJ,OAEAlF,EAAAqzJ,EAAkCrzJ,KAAK,CACvC,IAAAszJ,EAAApnF,EAAAknF,EAAApzJ,IAEA8xJ,GAAAvX,iBAAAp6I,KAAAmzJ,IAAA/mJ,WASA2/D,EAAA5iD,GAAAknI,IAAAsB,GAAAvX,iBACAruE,EAAA5iD,GAAAknI,IAAAjjI,YAAAukI,GAEA5lF,EAAA5iD,GAAAknI,IAAArkF,WAAA,WAEA,OADAD,EAAA5iD,GAAAknI,IAAAC,GACAqB,GAAAvX,kBASA,IAKAgZ,GAAArnF,EAAA5iD,GAAA,IACAkqI,GAAA,CACAxR,KAAA,cACAC,OAAA,gBACAtI,KAAA,cACAoI,MAAA,eACAxI,eAAA,yBAEAka,GAAA,CACAxC,cAAA,gBACApW,OAAA,SACAkK,SAAA,WACArL,KAAA,OACAC,KAAA,QAEA+Z,GAAA,CACAlC,SAAA,YACAJ,eAAA,oBACAvW,OAAA,UACA8Y,UAAA,iBACAzY,YAAA,kEACAwW,gBAAA,mBACAkC,sBAAA,4BASAC,GAEA,WACA,SAAAA,EAAA/iJ,GACA3I,KAAA6iC,SAAAl6B,EAIA,IAAA+oI,EAAAga,EAAAjyJ,UA0JA,OAvJAi4I,EAAAluF,KAAA,WACA,IAAA3vB,EAAA7zB,KAEA,KAAAA,KAAA6iC,SAAA3gB,YAAAliB,KAAA6iC,SAAA3gB,WAAAP,WAAAiC,KAAAg+H,cAAA79E,EAAA/jE,KAAA6iC,UAAAi1B,SAAAwzF,GAAA5Y,SAAA3uE,EAAA/jE,KAAA6iC,UAAAi1B,SAAAwzF,GAAA1O,WAAA,CAIA,IAAA7kI,EACA+tB,EACA6lH,EAAA5nF,EAAA/jE,KAAA6iC,UAAA8Y,QAAA4vG,GAAAtC,gBAAA,GACA9/G,EAAA0mG,EAAAG,uBAAAhwI,KAAA6iC,UAEA,GAAA8oH,EAAA,CACA,IAAAC,EAAA,OAAAD,EAAA1pI,UAAA,OAAA0pI,EAAA1pI,SAAAspI,GAAAC,UAAAD,GAAA7Y,OAEA5sG,GADAA,EAAAi+B,EAAAh5B,UAAAg5B,EAAA4nF,GAAA9gI,KAAA+gI,KACA9lH,EAAA/oC,OAAA,GAGA,IAAA+hJ,EAAA/6E,EAAAxb,MAAA8iG,GAAAxR,KAAA,CACA5wF,cAAAjpD,KAAA6iC,WAEA87G,EAAA56E,EAAAxb,MAAA8iG,GAAA7Z,KAAA,CACAvoF,cAAAnjB,IASA,GANAA,GACAi+B,EAAAj+B,GAAA6iB,QAAAm2F,GAGA/6E,EAAA/jE,KAAA6iC,UAAA8lB,QAAAg2F,IAEAA,EAAA51F,uBAAA+1F,EAAA/1F,qBAAA,CAIA5f,IACApxB,EAAA6I,SAAA0P,cAAA6Y,IAGAnpC,KAAA2qJ,UAAA3qJ,KAAA6iC,SAAA8oH,GAEA,IAAAv3F,EAAA,WACA,IAAAy3F,EAAA9nF,EAAAxb,MAAA8iG,GAAAvR,OAAA,CACA7wF,cAAAp1B,EAAAgP,WAEAi/G,EAAA/9E,EAAAxb,MAAA8iG,GAAAzR,MAAA,CACA3wF,cAAAnjB,IAEAi+B,EAAAj+B,GAAA6iB,QAAAkjG,GACA9nF,EAAAlwC,EAAAgP,UAAA8lB,QAAAm5F,IAGA/pI,EACA/X,KAAA2qJ,UAAA5yI,IAAAmK,WAAAkyC,GAEAA,OAIAs9E,EAAAO,QAAA,WACAluE,EAAAliB,WAAA7hD,KAAA6iC,SAzGA,UA0GA7iC,KAAA6iC,SAAA,MAIA6uG,EAAAiZ,UAAA,SAAAhiJ,EAAAimD,EAAA9/C,GACA,IAAA8rB,EAAA56B,KAEA8rJ,GAAAl9F,GAAA,OAAAA,EAAA3sC,UAAA,OAAA2sC,EAAA3sC,SAAA8hD,EAAAnV,GAAA9nC,SAAAykI,GAAA7Y,QAAA3uE,EAAAnV,GAAA/jC,KAAA0gI,GAAAC,WACAn5I,EAAAy5I,EAAA,GACAnQ,EAAA7sI,GAAAuD,GAAA0xD,EAAA1xD,GAAAylD,SAAAwzF,GAAA/Z,MAEAn9E,EAAA,WACA,OAAAx5B,EAAAmxH,oBAAApjJ,EAAA0J,EAAAvD,IAGA,GAAAuD,GAAAspI,EAAA,CACA,IAAA/7C,EAAAiwC,EAAAK,iCAAA79H,GACA0xD,EAAA1xD,GAAAolD,YAAA6zF,GAAA9Z,MAAArrF,IAAA0pF,EAAAF,eAAAv7E,GAAA48E,qBAAApxC,QAEAxrC,KAIAs9E,EAAAqa,oBAAA,SAAApjJ,EAAA0J,EAAAvD,GACA,GAAAuD,EAAA,CACA0xD,EAAA1xD,GAAAolD,YAAA6zF,GAAA5Y,QACA,IAAAsZ,EAAAjoF,EAAA1xD,EAAA6P,YAAA2I,KAAA0gI,GAAAE,uBAAA,GAEAO,GACAjoF,EAAAioF,GAAAv0F,YAAA6zF,GAAA5Y,QAGA,QAAArgI,EAAAg+B,aAAA,SACAh+B,EAAAmhB,aAAA,oBAaA,GATAuwC,EAAAp7D,GAAAyuD,SAAAk0F,GAAA5Y,QAEA,QAAA/pI,EAAA0nC,aAAA,SACA1nC,EAAA6qB,aAAA,oBAGAq8G,EAAAS,OAAA3nI,GACAo7D,EAAAp7D,GAAAyuD,SAAAk0F,GAAA9Z,MAEA7oI,EAAAuZ,YAAA6hD,EAAAp7D,EAAAuZ,YAAA41C,SAAAwzF,GAAAxC,eAAA,CACA,IAAAmD,EAAAloF,EAAAp7D,GAAAgzC,QAAA4vG,GAAAlC,UAAA,GAEA,GAAA4C,EAAA,CACA,IAAAC,EAAA,GAAAh0I,MAAAlgB,KAAAi0J,EAAAz7G,iBAAA+6G,GAAAhC,kBACAxlF,EAAAmoF,GAAA90F,SAAAk0F,GAAA5Y,QAGA/pI,EAAA6qB,aAAA,oBAGA1kB,GACAA,KAKA48I,EAAAtZ,iBAAA,SAAAroI,GACA,OAAA/J,KAAA+G,KAAA,WACA,IAAAi1I,EAAAj4E,EAAA/jE,MACAoE,EAAA43I,EAAA53I,KA5KA,UAmLA,GALAA,IACAA,EAAA,IAAAsnJ,EAAA1rJ,MACAg8I,EAAA53I,KAhLA,SAgLAA,IAGA,iBAAA2F,EAAA,CACA,YAAA3F,EAAA2F,GACA,UAAAsb,UAAA,oBAAAtb,EAAA,KAGA3F,EAAA2F,SAKAwlI,EAAAmc,EAAA,OACAtyJ,IAAA,UACAV,IAAA,WACA,MAjMA,YAqMAgzJ,EAhKA,GAyKA3nF,EAAAnjD,UAAA0W,GAAA+zH,GAAAja,eAAAma,GAAAxY,YAAA,SAAAzmH,GACAA,EAAA07B,iBAEA0jG,GAAAtZ,iBAAAp6I,KAAA+rE,EAAA/jE,MAAA,UAQA+jE,EAAA5iD,GAAA,IAAAuqI,GAAAtZ,iBACAruE,EAAA5iD,GAAA,IAAAiE,YAAAsmI,GAEA3nF,EAAA5iD,GAAA,IAAA6iD,WAAA,WAEA,OADAD,EAAA5iD,GAAA,IAAAiqI,GACAM,GAAAtZ,kBASA,IAIA+Z,GAAApoF,EAAA5iD,GAAA,MACAirI,GAAA,CACAtM,cAAA,yBACAjG,KAAA,gBACAC,OAAA,kBACAtI,KAAA,gBACAoI,MAAA,kBAEAyS,GAAA,CACA9a,KAAA,OACAsI,KAAA,OACArI,KAAA,OACA8a,QAAA,WAEAC,GAAA,CACA3oJ,UAAA,UACA4oJ,SAAA,UACAt2F,MAAA,UAEAu2F,GAAA,CACA7oJ,WAAA,EACA4oJ,UAAA,EACAt2F,MAAA,KAEAw2F,GAAA,CACAlM,aAAA,0BASAmM,GAEA,WACA,SAAAA,EAAAhkJ,EAAAoB,GACA/J,KAAA6iC,SAAAl6B,EACA3I,KAAAw2I,QAAAx2I,KAAAy2I,WAAA1sI,GACA/J,KAAA6kJ,SAAA,KAEA7kJ,KAAAilJ,gBAIA,IAAAvT,EAAAib,EAAAlzJ,UAyIA,OAtIAi4I,EAAAluF,KAAA,WACA,IAAA3vB,EAAA7zB,KAEA+jE,EAAA/jE,KAAA6iC,UAAA8lB,QAAAyjG,GAAA5a,MAEAxxI,KAAAw2I,QAAA5yI,WACA5D,KAAA6iC,SAAA+wD,UAAA/3C,IAAAwwG,GAAA9a,MAGA,IAAAn9E,EAAA,WACAvgC,EAAAgP,SAAA+wD,UAAAt2C,OAAA+uG,GAAAC,SAEAz4H,EAAAgP,SAAA+wD,UAAA/3C,IAAAwwG,GAAA7a,MAEAztE,EAAAlwC,EAAAgP,UAAA8lB,QAAAyjG,GAAAxS,OAEA/lH,EAAA2iH,QAAAgW,UACA34H,EAAA3B,QAQA,GAJAlyB,KAAA6iC,SAAA+wD,UAAAt2C,OAAA+uG,GAAAxS,MAEA75I,KAAA6iC,SAAA+wD,UAAA/3C,IAAAwwG,GAAAC,SAEAtsJ,KAAAw2I,QAAA5yI,UAAA,CACA,IAAAg8F,EAAAiwC,EAAAK,iCAAAlwI,KAAA6iC,UACAkhC,EAAA/jE,KAAA6iC,UAAAsjB,IAAA0pF,EAAAF,eAAAv7E,GAAA48E,qBAAApxC,QAEAxrC,KAIAs9E,EAAAx/G,KAAA,SAAA06H,GACA,IAAAhyH,EAAA56B,KAEAA,KAAA6iC,SAAA+wD,UAAAzvE,SAAAkoI,GAAA7a,QAIAztE,EAAA/jE,KAAA6iC,UAAA8lB,QAAAyjG,GAAAvS,MAEA+S,EACA5sJ,KAAA6sJ,SAEA7sJ,KAAA6kJ,SAAAtjI,WAAA,WACAqZ,EAAAiyH,UACS7sJ,KAAAw2I,QAAAtgF,SAITw7E,EAAAO,QAAA,WACA77G,aAAAp2B,KAAA6kJ,UACA7kJ,KAAA6kJ,SAAA,KAEA7kJ,KAAA6iC,SAAA+wD,UAAAzvE,SAAAkoI,GAAA7a,OACAxxI,KAAA6iC,SAAA+wD,UAAAt2C,OAAA+uG,GAAA7a,MAGAztE,EAAA/jE,KAAA6iC,UAAApL,IAAA20H,GAAAtM,eACA/7E,EAAAliB,WAAA7hD,KAAA6iC,SA/GA,YAgHA7iC,KAAA6iC,SAAA,KACA7iC,KAAAw2I,QAAA,MAIA9E,EAAA+E,WAAA,SAAA1sI,GAGA,OAFAA,EAAA0lI,EAAA,GAA+Bgd,GAAA1oF,EAAA/jE,KAAA6iC,UAAAz+B,OAAA,iBAAA2F,OAAA,IAC/B8lI,EAAAW,gBAzHA,QAyHAzmI,EAAA/J,KAAAujC,YAAAuwG,aACA/pI,GAGA2nI,EAAAuT,cAAA,WACA,IAAA9mH,EAAAn+B,KAEA+jE,EAAA/jE,KAAA6iC,UAAAvL,GAAA80H,GAAAtM,cAAA4M,GAAAlM,aAAA,WACA,OAAAriH,EAAAjM,MAAA,MAIAw/G,EAAAmb,OAAA,WACA,IAAAjnH,EAAA5lC,KAEAo0D,EAAA,WACAxuB,EAAA/C,SAAA+wD,UAAA/3C,IAAAwwG,GAAAxS,MAEA91E,EAAAn+B,EAAA/C,UAAA8lB,QAAAyjG,GAAAtS,SAKA,GAFA95I,KAAA6iC,SAAA+wD,UAAAt2C,OAAA+uG,GAAA7a,MAEAxxI,KAAAw2I,QAAA5yI,UAAA,CACA,IAAAg8F,EAAAiwC,EAAAK,iCAAAlwI,KAAA6iC,UACAkhC,EAAA/jE,KAAA6iC,UAAAsjB,IAAA0pF,EAAAF,eAAAv7E,GAAA48E,qBAAApxC,QAEAxrC,KAKAu4F,EAAAva,iBAAA,SAAAroI,GACA,OAAA/J,KAAA+G,KAAA,WACA,IAAAsrI,EAAAtuE,EAAA/jE,MACAoE,EAAAiuI,EAAAjuI,KA1JA,YA4JAoyI,EAAA,iBAAAzsI,KAOA,GALA3F,IACAA,EAAA,IAAAuoJ,EAAA3sJ,KAAAw2I,GACAnE,EAAAjuI,KAhKA,WAgKAA,IAGA,iBAAA2F,EAAA,CACA,YAAA3F,EAAA2F,GACA,UAAAsb,UAAA,oBAAAtb,EAAA,KAGA3F,EAAA2F,GAAA/J,UAKAuvI,EAAAod,EAAA,OACAvzJ,IAAA,UACAV,IAAA,WACA,MAjLA,UAmLK,CACLU,IAAA,cACAV,IAAA,WACA,OAAA6zJ,OAIAI,EAnJA,GA4JA5oF,EAAA5iD,GAAA,MAAAwrI,GAAAva,iBACAruE,EAAA5iD,GAAA,MAAAiE,YAAAunI,GAEA5oF,EAAA5iD,GAAA,MAAA6iD,WAAA,WAEA,OADAD,EAAA5iD,GAAA,MAAAgrI,GACAQ,GAAAva,kBAUA,WACA,YAAAruE,EACA,UAAA1+C,UAAA,kGAGA,IAAAtC,EAAAghD,EAAA5iD,GAAA8S,OAAAtK,MAAA,QAAAA,MAAA,KAOA,GAAA5G,EAAA,GALA,GAKAA,EAAA,GAJA,GAFA,IAMAA,EAAA,IAJA,IAIAA,EAAA,IAAAA,EAAA,GAHA,GAGAA,EAAA,IAFA,EAGA,UAAAtV,MAAA,+EAbA,GAiBA9V,EAAAk4I,OACAl4I,EAAA85I,QACA95I,EAAAw7I,SACAx7I,EAAAo+I,WACAp+I,EAAA6iJ,WACA7iJ,EAAAumJ,WACAvmJ,EAAAgpJ,SACAhpJ,EAAAowJ,WACApwJ,EAAAm1J,UAAAnD,GACAhyJ,EAAA+zJ,OACA/zJ,EAAAg1J,SACAh1J,EAAA+R,WAEAnR,OAAAC,eAAAb,EAAA,cAAgDmB,OAAA,IA/oIcmB,CAAAtC,EAAoBF,EAAQ,QAAcA,EAAQ,4CCJhH,IAAA0L,EAAc1L,EAAQ,QAKtBE,EAAAC,EAAAD,QAAA,CAKAwT,MAAA,SAAAjH,GACAA,EAAAnE,IAAAgtJ,UAAA,IAAA7oJ,EAAApG,MAAAoG,EAAArF,SAcAmuJ,YAAA,SAAAjtJ,EAAAzB,EAAAG,EAAAX,EAAAe,EAAAwgB,GACA,GAAAA,EAAA,CAGA,IACA1mB,EAAA4F,KAAAC,IAAA6gB,EAAAxgB,EAAA,EADA,KACAf,EAAA,EADA,MAGAiC,EAAAoB,OAAA7C,EAAA3F,EAAA8F,GACAsB,EAAAqB,OAAA9C,EAAAR,EAAAnF,EAAA8F,GACAsB,EAAAktJ,MAAA3uJ,EAAAR,EAAAW,EAAAH,EAAAR,EAAAW,EAAA9F,KACAoH,EAAAqB,OAAA9C,EAAAR,EAAAW,EAAAI,EAAAlG,GACAoH,EAAAktJ,MAAA3uJ,EAAAR,EAAAW,EAAAI,EAAAP,EAAAR,EAAAnF,EAAA8F,EAAAI,EAAAlG,GACAoH,EAAAqB,OAAA9C,EAAA3F,EAAA8F,EAAAI,GACAkB,EAAAktJ,MAAA3uJ,EAAAG,EAAAI,EAAAP,EAAAG,EAAAI,EAAAlG,KACAoH,EAAAqB,OAAA9C,EAAAG,EAAA9F,GACAoH,EAAAktJ,MAAA3uJ,EAAAG,EAAAH,EAAA3F,EAAA8F,EAAA9F,GACAoH,EAAAuf,YACAvf,EAAAoB,OAAA7C,EAAAG,QAEAsB,EAAAomB,KAAA7nB,EAAAG,EAAAX,EAAAe,IAIAojC,UAAA,SAAAliC,EAAA8L,EAAAwT,EAAA/gB,EAAAG,EAAA8mE,GACA,IAAAjqE,EAAA4xJ,EAAAC,EAAAC,EAAAvuJ,EAAAsb,EAGA,GAFAorD,KAAA,GAEA15D,GAAA,iBAAAA,GAEA,+BADAvQ,EAAAuQ,EAAAoM,aACA,+BAAA3c,GAMA,KAAA8J,MAAAia,OAAA,IASA,OALAtf,EAAA4f,OACA5f,EAAA6f,UAAAthB,EAAAG,GACAsB,EAAAoX,OAAAouD,EAAAhnE,KAAAyF,GAAA,KACAjE,EAAAW,YAEAmL,GAEA,QACA9L,EAAAmF,IAAA,IAAAma,EAAA,IAAA9gB,KAAAyF,IACAjE,EAAAuf,YACA,MACA,eAEAzgB,GADAquJ,EAAA,EAAA7tI,EAAA9gB,KAAA8uJ,KAAA,IACA9uJ,KAAA8uJ,KAAA,KACAttJ,EAAAoB,QAAA+rJ,EAAA,EAAAruJ,EAAA,GACAkB,EAAAqB,OAAA8rJ,EAAA,EAAAruJ,EAAA,GACAkB,EAAAqB,OAAA,KAAAvC,EAAA,GACAkB,EAAAuf,YACA,MACA,WACAnF,EAAA,EAAA5b,KAAAwgC,MAAA1f,EACAtf,EAAAomB,MAAAhM,KAAA,EAAAA,EAAA,EAAAA,GACA,MACA,kBACA,IAAA6T,EAAA3O,EAAA9gB,KAAAwgC,MACAuuH,GAAAt/H,EACAu/H,GAAAv/H,EACAw/H,EAAAjvJ,KAAAwgC,MAAA1f,EAMArf,KAAAgtJ,YAAAjtJ,EAAAutJ,EAAAC,EAAAC,IAAA,KAAAnuI,GACA,MACA,cACAlF,EAAA,EAAA5b,KAAAwgC,MAAA1f,EACAtf,EAAAoB,QAAAgZ,EAAA,GACApa,EAAAqB,OAAA,EAAA+Y,GACApa,EAAAqB,OAAA+Y,EAAA,GACApa,EAAAqB,OAAA,GAAA+Y,GACApa,EAAAuf,YACA,MACA,YACAvf,EAAAoB,OAAA,EAAAke,GACAtf,EAAAqB,OAAA,GAAAie,GACAtf,EAAAoB,QAAAke,EAAA,GACAtf,EAAAqB,OAAAie,EAAA,GACA,MACA,eACA8tI,EAAA5uJ,KAAAwf,IAAAxf,KAAAyF,GAAA,GAAAqb,EACA+tI,EAAA7uJ,KAAAqf,IAAArf,KAAAyF,GAAA,GAAAqb,EACAtf,EAAAoB,QAAAgsJ,GAAAC,GACArtJ,EAAAqB,OAAA+rJ,EAAAC,GACArtJ,EAAAoB,QAAAgsJ,EAAAC,GACArtJ,EAAAqB,OAAA+rJ,GAAAC,GACA,MACA,WACArtJ,EAAAoB,OAAA,EAAAke,GACAtf,EAAAqB,OAAA,GAAAie,GACAtf,EAAAoB,QAAAke,EAAA,GACAtf,EAAAqB,OAAAie,EAAA,GACA8tI,EAAA5uJ,KAAAwf,IAAAxf,KAAAyF,GAAA,GAAAqb,EACA+tI,EAAA7uJ,KAAAqf,IAAArf,KAAAyF,GAAA,GAAAqb,EACAtf,EAAAoB,QAAAgsJ,GAAAC,GACArtJ,EAAAqB,OAAA+rJ,EAAAC,GACArtJ,EAAAoB,QAAAgsJ,EAAAC,GACArtJ,EAAAqB,OAAA+rJ,GAAAC,GACA,MACA,WACArtJ,EAAAoB,QAAAke,EAAA,GACAtf,EAAAqB,OAAAie,EAAA,GACA,MACA,WACAtf,EAAAoB,OAAA,KACApB,EAAAqB,OAAAie,EAAA,GAIAtf,EAAAsB,OACAtB,EAAAuB,SACAvB,EAAAkgB,gBA1FAlgB,EAAA0tJ,UAAA5hJ,EAAAvN,EAAAuN,EAAA/N,MAAA,EAAAW,EAAAoN,EAAAhN,OAAA,EAAAgN,EAAA/N,MAAA+N,EAAAhN,SA6FAwoE,SAAA,SAAAtnE,EAAAopB,GACAppB,EAAA4f,OACA5f,EAAAW,YACAX,EAAAomB,KAAAgD,EAAArqB,KAAAqqB,EAAApqB,IAAAoqB,EAAAnqB,MAAAmqB,EAAArqB,KAAAqqB,EAAAlqB,OAAAkqB,EAAApqB,KACAgB,EAAA2tJ,QAGApmF,WAAA,SAAAvnE,GACAA,EAAAkgB,WAGA7e,OAAA,SAAArB,EAAA+lC,EAAA/tB,EAAAgZ,GACA,GAAAhZ,EAAA4sD,YAOA,MANA,UAAA5sD,EAAA4sD,cAAA5zC,GAAA,UAAAhZ,EAAA4sD,aAAA5zC,EACAhxB,EAAAqB,OAAA0kC,EAAAxnC,EAAAyZ,EAAAtZ,GAEAsB,EAAAqB,OAAA2W,EAAAzZ,EAAAwnC,EAAArnC,QAEAsB,EAAAqB,OAAA2W,EAAAzZ,EAAAyZ,EAAAtZ,GAIAsZ,EAAA0sD,QAKA1kE,EAAA4tJ,cACA58H,EAAA+U,EAAAihC,sBAAAjhC,EAAAmhC,kBACAl2C,EAAA+U,EAAAkhC,sBAAAlhC,EAAAohC,kBACAn2C,EAAAhZ,EAAAkvD,kBAAAlvD,EAAAgvD,sBACAh2C,EAAAhZ,EAAAmvD,kBAAAnvD,EAAAivD,sBACAjvD,EAAAzZ,EACAyZ,EAAAtZ,GAVAsB,EAAAqB,OAAA2W,EAAAzZ,EAAAyZ,EAAAtZ,KAuBA0E,EAAAgI,MAAAxT,EAAAwT,MASAhI,EAAAyqJ,qBAAA,SAAA7tJ,GACAA,EAAAW,YACA/I,EAAAq1J,YAAA1vJ,MAAA3F,EAAAmW,+CC7MAlW,EAAAD,QAAA,CACAk2J,UAAA,cACAC,aAAA,cACAC,KAAA,YACAC,WAAA,cACAC,MAAA,cACAC,MAAA,cACAC,OAAA,cACAj5I,MAAA,QACAk5I,eAAA,cACAz5I,KAAA,UACA05I,WAAA,aACAC,MAAA,YACAC,UAAA,cACAC,UAAA,aACAC,WAAA,YACAC,UAAA,aACAC,MAAA,aACAC,eAAA,cACAC,SAAA,cACAC,QAAA,YACA/6I,KAAA,YACAg7I,SAAA,UACAC,SAAA,YACAC,cAAA,aACAC,SAAA,cACAC,UAAA,UACAC,SAAA,cACAC,UAAA,cACAC,YAAA,YACAC,eAAA,YACAC,WAAA,YACAC,WAAA,aACAC,QAAA,UACAC,WAAA,cACAC,aAAA,cACAC,cAAA,YACAC,cAAA,WACAC,cAAA,WACAC,cAAA,YACAC,WAAA,YACAC,SAAA,aACAC,YAAA,YACAC,QAAA,cACAC,QAAA,cACAC,WAAA,aACAC,UAAA,YACAC,YAAA,cACAC,YAAA,YACAC,QAAA,YACAC,UAAA,cACAC,WAAA,cACAC,KAAA,YACAC,UAAA,aACAC,KAAA,cACAr8I,MAAA,UACAs8I,YAAA,aACAC,KAAA,cACAC,SAAA,cACAC,QAAA,cACAC,UAAA,YACAC,OAAA,WACAC,MAAA,cACAC,MAAA,cACAC,SAAA,cACAC,cAAA,cACAC,UAAA,YACAC,aAAA,cACAC,UAAA,cACAC,WAAA,cACAC,UAAA,cACAC,qBAAA,cACAC,UAAA,cACAC,WAAA,cACAC,UAAA,cACAC,UAAA,cACAC,YAAA,cACAC,cAAA,aACAC,aAAA,cACAC,eAAA,cACAC,eAAA,cACAC,eAAA,cACAC,YAAA,cACAC,KAAA,UACAC,UAAA,YACAC,MAAA,cACA79I,QAAA,YACA89I,OAAA,UACAC,iBAAA,cACAC,WAAA,UACAC,aAAA,aACAC,aAAA,cACAC,eAAA,aACAC,gBAAA,cACAC,kBAAA,YACAC,gBAAA,aACAC,gBAAA,aACAC,aAAA,YACAC,UAAA,cACAC,UAAA,cACAC,SAAA,cACAC,YAAA,cACAC,KAAA,UACAC,QAAA,cACAC,MAAA,YACAC,UAAA,aACAC,OAAA,YACAC,UAAA,WACAC,OAAA,cACAC,cAAA,cACAC,UAAA,cACAC,cAAA,cACAC,cAAA,cACAC,WAAA,cACAC,UAAA,cACAC,KAAA,aACAC,KAAA,cACAC,KAAA,cACAC,WAAA,cACAC,OAAA,YACAC,cAAA,aACArhJ,IAAA,UACAshJ,UAAA,cACAC,UAAA,aACAC,YAAA,YACAC,OAAA,cACAC,WAAA,aACAC,SAAA,YACAC,SAAA,cACAC,OAAA,YACAC,OAAA,cACAC,QAAA,cACAC,UAAA,aACAC,UAAA,cACAC,UAAA,cACAC,KAAA,cACAC,YAAA,YACAC,UAAA,aACAC,IAAA,cACAC,KAAA,YACAC,QAAA,cACAC,OAAA,YACAC,UAAA,aACAC,OAAA,cACAC,MAAA,cACAC,MAAA,cACAC,WAAA,cACAvhJ,OAAA,YACAwhJ,YAAA,iDCjJA,IAYAr0J,EAZAe,EAAA,CAIA4C,KAAA,aAOAqE,KACAhI,EAAA,EACA,WACA,OAAAA,MAUAsN,cAAA,SAAA5W,GACA,OAAAA,SASA6hB,QAAAhC,MAAAgC,QAAAhC,MAAAgC,QAAA,SAAA7hB,GACA,yBAAAP,OAAAkB,UAAAwe,SAAAjgB,KAAAc,IASAsqC,SAAA,SAAAtqC,GACA,cAAAA,GAAA,oBAAAP,OAAAkB,UAAAwe,SAAAjgB,KAAAc,IASA0P,eAAA,SAAA1P,EAAAuhD,GACA,gBAAAvhD,EAAAuhD,EAAAvhD,GAUAiM,sBAAA,SAAAjM,EAAAmI,EAAAo5C,GACA,OAAAl3C,EAAAqF,eAAArF,EAAAwX,QAAA7hB,KAAAmI,GAAAnI,EAAAuhD,IAWAvrC,SAAA,SAAAqS,EAAAxS,EAAAu5D,GACA,GAAA/mD,GAAA,mBAAAA,EAAAnpB,KACA,OAAAmpB,EAAA7jB,MAAA4qE,EAAAv5D,IAaA5H,KAAA,SAAA2vJ,EAAAv1I,EAAA+mD,EAAAxpD,GACA,IAAA7mB,EAAAoD,EAAAuR,EACA,GAAArJ,EAAAwX,QAAA+7I,GAEA,GADAz7J,EAAAy7J,EAAA35J,OACA2hB,EACA,IAAA7mB,EAAAoD,EAAA,EAAqBpD,GAAA,EAAQA,IAC7BspB,EAAAnpB,KAAAkwE,EAAAwuF,EAAA7+J,WAGA,IAAAA,EAAA,EAAeA,EAAAoD,EAASpD,IACxBspB,EAAAnpB,KAAAkwE,EAAAwuF,EAAA7+J,WAGG,GAAAsL,EAAAigC,SAAAszH,GAGH,IADAz7J,GADAuR,EAAAjU,OAAAiU,KAAAkqJ,IACA35J,OACAlF,EAAA,EAAcA,EAAAoD,EAASpD,IACvBspB,EAAAnpB,KAAAkwE,EAAAwuF,EAAAlqJ,EAAA3U,IAAA2U,EAAA3U,KAYA2a,YAAA,SAAAmkJ,EAAAC,GACA,IAAA/+J,EAAA2N,EAAAqxJ,EAAAC,EAEA,IAAAH,IAAAC,GAAAD,EAAA55J,SAAA65J,EAAA75J,OACA,SAGA,IAAAlF,EAAA,EAAA2N,EAAAmxJ,EAAA55J,OAA+BlF,EAAA2N,IAAU3N,EAIzC,GAHAg/J,EAAAF,EAAA9+J,GACAi/J,EAAAF,EAAA/+J,GAEAg/J,aAAAl+I,OAAAm+I,aAAAn+I,OACA,IAAAxV,EAAAqP,YAAAqkJ,EAAAC,GACA,cAEI,GAAAD,IAAAC,EAEJ,SAIA,UAQAl/I,MAAA,SAAAE,GACA,GAAA3U,EAAAwX,QAAA7C,GACA,OAAAA,EAAApT,IAAAvB,EAAAyU,OAGA,GAAAzU,EAAAigC,SAAAtrB,GAAA,CAMA,IALA,IAAAC,EAAA,GACAvL,EAAAjU,OAAAiU,KAAAsL,GACAi/I,EAAAvqJ,EAAAzP,OACAi6J,EAAA,EAESA,EAAAD,IAAUC,EACnBj/I,EAAAvL,EAAAwqJ,IAAA7zJ,EAAAyU,MAAAE,EAAAtL,EAAAwqJ,KAGA,OAAAj/I,EAGA,OAAAD,GAQAm/I,QAAA,SAAA79J,EAAA2e,EAAAD,EAAA7S,GACA,IAAAiyJ,EAAAn/I,EAAA3e,GACAoxI,EAAA1yH,EAAA1e,GAEA+J,EAAAigC,SAAA8zH,IAAA/zJ,EAAAigC,SAAAonG,GACArnI,EAAA8gC,MAAAizH,EAAA1sB,EAAAvlI,GAEA8S,EAAA3e,GAAA+J,EAAAyU,MAAA4yH,IAQA2sB,UAAA,SAAA/9J,EAAA2e,EAAAD,GACA,IAAAo/I,EAAAn/I,EAAA3e,GACAoxI,EAAA1yH,EAAA1e,GAEA+J,EAAAigC,SAAA8zH,IAAA/zJ,EAAAigC,SAAAonG,GACArnI,EAAA4/B,QAAAm0H,EAAA1sB,GACGzyH,EAAAre,eAAAN,KACH2e,EAAA3e,GAAA+J,EAAAyU,MAAA4yH,KAaAvmG,MAAA,SAAAlsB,EAAAD,EAAA7S,GACA,IAEAg/B,EAAApsC,EAAA2U,EAAAuqJ,EAAAC,EAFA5mC,EAAAjtH,EAAAwX,QAAA7C,KAAA,CAAAA,GACAtS,EAAA4qH,EAAArzH,OAGA,IAAAoG,EAAAigC,SAAArrB,GACA,OAAAA,EAMA,IAFAksB,GADAh/B,KAAA,IACAmyJ,QAAAj0J,EAAA8zJ,QAEAp/J,EAAA,EAAaA,EAAA2N,IAAU3N,EAEvB,GADAigB,EAAAs4G,EAAAv4H,GACAsL,EAAAigC,SAAAtrB,GAKA,IAAAk/I,EAAA,EAAAD,GADAvqJ,EAAAjU,OAAAiU,KAAAsL,IACA/a,OAAkCi6J,EAAAD,IAAUC,EAC5C/yH,EAAAz3B,EAAAwqJ,GAAAj/I,EAAAD,EAAA7S,GAIA,OAAA8S,GAUAgrB,QAAA,SAAAhrB,EAAAD,GACA,OAAA3U,EAAA8gC,MAAAlsB,EAAAD,EAAA,CAAwCs/I,OAAAj0J,EAAAg0J,aAUxCx3J,OAAA,SAAAoY,GAIA,IAHA,IAAAs/I,EAAA,SAAAv+J,EAAAM,GACA2e,EAAA3e,GAAAN,GAEAjB,EAAA,EAAA2N,EAAAsI,UAAA/Q,OAA0ClF,EAAA2N,IAAU3N,EACpDsL,EAAA4D,KAAA+G,UAAAjW,GAAAw/J,GAEA,OAAAt/I,GAMAoyD,SAAA,SAAAmtF,GACA,IAAApxJ,EAAAlG,KACAu3J,EAAAD,KAAA59J,eAAA,eAAA49J,EAAA/zH,YAAA,WACA,OAAAr9B,EAAA5I,MAAA0C,KAAA8N,YAGA0pJ,EAAA,WACAx3J,KAAAujC,YAAAg0H,GAYA,OATAC,EAAA/9J,UAAAyM,EAAAzM,UACA89J,EAAA99J,UAAA,IAAA+9J,EACAD,EAAA53J,OAAAwD,EAAAgnE,SAEAmtF,GACAn0J,EAAAxD,OAAA43J,EAAA99J,UAAA69J,GAGAC,EAAAE,UAAAvxJ,EAAAzM,UACA89J,IAIA3/J,EAAAD,QAAAwL,EAWAA,EAAAu0J,aAAAv0J,EAAA2L,SAUA3L,EAAAzI,QAAA,SAAAs8B,EAAAp0B,EAAAgqG,GACA,OAAAj0F,MAAAlf,UAAAiB,QAAA1C,KAAAg/B,EAAAp0B,EAAAgqG,IAUAzpG,EAAAw0J,kBAAAx0J,EAAAqF,eASArF,EAAAy0J,yBAAAz0J,EAAA4B,6CClVA,SAAAzF,GAAA,IAAA0kC,OAAA,IAAA1kC,MACA,oBAAA27C,YACApiC,OACAvb,EAAA4wE,SAAAz0E,UAAA6D,MAiBA,SAAAu6J,EAAAz1J,EAAA01J,GACA93J,KAAA+3J,IAAA31J,EACApC,KAAAg4J,SAAAF,EAfAngK,EAAA4pB,WAAA,WACA,WAAAs2I,EAAAv6J,EAAAtF,KAAAupB,WAAAyiB,EAAAl2B,WAAAsoB,eAEAz+B,EAAAkuC,YAAA,WACA,WAAAgyH,EAAAv6J,EAAAtF,KAAA6tC,YAAA7B,EAAAl2B,WAAAk3B,gBAEArtC,EAAAy+B,aACAz+B,EAAAqtC,cAAA,SAAArO,GACAA,GACAA,EAAAg7G,SAQAkmB,EAAAp+J,UAAAw+J,MAAAJ,EAAAp+J,UAAAwC,IAAA,aACA47J,EAAAp+J,UAAAk4I,MAAA,WACA3xI,KAAAg4J,SAAAhgK,KAAAgsC,EAAAhkC,KAAA+3J,MAIApgK,EAAAugK,OAAA,SAAAt1J,EAAAu1J,GACA/hI,aAAAxzB,EAAAw1J,gBACAx1J,EAAAy1J,aAAAF,GAGAxgK,EAAA2gK,SAAA,SAAA11J,GACAwzB,aAAAxzB,EAAAw1J,gBACAx1J,EAAAy1J,cAAA,GAGA1gK,EAAA4gK,aAAA5gK,EAAA0a,OAAA,SAAAzP,GACAwzB,aAAAxzB,EAAAw1J,gBAEA,IAAAD,EAAAv1J,EAAAy1J,aACAF,GAAA,IACAv1J,EAAAw1J,eAAA72I,WAAA,WACA3e,EAAA41J,YACA51J,EAAA41J,cACKL,KAKL1gK,EAAQ,QAIRE,EAAAo1E,aAAA,oBAAA9xB,WAAA8xB,mBACA,IAAAztE,KAAAytE,cACA/sE,WAAA+sE,aACAp1E,EAAA8gK,eAAA,oBAAAx9G,WAAAw9G,qBACA,IAAAn5J,KAAAm5J,gBACAz4J,WAAAy4J,yEC5DA,IAAArgI,EAAY3gC,EAAQ,QACpBihK,EAAoBjhK,EAAQ,QAC5BkhK,EAAelhK,EAAQ,QACvBgG,EAAehG,EAAQ,QACvBmhK,EAAoBnhK,EAAQ,QAC5BohK,EAAkBphK,EAAQ,QAK1B,SAAAqhK,EAAA/uJ,GACAA,EAAAgvJ,aACAhvJ,EAAAgvJ,YAAAC,mBAUAphK,EAAAD,QAAA,SAAAoS,GAkCA,OAjCA+uJ,EAAA/uJ,GAGAA,EAAAf,UAAA4vJ,EAAA7uJ,EAAAxM,OACAwM,EAAAxM,IAAAs7J,EAAA9uJ,EAAAf,QAAAe,EAAAxM,MAIAwM,EAAAo0D,QAAAp0D,EAAAo0D,SAAA,GAGAp0D,EAAA3F,KAAAs0J,EACA3uJ,EAAA3F,KACA2F,EAAAo0D,QACAp0D,EAAA2+D,kBAIA3+D,EAAAo0D,QAAA/lC,EAAA6L,MACAl6B,EAAAo0D,QAAAsL,QAAA,GACA1/D,EAAAo0D,QAAAp0D,EAAA0G,SAAA,GACA1G,EAAAo0D,SAAA,IAGA/lC,EAAA9M,QACA,sDACA,SAAA7a,UACA1G,EAAAo0D,QAAA1tD,MAIA1G,EAAA0+D,SAAAhrE,EAAAgrE,SAEA1+D,GAAAsX,KAAA,SAAAkZ,GAUA,OATAu+H,EAAA/uJ,GAGAwwB,EAAAn2B,KAAAs0J,EACAn+H,EAAAn2B,KACAm2B,EAAA4jC,QACAp0D,EAAAq/D,mBAGA7uC,GACG,SAAAyrD,GAcH,OAbA2yE,EAAA3yE,KACA8yE,EAAA/uJ,GAGAi8E,KAAAzrD,WACAyrD,EAAAzrD,SAAAn2B,KAAAs0J,EACA1yE,EAAAzrD,SAAAn2B,KACA4hF,EAAAzrD,SAAA4jC,QACAp0D,EAAAq/D,qBAKAloD,QAAAmd,OAAA2nD,yCCjFA,IAAAvoF,EAAehG,EAAQ,QACvBiG,EAAcjG,EAAQ,QACtB0L,EAAc1L,EAAQ,QAEtBuhB,EAAAvb,EAAA6B,OAEA7B,EAAAyB,KAAA,UACAC,SAAA,CACA+D,KAAA,CACAuhE,QAAA,GACAplE,gBAAA2Z,EAAAzZ,aACAG,YAAA,EACAF,YAAAwZ,EAAAzZ,aACA6/B,eAAA,OACAE,WAAA,GACAE,iBAAA,EACAE,gBAAA,QACAynC,iBAAA,EACA9lE,MAAA,MAKAzJ,EAAAD,QAAA+F,EAAAiC,OAAA,CACAC,KAAA,WACA,IAOAqB,EAAA+9D,EAAAl5B,EAAAmzH,EANA76J,EADA4B,KACAnC,MACAkC,EAFAC,KAEAC,OAAAF,IACAkkE,EAAA7lE,EAAA6lE,SACAK,EAJAtkE,KAIA0kE,UAAAxsD,QACAghJ,EAAAlgJ,EAAA7Z,SAAA+D,KACAi2J,GAAA,EA2BA,IAjCAn5J,KAUAo5J,OAAA90F,EAAAvnE,QACAunE,EAAAxnE,KAAAwnE,EAAA,IAGAvkE,EAAA4f,OAGA5f,EAAAo/B,QAAA/gC,EAAAghC,gBAAA85H,EAAA95H,eAGAr/B,EAAAgiC,aACAhiC,EAAAgiC,YAAA3jC,EAAAkhC,YAAA45H,EAAA55H,YAGAv/B,EAAAw/B,eAAAnhC,EAAAohC,kBAAA05H,EAAA15H,iBACAz/B,EAAA0/B,SAAArhC,EAAAshC,iBAAAw5H,EAAAx5H,gBACA3/B,EAAAc,UAAAzC,EAAAsB,aAAAw5J,EAAAx5J,YACAK,EAAAa,YAAAxC,EAAAoB,aAAAwZ,EAAAzZ,aAGAQ,EAAAW,YACAy4J,GAAA,EAEAl4J,EAAA,EAAiBA,EAAAqjE,EAAAvnE,SAAuBkE,EACxC+9D,EAAAsF,EAAArjE,GACA6kC,EAAA3iC,EAAA0jE,aAAAvC,EAAArjE,GACAg4J,EAAAj6F,EAAAnhE,MAGA,IAAAoD,EACAg4J,EAAA1hH,OACAx3C,EAAAoB,OAAA83J,EAAA36J,EAAA26J,EAAAx6J,GACA06J,EAAAl4J,IAGA6kC,GAAA,IAAAqzH,EAAArzH,EAAAw+B,EAAA60F,GAEAF,EAAA1hH,OACA4hH,IAAAl4J,EAAA,IAAAgjE,IAAA,IAAAk1F,EAEAp5J,EAAAoB,OAAA83J,EAAA36J,EAAA26J,EAAAx6J,GAGA0E,EAAAgH,OAAA/I,OAAArB,EAAA+lC,EAAAjoC,MAAAmhE,EAAAnhE,OAEAs7J,EAAAl4J,IAKAlB,EAAAuB,SACAvB,EAAAkgB,gDCtFA,IAAAxiB,EAAehG,EAAQ,QACvB0L,EAAc1L,EAAQ,QAEtBgG,EAAAyB,KAAA,UACAsK,QAAA,KAQA5R,EAAAD,QAAA,CAKA0hK,SAAA,GAQAC,SAAA,EAMAC,SAAA,SAAA/vJ,GACA,IAAA7P,EAAAqG,KAAAq5J,SACA,GAAA3sJ,OAAAlD,GAAA8hB,QAAA,SAAAygE,IACA,IAAApyF,EAAAe,QAAAqxF,IACApyF,EAAAmD,KAAAivF,KAIA/rF,KAAAs5J,YAOAE,WAAA,SAAAhwJ,GACA,IAAA7P,EAAAqG,KAAAq5J,SACA,GAAA3sJ,OAAAlD,GAAA8hB,QAAA,SAAAygE,GACA,IAAA1xF,EAAAV,EAAAe,QAAAqxF,IACA,IAAA1xF,GACAV,EAAAswC,OAAA5vC,EAAA,KAIA2F,KAAAs5J,YAOAnuJ,MAAA,WACAnL,KAAAq5J,SAAA,GACAr5J,KAAAs5J,YAQA1yJ,MAAA,WACA,OAAA5G,KAAAq5J,SAAAt8J,QAQAqnD,OAAA,WACA,OAAApkD,KAAAq5J,UAYA3uJ,OAAA,SAAAxG,EAAAokD,EAAA35C,GACA,IAEA9W,EAAA4tB,EAAAsmE,EAAArtD,EAAAjuB,EAFAgpJ,EAAAz5J,KAAAy5J,YAAAv1J,GACAsB,EAAAi0J,EAAA18J,OAGA,IAAAlF,EAAA,EAAaA,EAAA2N,IAAU3N,EAIvB,sBADA4Y,GADAs7E,GADAtmE,EAAAg0I,EAAA5hK,IACAk0F,QACAzjC,OAEA5pB,EAAA,CAAAx6B,GAAAwI,OAAAiC,GAAA,KACA7R,KAAA2oB,EAAAxgB,UACA,IAAAwL,EAAAnT,MAAAyuF,EAAArtD,IACA,SAKA,UAQA+6H,YAAA,SAAAv1J,GACA,IAAAwsC,EAAAxsC,EAAAw1J,WAAAx1J,EAAAw1J,SAAA,IACA,GAAAhpH,EAAAtuC,KAAApC,KAAAs5J,SACA,OAAA5oH,EAAA+oH,YAGA,IAAAjwJ,EAAA,GACAiwJ,EAAA,GACA1vJ,EAAA7F,KAAA6F,QAAA,GACA9E,EAAA8E,EAAA9E,SAAA8E,EAAA9E,QAAAuE,SAAA,GA2BA,OAzBAxJ,KAAAq5J,SAAA3sJ,OAAA3C,EAAAP,SAAA,IAAA8hB,QAAA,SAAAygE,GAEA,QADAviF,EAAA9O,QAAAqxF,GACA,CAIA,IAAA3pF,EAAA2pF,EAAA3pF,GACA8E,EAAAjC,EAAA7C,IACA,IAAA8E,KAIA,IAAAA,IACAA,EAAA/D,EAAAyU,MAAAna,EAAA6B,OAAAkK,QAAApH,KAGAoH,EAAA1M,KAAAivF,GACA0tE,EAAA38J,KAAA,CACAivF,SACA9mF,QAAAiC,GAAA,SAIAwpC,EAAA+oH,cACA/oH,EAAAtuC,GAAApC,KAAAs5J,SACAG,GASAxrJ,YAAA,SAAA/J,UACAA,EAAAw1J,iCCrKA,IAAA32J,EAAYtL,EAAQ,OAARA,GAEZsL,EAAAI,QAAgB1L,EAAQ,QAGxBA,EAAQ,OAARA,CAA6BsL,GAE7BA,EAAAoG,UAAkB1R,EAAQ,QAC1BsL,EAAA42J,iBAAyBliK,EAAQ,QACjCsL,EAAAtF,SAAiBhG,EAAQ,QACzBsL,EAAArF,QAAgBjG,EAAQ,QACxBsL,EAAA5D,SAAiB1H,EAAQ,QACzBsL,EAAAsG,YAAoB5R,EAAQ,QAC5BsL,EAAAuG,QAAgB7R,EAAQ,QACxBsL,EAAAwG,SAAiB9R,EAAQ,QACzBsL,EAAAyG,QAAgB/R,EAAQ,QACxBsL,EAAAuxB,MAAc78B,EAAQ,QACtBsL,EAAA0G,aAAqBhS,EAAQ,QAC7BsL,EAAAgW,MAActhB,EAAQ,QACtBsL,EAAA2G,QAAgBjS,EAAQ,QAExBA,EAAQ,OAARA,CAAgCsL,GAChCtL,EAAQ,OAARA,CAAuCsL,GAEvCtL,EAAQ,OAARA,CAAmCsL,GACnCtL,EAAQ,OAARA,CAAiCsL,GACjCtL,EAAQ,OAARA,CAA+BsL,GAC/BtL,EAAQ,OAARA,CAAoCsL,GACpCtL,EAAQ,OAARA,CAAqCsL,GACrCtL,EAAQ,OAARA,CAA6BsL,GAI7BtL,EAAQ,OAARA,CAAsCsL,GACtCtL,EAAQ,OAARA,CAAyCsL,GACzCtL,EAAQ,OAARA,CAA2CsL,GAC3CtL,EAAQ,OAARA,CAAuCsL,GACvCtL,EAAQ,OAARA,CAA4CsL,GAC5CtL,EAAQ,OAARA,CAAwCsL,GACxCtL,EAAQ,OAARA,CAA0CsL,GAE1CtL,EAAQ,OAARA,CAA4BsL,GAC5BtL,EAAQ,OAARA,CAA+BsL,GAC/BtL,EAAQ,OAARA,CAAiCsL,GACjCtL,EAAQ,OAARA,CAA6BsL,GAC7BtL,EAAQ,OAARA,CAAkCsL,GAClCtL,EAAQ,OAARA,CAA8BsL,GAC9BtL,EAAQ,OAARA,CAAgCsL,GAGhC,IAAAyG,EAAc/R,EAAQ,QACtB,QAAAu/J,KAAAxtJ,EACAA,EAAA9P,eAAAs9J,IACAj0J,EAAAyG,QAAA+vJ,SAAA/vJ,EAAAwtJ,IAIAj0J,EAAAwG,SAAAkB,aAEA7S,EAAAD,QAAAoL,EACA,oBAAA8V,SACAA,OAAA9V,SAYAA,EAAA68B,OAAAp2B,EAAAhF,OAAAq+B,SASA9/B,EAAA62J,MAAApwJ,EAAA9G,MAAAmgC,SASA9/B,EAAA82J,cAAA92J,EAAAyG,QAUAzG,EAAA+2J,WAAA/2J,EAAArF,QAAAiC,OAAA,IASAoD,EAAAg3J,cAAAh3J,EAAAI,QAAAgH,OASApH,EAAAi3J,cAAAj3J,EAAAuG,2CCxHA,IAAA7L,EAAehG,EAAQ,QACvBiG,EAAcjG,EAAQ,QACtB0L,EAAc1L,EAAQ,QAEtBgG,EAAAyB,KAAA,UACAC,SAAA,CACA+F,IAAA,CACA7F,gBAAA5B,EAAA6B,OAAAC,aACAC,YAAA,OACAE,YAAA,MAKA9H,EAAAD,QAAA+F,EAAAiC,OAAA,CACAgC,aAAA,SAAAH,GACA,IAAApD,EAAA4B,KAAAnC,MAEA,QAAAO,GACAG,KAAAwX,IAAAvU,EAAApD,EAAAE,EAAA,GAAAC,KAAAwX,IAAA3X,EAAAihB,OAAAjhB,EAAA4pE,YAAA,IAKAzmE,QAAA,SAAA04J,EAAAC,GACA,IAAA97J,EAAA4B,KAAAnC,MAEA,GAAAO,EAAA,CAQA,IAPA,IAAA+7J,EAAAh3J,EAAAi3J,kBAAAh8J,EAAA,CAA8DE,EAAA27J,EAAAx7J,EAAAy7J,IAC9Dj0J,EAAAk0J,EAAAl0J,MACA8B,EAAAoyJ,EAAApyJ,SAGAhE,EAAA3F,EAAA2F,WACAkE,EAAA7J,EAAA6J,SACAA,EAAAlE,GACAkE,GAAA,EAAA1J,KAAAyF,GAEA,KAAAiC,EAAAgC,GACAhC,GAAA,EAAA1H,KAAAyF,GAEA,KAAAiC,EAAAlC,GACAkC,GAAA,EAAA1H,KAAAyF,GAIA,IAAAq2J,EAAAp0J,GAAAlC,GAAAkC,GAAAgC,EACAqyJ,EAAAvyJ,GAAA3J,EAAAiJ,aAAAU,GAAA3J,EAAAgJ,YAEA,OAAAizJ,GAAAC,EAEA,UAGAx4J,eAAA,WACA,IAAA1D,EAAA4B,KAAAnC,MACA08J,GAAAn8J,EAAA2F,WAAA3F,EAAA6J,UAAA,EACAuyJ,GAAAp8J,EAAAiJ,YAAAjJ,EAAAgJ,aAAA,EACA,OACA9I,EAAAF,EAAAE,EAAAC,KAAAwf,IAAAw8I,GAAAC,EACA/7J,EAAAL,EAAAK,EAAAF,KAAAqf,IAAA28I,GAAAC,IAIAz4J,QAAA,WACA,IAAA3D,EAAA4B,KAAAnC,MACA,OAAAU,KAAAyF,KAAA5F,EAAA6J,SAAA7J,EAAA2F,aAAA,EAAAxF,KAAAyF,MAAAzF,KAAAwX,IAAA3X,EAAAgJ,YAAA,GAAA7I,KAAAwX,IAAA3X,EAAAiJ,YAAA,KAGArF,gBAAA,WACA,IAAA5D,EAAA4B,KAAAnC,MACA48J,EAAAr8J,EAAA2F,YAAA3F,EAAA6J,SAAA7J,EAAA2F,YAAA,EACA22J,GAAAt8J,EAAAgJ,YAAAhJ,EAAAiJ,aAAA,EAAAjJ,EAAAiJ,YAEA,OACA/I,EAAAF,EAAAE,EAAAC,KAAAwf,IAAA08I,GAAAC,EACAj8J,EAAAL,EAAAK,EAAAF,KAAAqf,IAAA68I,GAAAC,IAIA96J,KAAA,WACA,IAAAG,EAAAC,KAAAC,OAAAF,IACA3B,EAAA4B,KAAAnC,MACA88J,EAAAv8J,EAAA2F,WACA62J,EAAAx8J,EAAA6J,SAEAlI,EAAAW,YAEAX,EAAAmF,IAAA9G,EAAAE,EAAAF,EAAAK,EAAAL,EAAAgJ,YAAAuzJ,EAAAC,GACA76J,EAAAmF,IAAA9G,EAAAE,EAAAF,EAAAK,EAAAL,EAAAiJ,YAAAuzJ,EAAAD,GAAA,GAEA56J,EAAAuf,YACAvf,EAAAa,YAAAxC,EAAAoB,YACAO,EAAAc,UAAAzC,EAAAsB,YAEAK,EAAAY,UAAAvC,EAAAiB,gBAEAU,EAAAsB,OACAtB,EAAA0/B,SAAA,QAEArhC,EAAAsB,aACAK,EAAAuB,iDCrGA,IAAA7D,EAAehG,EAAQ,QACvB0H,EAAe1H,EAAQ,QACvB0L,EAAc1L,EAAQ,QAEtBgG,EAAAyB,KAAA,YACA0E,UAAA,CAEAC,eAAA,EAEAC,cAAA,GAEA7B,MAAA,CACAjJ,KAAA,UAEAiL,eAAA,SAAAC,GACA,IAAAC,EAAA,GACAA,EAAArH,KAAA,cAAAoH,EAAA9B,GAAA,aAEA,IAAAgC,EAAAF,EAAAE,KACAC,EAAAD,EAAAC,SACAC,EAAAF,EAAAE,OAEA,GAAAD,EAAAtH,OACA,QAAAlF,EAAA,EAAkBA,EAAAwM,EAAA,GAAAD,KAAArH,SAA6BlF,EAC/CsM,EAAArH,KAAA,qCAAAuH,EAAA,GAAAhF,gBAAAxH,GAAA,aACAyM,EAAAzM,IACAsM,EAAArH,KAAAwH,EAAAzM,IAEAsM,EAAArH,KAAA,SAKA,OADAqH,EAAArH,KAAA,SACAqH,EAAAI,KAAA,KAEAC,OAAA,CACAF,OAAA,CACAG,eAAA,SAAAP,GACA,IAAAE,EAAAF,EAAAE,KACA,OAAAA,EAAAE,OAAAvH,QAAAqH,EAAAC,SAAAtH,OACAqH,EAAAE,OAAAI,IAAA,SAAA/B,EAAA9K,GACA,IAAA8M,EAAAT,EAAAU,eAAA,GACAC,EAAAT,EAAAC,SAAA,GACAa,EAAAP,EAAAP,KAAAvM,GACAiN,EAAAI,KAAAJ,QAAA,GACAC,EAAA5B,EAAA4B,sBACAC,EAAAd,EAAAe,QAAA9F,SAAA+F,IAKA,OACAf,KAAAxB,EACAhC,UANAmE,EAAAzF,gBAAAyF,EAAAzF,gBAAA0F,EAAAF,EAAAxF,gBAAAxH,EAAAmN,EAAA3F,iBAOAuB,YANAkE,EAAAtF,YAAAsF,EAAAtF,YAAAuF,EAAAF,EAAArF,YAAA3H,EAAAmN,EAAAxF,aAOAqB,UANAiE,EAAApF,YAAAoF,EAAApF,YAAAqF,EAAAF,EAAAnF,YAAA7H,EAAAmN,EAAAtF,aAOAyF,OAAAC,MAAAP,EAAAT,KAAAvM,KAAA8M,EAAAP,KAAAvM,GAAAsN,OAGAlE,MAAApJ,KAIA,KAIAwN,QAAA,SAAAC,EAAAC,GACA,IAEA1N,EAAA2N,EAAAb,EAFA1D,EAAAsE,EAAAtE,MACAiD,EAAAlE,KAAAkE,MAGA,IAAArM,EAAA,EAAA2N,GAAAtB,EAAAE,KAAAC,UAAA,IAAAtH,OAAyDlF,EAAA2N,IAAU3N,GACnE8M,EAAAT,EAAAU,eAAA/M,IAEAuM,KAAAnD,KACA0D,EAAAP,KAAAnD,GAAAkE,QAAAR,EAAAP,KAAAnD,GAAAkE,QAIAjB,EAAAuB,WAKA6B,iBAAA,GAGAi+D,UAAA,GAAAhnE,KAAAyF,GAGA62J,cAAA,EAAAt8J,KAAAyF,GAGAxB,SAAA,CACAC,UAAA,CACAC,MAAA,WACA,UAEAC,MAAA,SAAAm4J,EAAA12J,GACA,IAAA22J,EAAA32J,EAAAE,OAAAw2J,EAAA75J,OACAnI,EAAA,KAAAsL,EAAAC,SAAAy2J,EAAAhyJ,cAAA1E,KAAA02J,EAAA75J,OAWA,OATAkC,EAAAwX,QAAAogJ,IAGAA,IAAA7iJ,SACA,IAAApf,EAEAiiK,GAAAjiK,EAGAiiK,OAMAt9J,EAAAyB,KAAA,MAAAiE,EAAAyU,MAAAna,EAAAu9J,WACAv9J,EAAAyB,KAAA,OACAoI,iBAAA,IAGA1P,EAAAD,QAAA,SAAAoL,GAEAA,EAAAC,YAAAg4J,SAAAj4J,EAAAC,YAAAi4J,IAAAl4J,EAAA4C,kBAAAhG,OAAA,CAEAiG,gBAAAzG,EAAA0G,IAEAC,WAAA3C,EAAA4C,KAGAm1J,aAAA,SAAApyJ,GAGA,IAFA,IAAAqyJ,EAAA,EAEA3+J,EAAA,EAAkBA,EAAAsM,IAAkBtM,EACpCwD,KAAAkE,MAAA8L,iBAAAxT,MACA2+J,EAIA,OAAAA,GAGA11J,OAAA,SAAAO,GACA,IAAAE,EAAAlG,KACAkE,EAAAgC,EAAAhC,MACA+C,EAAA/C,EAAA+C,UACAC,EAAAhD,EAAAe,QACAD,EAAAkC,EAAA/H,SAAA+F,IACAk2J,EAAAn0J,EAAAjI,MAAAiI,EAAAnI,KAAAkG,EAAAtF,YACA27J,EAAAp0J,EAAAhI,OAAAgI,EAAAlI,IAAAiG,EAAAtF,YACAyH,EAAA5I,KAAAC,IAAA48J,EAAAC,GACArtI,EAAA,CAAiB1vB,EAAA,EAAAG,EAAA,GACjBkG,EAAAuB,EAAAG,UACAiB,EAAAJ,EAAAI,iBACAuzJ,EAAA3zJ,EAAA2zJ,cAGA,GAAAA,EAAA,EAAAt8J,KAAAyF,GAAA,CACA,IAAAD,EAAAmD,EAAAq+D,UAAA,EAAAhnE,KAAAyF,IAEAiE,GADAlE,GAAA,EAAAxF,KAAAyF,IAAAD,GAAAxF,KAAAyF,IAAA,EAAAD,GAAAxF,KAAAyF,GAAA,MACA62J,EACAv0J,EAAA,CAAiBhI,EAAAC,KAAAwf,IAAAha,GAAAtF,EAAAF,KAAAqf,IAAA7Z,IACjByW,EAAA,CAAelc,EAAAC,KAAAwf,IAAA9V,GAAAxJ,EAAAF,KAAAqf,IAAA3V,IACfqzJ,EAAAv3J,GAAA,GAAAkE,GAAA,GAAAlE,GAAA,EAAAxF,KAAAyF,IAAA,EAAAzF,KAAAyF,IAAAiE,EACAszJ,EAAAx3J,GAAA,GAAAxF,KAAAyF,IAAA,GAAAzF,KAAAyF,IAAAiE,GAAAlE,GAAA,IAAAxF,KAAAyF,IAAA,IAAAzF,KAAAyF,IAAAiE,EACAuzJ,EAAAz3J,IAAAxF,KAAAyF,KAAAzF,KAAAyF,IAAAiE,GAAAlE,GAAAxF,KAAAyF,IAAAzF,KAAAyF,IAAAiE,EACAwzJ,EAAA13J,GAAA,IAAAxF,KAAAyF,IAAA,IAAAzF,KAAAyF,IAAAiE,GAAAlE,GAAA,IAAAxF,KAAAyF,IAAA,IAAAzF,KAAAyF,IAAAiE,EACAyzJ,EAAAp0J,EAAA,IACA9I,EAAA,CAAeF,EAAAk9J,GAAA,EAAAj9J,KAAAC,IAAA8H,EAAAhI,GAAAgI,EAAAhI,EAAA,IAAAo9J,GAAAlhJ,EAAAlc,GAAAkc,EAAAlc,EAAA,IAAAo9J,IAAAj9J,EAAAg9J,GAAA,EAAAl9J,KAAAC,IAAA8H,EAAA7H,GAAA6H,EAAA7H,EAAA,IAAAi9J,GAAAlhJ,EAAA/b,GAAA+b,EAAA/b,EAAA,IAAAi9J,KACf/8J,EAAA,CAAeL,EAAAg9J,EAAA,EAAA/8J,KAAAI,IAAA2H,EAAAhI,GAAAgI,EAAAhI,EAAA,IAAAo9J,GAAAlhJ,EAAAlc,GAAAkc,EAAAlc,EAAA,IAAAo9J,IAAAj9J,EAAA88J,EAAA,EAAAh9J,KAAAI,IAAA2H,EAAA7H,GAAA6H,EAAA7H,EAAA,IAAAi9J,GAAAlhJ,EAAA/b,GAAA+b,EAAA/b,EAAA,IAAAi9J,KACfvhJ,EAAA,CAAgBrc,MAAA,IAAAa,EAAAL,EAAAE,EAAAF,GAAAO,OAAA,IAAAF,EAAAF,EAAAD,EAAAC,IAChB0I,EAAA5I,KAAAC,IAAA48J,EAAAjhJ,EAAArc,MAAAu9J,EAAAlhJ,EAAAtb,QACAmvB,EAAA,CAAc1vB,GAAA,IAAAK,EAAAL,EAAAE,EAAAF,GAAAG,GAAA,IAAAE,EAAAF,EAAAD,EAAAC,IAGdyF,EAAAxE,YAAAwG,EAAAy1J,kBAAAh3J,EAAAP,MACAF,EAAAkD,YAAA7I,KAAAI,KAAAwI,EAAAjD,EAAAxE,aAAA,KACAwE,EAAAmD,YAAA9I,KAAAI,IAAA2I,EAAApD,EAAAkD,YAAA,WACAlD,EAAAqD,cAAArD,EAAAkD,YAAAlD,EAAAmD,aAAAnD,EAAAsD,yBACAtD,EAAAqmD,QAAAv8B,EAAA1vB,EAAA4F,EAAAkD,YACAlD,EAAAsmD,QAAAx8B,EAAAvvB,EAAAyF,EAAAkD,YAEAzC,EAAAygC,MAAAl/B,EAAA01J,iBAEA11J,EAAAkB,YAAAlD,EAAAkD,YAAAlD,EAAAqD,aAAArB,EAAAg1J,aAAAh1J,EAAAjF,OACAiF,EAAAmB,YAAA9I,KAAAI,IAAAuH,EAAAkB,YAAAlD,EAAAqD,aAAA,GAEApE,EAAA4D,KAAApC,EAAAP,KAAA,SAAAc,EAAAjE,GACAiF,EAAAc,cAAA9B,EAAAjE,EAAA+E,MAIAgB,cAAA,SAAA9B,EAAAjE,EAAA+E,GACA,IAAAE,EAAAlG,KACAkE,EAAAgC,EAAAhC,MACA+C,EAAA/C,EAAA+C,UACAC,EAAAhD,EAAAe,QACAwC,EAAAP,EAAAtD,UACA8D,GAAAT,EAAAnI,KAAAmI,EAAAjI,OAAA,EACA4I,GAAAX,EAAAlI,IAAAkI,EAAAhI,QAAA,EACA8E,EAAAmD,EAAAq+D,SACAt9D,EAAAf,EAAAq+D,SACAp/D,EAAAD,EAAAE,aACAy0J,EAAA70J,GAAAyB,EAAA5D,cAAA,EAAAqB,EAAAC,OAAA,EAAAe,EAAA21J,uBAAA11J,EAAA/B,KAAAnD,KAAAiG,EAAA2zJ,eAAA,EAAAt8J,KAAAyF,KACAqD,EAAArB,GAAAyB,EAAA3D,aAAA,EAAAoC,EAAAmB,YACAD,EAAApB,GAAAyB,EAAA3D,aAAA,EAAAoC,EAAAkB,YACArC,EAAA5B,EAAA4B,sBAEA5B,EAAAxD,OAAAuF,EAAA,CAEAiD,cAAAjC,EAAAjF,MACAmH,OAAAnH,EAGAqH,OAAA,CACAhK,EAAAoJ,EAAAxD,EAAAqmD,QACA9rD,EAAAmJ,EAAA1D,EAAAsmD,QACAzmD,aACAkE,WACA4yJ,gBACAzzJ,cACAC,cACA1E,MAAAoC,EAAAoB,EAAAxD,MAAA1B,EAAAiD,EAAAE,KAAAE,OAAArD,OAIA,IAAAwH,EAAAvD,EAAAoD,OAGAxD,EAAAI,EAAAJ,QAAA,GACA0D,EAAArF,EAAA4B,sBACAwD,EAAAvI,KAAAkE,MAAAe,QAAA9F,SAAA+F,IACAuD,EAAApJ,gBAAAyF,EAAAzF,gBAAAyF,EAAAzF,gBAAAmJ,EAAArC,EAAA9G,gBAAA4B,EAAAsH,EAAAlJ,iBACAoJ,EAAAjJ,YAAAsF,EAAAtF,YAAAsF,EAAAtF,YAAAgJ,EAAArC,EAAA3G,YAAAyB,EAAAsH,EAAA/I,aACAiJ,EAAA/I,YAAAoF,EAAApF,YAAAoF,EAAApF,YAAA8I,EAAArC,EAAAzG,YAAAuB,EAAAsH,EAAA7I,aAGAsG,GAAAyB,EAAA5D,gBAEA4E,EAAA1E,WADA,IAAA9C,EACAiG,EAAAq+D,SAEAr/D,EAAAG,UAAAjC,KAAAnD,EAAA,GAAAqH,OAAAL,SAGAQ,EAAAR,SAAAQ,EAAA1E,WAAA0E,EAAAoyJ,eAGA31J,EAAAwD,SAGAkzJ,eAAA,WACA,IAGA9iK,EAHAqN,EAAAnG,KAAAoG,aACAzB,EAAA3E,KAAAqG,UACA++B,EAAA,EAcA,OAXAjiC,EAAA4D,KAAApC,EAAAP,KAAA,SAAAuE,EAAA1H,GACAnI,EAAAqN,EAAA/B,KAAAnD,GACAmE,MAAAtM,IAAA6P,EAAAxD,SACAigC,GAAA7mC,KAAA6B,IAAAtH,MAQAssC,GAGAy2H,uBAAA,SAAA/iK,GACA,IAAAssC,EAAAplC,KAAAqG,UAAA++B,MACA,OAAAA,EAAA,IAAAhgC,MAAAtM,GACA,EAAAyF,KAAAyF,IAAAzF,KAAA6B,IAAAtH,GAAAssC,GAEA,GAIAu2H,kBAAA,SAAAG,GAOA,IANA,IAGAp8J,EACAq8J,EAJAp9J,EAAA,EACAsC,EAAAjB,KAAAiB,MACAlE,EAAA++J,EAAA/+J,OAIAlF,EAAA,EAAkBA,EAAAkF,EAAYlF,IAC9B6H,EAAAo8J,EAAAjkK,GAAAyQ,OAAAwzJ,EAAAjkK,GAAAyQ,OAAA5I,YAAA,EAIAf,GAHAo9J,EAAAD,EAAAjkK,GAAAoI,OAAA67J,EAAAjkK,GAAAoI,OAAA8J,OAAA3F,KAAAC,SAAApD,GAAA6mE,iBAAA,IAEAnpE,EAAAe,EAAAf,EAAAe,EAAAf,GACAo9J,EAAAp9J,EAEA,OAAAA,yCCvSA,IAAAwE,EAAc1L,EAAQ,QACtB68B,EAAY78B,EAAQ,QACpBgS,EAAmBhS,EAAQ,QAC3BshB,EAAYthB,EAAQ,QAsDpBG,EAAAD,QAAA,SAAAoL,GAEA,IAAAkW,EAAA,CACA5W,SAAA,OAGAqB,MAAA,CACAoL,SAAAiK,EAAAS,WAAAwiJ,cAIAC,EAAA3nI,EAAA30B,OAAA,CACAgc,oBAAA,WACA,IAAAzV,EAAAlG,KACAkH,EAAAhB,EAAAjB,QACAf,EAAAgC,EAAAhC,MAEAG,EADAH,EAAAE,KACAC,SACAowB,EAAAvuB,EAAAuuB,eACA,SAAAynI,EAAAv3J,GACA,OAAA8vB,EAAA9vB,EAAAiM,UAAA1K,EAAA9D,GAAAuC,EAAAkM,UAAA3K,EAAA9D,GAIA8D,EAAA1H,IAAA,KACA0H,EAAAvH,IAAA,KACAuH,EAAAi2J,WAAA,KAEA,IAAAC,EAAAl1J,EAAAm/D,QAeA,QAdAnsE,IAAAkiK,GACAj5J,EAAA4D,KAAA1C,EAAA,SAAA8B,EAAA2C,GACA,IAAAszJ,EAAA,CAIA,IAAAz3J,EAAAT,EAAAU,eAAAkE,GACA5E,EAAA8L,iBAAAlH,IAAAozJ,EAAAv3J,SACAzK,IAAAyK,EAAAi7C,QACAw8G,GAAA,MAKAl1J,EAAAm/D,SAAA+1F,EAAA,CACA,IAAAC,EAAA,GAEAl5J,EAAA4D,KAAA1C,EAAA,SAAA8B,EAAA2C,GACA,IAAAnE,EAAAT,EAAAU,eAAAkE,GACA1P,EAAA,CACAuL,EAAArJ,UAEApB,IAAAgN,EAAAm/D,cAAAnsE,IAAAyK,EAAAi7C,MAAA92C,EAAA,GACAnE,EAAAi7C,OACAr7C,KAAA,KAEAL,EAAA8L,iBAAAlH,IAAAozJ,EAAAv3J,UACAzK,IAAAmiK,EAAAjjK,KACAijK,EAAAjjK,GAAA,IAGA+J,EAAA4D,KAAAZ,EAAA/B,KAAA,SAAA2X,EAAA9a,GACA,IAAA6R,EAAAupJ,EAAAjjK,GACAN,GAAAoN,EAAA8V,cAAAD,GAEA3W,MAAAtM,IAAA6L,EAAAP,KAAAnD,GAAAkE,QAAArM,EAAA,IAGAga,EAAA7R,GAAA6R,EAAA7R,IAAA,EACA6R,EAAA7R,IAAAnI,QAKAqK,EAAA4D,KAAAs1J,EAAA,SAAAC,GACA,GAAAA,EAAAv/J,OAAA,GACA,IAAAw/J,EAAAp5J,EAAA3E,IAAA89J,GACAE,EAAAr5J,EAAAxE,IAAA29J,GACAp2J,EAAA1H,IAAA,OAAA0H,EAAA1H,IAAA+9J,EAAAh+J,KAAAC,IAAA0H,EAAA1H,IAAA+9J,GACAr2J,EAAAvH,IAAA,OAAAuH,EAAAvH,IAAA69J,EAAAj+J,KAAAI,IAAAuH,EAAAvH,IAAA69J,WAKAr5J,EAAA4D,KAAA1C,EAAA,SAAA8B,EAAA2C,GACA,IAAAnE,EAAAT,EAAAU,eAAAkE,GACA5E,EAAA8L,iBAAAlH,IAAAozJ,EAAAv3J,IACAxB,EAAA4D,KAAAZ,EAAA/B,KAAA,SAAA2X,EAAA9a,GACA,IAAAnI,GAAAoN,EAAA8V,cAAAD,GAEA3W,MAAAtM,IAAA6L,EAAAP,KAAAnD,GAAAkE,QAAArM,EAAA,IAIA,OAAAoN,EAAA1H,IACA0H,EAAA1H,IAAA1F,EACQA,EAAAoN,EAAA1H,MACR0H,EAAA1H,IAAA1F,GAGA,OAAAoN,EAAAvH,IACAuH,EAAAvH,IAAA7F,EACQA,EAAAoN,EAAAvH,MACRuH,EAAAvH,IAAA7F,GAGA,IAAAA,IAAA,OAAAoN,EAAAi2J,YAAArjK,EAAAoN,EAAAi2J,cACAj2J,EAAAi2J,WAAArjK,QAQAkH,KAAAic,0BAEAA,uBAAA,WACA,IAAA/V,EAAAlG,KAEAsb,EADApV,EAAAjB,QACAvB,MACA8E,EAAArF,EAAAqF,eAIAtC,EAAA1H,IAAAgK,EAAA8S,EAAA9c,IAAA0H,EAAA1H,KACA0H,EAAAvH,IAAA6J,EAAA8S,EAAA3c,IAAAuH,EAAAvH,KAEAuH,EAAA1H,MAAA0H,EAAAvH,MACA,IAAAuH,EAAA1H,KAAA,OAAA0H,EAAA1H,KACA0H,EAAA1H,IAAAD,KAAAwX,IAAA,GAAAxX,KAAAkN,MAAAtI,EAAAs5J,MAAAv2J,EAAA1H,MAAA,GACA0H,EAAAvH,IAAAJ,KAAAwX,IAAA,GAAAxX,KAAAkN,MAAAtI,EAAAs5J,MAAAv2J,EAAAvH,MAAA,KAEAuH,EAAA1H,IAXA,EAYA0H,EAAAvH,IAXA,KAcA,OAAAuH,EAAA1H,MACA0H,EAAA1H,IAAAD,KAAAwX,IAAA,GAAAxX,KAAAkN,MAAAtI,EAAAs5J,MAAAv2J,EAAAvH,MAAA,IAEA,OAAAuH,EAAAvH,MACAuH,EAAAvH,IAAA,IAAAuH,EAAA1H,IACAD,KAAAwX,IAAA,GAAAxX,KAAAkN,MAAAtI,EAAAs5J,MAAAv2J,EAAA1H,MAAA,GAnBA,IAsBA,OAAA0H,EAAAi2J,aACAj2J,EAAA1H,IAAA,EACA0H,EAAAi2J,WAAAj2J,EAAA1H,IACK0H,EAAAvH,IAAA,EACLuH,EAAAi2J,WAAA59J,KAAAwX,IAAA,GAAAxX,KAAAkN,MAAAtI,EAAAs5J,MAAAv2J,EAAAvH,OAEAuH,EAAAi2J,WA7BA,IAiCArnI,WAAA,WACA,IAAA5uB,EAAAlG,KAEAsb,EADApV,EAAAjB,QACAvB,MACAgb,GAAAxY,EAAAuuB,eAEAioI,EAAA,CACAl+J,IAAA8c,EAAA9c,IACAG,IAAA2c,EAAA3c,KAEA+E,EAAAwC,EAAAxC,MAlNA,SAAAg5J,EAAAC,GACA,IAWAC,EAAAC,EAXAn5J,EAAA,GACA8E,EAAArF,EAAAqF,eAMAs0J,EAAAt0J,EAAAk0J,EAAAl+J,IAAAD,KAAAwX,IAAA,GAAAxX,KAAAkN,MAAAtI,EAAAs5J,MAAAE,EAAAn+J,QAEAu+J,EAAAx+J,KAAAkN,MAAAtI,EAAAs5J,MAAAE,EAAAh+J,MACAq+J,EAAAz+J,KAAA6d,KAAAugJ,EAAAh+J,IAAAJ,KAAAwX,IAAA,GAAAgnJ,IAGA,IAAAD,GACAF,EAAAr+J,KAAAkN,MAAAtI,EAAAs5J,MAAAE,EAAAR,aACAU,EAAAt+J,KAAAkN,MAAAkxJ,EAAAR,WAAA59J,KAAAwX,IAAA,GAAA6mJ,IAEAl5J,EAAA5G,KAAAggK,GACAA,EAAAD,EAAAt+J,KAAAwX,IAAA,GAAA6mJ,KAEAA,EAAAr+J,KAAAkN,MAAAtI,EAAAs5J,MAAAK,IACAD,EAAAt+J,KAAAkN,MAAAqxJ,EAAAv+J,KAAAwX,IAAA,GAAA6mJ,KAEA,IAAA7oC,EAAA6oC,EAAA,EAAAr+J,KAAAwX,IAAA,GAAAxX,KAAA6B,IAAAw8J,IAAA,EAEA,GACAl5J,EAAA5G,KAAAggK,GAGA,MADAD,IAEAA,EAAA,EAEA9oC,IADA6oC,GACA,IAAA7oC,GAGA+oC,EAAAv+J,KAAAka,MAAAokJ,EAAAt+J,KAAAwX,IAAA,GAAA6mJ,GAAA7oC,WACE6oC,EAAAG,GAAAH,IAAAG,GAAAF,EAAAG,GAEF,IAAAC,EAAAz0J,EAAAk0J,EAAA/9J,IAAAm+J,GAGA,OAFAp5J,EAAA5G,KAAAmgK,GAEAv5J,EAwKAw5J,CAAAR,EAAAx2J,GAIAA,EAAAvH,IAAAwE,EAAAxE,IAAA+E,GACAwC,EAAA1H,IAAA2E,EAAA3E,IAAAkF,GAEA4X,EAAAoD,SACAA,KACAxY,EAAAI,MAAAJ,EAAAvH,IACAuH,EAAAsU,IAAAtU,EAAA1H,MAEA0H,EAAAI,MAAAJ,EAAA1H,IACA0H,EAAAsU,IAAAtU,EAAAvH,KAEA+f,GACAhb,EAAAgb,WAGArC,qBAAA,WACArc,KAAAm9J,WAAAn9J,KAAA0D,MAAAwU,QAEAoc,EAAA76B,UAAA4iB,qBAAArkB,KAAAgI,OAGAsc,iBAAA,SAAArb,EAAA6H,GACA,OAAA9I,KAAAgc,cAAAhc,KAAAkE,MAAAE,KAAAC,SAAAyE,GAAA1E,KAAAnD,KAEAq0B,gBAAA,SAAAr0B,GACA,OAAAjB,KAAA+0B,iBAAA/0B,KAAAm9J,WAAAl8J,KAQAm8J,mBAAA,SAAAtkK,GACA,IAAA8jK,EAAAr+J,KAAAkN,MAAAtI,EAAAs5J,MAAA3jK,IAGA,OAFAyF,KAAAkN,MAAA3S,EAAAyF,KAAAwX,IAAA,GAAA6mJ,IAEAr+J,KAAAwX,IAAA,GAAA6mJ,IAEA7nI,iBAAA,SAAAj8B,GACA,IAKAukK,EAAA7nI,EAAAlvB,EAAAkU,EAAA8iJ,EALAp3J,EAAAlG,KACA0e,EAAAxY,EAAAjB,QAAAvB,MAAAgb,QACA+9I,EAAAt5J,EAAAs5J,MACAc,EAAAr3J,EAAAk3J,mBAAAl3J,EAAAi2J,YACAnuI,EAAA,EAmCA,OAhCAl1B,GAAAoN,EAAA8V,cAAAljB,GACA4lB,GACApY,EAAAJ,EAAAsU,IACAA,EAAAtU,EAAAI,MACAg3J,GAAA,IAEAh3J,EAAAJ,EAAAI,MACAkU,EAAAtU,EAAAsU,IACA8iJ,EAAA,GAEAp3J,EAAAuuB,gBACA4oI,EAAAn3J,EAAApI,MACA03B,EAAA9W,EAAAxY,EAAAlH,MAAAkH,EAAApH,OAEAu+J,EAAAn3J,EAAArH,OACAy+J,IAAA,EACA9nI,EAAA9W,EAAAxY,EAAAnH,IAAAmH,EAAAjH,QAEAnG,IAAAwN,IACA,IAAAA,IAKA+2J,GAJArvI,EAAA7qB,EAAAw0J,kBACAzxJ,EAAAjB,QAAAvB,MAAAgW,SACA3W,EAAAtF,SAAA6B,OAAAwa,iBAGAxT,EAAAi3J,GAEA,IAAAzkK,IACAk1B,GAAAqvI,GAAAZ,EAAAjiJ,GAAAiiJ,EAAAn2J,KAAAm2J,EAAA3jK,GAAA2jK,EAAAn2J,KAEAkvB,GAAA8nI,EAAAtvI,GAEAwH,GAEAD,iBAAA,SAAAC,GACA,IAIA6nI,EAAA/2J,EAAAkU,EAAA1hB,EAJAoN,EAAAlG,KACA0e,EAAAxY,EAAAjB,QAAAvB,MAAAgb,QACA+9I,EAAAt5J,EAAAs5J,MACAc,EAAAr3J,EAAAk3J,mBAAAl3J,EAAAi2J,YAiBA,GAdAz9I,GACApY,EAAAJ,EAAAsU,IACAA,EAAAtU,EAAAI,QAEAA,EAAAJ,EAAAI,MACAkU,EAAAtU,EAAAsU,KAEAtU,EAAAuuB,gBACA4oI,EAAAn3J,EAAApI,MACAhF,EAAA4lB,EAAAxY,EAAAlH,MAAAw2B,IAAAtvB,EAAApH,OAEAu+J,EAAAn3J,EAAArH,OACA/F,EAAA4lB,EAAA8W,EAAAtvB,EAAAnH,IAAAmH,EAAAjH,OAAAu2B,GAEA18B,IAAAwN,EAAA,CACA,OAAAA,EAAA,CACA,IAAA0nB,EAAA7qB,EAAAw0J,kBACAzxJ,EAAAjB,QAAAvB,MAAAgW,SACA3W,EAAAtF,SAAA6B,OAAAwa,iBAEAhhB,GAAAk1B,EACAqvI,GAAArvI,EACA1nB,EAAAi3J,EAEAzkK,GAAA2jK,EAAAjiJ,GAAAiiJ,EAAAn2J,GACAxN,GAAAukK,EACAvkK,EAAAyF,KAAAwX,IAAA,GAAA0mJ,EAAAn2J,GAAAxN,GAEA,OAAAA,KAIA2Q,EAAAgX,kBAAA,cAAAw7I,EAAAhjJ,2BC3VA,SAAA3Z,EAAAy2B,IAAA,SAAAz2B,EAAApF,GACA,aAEA,IAAAoF,EAAAytE,aAAA,CAIA,IAIAywF,EA6HAh5I,EAZA20D,EArBAskF,EACAC,EAjGAC,EAAA,EACAC,EAAA,GACAC,GAAA,EACAj1H,EAAAtpC,EAAAshB,SAoJAk9I,EAAAvlK,OAAAyvC,gBAAAzvC,OAAAyvC,eAAA1oC,GACAw+J,OAAAv8I,WAAAu8I,EAAAx+J,EAGU,qBAAV,GAAU2Y,SAAAjgB,KAAAsH,EAAAy2B,SApFVynI,EAAA,SAAA72G,GACA5wB,EAAAkB,SAAA,WAA0C8mI,EAAAp3G,OAI1C,WAGA,GAAArnD,EAAAk6E,cAAAl6E,EAAA0+J,cAAA,CACA,IAAAC,GAAA,EACAC,EAAA5+J,EAAAi6E,UAMA,OALAj6E,EAAAi6E,UAAA,WACA0kF,GAAA,GAEA3+J,EAAAk6E,YAAA,QACAl6E,EAAAi6E,UAAA2kF,EACAD,GAwEKE,GAIA7+J,EAAA45E,iBA9CLC,EAAA,IAAAD,gBACAI,MAAAC,UAAA,SAAAjtD,GAEAyxI,EADAzxI,EAAAloB,OAIAo5J,EAAA,SAAA72G,GACAwyB,EAAAE,MAAAG,YAAA7yB,KA2CK/d,GAAA,uBAAAA,EAAAE,cAAA,WAtCLtkB,EAAAokB,EAAA3lB,gBACAu6I,EAAA,SAAA72G,GAGA,IAAA9d,EAAAD,EAAAE,cAAA,UACAD,EAAA83B,mBAAA,WACAo9F,EAAAp3G,GACA9d,EAAA83B,mBAAA,KACAn8C,EAAA2P,YAAA0U,GACAA,EAAA,MAEArkB,EAAAwkB,YAAAH,KAKA20H,EAAA,SAAA72G,GACAplC,WAAAw8I,EAAA,EAAAp3G,KAlDA82G,EAAA,gBAAAl/J,KAAAgsC,SAAA,IACAmzH,EAAA,SAAApxI,GACAA,EAAAxU,SAAAxY,GACA,iBAAAgtB,EAAAloB,MACA,IAAAkoB,EAAAloB,KAAA1J,QAAA+iK,IACAM,GAAAzxI,EAAAloB,KAAA8T,MAAAulJ,EAAA1gK,UAIAuC,EAAAoS,iBACApS,EAAAoS,iBAAA,UAAAgsJ,GAAA,GAEAp+J,EAAAwyC,YAAA,YAAA4rH,GAGAF,EAAA,SAAA72G,GACArnD,EAAAk6E,YAAAikF,EAAA92G,EAAA,OAgEAm3G,EAAA/wF,aA1KA,SAAAj+D,GAEA,mBAAAA,IACAA,EAAA,IAAAo/D,SAAA,GAAAp/D,IAIA,IADA,IAAAH,EAAA,IAAAgK,MAAA7K,UAAA/Q,OAAA,GACAlF,EAAA,EAAqBA,EAAA8W,EAAA5R,OAAiBlF,IACtC8W,EAAA9W,GAAAiW,UAAAjW,EAAA,GAGA,IAAAumK,EAAA,CAAkBtvJ,WAAAH,QAGlB,OAFAivJ,EAAAD,GAAAS,EACAZ,EAAAG,GACAA,KA6JAG,EAAArF,iBA1JA,SAAAA,EAAA9xG,UACAi3G,EAAAj3G,GAyBA,SAAAo3G,EAAAp3G,GAGA,GAAAk3G,EAGAt8I,WAAAw8I,EAAA,EAAAp3G,OACS,CACT,IAAAy3G,EAAAR,EAAAj3G,GACA,GAAAy3G,EAAA,CACAP,GAAA,EACA,KAjCA,SAAAO,GACA,IAAAtvJ,EAAAsvJ,EAAAtvJ,SACAH,EAAAyvJ,EAAAzvJ,KACA,OAAAA,EAAA5R,QACA,OACA+R,IACA,MACA,OACAA,EAAAH,EAAA,IACA,MACA,OACAG,EAAAH,EAAA,GAAAA,EAAA,IACA,MACA,OACAG,EAAAH,EAAA,GAAAA,EAAA,GAAAA,EAAA,IACA,MACA,QACAG,EAAAxR,MAAApD,EAAAyU,IAiBAioB,CAAAwnI,GACiB,QACjB3F,EAAA9xG,GACAk3G,GAAA,MAvEA,CAyLC,oBAAA5iH,UAAA,IAAA37C,EAAAU,KAAAV,EAAA27C,0ECvLD,IAAAx9C,EAAehG,EAAQ,QACvB0L,EAAc1L,EAAQ,QACtBgS,EAAmBhS,EAAQ,QAC3BshB,EAAYthB,EAAQ,QAEpBG,EAAAD,QAAA,SAAAoL,GAEA,IAAAkW,EAAA,CACA5W,SAAA,OACAqB,MAAA,CACAoL,SAAAiK,EAAAS,WAAAC,SAIA4kJ,EAAAt7J,EAAAqY,gBAAAzb,OAAA,CAEAgc,oBAAA,WACA,IAAAzV,EAAAlG,KACAkH,EAAAhB,EAAAjB,QACAf,EAAAgC,EAAAhC,MAEAG,EADAH,EAAAE,KACAC,SACAowB,EAAAvuB,EAAAuuB,eAIA,SAAAynI,EAAAv3J,GACA,OAAA8vB,EAAA9vB,EAAAiM,UAAA1K,EAAA9D,GAAAuC,EAAAkM,UAAA3K,EAAA9D,GAIA8D,EAAA1H,IAAA,KACA0H,EAAAvH,IAAA,KAEA,IAAAy9J,EAAAl1J,EAAAm/D,QAeA,QAdAnsE,IAAAkiK,GACAj5J,EAAA4D,KAAA1C,EAAA,SAAA8B,EAAA2C,GACA,IAAAszJ,EAAA,CAIA,IAAAz3J,EAAAT,EAAAU,eAAAkE,GACA5E,EAAA8L,iBAAAlH,IAAAozJ,EAAAv3J,SACAzK,IAAAyK,EAAAi7C,QACAw8G,GAAA,MAKAl1J,EAAAm/D,SAAA+1F,EAAA,CACA,IAAAC,EAAA,GAEAl5J,EAAA4D,KAAA1C,EAAA,SAAA8B,EAAA2C,GACA,IAAAnE,EAAAT,EAAAU,eAAAkE,GACA1P,EAAA,CACAuL,EAAArJ,UAEApB,IAAAgN,EAAAm/D,cAAAnsE,IAAAyK,EAAAi7C,MAAA92C,EAAA,GACAnE,EAAAi7C,OACAr7C,KAAA,UAEArK,IAAAmiK,EAAAjjK,KACAijK,EAAAjjK,GAAA,CACAklK,eAAA,GACAC,eAAA,KAKA,IAAAD,EAAAjC,EAAAjjK,GAAAklK,eACAC,EAAAlC,EAAAjjK,GAAAmlK,eAEAr6J,EAAA8L,iBAAAlH,IAAAozJ,EAAAv3J,IACAxB,EAAA4D,KAAAZ,EAAA/B,KAAA,SAAA2X,EAAA9a,GACA,IAAAnI,GAAAoN,EAAA8V,cAAAD,GACA3W,MAAAtM,IAAA6L,EAAAP,KAAAnD,GAAAkE,SAIAm5J,EAAAr9J,GAAAq9J,EAAAr9J,IAAA,EACAs9J,EAAAt9J,GAAAs9J,EAAAt9J,IAAA,EAEAiG,EAAAs3J,eACAF,EAAAr9J,GAAA,IACQnI,EAAA,EACRylK,EAAAt9J,IAAAnI,EAEAwlK,EAAAr9J,IAAAnI,OAMAqK,EAAA4D,KAAAs1J,EAAA,SAAAC,GACA,IAAAxpJ,EAAAwpJ,EAAAgC,eAAA5xJ,OAAA4vJ,EAAAiC,gBACAhC,EAAAp5J,EAAA3E,IAAAsU,GACA0pJ,EAAAr5J,EAAAxE,IAAAmU,GACA5M,EAAA1H,IAAA,OAAA0H,EAAA1H,IAAA+9J,EAAAh+J,KAAAC,IAAA0H,EAAA1H,IAAA+9J,GACAr2J,EAAAvH,IAAA,OAAAuH,EAAAvH,IAAA69J,EAAAj+J,KAAAI,IAAAuH,EAAAvH,IAAA69J,UAIAr5J,EAAA4D,KAAA1C,EAAA,SAAA8B,EAAA2C,GACA,IAAAnE,EAAAT,EAAAU,eAAAkE,GACA5E,EAAA8L,iBAAAlH,IAAAozJ,EAAAv3J,IACAxB,EAAA4D,KAAAZ,EAAA/B,KAAA,SAAA2X,EAAA9a,GACA,IAAAnI,GAAAoN,EAAA8V,cAAAD,GACA3W,MAAAtM,IAAA6L,EAAAP,KAAAnD,GAAAkE,SAIA,OAAAe,EAAA1H,IACA0H,EAAA1H,IAAA1F,EACQA,EAAAoN,EAAA1H,MACR0H,EAAA1H,IAAA1F,GAGA,OAAAoN,EAAAvH,IACAuH,EAAAvH,IAAA7F,EACQA,EAAAoN,EAAAvH,MACRuH,EAAAvH,IAAA7F,QAOAoN,EAAA1H,IAAAsuB,SAAA5mB,EAAA1H,OAAA4G,MAAAc,EAAA1H,KAAA0H,EAAA1H,IAxGA,EAyGA0H,EAAAvH,IAAAmuB,SAAA5mB,EAAAvH,OAAAyG,MAAAc,EAAAvH,KAAAuH,EAAAvH,IAxGA,EA2GAqB,KAAAic,0BAEAC,aAAA,WACA,IAAAuiJ,EAEAnjJ,EADAtb,KACAiF,QAAAvB,MAEA,GAHA1D,KAGAy0B,eACAgqI,EAAAlgK,KAAAC,IAAA8c,EAAAa,cAAAb,EAAAa,cAAA,GAAA5d,KAAA6d,KAJApc,KAIAlC,MAAA,SACI,CAEJ,IAAA2d,EAAAtY,EAAAqF,eAAA8S,EAAA5B,SAAAjc,EAAA6B,OAAAwa,iBACA2kJ,EAAAlgK,KAAAC,IAAA8c,EAAAa,cAAAb,EAAAa,cAAA,GAAA5d,KAAA6d,KARApc,KAQAnB,QAAA,EAAA4c,KAGA,OAAAgjJ,GAGAC,yBAAA,WACA1+J,KAAAy0B,gBAEAz0B,KAAA0D,MAAAgb,WAGApC,iBAAA,SAAArb,EAAA6H,GACA,OAAA9I,KAAAgc,cAAAhc,KAAAkE,MAAAE,KAAAC,SAAAyE,GAAA1E,KAAAnD,KAGA8zB,iBAAA,SAAAj8B,GAGA,IAAAoN,EAAAlG,KACAsG,EAAAJ,EAAAI,MAEAigE,GAAArgE,EAAA8V,cAAAljB,GAEAgrB,EAAA5d,EAAAsU,IAAAlU,EAOA,OALAJ,EAAAuuB,eACAvuB,EAAApH,KAAAoH,EAAApI,MAAAgmB,GAAAyiD,EAAAjgE,GAEAJ,EAAAjH,OAAAiH,EAAArH,OAAAilB,GAAAyiD,EAAAjgE,IAIAivB,iBAAA,SAAAC,GACA,IAAAtvB,EAAAlG,KACAy0B,EAAAvuB,EAAAuuB,eACA4oI,EAAA5oI,EAAAvuB,EAAApI,MAAAoI,EAAArH,OACAmvB,GAAAyG,EAAAe,EAAAtvB,EAAApH,KAAAoH,EAAAjH,OAAAu2B,GAAA6nI,EACA,OAAAn3J,EAAAI,OAAAJ,EAAAsU,IAAAtU,EAAAI,OAAA0nB,GAEAsH,gBAAA,SAAAr0B,GACA,OAAAjB,KAAA+0B,iBAAA/0B,KAAAof,eAAAne,OAIAwI,EAAAgX,kBAAA,SAAA49I,EAAAplJ,wBC9LArhB,EAAAD,QAAA,SAAAC,GAoBA,OAnBAA,EAAA+mK,kBACA/mK,EAAAgnK,UAAA,aACAhnK,EAAAoqH,MAAA,GAEApqH,EAAAkvB,WAAAlvB,EAAAkvB,SAAA,IACAvuB,OAAAC,eAAAZ,EAAA,UACAa,YAAA,EACAC,IAAA,WACA,OAAAd,EAAAE,KAGAS,OAAAC,eAAAZ,EAAA,MACAa,YAAA,EACAC,IAAA,WACA,OAAAd,EAAAC,KAGAD,EAAA+mK,gBAAA,GAEA/mK,sCClBA,IAAA6F,EAAehG,EAAQ,QACvB0H,EAAe1H,EAAQ,QACvB0L,EAAc1L,EAAQ,QAEtBgG,EAAAyB,KAAA,OACA+C,MAAA,CACAjJ,KAAA,SAGAkJ,OAAA,CACAC,MAAA,EACA7G,KAAA,WAGAujK,mBAAA,GACAC,cAAA,GAGA9wI,QAAA,EAGAzqB,UAAA,CACAw7J,iBAAA,KAIAz8J,MAAA,EACAhH,KAAA,cAKAmC,EAAAyB,KAAA,iBACA+C,MAAA,CACAjJ,KAAA,QACA4rB,KAAA,KAGA1iB,OAAA,CACAC,MAAA,EACA7G,KAAA,SACA+G,SAAA,WAGAC,MAAA,EACAD,SAAA,OACA/G,KAAA,WAGAujK,mBAAA,GACAC,cAAA,GAGA9wI,QAAA,EAGAzqB,UAAA,CACAw7J,iBAAA,MAKA5/J,SAAA,CACAC,UAAA,CACAK,cAAA,SAIA+C,SAAA,CACAC,UAAA,CACAC,MAAA,SAAAE,EAAAwB,GAEA,IAAA1B,EAAA,GAUA,OARAE,EAAA7F,OAAA,IACA6F,EAAA,GAAAE,OACAJ,EAAAE,EAAA,GAAAE,OACMsB,EAAAE,OAAAvH,OAAA,GAAA6F,EAAA,GAAA3B,MAAAmD,EAAAE,OAAAvH,SACN2F,EAAA0B,EAAAE,OAAA1B,EAAA,GAAA3B,SAIAyB,GAGAC,MAAA,SAAAC,EAAAwB,GAEA,OADAA,EAAAC,SAAAzB,EAAAkG,cAAAnG,OAAA,IACA,KAAAC,EAAAC,SAGA7J,KAAA,QACA4rB,KAAA,OA2FAhtB,EAAAD,QAAA,SAAAoL,GAEAA,EAAAC,YAAApF,IAAAmF,EAAA4C,kBAAAhG,OAAA,CAEAiG,gBAAAzG,EAAA6/J,UAEAv0J,WAAA,WACA,IACA9F,EAEA5B,EAAA4C,kBAAAlM,UAAAgR,WAAAnN,MAHA0C,KAGA8N,YAEAnJ,EALA3E,KAKAqG,WACAu5C,MANA5/C,KAMAoG,aAAAw5C,MACAj7C,EAAA/G,KAAA,GAGA6H,OAAA,SAAAO,GACA,IAEAnO,EAAA2N,EADAyjB,EADAjpB,KACAqG,UAAAjC,KAKA,IANApE,KAIAi/J,OAJAj/J,KAIAk/J,WAEArnK,EAAA,EAAA2N,EAAAyjB,EAAAlsB,OAAmClF,EAAA2N,IAAU3N,EAN7CmI,KAOAgH,cAAAiiB,EAAApxB,KAAAmO,IAIAgB,cAAA,SAAA5H,EAAA6B,EAAA+E,GACA,IAAAE,EAAAlG,KACAkE,EAAAgC,EAAAhC,MACAS,EAAAuB,EAAAG,UACAF,EAAAD,EAAAE,aACAtB,EAAA1F,EAAA0F,QAAA,GACAq6J,EAAAj7J,EAAAe,QAAA9F,SAAAC,UAEAA,EAAA4mE,QAAA9/D,EAAAs+D,cAAA7/D,EAAAiM,SACAxR,EAAA6mE,QAAA//D,EAAAs+D,cAAA7/D,EAAAkM,SACAzR,EAAA+I,cAAAjC,EAAAjF,MACA7B,EAAAgJ,OAAAnH,EAEA7B,EAAAkJ,OAAA,CACA82J,aAAAj5J,EAAAxD,MACAA,MAAAuB,EAAAE,KAAAE,OAAArD,GACAxB,cAAAqF,EAAArF,cAAAqF,EAAArF,cAAA0/J,EAAA1/J,cACAJ,gBAAAyF,EAAAzF,gBAAAyF,EAAAzF,gBAAA8D,EAAA4B,sBAAAoB,EAAA9G,gBAAA4B,EAAAk+J,EAAA9/J,iBACAG,YAAAsF,EAAAtF,YAAAsF,EAAAtF,YAAA2D,EAAA4B,sBAAAoB,EAAA3G,YAAAyB,EAAAk+J,EAAA3/J,aACAE,YAAAoF,EAAApF,YAAAoF,EAAApF,YAAAyD,EAAA4B,sBAAAoB,EAAAzG,YAAAuB,EAAAk+J,EAAAz/J,cAGAwG,EAAAm5J,sBAAAjgK,EAAA6B,EAAA+E,GAEA5G,EAAAsJ,SAMA22J,sBAAA,SAAAjgK,EAAA6B,EAAA+E,GACA,IAAAE,EAAAlG,KACAyI,EAAArJ,EAAAkJ,OACAg3J,EAAAp5J,EAAAq5J,gBACA7gK,EAAA4gK,EAAA1pI,eACA11B,EAAAo/J,EAAA7qI,eACA+qI,EAAAt5J,EAAA+4J,QAAA/4J,EAAAg5J,WACAO,EAAAv5J,EAAAw5J,wBAAAx5J,EAAAjF,SACA0+J,EAAAz5J,EAAA05J,wBAAA15J,EAAAjF,QAAAu+J,GAEA/2J,EAAAvI,aACAuI,EAAA/J,KAAAsH,EAAAtH,EAAA+gK,EAAA/gK,KACA+J,EAAAnK,EAAA4B,EAAA8F,EAAAtH,EAAA+gK,EAAA12H,KAAA42H,EAAAhvI,OACAloB,EAAAhK,EAAAyB,EAAAy/J,EAAAhvI,OAAA3qB,EAAAtH,EAAA+gK,EAAA12H,KACAtgC,EAAA5J,OAAAqB,EAAAy/J,EAAAxlJ,UAAAjgB,EACAuO,EAAA3K,MAAAoC,OAAAhG,EAAAylK,EAAAxlJ,MAMA0lJ,gBAAA,WACA,OAAA7/J,KAAAqG,UAAAwK,SAMAivJ,gBAAA,WACA,OAAA9/J,KAAAqG,UAAAuK,SAMA2uJ,cAAA,WACA,OAAAv/J,KAAAwkE,cAAAxkE,KAAA6/J,oBAMAE,cAAA,WACA,OAAA//J,KAAAwkE,cAAAxkE,KAAA8/J,oBASAE,WAAA,SAAAh2H,GACA,IAMAnyC,EAAA8M,EALAT,EADAlE,KACAkE,MAEAmiE,EAHArmE,KAEA+/J,gBACA96J,QAAAohE,QACA7gE,OAAAtL,IAAA8vC,EAAA9lC,EAAAE,KAAAC,SAAAtH,OAAAitC,EAAA,EACAi2H,EAAA,GAGA,IAAApoK,EAAA,EAAcA,EAAA2N,IAAU3N,GACxB8M,EAAAT,EAAAU,eAAA/M,IACA+F,KAAAsG,EAAA8L,iBAAAnY,MACA,IAAAwuE,IACA,IAAAA,IAAA,IAAA45F,EAAAvlK,QAAAiK,EAAAi7C,aACA1lD,IAAAmsE,SAAAnsE,IAAAyK,EAAAi7C,QAAA,IAAAqgH,EAAAvlK,QAAAiK,EAAAi7C,UACAqgH,EAAAnjK,KAAA6H,EAAAi7C,OAIA,OAAAqgH,GAOAC,cAAA,WACA,OAAAlgK,KAAAggK,aAAAjjK,QAUAojK,cAAA,SAAAr3J,EAAA1Q,GACA,IAAA6nK,EAAAjgK,KAAAggK,WAAAl3J,GACA7H,OAAA/G,IAAA9B,EACA6nK,EAAAvlK,QAAAtC,IACA,EAEA,WAAA6I,EACAg/J,EAAAljK,OAAA,EACAkE,GAMAi+J,SAAA,WACA,IAQArnK,EAAA2N,EAPApC,EADApD,KACA+/J,gBACAK,EAFApgK,KAEAkgK,gBACAp3J,EAHA9I,KAGAiB,MACAwzB,EAAArxB,EAAAqxB,eACAnuB,EAAAmuB,EAAArxB,EAAAtE,KAAAsE,EAAArE,IACAyb,EAAAlU,GAAAmuB,EAAArxB,EAAAtF,MAAAsF,EAAAvE,QACAwhK,EAAA,GAGA,IAAAxoK,EAAA,EAAA2N,EAVAxF,KAUAqG,UAAAjC,KAAArH,OAA+ClF,EAAA2N,IAAU3N,EACzDwoK,EAAAvjK,KAAAsG,EAAA2xB,iBAAA,KAAAl9B,EAAAiR,IAOA,OACAtK,IALA2E,EAAAuM,cAAAtM,EAAA6B,QAAAq7J,cApQA,SAAAl9J,EAAAi9J,GACA,IAEA7kH,EAAAyxF,EAAAp1I,EAAA2N,EAFAhH,EAAA4E,EAAAqxB,eAAArxB,EAAAtF,MAAAsF,EAAAvE,OACA6E,EAAAN,EAAAmrI,WAGA,IAAA12I,EAAA,EAAA2N,EAAA66J,EAAAtjK,OAAkClF,EAAA2N,IAAU3N,EAC5C2G,EAAAD,KAAAC,MAAA6hK,EAAAxoK,GAAAwoK,EAAAxoK,EAAA,IAGA,IAAAA,EAAA,EAAA2N,EAAA9B,EAAA3G,OAAiClF,EAAA2N,IAAU3N,EAC3Co1I,EAAA7pI,EAAAkyB,gBAAAz9B,GACA2G,EAAA3G,EAAA,EAAA0G,KAAAC,MAAAyuI,EAAAzxF,GAAAh9C,EACAg9C,EAAAyxF,EAGA,OAAAzuI,EAsPA+hK,CAAAn9J,EAAAi9J,IACA,EAIAA,SACA/5J,QACAkU,MACA4lJ,aACAh9J,UAQAs8J,wBAAA,SAAA52J,EAAA7H,GACA,IASApJ,EAAA2oK,EAAAC,EAAA/hK,EAAAqqC,EAAA5uB,EARAjW,EADAlE,KACAkE,MACAS,EAFA3E,KAEAqG,UACAjD,EAHApD,KAGAu/J,gBACAl7J,EAAAH,EAAAE,KAAAC,SACAvL,EAAAsK,EAAA4Y,cAAA3X,EAAAyE,GAAA1E,KAAAnD,IACAolE,EAAAjjE,EAAA6B,QAAAohE,QACAzmB,EAAAj7C,EAAAi7C,MACAt5C,EAAA,EAGA,GAAA+/D,QAAAnsE,IAAAmsE,QAAAnsE,IAAA0lD,EACA,IAAA/nD,EAAA,EAAeA,EAAAiR,IAAkBjR,GACjC2oK,EAAAt8J,EAAAU,eAAA/M,IAEA+F,KACA4iK,EAAA5gH,WACA4gH,EAAAj2J,WAAAs1J,oBAAAz8J,EAAAhB,IACA8B,EAAA8L,iBAAAnY,KAEA4oK,EAAAr9J,EAAA4Y,cAAA3X,EAAAxM,GAAAuM,KAAAnD,KACAnI,EAAA,GAAA2nK,EAAA,GAAA3nK,GAAA,GAAA2nK,EAAA,KACAn6J,GAAAm6J,IAUA,OAJA/hK,EAAA0E,EAAA2xB,iBAAAzuB,GAIA,CACA6T,KAHAA,IADA4uB,EAAA3lC,EAAA2xB,iBAAAzuB,EAAAxN,IACA4F,GAAA,EAIAA,OACAqqC,OACApY,OAAAoY,EAAA5uB,EAAA,IAOAylJ,wBAAA,SAAA92J,EAAA7H,EAAAu+J,GACA,IACAv6J,EAAAu6J,EAAAp8J,MAAA6B,QACA6e,EAAA,SAAA7e,EAAAq7J,aA/QA,SAAAr/J,EAAAu+J,EAAAv6J,GACA,IAKAqB,EALA+5J,EAAAb,EAAAa,OACApzB,EAAAozB,EAAAp/J,GACAu6C,EAAAv6C,EAAA,EAAAo/J,EAAAp/J,EAAA,QACA8kC,EAAA9kC,EAAAo/J,EAAAtjK,OAAA,EAAAsjK,EAAAp/J,EAAA,QACAyxD,EAAAztD,EAAA45J,mBAiBA,OAdA,OAAArjH,IAGAA,EAAAyxF,GAAA,OAAAlnG,EAAAy5H,EAAAhlJ,IAAAyyH,EAAAlnG,EAAAknG,IAGA,OAAAlnG,IAEAA,EAAAknG,IAAAzxF,GAGAl1C,EAAA2mI,KAAAzxF,GAAA,EAAAkX,EAGA,CACAirE,OAHA53F,EAAAyV,GAAA,EAAAkX,EAGA8sG,EAAAY,WACA1pJ,MAAAzR,EAAA65J,cACAx4J,SAuPAo6J,CAAAz/J,EAAAu+J,EAAAv6J,GA9SA,SAAAhE,EAAAu+J,EAAAv6J,GACA,IAGAkV,EAAAzD,EAHAiqJ,EAAA17J,EAAAq7J,aACA15J,EAAA44J,EAAAY,WACAnzB,EAAAuyB,EAAAa,OAAAp/J,GAcA,OAXAkC,EAAAuM,cAAAixJ,IACAxmJ,EAAAqlJ,EAAAhhK,IAAAyG,EAAA45J,mBACAnoJ,EAAAzR,EAAA65J,gBAKA3kJ,EAAAwmJ,EAAA/5J,EACA8P,EAAA,GAGA,CACAinH,MAAAxjH,EAAAvT,EACA8P,QACApQ,MAAA2mI,EAAA9yH,EAAA,GA2RAymJ,CAAA3/J,EAAAu+J,EAAAv6J,GAEA47J,EANA7gK,KAMAmgK,cAAAr3J,EANA9I,KAMAqG,UAAAu5C,OACAjvB,EAAA7M,EAAAxd,MAAAwd,EAAA65G,MAAAkjC,EAAA/8I,EAAA65G,MAAA,EACAxjH,EAAA5b,KAAAC,IACA2E,EAAAqF,eAAAvD,EAAA67J,gBAAA95C,KACAljG,EAAA65G,MAAA75G,EAAApN,OAEA,OACAhY,KAAAiyB,EAAAxW,EAAA,EACA4uB,KAAApY,EAAAxW,EAAA,EACAwW,SACAxW,SAIAva,KAAA,WACA,IACAsE,EADAlE,KACAkE,MACAd,EAFApD,KAEAu/J,gBACAt2I,EAHAjpB,KAGAqG,UAAAjC,KACA+B,EAJAnG,KAIAoG,aACAZ,EAAAyjB,EAAAlsB,OACAlF,EAAA,EAIA,IAFAsL,EAAAgH,OAAAk9D,SAAAnjE,EAAAnE,IAAAmE,EAAA+C,WAESpP,EAAA2N,IAAU3N,EACnBuN,MAAAhC,EAAA4Y,cAAA7V,EAAA/B,KAAAvM,MACAoxB,EAAApxB,GAAA+H,OAIAuD,EAAAgH,OAAAm9D,WAAApjE,EAAAnE,QAIAgD,EAAAC,YAAA+9J,cAAAh+J,EAAAC,YAAApF,IAAA+B,OAAA,CAIAkgK,gBAAA,WACA,OAAA7/J,KAAAqG,UAAAuK,SAMAkvJ,gBAAA,WACA,OAAA9/J,KAAAqG,UAAAwK,+CC3dA,IAAApT,EAAehG,EAAQ,QACvB0H,EAAe1H,EAAQ,QACvB0L,EAAc1L,EAAQ,QAEtBgG,EAAAyB,KAAA,SACAkE,MAAA,CACA9H,KAAA,gBAEA6D,SAAA,CACA+D,KAAA,CACAuhE,QAAA,MAKA7sE,EAAAD,QAAA,SAAAoL,GAEAA,EAAAC,YAAAg+J,MAAAj+J,EAAA4C,kBAAAhG,OAAA,CAEAykE,mBAAAjlE,EAAA2Z,KAEAlT,gBAAAzG,EAAAklE,MAEAv+D,WAAA3C,EAAA4C,KAEAN,OAAA,SAAAO,GACA,IAAAE,EAAAlG,KACA2E,EAAAuB,EAAAG,UACAnD,EAAAyB,EAAAwB,QACAm+D,EAAA3/D,EAAAP,KACAU,EAAA5B,EAAA4B,QAAA,GACAqB,EAAAD,EAAAE,aACAm+D,EAAAr+D,EAAAhC,MAAAe,QAAA9F,SAAA+D,KACAE,EAAA8C,EAAAhC,MAAAd,WAGAlJ,IAAAiM,EAAAs+D,cAAAvqE,IAAAiM,EAAAo1B,cACAp1B,EAAAo1B,YAAAp1B,EAAAs+D,SAGAthE,EAAAxD,OAAAgF,EAAAwB,QAAA,CAEAgC,cAAAjC,EAAAjF,MACAoH,OAAAjF,EAEAshE,UAAAJ,EACA80F,OAAA,EAEA9wJ,OAAA,CAEAm8D,QAAA3/D,EAAA2/D,QAAA3/D,EAAA2/D,QAAAthE,EAAAqF,eAAArC,EAAAo1B,YAAAgpC,EAAAE,SACAplE,gBAAAyF,EAAAzF,gBAAAyF,EAAAzF,gBAAA8G,EAAA9G,iBAAAklE,EAAAllE,gBACAK,YAAAoF,EAAApF,YAAAoF,EAAApF,YAAAyG,EAAAzG,aAAA6kE,EAAA7kE,YACAF,YAAAsF,EAAAtF,YAAAsF,EAAAtF,YAAA2G,EAAA3G,aAAA+kE,EAAA/kE,YACA6B,KAAAyD,EAAAzD,KAAAyD,EAAAzD,UAAAnH,IAAAiM,EAAA9E,KAAA8E,EAAA9E,KAAAkjE,EAAAljE,KACA+9B,eAAAt6B,EAAAs6B,eAAAt6B,EAAAs6B,eAAAj5B,EAAAi5B,gBAAAmlC,EAAAnlC,eACAE,WAAAx6B,EAAAw6B,WAAAx6B,EAAAw6B,WAAAn5B,EAAAm5B,YAAAilC,EAAAjlC,WACAE,iBAAA16B,EAAA06B,iBAAA16B,EAAA06B,iBAAAr5B,EAAAq5B,kBAAA+kC,EAAA/kC,iBACAE,gBAAA56B,EAAA46B,gBAAA56B,EAAA46B,gBAAAv5B,EAAAu5B,iBAAA6kC,EAAA7kC,mBAIA/6B,EAAAwB,QAAAuC,QAGAvF,EAAA4D,KAAAu9D,EAAA,SAAAU,EAAA/jE,GACAiF,EAAAc,cAAAg+D,EAAA/jE,EAAA+E,IACIE,GAGJA,EAAA4+D,6BAEA99D,cAAA,SAAAg+D,EAAA/jE,EAAA+E,GACA,IAAAE,EAAAlG,KACA8E,EAAAkgE,EAAAlgE,QAAA,GACAqB,EAAAD,EAAAE,aACAhD,EAAA8C,EAAAhC,MAAAd,MACA69J,EAAA/6J,EAAAhC,MAAAe,QAAA9F,SAAA6lE,MACAvoD,EAAArZ,EAAAyb,yBAAA5d,EAAAkF,EAAA/B,KAAAnD,SAGA/G,IAAAiM,EAAAkZ,aAAAnlB,IAAAiM,EAAAw/D,cACAx/D,EAAAw/D,YAAAx/D,EAAAkZ,aAEAnlB,IAAAiM,EAAAy/D,gBAAA1rE,IAAAiM,EAAA0/D,iBACA1/D,EAAA0/D,eAAA1/D,EAAAy/D,WAGAziE,EAAAxD,OAAAqlE,EAAA,CAEA78D,cAAAjC,EAAAjF,MACAmH,OAAAnH,EACAoH,OAAAjF,EAGAkF,OAAA,CACAhK,EAAA0H,EAAA5C,EAAAuE,QAAA8U,EAAAne,EACAG,EAAAuH,EAAA5C,EAAAyE,QAAA4U,EAAAhe,EAGAgmE,QAAA3/D,EAAA2/D,QAAA3/D,EAAA2/D,QAAAthE,EAAAqF,eAAArC,EAAAo1B,YAAAr1B,EAAAhC,MAAAe,QAAA9F,SAAA+D,KAAAuhE,SACAplD,OAAAva,EAAAua,OAAAva,EAAAua,OAAAlc,EAAA4B,sBAAAoB,EAAAw/D,YAAA1kE,EAAAggK,EAAA5hJ,QACAhgB,gBAAAyF,EAAAzF,gBAAAyF,EAAAzF,gBAAA8D,EAAA4B,sBAAAoB,EAAAq1B,qBAAAv6B,EAAAggK,EAAA5hK,iBACAG,YAAAsF,EAAAtF,YAAAsF,EAAAtF,YAAA2D,EAAA4B,sBAAAoB,EAAA++D,iBAAAjkE,EAAAggK,EAAAzhK,aACAE,YAAAoF,EAAApF,YAAAoF,EAAApF,YAAAyD,EAAA4B,sBAAAoB,EAAAi/D,iBAAAnkE,EAAAggK,EAAAvhK,aACAigC,WAAA76B,EAAA66B,WAAA76B,EAAA66B,WAAAx8B,EAAA4B,sBAAAoB,EAAAw5B,WAAA1+B,EAAAggK,EAAAthI,YACA4lC,SAAAzgE,EAAAygE,SAAAzgE,EAAAygE,SAAApiE,EAAA4B,sBAAAoB,EAAAm/D,cAAArkE,EAAAggK,EAAA17F,UAGAK,UAAA9gE,EAAA8gE,UAAA9gE,EAAA8gE,UAAAziE,EAAA4B,sBAAAoB,EAAA0/D,eAAA5kE,EAAAggK,EAAAr7F,cAIAZ,EAAA18D,OAAAivC,KAAAzyC,EAAAyyC,KAAAzyC,EAAAyyC,KAAAnyC,MAAA4/D,EAAA18D,OAAAhK,IAAA8G,MAAA4/D,EAAA18D,OAAA7J,IAEAqmE,0BAAA,WACA,IAAA79D,EAAAjH,KAAAkE,MAAA+C,UACAtC,EAAA3E,KAAAqG,UAEAlD,EAAA4D,KAAApC,EAAAP,KAAA,SAAA4gE,EAAA/jE,GACA,IAAAwH,EAAAu8D,EAAA18D,OACAk+D,EAAArjE,EAAAyjE,YACAzjE,EAAA0jE,aAAAliE,EAAAP,KAAAnD,GAAA,GAAAqH,OACAG,EACAtF,EAAA2jE,SAAAniE,EAAAP,KAAAnD,GAAA,GAAAqH,OACAG,EAAAg8D,SAIAh8D,EAAAs+D,sBAAAxoE,KAAAI,IAAAJ,KAAAC,IAAAgoE,EAAA1gC,SAAAxnC,EAAA2I,EAAAjI,OAAAiI,EAAAnI,MACA2J,EAAAu+D,sBAAAzoE,KAAAI,IAAAJ,KAAAC,IAAAgoE,EAAA1gC,SAAArnC,EAAAwI,EAAAhI,QAAAgI,EAAAlI,KAEA0J,EAAAw+D,kBAAA1oE,KAAAI,IAAAJ,KAAAC,IAAAgoE,EAAAzgC,KAAAznC,EAAA2I,EAAAjI,OAAAiI,EAAAnI,MACA2J,EAAAy+D,kBAAA3oE,KAAAI,IAAAJ,KAAAC,IAAAgoE,EAAAzgC,KAAAtnC,EAAAwI,EAAAhI,QAAAgI,EAAAlI,KAGAimE,EAAAt8D,WAIA6+D,cAAA,SAAAvC,GAEA,IAAA7+D,EAAAnG,KAAAkE,MAAAE,KAAAC,SAAA2gE,EAAA78D,eACArD,EAAAkgE,EAAAlgE,QAAA,GACA7D,EAAA+jE,EAAA58D,OACAK,EAAAu8D,EAAA18D,OAEA08D,EAAAwC,eAAA,CACAnoE,gBAAAoJ,EAAApJ,gBACAG,YAAAiJ,EAAAjJ,YACAE,YAAA+I,EAAA/I,YACA2f,OAAA5W,EAAA4W,QAGA5W,EAAA4W,OAAAva,EAAAkjE,YAAAljE,EAAAkjE,YAAA7kE,EAAA4B,sBAAAoB,EAAA8hE,iBAAAhnE,EAAAjB,KAAAkE,MAAAe,QAAA9F,SAAA6lE,MAAAgD,aACAv/D,EAAApJ,gBAAAyF,EAAA2iE,qBAAA3iE,EAAA2iE,qBAAAtkE,EAAA4B,sBAAAoB,EAAAuhE,0BAAAzmE,EAAAkC,EAAAwkE,cAAAl/D,EAAApJ,kBACAoJ,EAAAjJ,YAAAsF,EAAA8iE,iBAAA9iE,EAAA8iE,iBAAAzkE,EAAA4B,sBAAAoB,EAAA0hE,sBAAA5mE,EAAAkC,EAAAwkE,cAAAl/D,EAAAjJ,cACAiJ,EAAA/I,YAAAoF,EAAAgjE,iBAAAhjE,EAAAgjE,iBAAA3kE,EAAA4B,sBAAAoB,EAAA4hE,sBAAA9mE,EAAAwH,EAAA/I,0IC5IA,SAAAy6H,EAAAj0E,GACA,OAAA3tD,OAAAkB,UAAAwe,SAAAjgB,KAAAkuD,GAAAxrD,QAAA,YAGA,SAAAiF,EAAA6X,EAAAoF,GACA,QAAAxjB,KAAAwjB,EACApF,EAAApe,GAAAwjB,EAAAxjB,GAEA,OAAAoe,EAGA,IAAA0pJ,EAAA,CACA9oK,KAAA,aACA8zE,YAAA,EACA1mD,MAAA,CACAptB,KAAA,CACAkD,KAAAirC,OACAyxC,QAAA,YAGAvpE,OAAA,SAAAwqB,EAAAh9B,GACA,IAAAupB,EAAAvpB,EAAAupB,MACAsB,EAAA7qB,EAAA6qB,SACAC,EAAA9qB,EAAA8qB,OACA3iB,EAAAnI,EAAAmI,KAGAA,EAAA+8J,YAAA,EAaA,IATA,IAAApmJ,EAAAgM,EAAAuS,eACAlhC,EAAAotB,EAAAptB,KACAgpK,EAAAr6I,EAAA8c,OACA6M,EAAA3pB,EAAAs6I,mBAAAt6I,EAAAs6I,iBAAA,IAIA5iH,EAAA,EACA6iH,GAAA,EACAv6I,KAAAw6I,cAAAx6I,GACAA,EAAAqlD,QAAArlD,EAAAqlD,OAAAhoE,KAAA+8J,YACA1iH,IAEA13B,EAAA61D,YACA0kF,GAAA,GAEAv6I,IAAA0xD,QAKA,GAHAr0E,EAAAo9J,gBAAA/iH,EAGA6iH,EACA,OAAAvmJ,EAAA21B,EAAAt4C,GAAAgM,EAAA0iB,GAGA,IAAAqD,EAAAi3I,EAAAj3I,QAAAs0B,GAEA,IAAAt0B,EAEA,OADAumB,EAAAt4C,GAAA,KACA2iB,IAGA,IAAA6oB,EAAA8M,EAAAt4C,GAAA+xB,EAAAyP,WAAAxhC,GAIAgM,EAAAq9J,sBAAA,SAAArjK,EAAAzD,GAEA,IAAAqkE,EAAA70C,EAAAtgB,UAAAzR,IAEAuC,GAAAqkE,IAAA5gE,IACAzD,GAAAqkE,IAAA5gE,KAEA+rB,EAAAtgB,UAAAzR,GAAAuC,KAMKyJ,EAAAkkD,OAAAlkD,EAAAkkD,KAAA,KAA6B67B,SAAA,SAAAlrD,EAAAy6C,GAClCvpD,EAAAtgB,UAAAzR,GAAAs7E,EAAAb,mBAIA,IAAA6uF,EAAAt9J,EAAAohB,MAkBA,SAAA47I,EAAAr3J,GACA,cAAAA,GACA,gBACA,OACA,aACA,OAAAA,EACA,eACA,OAAAA,EAAAq3J,GACA,cACA,OAAAr3J,EAAAq3J,EAAA1iI,YAAAxkC,EACA,QACU,GA7BVynK,CAAAP,EAAAj3I,EAAA3E,OAAA2E,EAAA3E,MAAAptB,IACA,GAAAspK,EAAA,CAEAA,EAAAt9J,EAAAohB,MAAA7lB,EAAA,GAA0C+hK,GAE1C,IAAAhoI,EAAAt1B,EAAAs1B,MAAAt1B,EAAAs1B,OAAA,GACA,QAAAtgC,KAAAsoK,EACA99H,EAAApe,OAAApsB,KAAAwqC,EAAApe,QACAkU,EAAAtgC,GAAAsoK,EAAAtoK,UACAsoK,EAAAtoK,IAKA,OAAA2hB,EAAA6oB,EAAAx/B,EAAA0iB,KA2BA,IAAA86I,EAAA,WACAC,EAAA,SAAA3pK,GAA0C,UAAAA,EAAAkD,WAAA,GAAA6c,SAAA,KAC1C6pJ,EAAA,OAKAx6B,EAAA,SAAA14G,GAA6B,OAAAyL,mBAAAzL,GAC7B1lB,QAAA04J,EAAAC,GACA34J,QAAA44J,EAAA,MAEAC,EAAAC,mBAuBA,SAAAC,EAAAnhE,GACA,IAAAh2B,EAAA,GAIA,OAFAg2B,IAAAzyE,OAAAnlB,QAAA,kBAMA43F,EAAAn3E,MAAA,KAAA2B,QAAA,SAAArQ,GACA,IAAAu3C,EAAAv3C,EAAA/R,QAAA,WAAAygB,MAAA,KACAvwB,EAAA2oK,EAAAvvG,EAAApjC,SACAz0B,EAAA63D,EAAAz1D,OAAA,EACAglK,EAAAvvG,EAAAjuD,KAAA,MACA,UAEArK,IAAA4wE,EAAA1xE,GACA0xE,EAAA1xE,GAAAuB,EACKge,MAAAgC,QAAAmwD,EAAA1xE,IACL0xE,EAAA1xE,GAAA0D,KAAAnC,GAEAmwE,EAAA1xE,GAAA,CAAA0xE,EAAA1xE,GAAAuB,KAIAmwE,GAnBAA,EAsBA,SAAAo3F,EAAAjlK,GACA,IAAA6tE,EAAA7tE,EAAA1E,OAAAiU,KAAAvP,GAAAyH,IAAA,SAAAtL,GACA,IAAAuB,EAAAsC,EAAA7D,GAEA,QAAAc,IAAAS,EACA,SAGA,UAAAA,EACA,OAAA2sI,EAAAluI,GAGA,GAAAuf,MAAAgC,QAAAhgB,GAAA,CACA,IAAAkd,EAAA,GAWA,OAVAld,EAAA2wB,QAAA,SAAA62I,QACAjoK,IAAAioK,IAGA,OAAAA,EACAtqJ,EAAA/a,KAAAwqI,EAAAluI,IAEAye,EAAA/a,KAAAwqI,EAAAluI,GAAA,IAAAkuI,EAAA66B,OAGAtqJ,EAAAtT,KAAA,KAGA,OAAA+iI,EAAAluI,GAAA,IAAAkuI,EAAA3sI,KACG4uB,OAAA,SAAAjrB,GAAuB,OAAAA,EAAAvB,OAAA,IAAuBwH,KAAA,UACjD,OAAAumE,EAAA,IAAAA,EAAA,GAKA,IAAAs3F,EAAA,OAEA,SAAAC,EACAC,EACArsH,EACAssH,EACAC,GAEA,IAAAC,EAAAD,KAAAv9J,QAAAi9J,eAEAphE,EAAA7qD,EAAA6qD,OAAA,GACA,IACAA,EAAAlpF,EAAAkpF,GACG,MAAAx7F,IAEH,IAAA87J,EAAA,CACAhpK,KAAA69C,EAAA79C,MAAAkqK,KAAAlqK,KACAuM,KAAA29J,KAAA39J,MAAA,GACAg6E,KAAA1oC,EAAA0oC,MAAA,IACAz0D,KAAA+rB,EAAA/rB,MAAA,GACA42E,QACApiE,OAAAuX,EAAAvX,QAAA,GACAgkI,SAAAC,EAAA1sH,EAAAwsH,GACAt4I,QAAAm4I,EAAAM,EAAAN,GAAA,IAKA,OAHAC,IACAnB,EAAAmB,eAAAI,EAAAJ,EAAAE,IAEAlqK,OAAA00E,OAAAm0F,GAGA,SAAAxpJ,EAAA9e,GACA,GAAA6f,MAAAgC,QAAA7hB,GACA,OAAAA,EAAA4L,IAAAkT,GACG,GAAA9e,GAAA,iBAAAA,EAAA,CACH,IAAAgyE,EAAA,GACA,QAAA1xE,KAAAN,EACAgyE,EAAA1xE,GAAAwe,EAAA9e,EAAAM,IAEA,OAAA0xE,EAEA,OAAAhyE,EAKA,IAAA+pK,EAAAR,EAAA,MACA1jF,KAAA,MAGA,SAAAikF,EAAAN,GAEA,IADA,IAAAx3F,EAAA,GACAw3F,GACAx3F,EAAAxjC,QAAAg7H,GACAA,IAAAv7I,OAEA,OAAA+jD,EAGA,SAAA63F,EACA1mK,EACA6mK,GAEA,IAAAnkF,EAAA1iF,EAAA0iF,KACAmiB,EAAA7kG,EAAA6kG,WAAwB,IAAAA,MAAA,IACxB,IAAA52E,EAAAjuB,EAAAiuB,KAGA,YAHsB,IAAAA,MAAA,KAGtBy0D,GAAA,MADAmkF,GAAAZ,GACAphE,GAAA52E,EAGA,SAAA64I,EAAAvrJ,EAAAoF,GACA,OAAAA,IAAAimJ,EACArrJ,IAAAoF,IACGA,IAEApF,EAAAmnE,MAAA/hE,EAAA+hE,KAEHnnE,EAAAmnE,KAAAz1E,QAAAk5J,EAAA,MAAAxlJ,EAAA+hE,KAAAz1E,QAAAk5J,EAAA,KACA5qJ,EAAA0S,OAAAtN,EAAAsN,MACA84I,EAAAxrJ,EAAAspF,MAAAlkF,EAAAkkF,UAEGtpF,EAAApf,OAAAwkB,EAAAxkB,QAEHof,EAAApf,OAAAwkB,EAAAxkB,MACAof,EAAA0S,OAAAtN,EAAAsN,MACA84I,EAAAxrJ,EAAAspF,MAAAlkF,EAAAkkF,QACAkiE,EAAAxrJ,EAAAknB,OAAA9hB,EAAA8hB,UAOA,SAAAskI,EAAAxrJ,EAAAoF,GAKA,QAJA,IAAApF,MAAA,SACA,IAAAoF,MAAA,KAGApF,IAAAoF,EAAiB,OAAApF,IAAAoF,EACjB,IAAAqmJ,EAAA1qK,OAAAiU,KAAAgL,GACA0rJ,EAAA3qK,OAAAiU,KAAAoQ,GACA,OAAAqmJ,EAAAlmK,SAAAmmK,EAAAnmK,QAGAkmK,EAAAn0F,MAAA,SAAA11E,GACA,IAAA+pK,EAAA3rJ,EAAApe,GACAgqK,EAAAxmJ,EAAAxjB,GAEA,uBAAA+pK,GAAA,iBAAAC,EACAJ,EAAAG,EAAAC,GAEA78H,OAAA48H,KAAA58H,OAAA68H,KA0BA,IAyIAC,EAzIAC,EAAA,CAAA/8H,OAAAhuC,QACAgrK,EAAA,CAAAh9H,OAAA5tB,OAEA6qJ,EAAA,CACAprK,KAAA,aACAotB,MAAA,CACAiZ,GAAA,CACAnjC,KAAAgoK,EACAG,UAAA,GAEAlnI,IAAA,CACAjhC,KAAAirC,OACAyxC,QAAA,KAEAl0C,MAAAg0C,QACA5qB,OAAA4qB,QACA5uE,QAAA4uE,QACA6f,YAAApxD,OACAm9H,iBAAAn9H,OACAja,MAAA,CACAhxB,KAAAioK,EACAvrF,QAAA,UAGAvpE,OAAA,SAAAsM,GACA,IAAA4wE,EAAA3rF,KAEAwiK,EAAAxiK,KAAA2jK,QACA3kG,EAAAh/D,KAAA6jC,OACA5nC,EAAAumK,EAAAz5J,QAAA/I,KAAAy+B,GAAAugC,EAAAh/D,KAAAktD,QACAjX,EAAAh6C,EAAAg6C,SACAmrH,EAAAnlK,EAAAmlK,MACAziI,EAAA1iC,EAAA0iC,KAEA04B,EAAA,GACAusG,EAAApB,EAAAv9J,QAAA4+J,gBACAC,EAAAtB,EAAAv9J,QAAA8+J,qBAEAC,EAAA,MAAAJ,EACA,qBACAA,EACAK,EAAA,MAAAH,EACA,2BACAA,EACAnsE,EAAA,MAAA33F,KAAA23F,YACAqsE,EACAhkK,KAAA23F,YACA+rE,EAAA,MAAA1jK,KAAA0jK,iBACAO,EACAjkK,KAAA0jK,iBACAQ,EAAAjuH,EAAA0oC,KACA0jF,EAAA,KAAApsH,EAAA,KAAAusH,GACApB,EAEA/pG,EAAAqsG,GAAAX,EAAA/jG,EAAAklG,GACA7sG,EAAAsgC,GAAA33F,KAAA8jC,MACAuzB,EAAAqsG,GA9EA,SAAA1kG,EAAAjnD,GACA,OAGA,IAFAinD,EAAA2f,KAAAz1E,QAAAk5J,EAAA,KAAA1nK,QACAqd,EAAA4mE,KAAAz1E,QAAAk5J,EAAA,SAEArqJ,EAAAmS,MAAA80C,EAAA90C,OAAAnS,EAAAmS,OAKA,SAAA80C,EAAAjnD,GACA,QAAA3e,KAAA2e,EACA,KAAA3e,KAAA4lE,GACA,SAGA,SAVAmlG,CAAAnlG,EAAA8hC,MAAA/oF,EAAA+oF,OAyEAsjE,CAAAplG,EAAAklG,GAEA,IAAAnzH,EAAA,SAAAzrC,GACA++J,EAAA/+J,KACAqmF,EAAAziF,QACAs5J,EAAAt5J,QAAA+sC,GAEAusH,EAAA1lK,KAAAm5C,KAKA3e,EAAA,CAAcoG,MAAA2mI,GACd1rJ,MAAAgC,QAAA3a,KAAAssB,OACAtsB,KAAAssB,MAAAhB,QAAA,SAAAhmB,GAAuCgyB,EAAAhyB,GAAAyrC,IAEvCzZ,EAAAt3B,KAAAssB,OAAAykB,EAGA,IAAA3sC,EAAA,CACAuiC,MAAA0wB,GAGA,SAAAr3D,KAAAu8B,IACAn4B,EAAAkzB,KACAlzB,EAAAs1B,MAAA,CAAoBiF,YACf,CAEL,IAAAnnB,EAqCA,SAAA8sJ,EAAAx9I,GACA,GAAAA,EAEA,IADA,IAAAwsD,EACAz7E,EAAA,EAAmBA,EAAAivB,EAAA/pB,OAAqBlF,IAAA,CAExC,UADAy7E,EAAAxsD,EAAAjvB,IACA0kC,IACA,OAAA+2C,EAEA,GAAAA,EAAAxsD,WAAAwsD,EAAAgxF,EAAAhxF,EAAAxsD,WACA,OAAAwsD,GA9CAgxF,CAAAtkK,KAAAmhF,OAAAnJ,SACA,GAAAxgE,EAEAA,EAAAs7D,UAAA,GACAt7D,EAAApT,KAAAzE,EAAA,GAAsC6X,EAAApT,OACtCkzB,MACA9f,EAAApT,KAAAs1B,MAAA/5B,EAAA,GAA6C6X,EAAApT,KAAAs1B,QAC7CiF,YAGAv6B,EAAAkzB,KAIA,OAAAvc,EAAA/a,KAAAu8B,IAAAn4B,EAAApE,KAAAmhF,OAAAnJ,WAIA,SAAAqsF,EAAA/+J,GAEA,KAAAA,EAAAukD,SAAAvkD,EAAAgkD,QAAAhkD,EAAAokD,SAAApkD,EAAA0kD,UAEA1kD,EAAA0jD,uBAEA9uD,IAAAoL,EAAAoxC,QAAA,IAAApxC,EAAAoxC,QAAA,CAEA,GAAApxC,EAAAuiD,eAAAviD,EAAAuiD,cAAAxX,aAAA,CACA,IAAAt4B,EAAAzS,EAAAuiD,cAAAxX,aAAA,UACA,iBAAA7yC,KAAAua,GAAqC,OAMrC,OAHAzS,EAAA0iD,gBACA1iD,EAAA0iD,kBAEA,GAsEA,IAAAyoB,EAAA,oBAAA53D,OAIA,SAAA0rJ,EACArwH,EACAx1C,EACAwuD,GAEA,IAAAs3G,EAAAtwH,EAAA34C,OAAA,GACA,SAAAipK,EACA,OAAAtwH,EAGA,SAAAswH,GAAA,MAAAA,EACA,OAAA9lK,EAAAw1C,EAGA,IAAA0L,EAAAlhD,EAAAirB,MAAA,KAKAujC,GAAAtN,IAAA7iD,OAAA,IACA6iD,EAAA3S,MAKA,IADA,IAAA2xC,EAAA1qC,EAAAhrC,QAAA,UAAAygB,MAAA,KACA9xB,EAAA,EAAiBA,EAAA+mF,EAAA7hF,OAAqBlF,IAAA,CACtC,IAAA4sK,EAAA7lF,EAAA/mF,GACA,OAAA4sK,EACA7kH,EAAA3S,MACK,MAAAw3H,GACL7kH,EAAA9iD,KAAA2nK,GASA,MAJA,KAAA7kH,EAAA,IACAA,EAAAtY,QAAA,IAGAsY,EAAAr7C,KAAA,KA0BA,SAAAmgK,EAAA/lF,GACA,OAAAA,EAAAz1E,QAAA,aAGA,IAAAy7J,EAAAhsJ,MAAAgC,SAAA,SAAAmQ,GACA,wBAAAvyB,OAAAkB,UAAAwe,SAAAjgB,KAAA8yB,IAMA85I,EAAAC,EACAC,EAAAnjH,EACAojH,EAsGA,SAAAn2I,EAAA3pB,GACA,OAAA+/J,EAAArjH,EAAA/yB,EAAA3pB,KAtGAggK,EAAAD,EACAE,EAAAC,EAOAC,EAAA,IAAA33H,OAAA,CAGA,UAOA,0GACAlpC,KAAA,UASA,SAAAo9C,EAAA/yB,EAAA3pB,GAQA,IAPA,IAKA6lE,EALAzzB,EAAA,GACAj+C,EAAA,EACA6H,EAAA,EACA09E,EAAA,GACA0mF,EAAApgK,KAAAqgK,WAAA,IAGA,OAAAx6F,EAAAs6F,EAAAp1H,KAAAphB,KAAA,CACA,IAAA32B,EAAA6yE,EAAA,GACA/7B,EAAA+7B,EAAA,GACA98C,EAAA88C,EAAA7pE,MAKA,GAJA09E,GAAA/vD,EAAA1W,MAAAjX,EAAA+sB,GACA/sB,EAAA+sB,EAAA/1B,EAAA8E,OAGAgyC,EACA4vC,GAAA5vC,EAAA,OADA,CAKA,IAAAhJ,EAAAnX,EAAA3tB,GACA6qB,EAAAg/C,EAAA,GACA1yE,EAAA0yE,EAAA,GACAsP,EAAAtP,EAAA,GACAssD,EAAAtsD,EAAA,GACApjD,EAAAojD,EAAA,GACAy6F,EAAAz6F,EAAA,GAGA6T,IACAtnC,EAAAv6C,KAAA6hF,GACAA,EAAA,IAGA,IAAAo7C,EAAA,MAAAjuG,GAAA,MAAAia,OAAAja,EACAm4G,EAAA,MAAAv8G,GAAA,MAAAA,EACA89I,EAAA,MAAA99I,GAAA,MAAAA,EACA49I,EAAAx6F,EAAA,IAAAu6F,EACA1wH,EAAAylC,GAAAg9C,EAEA//E,EAAAv6C,KAAA,CACA1E,QAAAgB,IACA0yB,UAAA,GACAw5I,YACAE,WACAvhC,SACAlK,UACAwrC,aACA5wH,UAAA8wH,EAAA9wH,GAAA4wH,EAAA,UAAAG,EAAAJ,GAAA,SAcA,OATArkK,EAAA2tB,EAAA7xB,SACA4hF,GAAA/vD,EAAA5yB,OAAAiF,IAIA09E,GACAtnC,EAAAv6C,KAAA6hF,GAGAtnC,EAoBA,SAAAsuH,EAAA/2I,GACA,OAAAg3I,UAAAh3I,GAAA1lB,QAAA,mBAAAhR,GACA,UAAAA,EAAAkD,WAAA,GAAA6c,SAAA,IAAA4T,gBAmBA,SAAAm5I,EAAA3tH,GAKA,IAHA,IAAAnU,EAAA,IAAAvqB,MAAA0+B,EAAAt6C,QAGAlF,EAAA,EAAiBA,EAAAw/C,EAAAt6C,OAAmBlF,IACpC,iBAAAw/C,EAAAx/C,KACAqrC,EAAArrC,GAAA,IAAA41C,OAAA,OAAA4J,EAAAx/C,GAAA88C,QAAA,OAIA,gBAAA13C,EAAAiK,GAMA,IALA,IAAAy3E,EAAA,GACAv6E,EAAAnH,GAAA,GAEAqqI,GADApgI,GAAA,IACA2+J,OAAAF,EAAAtrI,mBAEAxiC,EAAA,EAAmBA,EAAAw/C,EAAAt6C,OAAmBlF,IAAA,CACtC,IAAAsiD,EAAA9C,EAAAx/C,GAEA,oBAAAsiD,EAAA,CAMA,IACAsqH,EADA3rK,EAAAsL,EAAA+1C,EAAA/hD,MAGA,SAAAU,EAAA,CACA,GAAAqhD,EAAAqrH,SAAA,CAEArrH,EAAA4/E,UACAp7C,GAAAxkC,EAAAruB,QAGA,SAEA,UAAAzG,UAAA,aAAA80B,EAAA/hD,KAAA,mBAIA,GAAAusK,EAAA7rK,GAAA,CACA,IAAAqhD,EAAA8pF,OACA,UAAA5+G,UAAA,aAAA80B,EAAA/hD,KAAA,kCAAAspD,KAAAynB,UAAArwE,GAAA,KAGA,OAAAA,EAAAiE,OAAA,CACA,GAAAo9C,EAAAqrH,SACA,SAEA,UAAAngJ,UAAA,aAAA80B,EAAA/hD,KAAA,qBAIA,QAAAoE,EAAA,EAAuBA,EAAA1D,EAAAiE,OAAkBP,IAAA,CAGzC,GAFAioK,EAAAn9B,EAAAxuI,EAAA0D,KAEA0mC,EAAArrC,GAAA2F,KAAAinK,GACA,UAAAp/I,UAAA,iBAAA80B,EAAA/hD,KAAA,eAAA+hD,EAAAxF,QAAA,oBAAA+M,KAAAynB,UAAAs7F,GAAA,KAGA9lF,IAAA,IAAAniF,EAAA29C,EAAAruB,OAAAquB,EAAAmrH,WAAAb,OApBA,CA4BA,GAFAA,EAAAtqH,EAAAorH,SA5EAK,UA4EA9sK,GA5EAoQ,QAAA,iBAAAhR,GACA,UAAAA,EAAAkD,WAAA,GAAA6c,SAAA,IAAA4T,gBA2EAy7G,EAAAxuI,IAEAoqC,EAAArrC,GAAA2F,KAAAinK,GACA,UAAAp/I,UAAA,aAAA80B,EAAA/hD,KAAA,eAAA+hD,EAAAxF,QAAA,oBAAA8vH,EAAA,KAGA9lF,GAAAxkC,EAAAruB,OAAA24I,QArDA9lF,GAAAxkC,EAwDA,OAAAwkC,GAUA,SAAA+mF,EAAA92I,GACA,OAAAA,EAAA1lB,QAAA,6BAAmC,QASnC,SAAAu8J,EAAAruC,GACA,OAAAA,EAAAluH,QAAA,wBAUA,SAAA48J,EAAAC,EAAAv5J,GAEA,OADAu5J,EAAAv5J,OACAu5J,EASA,SAAAC,EAAA/gK,GACA,OAAAA,EAAAghK,UAAA,OAwEA,SAAAd,EAAA9tH,EAAA7qC,EAAAvH,GACA0/J,EAAAn4J,KACAvH,EAAiCuH,GAAAvH,EACjCuH,EAAA,IAUA,IALA,IAAA05J,GAFAjhK,KAAA,IAEAihK,OACA1rJ,GAAA,IAAAvV,EAAAuV,IACA4mJ,EAAA,GAGAvpK,EAAA,EAAiBA,EAAAw/C,EAAAt6C,OAAmBlF,IAAA,CACpC,IAAAsiD,EAAA9C,EAAAx/C,GAEA,oBAAAsiD,EACAinH,GAAAsE,EAAAvrH,OACK,CACL,IAAAruB,EAAA45I,EAAAvrH,EAAAruB,QACAsuD,EAAA,MAAAjgC,EAAAxF,QAAA,IAEAnoC,EAAA1P,KAAAq9C,GAEAA,EAAA8pF,SACA7pD,GAAA,MAAAtuD,EAAAsuD,EAAA,MAaAgnF,GANAhnF,EAJAjgC,EAAAqrH,SACArrH,EAAA4/E,QAGAjuG,EAAA,IAAAsuD,EAAA,KAFA,MAAAtuD,EAAA,IAAAsuD,EAAA,MAKAtuD,EAAA,IAAAsuD,EAAA,KAOA,IAAAkrF,EAAAI,EAAAzgK,EAAAqgK,WAAA,KACAa,EAAA/E,EAAAlpJ,OAAAotJ,EAAAvoK,UAAAuoK,EAkBA,OAZAY,IACA9E,GAAA+E,EAAA/E,EAAAlpJ,MAAA,GAAAotJ,EAAAvoK,QAAAqkK,GAAA,MAAAkE,EAAA,WAIAlE,GADA5mJ,EACA,IAIA0rJ,GAAAC,EAAA,SAAAb,EAAA,MAGAQ,EAAA,IAAAr4H,OAAA,IAAA2zH,EAAA4E,EAAA/gK,IAAAuH,GAeA,SAAAq4J,EAAAlmF,EAAAnyE,EAAAvH,GAQA,OAPA0/J,EAAAn4J,KACAvH,EAAiCuH,GAAAvH,EACjCuH,EAAA,IAGAvH,KAAA,GAEA05E,aAAAlxC,OAlJA,SAAAkxC,EAAAnyE,GAEA,IAAAqjC,EAAA8uC,EAAA7mE,OAAAuT,MAAA,aAEA,GAAAwkB,EACA,QAAAh4C,EAAA,EAAmBA,EAAAg4C,EAAA9yC,OAAmBlF,IACtC2U,EAAA1P,KAAA,CACA1E,KAAAP,EACAi0B,OAAA,KACAw5I,UAAA,KACAE,UAAA,EACAvhC,QAAA,EACAlK,SAAA,EACAwrC,UAAA,EACA5wH,QAAA,OAKA,OAAAmxH,EAAAnnF,EAAAnyE,GAgIA45J,CAAAznF,EAAkD,GAGlDgmF,EAAAhmF,GAxHA,SAAAA,EAAAnyE,EAAAvH,GAGA,IAFA,IAAAutD,EAAA,GAEA36D,EAAA,EAAiBA,EAAA8mF,EAAA5hF,OAAiBlF,IAClC26D,EAAA11D,KAAA+nK,EAAAlmF,EAAA9mF,GAAA2U,EAAAvH,GAAA6S,QAKA,OAAAguJ,EAFA,IAAAr4H,OAAA,MAAA+kB,EAAAjuD,KAAA,SAAAyhK,EAAA/gK,IAEAuH,GAgHA65J,CAA2C,EAA8B,EAAAphK,GArGzE,SAAA05E,EAAAnyE,EAAAvH,GACA,OAAAkgK,EAAAxjH,EAAAg9B,EAAA15E,GAAAuH,EAAAvH,GAuGAqhK,CAA0C,EAA8B,EAAArhK,GAExE2/J,EAAAjjH,MAAAmjH,EACAF,EAAA94H,QAAAi5H,EACAH,EAAAI,iBAAAC,EACAL,EAAAO,eAAAD,EAKA,IAAAqB,EAAAhuK,OAAAY,OAAA,MAEA,SAAAqtK,GACA7nF,EACAjgD,EACA+nI,GAEA,IAIA,OAFAF,EAAA5nF,KACA4nF,EAAA5nF,GAAAimF,EAAA94H,QAAA6yC,KACAjgD,GAAA,GAA8B,CAAGmnI,QAAA,IAC9B,MAAAvgK,GAIH,UAMA,SAAAohK,GACAC,EACAC,EACAC,EACAC,GAGA,IAAAC,EAAAH,GAAA,GAEAI,EAAAH,GAAAtuK,OAAAY,OAAA,MAEA8tK,EAAAH,GAAAvuK,OAAAY,OAAA,MAEAwtK,EAAAr7I,QAAA,SAAA81I,IAoBA,SAAA8F,EACAH,EACAC,EACAC,EACA7F,EACAr6I,EACAogJ,GAEA,IAAAxoF,EAAAyiF,EAAAziF,KACA,IAAAvmF,EAAAgpK,EAAAhpK,KACM,EASN,IAAAgvK,EAAAhG,EAAAgG,qBAAA,GACA,IAAAC,EAuGA,SAAA1oF,EAAA53D,EAAAm/I,GACAA,IAAgBvnF,IAAAz1E,QAAA,WAChB,SAAAy1E,EAAA,GAAwB,OAAAA,EACxB,SAAA53D,EAAuB,OAAA43D,EACvB,OAAA+lF,EAAA39I,EAAA,SAAA43D,GA3GA2oF,CACA3oF,EACA53D,EACAqgJ,EAAAlB,QAGA,kBAAA9E,EAAAmG,gBACAH,EAAAnB,UAAA7E,EAAAmG,eAGA,IAAAjF,EAAA,CACA3jF,KAAA0oF,EACAG,MAAAC,GAAAJ,EAAAD,GACAxtI,WAAAwnI,EAAAxnI,YAAA,CAAqCo+C,QAAAopF,EAAAx9H,WACrC/5B,UAAA,GACAzR,OACA2uB,SACAogJ,UACAO,SAAAtG,EAAAsG,SACAzwE,YAAAmqE,EAAAnqE,YACAtyF,KAAAy8J,EAAAz8J,MAAA,GACA6gB,MAAA,MAAA47I,EAAA57I,MACA,GACA47I,EAAAxnI,WACAwnI,EAAA57I,MACA,CAAWwyD,QAAAopF,EAAA57I,QAGX47I,EAAAt6I,UAgBAs6I,EAAAt6I,SAAAwE,QAAA,SAAAgoD,GACA,IAAAq0F,EAAAR,EACAzC,EAAAyC,EAAA,IAAA7zF,EAAA,WACAp5E,EACAgtK,EAAAH,EAAAC,EAAAC,EAAA3zF,EAAAgvF,EAAAqF,KAIA,QAAAztK,IAAAknK,EAAAwG,MAAA,CACA,IAAAC,EAAAlvJ,MAAAgC,QAAAymJ,EAAAwG,OACAxG,EAAAwG,MACA,CAAAxG,EAAAwG,OAEAC,EAAAv8I,QAAA,SAAAs8I,GACA,IAAAE,EAAA,CACAnpF,KAAAipF,EACA9gJ,SAAAs6I,EAAAt6I,UAEAogJ,EACAH,EACAC,EACAC,EACAa,EACA/gJ,EACAu7I,EAAA3jF,MAAA,OAKAqoF,EAAA1E,EAAA3jF,QACAooF,EAAAjqK,KAAAwlK,EAAA3jF,MACAqoF,EAAA1E,EAAA3jF,MAAA2jF,GAGAlqK,IACA6uK,EAAA7uK,KACA6uK,EAAA7uK,GAAAkqK,IAvHA4E,CAAAH,EAAAC,EAAAC,EAAA7F,KAIA,QAAAvpK,EAAA,EAAAC,EAAAivK,EAAAhqK,OAAsClF,EAAAC,EAAOD,IAC7C,MAAAkvK,EAAAlvK,KACAkvK,EAAAjqK,KAAAiqK,EAAA98H,OAAApyC,EAAA,OACAC,IACAD,KAIA,OACAkvK,WACAC,UACAC,WAmHA,SAAAQ,GAAA9oF,EAAAyoF,GASA,OARAxC,EAAAjmF,EAAA,GAAAyoF,GAoBA,SAAAW,GACAtnH,EACAue,EACA9R,EACAs1G,GAEA,IAAAz8H,EAAA,iBAAA0a,EAAA,CAAwCk+B,KAAAl+B,GAAYA,EAEpD,GAAA1a,EAAA3tC,MAAA2tC,EAAAiiI,YACA,OAAAjiI,EAIA,IAAAA,EAAA44C,MAAA54C,EAAArH,QAAAsgC,EAAA,EACAj5B,EAAApmC,EAAA,GAAoBomC,IACpBiiI,aAAA,EACA,IAAAtpI,EAAA/+B,IAAA,GAAiCq/D,EAAAtgC,QAAAqH,EAAArH,QACjC,GAAAsgC,EAAA5mE,KACA2tC,EAAA3tC,KAAA4mE,EAAA5mE,KACA2tC,EAAArH,cACK,GAAAsgC,EAAA70C,QAAAptB,OAAA,CACL,IAAAkrK,EAAAjpG,EAAA70C,QAAA60C,EAAA70C,QAAAptB,OAAA,GAAA4hF,KACA54C,EAAA44C,KAAA6nF,GAAAyB,EAAAvpI,EAAAsgC,EAAA,WACe,EAGf,OAAAj5B,EAGA,IAAAmiI,EAvqBA,SAAAvpF,GACA,IAAAz0D,EAAA,GACA42E,EAAA,GAEAqnE,EAAAxpF,EAAAjkF,QAAA,KACAytK,GAAA,IACAj+I,EAAAy0D,EAAAzmE,MAAAiwJ,GACAxpF,IAAAzmE,MAAA,EAAAiwJ,IAGA,IAAAC,EAAAzpF,EAAAjkF,QAAA,KAMA,OALA0tK,GAAA,IACAtnE,EAAAniB,EAAAzmE,MAAAkwJ,EAAA,GACAzpF,IAAAzmE,MAAA,EAAAkwJ,IAGA,CACAzpF,OACAmiB,QACA52E,QAopBA20D,CAAA94C,EAAA44C,MAAA,IACA0pF,EAAArpG,KAAA2f,MAAA,IACAA,EAAAupF,EAAAvpF,KACA4lF,EAAA2D,EAAAvpF,KAAA0pF,EAAAn7G,GAAAnnB,EAAAmnB,QACAm7G,EAEAvnE,EArnCA,SACAA,EACAwnE,EACAC,QAEA,IAAAD,MAAA,IAEA,IACAE,EADA7mH,EAAA4mH,GAAAtG,EAEA,IACAuG,EAAA7mH,EAAAm/C,GAAA,IACG,MAAAx7F,GAEHkjK,EAAA,GAEA,QAAApvK,KAAAkvK,EACAE,EAAApvK,GAAAkvK,EAAAlvK,GAEA,OAAAovK,EAmmCAC,CACAP,EAAApnE,MACA/6D,EAAA+6D,MACA0hE,KAAAv9J,QAAAg9J,YAGA/3I,EAAA6b,EAAA7b,MAAAg+I,EAAAh+I,KAKA,OAJAA,GAAA,MAAAA,EAAA3uB,OAAA,KACA2uB,EAAA,IAAAA,GAGA,CACA89I,aAAA,EACArpF,OACAmiB,QACA52E,QAQA,SAAAw+I,GACA/B,EACAnE,GAEA,IAAAvmK,EAAAyqK,GAAAC,GACAI,EAAA9qK,EAAA8qK,SACAC,EAAA/qK,EAAA+qK,QACAC,EAAAhrK,EAAAgrK,QAMA,SAAA57I,EACAo1B,EACAkoH,EACApG,GAEA,IAAAtsH,EAAA8xH,GAAAtnH,EAAAkoH,GAAA,EAAAnG,GACApqK,EAAA69C,EAAA79C,KAEA,GAAAA,EAAA,CACA,IAAAkqK,EAAA2E,EAAA7uK,GAIA,IAAAkqK,EAAoB,OAAAsG,EAAA,KAAA3yH,GACpB,IAAA4yH,EAAAvG,EAAAkF,MAAAh7J,KACA+c,OAAA,SAAAnwB,GAAgC,OAAAA,EAAAosK,WAChC9gK,IAAA,SAAAtL,GAA6B,OAAAA,EAAAhB,OAM7B,GAJA,iBAAA69C,EAAAvX,SACAuX,EAAAvX,OAAA,IAGAiqI,GAAA,iBAAAA,EAAAjqI,OACA,QAAAtlC,KAAAuvK,EAAAjqI,SACAtlC,KAAA68C,EAAAvX,SAAAmqI,EAAAnuK,QAAAtB,IAAA,IACA68C,EAAAvX,OAAAtlC,GAAAuvK,EAAAjqI,OAAAtlC,IAKA,GAAAkpK,EAEA,OADArsH,EAAA0oC,KAAA6nF,GAAAlE,EAAA3jF,KAAA1oC,EAAAvX,QACAkqI,EAAAtG,EAAArsH,EAAAssH,QAEK,GAAAtsH,EAAA0oC,KAAA,CACL1oC,EAAAvX,OAAA,GACA,QAAA7mC,EAAA,EAAqBA,EAAAkvK,EAAAhqK,OAAqBlF,IAAA,CAC1C,IAAA8mF,EAAAooF,EAAAlvK,GACAixK,EAAA9B,EAAAroF,GACA,GAAAoqF,GAAAD,EAAAtB,MAAAvxH,EAAA0oC,KAAA1oC,EAAAvX,QACA,OAAAkqI,EAAAE,EAAA7yH,EAAAssH,IAKA,OAAAqG,EAAA,KAAA3yH,GAGA,SAAAyxH,EACApF,EACArsH,GAEA,IAAA+yH,EAAA1G,EAAAoF,SACAA,EAAA,mBAAAsB,EACAA,EAAA3G,EAAAC,EAAArsH,EAAA,KAAAusH,IACAwG,EAMA,GAJA,iBAAAtB,IACAA,EAAA,CAAkB/oF,KAAA+oF,KAGlBA,GAAA,iBAAAA,EAMA,OAAAkB,EAAA,KAAA3yH,GAGA,IAAA8vH,EAAA2B,EACAtvK,EAAA2tK,EAAA3tK,KACAumF,EAAAonF,EAAApnF,KACAmiB,EAAA7qD,EAAA6qD,MACA52E,EAAA+rB,EAAA/rB,KACAwU,EAAAuX,EAAAvX,OAKA,GAJAoiE,EAAAilE,EAAArsK,eAAA,SAAAqsK,EAAAjlE,QACA52E,EAAA67I,EAAArsK,eAAA,QAAAqsK,EAAA77I,OACAwU,EAAAqnI,EAAArsK,eAAA,UAAAqsK,EAAArnI,SAEAtmC,EAAA,CAEA6uK,EAAA7uK,GAIA,OAAAizB,EAAA,CACA28I,aAAA,EACA5vK,OACA0oG,QACA52E,OACAwU,eACOxkC,EAAA+7C,GACF,GAAA0oC,EAAA,CAEL,IAAAspF,EAkFA,SAAAtpF,EAAA2jF,GACA,OAAAiC,EAAA5lF,EAAA2jF,EAAAv7I,OAAAu7I,EAAAv7I,OAAA43D,KAAA,QAnFAsqF,CAAAtqF,EAAA2jF,GAIA,OAAAj3I,EAAA,CACA28I,aAAA,EACArpF,KAJA6nF,GAAAyB,EAAAvpI,GAKAoiE,QACA52E,aACOhwB,EAAA+7C,GAKP,OAAA2yH,EAAA,KAAA3yH,GAuBA,SAAA2yH,EACAtG,EACArsH,EACAssH,GAEA,OAAAD,KAAAoF,SACAA,EAAApF,EAAAC,GAAAtsH,GAEAqsH,KAAA6E,QA3BA,SACA7E,EACArsH,EACAkxH,GAEA,IACA+B,EAAA79I,EAAA,CACA28I,aAAA,EACArpF,KAHA6nF,GAAAW,EAAAlxH,EAAAvX,UAKA,GAAAwqI,EAAA,CACA,IAAA/+I,EAAA++I,EAAA/+I,QACAg/I,EAAAh/I,IAAAptB,OAAA,GAEA,OADAk5C,EAAAvX,OAAAwqI,EAAAxqI,OACAkqI,EAAAO,EAAAlzH,GAEA,OAAA2yH,EAAA,KAAA3yH,GAYA2xH,CAAAtF,EAAArsH,EAAAqsH,EAAA6E,SAEA9E,EAAAC,EAAArsH,EAAAssH,EAAAC,GAGA,OACAn3I,QACA+9I,UAxJA,SAAAzC,GACAD,GAAAC,EAAAI,EAAAC,EAAAC,KA2JA,SAAA8B,GACAvB,EACA7oF,EACAjgD,GAEA,IAAAzmC,EAAA0mF,EAAAtzD,MAAAm8I,GAEA,IAAAvvK,EACA,SACG,IAAAymC,EACH,SAGA,QAAA7mC,EAAA,EAAAoD,EAAAhD,EAAA8E,OAAiClF,EAAAoD,IAASpD,EAAA,CAC1C,IAAAuB,EAAAouK,EAAAh7J,KAAA3U,EAAA,GACA8C,EAAA,iBAAA1C,EAAAJ,GAAAmqK,mBAAA/pK,EAAAJ,IAAAI,EAAAJ,GACAuB,IAEAslC,EAAAtlC,EAAAhB,MAAA,aAAAuC,GAIA,SASA,IAAA0uK,GAAA9wK,OAAAY,OAAA,MAEA,SAAAmwK,KAGAzwJ,OAAA0wJ,QAAAC,aAAA,CAA+BpwK,IAAAqwK,MAAqB,GAAA5wJ,OAAAo9B,SAAAtX,KAAAz1B,QAAA2P,OAAAo9B,SAAA6zB,OAAA,KACpDjxD,OAAAnH,iBAAA,oBAAApM,GAuJA,IAAAlM,EAtJAswK,KACApkK,EAAAukB,OAAAvkB,EAAAukB,MAAAzwB,MAqJAA,EApJAkM,EAAAukB,MAAAzwB,IAqJAuwK,GAAAvwK,KAhJA,SAAAwwK,GACApH,EACA/jI,EACAg3C,EACAo0F,GAEA,GAAArH,EAAAsH,IAAA,CAIA,IAAA14I,EAAAoxI,EAAAv9J,QAAA8kK,eACA34I,GASAoxI,EAAAsH,IAAAxtI,UAAA,WACA,IAAAj6B,EA+BA,WACA,IAAAjJ,EAAAqwK,KACA,GAAArwK,EACA,OAAAiwK,GAAAjwK,GAlCA4wK,GACAC,EAAA74I,EAAAp5B,KAAAwqK,EAAA/jI,EAAAg3C,EAAAo0F,EAAAxnK,EAAA,MAEA4nK,IAIA,mBAAAA,EAAA5oJ,KACA4oJ,EAAA5oJ,KAAA,SAAA4oJ,GACAC,GAAA,EAAA7nK,KACO07C,MAAA,SAAAmI,GACK,IAKZgkH,GAAAD,EAAA5nK,OAKA,SAAAqnK,KACA,IAAAtwK,EAAAqwK,KACArwK,IACAiwK,GAAAjwK,GAAA,CACAkF,EAAAua,OAAA+pD,YACAnkE,EAAAoa,OAAA8pD,cAsBA,SAAAwnG,GAAAltK,GACA,OAAAie,GAAAje,EAAAqB,IAAA4c,GAAAje,EAAAwB,GAGA,SAAA2rK,GAAAntK,GACA,OACAqB,EAAA4c,GAAAje,EAAAqB,GAAArB,EAAAqB,EAAAua,OAAA+pD,YACAnkE,EAAAyc,GAAAje,EAAAwB,GAAAxB,EAAAwB,EAAAoa,OAAA8pD,aAWA,SAAAznD,GAAAtH,GACA,uBAAAA,EAGA,SAAAs2J,GAAAD,EAAA5nK,GACA,IAZApF,EAYAmmC,EAAA,iBAAA6mI,EACA,GAAA7mI,GAAA,iBAAA6mI,EAAA9gI,SAAA,CACA,IAAArhB,EAAAlH,SAAA0P,cAAA25I,EAAA9gI,UACA,GAAArhB,EAAA,CACA,IAAAkG,EAAAi8I,EAAAj8I,QAAA,iBAAAi8I,EAAAj8I,OAAAi8I,EAAAj8I,OAAA,GAEA3rB,EAvCA,SAAAylB,EAAAkG,GACA,IACAq8I,EADAzpJ,SAAAqC,gBACAiD,wBACAokJ,EAAAxiJ,EAAA5B,wBACA,OACA5nB,EAAAgsK,EAAAxrK,KAAAurK,EAAAvrK,KAAAkvB,EAAA1vB,EACAG,EAAA6rK,EAAAvrK,IAAAsrK,EAAAtrK,IAAAivB,EAAAvvB,GAiCA8rK,CAAAziJ,EADAkG,EAhBA,CACA1vB,EAAA4c,IAFAje,EAiBA+wB,GAfA1vB,GAAArB,EAAAqB,EAAA,EACAG,EAAAyc,GAAAje,EAAAwB,GAAAxB,EAAAwB,EAAA,SAgBK0rK,GAAAF,KACL5nK,EAAA+nK,GAAAH,SAEG7mI,GAAA+mI,GAAAF,KACH5nK,EAAA+nK,GAAAH,IAGA5nK,GACAwW,OAAAiqD,SAAAzgE,EAAA/D,EAAA+D,EAAA5D,GAMA,IACA+rK,GADAC,GAAAh6F,MAIA,KAHA+5F,GAAA3xJ,OAAAkI,UAAAC,WAGAtmB,QAAA,oBAAA8vK,GAAA9vK,QAAA,iBACA,IAAA8vK,GAAA9vK,QAAA,mBACA,IAAA8vK,GAAA9vK,QAAA,YACA,IAAA8vK,GAAA9vK,QAAA,mBAKAme,OAAA0wJ,SAAA,cAAA1wJ,OAAA0wJ,SAIAmB,GAAAj6F,GAAA53D,OAAA42D,aAAA52D,OAAA42D,YAAAtmB,IACAtwC,OAAA42D,YACAjjC,KAEAm9H,GAAAgB,KAEA,SAAAA,KACA,OAAAD,GAAAvhH,MAAA1iB,QAAA,GAGA,SAAAgjI,KACA,OAAAE,GAOA,SAAAiB,GAAArtK,EAAA2L,GACAwgK,KAGA,IAAAH,EAAA1wJ,OAAA0wJ,QACA,IACArgK,EACAqgK,EAAAC,aAAA,CAA4BpwK,IAAAuwK,IAAY,GAAApsK,IAExCosK,GAAAgB,KACApB,EAAAqB,UAAA,CAAyBxxK,IAAAuwK,IAAY,GAAApsK,IAElC,MAAA+H,GACHuT,OAAAo9B,SAAA/sC,EAAA,oBAAA3L,IAIA,SAAAisK,GAAAjsK,GACAqtK,GAAArtK,GAAA,GAKA,SAAAstK,GAAAv0I,EAAAnV,EAAAs4D,GACA,IAAApoD,EAAA,SAAApwB,GACAA,GAAAq1B,EAAAv5B,OACA08E,IAEAnjD,EAAAr1B,GACAkgB,EAAAmV,EAAAr1B,GAAA,WACAowB,EAAApwB,EAAA,KAGAowB,EAAApwB,EAAA,IAIAowB,EAAA,GAKA,SAAAy5I,GAAA3gJ,GACA,gBAAAsU,EAAAg3C,EAAA1vC,GACA,IAAAglI,GAAA,EACAljI,EAAA,EACA4C,EAAA,KAEAugI,GAAA7gJ,EAAA,SAAAkmD,EAAAp3C,EAAA5N,EAAAjyB,GAMA,sBAAAi3E,QAAAn2E,IAAAm2E,EAAAqV,IAAA,CACAqlF,GAAA,EACAljI,IAEA,IA0BAijC,EA1BA/hE,EAAAyuB,GAAA,SAAAyzI,GAuEA,IAAAhuK,MAtEAguK,GAuEAhyK,YAAAu4E,IAAA,WAAAv0E,EAAArE,OAAAC,gBAtEAoyK,IAAAjzF,SAGA3H,EAAAuV,SAAA,mBAAAqlF,EACAA,EACA5H,EAAA1jK,OAAAsrK,GACA5/I,EAAAuO,WAAAxgC,GAAA6xK,IACApjI,GACA,GACA9B,MAIA1H,EAAA7G,GAAA,SAAAwuD,GACA,IAAAt7C,EAAA,qCAAAtxC,EAAA,KAAA4sF,EAEAv7C,IACAA,EAAA0vF,EAAAn0C,GACAA,EACA,IAAAv4E,MAAAi9B,GACA3E,EAAA0E,MAKA,IACAqgC,EAAAuF,EAAAtnE,EAAAs1B,GACS,MAAA/4B,GACT+4B,EAAA/4B,GAEA,GAAAwlE,EACA,sBAAAA,EAAAzpD,KACAypD,EAAAzpD,KAAAtY,EAAAs1B,OACW,CAEX,IAAAq9C,EAAA5Q,EAAAlnC,UACA83C,GAAA,mBAAAA,EAAAr6D,MACAq6D,EAAAr6D,KAAAtY,EAAAs1B,OAOA0sI,GAAoBhlI,KAIpB,SAAAilI,GACA7gJ,EACAhJ,GAEA,OAAA4zG,GAAA5qG,EAAAzlB,IAAA,SAAAzM,GACA,OAAAM,OAAAiU,KAAAvU,EAAA2hC,YAAAl1B,IAAA,SAAAtL,GAAyD,OAAA+nB,EACzDlpB,EAAA2hC,WAAAxgC,GACAnB,EAAA4R,UAAAzQ,GACAnB,EAAAmB,QAKA,SAAA27H,GAAAjqG,GACA,OAAAnS,MAAAlf,UAAAiT,OAAApP,MAAA,GAAAwtB,GAGA,IAAA0mD,GACA,mBAAA54E,QACA,iBAAAA,OAAAC,YAUA,SAAA2+B,GAAArW,GACA,IAAAC,GAAA,EACA,kBAEA,IADA,IAAAzS,EAAA,GAAA1T,EAAA6S,UAAA/Q,OACA9B,KAAA0T,EAAA1T,GAAA6S,UAAA7S,GAEA,IAAAmmB,EAEA,OADAA,GAAA,EACAD,EAAA7jB,MAAA0C,KAAA2O,IAMA,IAAAu8J,GAAA,SAAA1I,EAAA9jK,GACAsB,KAAAwiK,SACAxiK,KAAAtB,KAkKA,SAAAA,GACA,IAAAA,EACA,GAAA+xE,EAAA,CAEA,IAAA06F,EAAAvqJ,SAAA0P,cAAA,QAGA5xB,GAFAA,EAAAysK,KAAA96H,aAAA,cAEAnnC,QAAA,8BAEAxK,EAAA,IAIA,MAAAA,EAAAnD,OAAA,KACAmD,EAAA,IAAAA,GAGA,OAAAA,EAAAwK,QAAA,UAnLAkiK,CAAA1sK,GAEAsB,KAAAg/D,QAAA6jG,EACA7iK,KAAA6nC,QAAA,KACA7nC,KAAAo7C,OAAA,EACAp7C,KAAAqrK,SAAA,GACArrK,KAAAsrK,cAAA,GACAtrK,KAAAurK,SAAA,IAiMA,SAAAC,GACAC,EACArzK,EACAiB,EACAqlB,GAEA,IAAAgtJ,EAAAV,GAAAS,EAAA,SAAAp7F,EAAAlrD,EAAAkG,EAAAjyB,GACA,IAAAi3H,EAUA,SACAhgD,EACAj3E,GAEA,mBAAAi3E,IAEAA,EAAAgzF,EAAA1jK,OAAA0wE,IAEA,OAAAA,EAAAprE,QAAA7L,GAlBAuyK,CAAAt7F,EAAAj4E,GACA,GAAAi4H,EACA,OAAA13G,MAAAgC,QAAA01G,GACAA,EAAA3rH,IAAA,SAAA2rH,GAAsC,OAAAh3H,EAAAg3H,EAAAlrG,EAAAkG,EAAAjyB,KACtCC,EAAAg3H,EAAAlrG,EAAAkG,EAAAjyB,KAGA,OAAA27H,GAAAr2G,EAAAgtJ,EAAAhtJ,UAAAgtJ,GAsBA,SAAAE,GAAAv7C,EAAAlrG,GACA,GAAAA,EACA,kBACA,OAAAkrG,EAAA/yH,MAAA6nB,EAAArX,YArOAo9J,GAAAzxK,UAAAoyK,OAAA,SAAApyF,GACAz5E,KAAAy5E,MAGAyxF,GAAAzxK,UAAAqyK,QAAA,SAAAryF,EAAAsyF,GACA/rK,KAAAo7C,MACAq+B,KAEAz5E,KAAAqrK,SAAAvuK,KAAA28E,GACAsyF,GACA/rK,KAAAsrK,cAAAxuK,KAAAivK,KAKAb,GAAAzxK,UAAAuyK,QAAA,SAAAD,GACA/rK,KAAAurK,SAAAzuK,KAAAivK,IAGAb,GAAAzxK,UAAAwyK,aAAA,SAAAh2H,EAAApnC,EAAAq9J,GACA,IAAAvgF,EAAA3rF,KAEAohK,EAAAphK,KAAAwiK,OAAAn3I,MAAA4qB,EAAAj2C,KAAAg/D,SACAh/D,KAAAmsK,kBAAA/K,EAAA,WACAz1E,EAAAygF,YAAAhL,GACAvyJ,KAAAuyJ,GACAz1E,EAAA0gF,YAGA1gF,EAAAvwC,QACAuwC,EAAAvwC,OAAA,EACAuwC,EAAA0/E,SAAA//I,QAAA,SAAAmuD,GAA6CA,EAAA2nF,OAE1C,SAAAl7G,GACHgmH,GACAA,EAAAhmH,GAEAA,IAAAylC,EAAAvwC,QACAuwC,EAAAvwC,OAAA,EACAuwC,EAAA2/E,cAAAhgJ,QAAA,SAAAmuD,GAAkDA,EAAAvzB,SAKlDglH,GAAAzxK,UAAA0yK,kBAAA,SAAA/K,EAAAvyJ,EAAAq9J,GACA,IAAAvgF,EAAA3rF,KAEAg/D,EAAAh/D,KAAAg/D,QACAnB,EAAA,SAAA3X,GACAi0E,EAAAj0E,IACAylC,EAAA4/E,SAAAxuK,QACA4uF,EAAA4/E,SAAAjgJ,QAAA,SAAAmuD,GAA+CA,EAAAvzB,KAM/CgmH,KAAAhmH,IAEA,GACA68G,EAAA3B,EAAApiG,IAEAoiG,EAAAj3I,QAAAptB,SAAAiiE,EAAA70C,QAAAptB,OAGA,OADAiD,KAAAqsK,YACAxuG,IAGA,IAAA5hE,EAwGA,SACA+iE,EACAj5B,GAEA,IAAAluC,EACA8G,EAAAJ,KAAAI,IAAAqgE,EAAAjiE,OAAAgpC,EAAAhpC,QACA,IAAAlF,EAAA,EAAaA,EAAA8G,GACbqgE,EAAAnnE,KAAAkuC,EAAAluC,GADsBA,KAKtB,OACA0U,QAAAw5B,EAAA7tB,MAAA,EAAArgB,GACAy0K,UAAAvmI,EAAA7tB,MAAArgB,GACA00K,YAAAvtG,EAAA9mD,MAAArgB,IAtHA20K,CAAAxsK,KAAAg/D,QAAA70C,QAAAi3I,EAAAj3I,SACA5d,EAAAtQ,EAAAsQ,QACAggK,EAAAtwK,EAAAswK,YACAD,EAAArwK,EAAAqwK,UAEAh2I,EAAA,GAAA5pB,OAiJA,SAAA6/J,GACA,OAAAf,GAAAe,EAAA,mBAAAX,IAAA,GAhJAa,CAAAF,GAEAvsK,KAAAwiK,OAAAkK,YAiJA,SAAAngK,GACA,OAAAi/J,GAAAj/J,EAAA,oBAAAq/J,IAhJAe,CAAApgK,GAEA+/J,EAAA5nK,IAAA,SAAAzM,GAAgC,OAAAA,EAAAg/F,cAEhC6zE,GAAAwB,IAGAtsK,KAAA6nC,QAAAu5H,EACA,IAAA51H,EAAA,SAAA8c,EAAAviB,GACA,GAAA4lD,EAAA9jD,UAAAu5H,EACA,OAAAvjG,IAEA,IACAvV,EAAA84G,EAAApiG,EAAA,SAAAvgC,IACA,IAAAA,GAAA07F,EAAA17F,IAEAktD,EAAA0gF,WAAA,GACAxuG,EAAAp/B,IAEA,iBAAAA,GACA,iBAAAA,IACA,iBAAAA,EAAAkgD,MACA,iBAAAlgD,EAAArmC,OAIAylE,IACA,iBAAAp/B,KAAAv1B,QACAyiF,EAAAziF,QAAAu1B,GAEAktD,EAAA7uF,KAAA2hC,IAIAsH,EAAAtH,KAGK,MAAAn5B,GACLu4D,EAAAv4D,KAIAulK,GAAAv0I,EAAAkV,EAAA,WACA,IAAAohI,EAAA,GAMA/B,GA0GA,SACAyB,EACA5hF,EACA12E,GAEA,OAAAw3J,GAAAc,EAAA,4BAAAj8C,EAAAp3F,EAAA5N,EAAAjyB,GACA,OAIA,SACAi3H,EACAhlG,EACAjyB,EACAsxF,EACA12E,GAEA,gBAAAyqB,EAAAg3C,EAAA1vC,GACA,OAAAsqF,EAAA5xF,EAAAg3C,EAAA,SAAAgE,GACA1zC,EAAA0zC,GACA,mBAAAA,GACAiR,EAAA5tF,KAAA,YAaA,SAAA+vK,EACApzF,EACA5vE,EACAzQ,EACA4a,GAGAnK,EAAAzQ,KACAyQ,EAAAzQ,GAAA8lF,kBAEAzF,EAAA5vE,EAAAzQ,IACG4a,KACHuN,WAAA,WACAsrJ,EAAApzF,EAAA5vE,EAAAzQ,EAAA4a,IACK,IArBL64J,CAAApzF,EAAApuD,EAAAxhB,UAAAzQ,EAAA4a,QArBA84J,CAAAz8C,EAAAhlG,EAAAjyB,EAAAsxF,EAAA12E,KAlHA+4J,CAAAT,EAAAM,EAHA,WAA+B,OAAAjhF,EAAA3sB,UAAAoiG,IAI/B10J,OAAAi/E,EAAA62E,OAAAwK,cACAxhI,EAAA,WACA,GAAAmgD,EAAA9jD,UAAAu5H,EACA,OAAAvjG,IAEA8tB,EAAA9jD,QAAA,KACAh5B,EAAAuyJ,GACAz1E,EAAA62E,OAAAsH,KACAn+E,EAAA62E,OAAAsH,IAAAxtI,UAAA,WACAswI,EAAAthJ,QAAA,SAAAmuD,GAA8CA,aAO9CyxF,GAAAzxK,UAAA2yK,YAAA,SAAAhL,GACA,IAAA5lH,EAAAx7C,KAAAg/D,QACAh/D,KAAAg/D,QAAAoiG,EACAphK,KAAAy5E,IAAAz5E,KAAAy5E,GAAA2nF,GACAphK,KAAAwiK,OAAAyK,WAAA3hJ,QAAA,SAAAg9B,GACAA,KAAA84G,EAAA5lH,MA4IA,IAAA0xH,GAAA,SAAAC,GACA,SAAAD,EAAA1K,EAAA9jK,GACA,IAAAitF,EAAA3rF,KAEAmtK,EAAAn1K,KAAAgI,KAAAwiK,EAAA9jK,GAEA,IAAA0uK,EAAA5K,EAAAv9J,QAAA8kK,eACAsD,EAAA5C,IAAA2C,EAEAC,GACA/D,KAGA,IAAAgE,EAAAC,GAAAvtK,KAAAtB,MACAma,OAAAnH,iBAAA,oBAAApM,GACA,IAAA05D,EAAA2sB,EAAA3sB,QAIA/oB,EAAAs3H,GAAA5hF,EAAAjtF,MACAitF,EAAA3sB,UAAA6jG,GAAA5sH,IAAAq3H,GAIA3hF,EAAAsgF,aAAAh2H,EAAA,SAAAmrH,GACAiM,GACAzD,GAAApH,EAAApB,EAAApiG,GAAA,OAiDA,OA3CAmuG,IAAAD,EAAAz4F,UAAA04F,GACAD,EAAAzzK,UAAAlB,OAAAY,OAAAg0K,KAAA1zK,WACAyzK,EAAAzzK,UAAA8pC,YAAA2pI,EAEAA,EAAAzzK,UAAA+zK,GAAA,SAAAl0K,GACAuf,OAAA0wJ,QAAAiE,GAAAl0K,IAGA4zK,EAAAzzK,UAAAqD,KAAA,SAAAm5C,EAAApnC,EAAAq9J,GACA,IAAAvgF,EAAA3rF,KAGAytK,EADAztK,KACAg/D,QACAh/D,KAAAisK,aAAAh2H,EAAA,SAAAmrH,GACAwJ,GAAAlG,EAAA/4E,EAAAjtF,KAAA0iK,EAAAsB,WACAkH,GAAAj+E,EAAA62E,OAAApB,EAAAqM,GAAA,GACA5+J,KAAAuyJ,IACK8K,IAGLgB,EAAAzzK,UAAAyP,QAAA,SAAA+sC,EAAApnC,EAAAq9J,GACA,IAAAvgF,EAAA3rF,KAGAytK,EADAztK,KACAg/D,QACAh/D,KAAAisK,aAAAh2H,EAAA,SAAAmrH,GACAoI,GAAA9E,EAAA/4E,EAAAjtF,KAAA0iK,EAAAsB,WACAkH,GAAAj+E,EAAA62E,OAAApB,EAAAqM,GAAA,GACA5+J,KAAAuyJ,IACK8K,IAGLgB,EAAAzzK,UAAA4yK,UAAA,SAAAvvK,GACA,GAAAywK,GAAAvtK,KAAAtB,QAAAsB,KAAAg/D,QAAA0jG,SAAA,CACA,IAAA1jG,EAAA0lG,EAAA1kK,KAAAtB,KAAAsB,KAAAg/D,QAAA0jG,UACA5lK,EAAA8tK,GAAA5rG,GAAAwqG,GAAAxqG,KAIAkuG,EAAAzzK,UAAAi0K,mBAAA,WACA,OAAAH,GAAAvtK,KAAAtB,OAGAwuK,EA3EA,CA4EChC,IAED,SAAAqC,GAAA7uK,GACA,IAAAigF,EAAAgvF,UAAA90J,OAAAo9B,SAAA6yF,UAIA,OAHApqI,GAAA,IAAAigF,EAAAjkF,QAAAgE,KACAigF,IAAAzmE,MAAAxZ,EAAA3B,UAEA4hF,GAAA,KAAA9lE,OAAAo9B,SAAA1nB,OAAA1V,OAAAo9B,SAAA/rB,KAKA,IAAA0jJ,GAAA,SAAAT,GACA,SAAAS,EAAApL,EAAA9jK,EAAAqiF,GACAosF,EAAAn1K,KAAAgI,KAAAwiK,EAAA9jK,GAEAqiF,GAiFA,SAAAriF,GACA,IAAAu3C,EAAAs3H,GAAA7uK,GACA,WAAAlB,KAAAy4C,GAIA,OAHAp9B,OAAAo9B,SAAA/sC,QACAw7J,EAAAhmK,EAAA,KAAAu3C,KAEA,EAvFA43H,CAAA7tK,KAAAtB,OAGAovK,KA2EA,OAxEAX,IAAAS,EAAAn5F,UAAA04F,GACAS,EAAAn0K,UAAAlB,OAAAY,OAAAg0K,KAAA1zK,WACAm0K,EAAAn0K,UAAA8pC,YAAAqqI,EAIAA,EAAAn0K,UAAAs0K,eAAA,WACA,IAAApiF,EAAA3rF,KAGAotK,EADAptK,KAAAwiK,OACAv9J,QAAA8kK,eACAsD,EAAA5C,IAAA2C,EAEAC,GACA/D,KAGAzwJ,OAAAnH,iBAAA+4J,GAAA,mCACA,IAAAzrG,EAAA2sB,EAAA3sB,QACA8uG,MAGAniF,EAAAsgF,aAAA+B,KAAA,SAAA5M,GACAiM,GACAzD,GAAAj+E,EAAA62E,OAAApB,EAAApiG,GAAA,GAEAyrG,IACAwD,GAAA7M,EAAAsB,eAMAkL,EAAAn0K,UAAAqD,KAAA,SAAAm5C,EAAApnC,EAAAq9J,GACA,IAAAvgF,EAAA3rF,KAGAytK,EADAztK,KACAg/D,QACAh/D,KAAAisK,aAAAh2H,EAAA,SAAAmrH,GACA8M,GAAA9M,EAAAsB,UACAkH,GAAAj+E,EAAA62E,OAAApB,EAAAqM,GAAA,GACA5+J,KAAAuyJ,IACK8K,IAGL0B,EAAAn0K,UAAAyP,QAAA,SAAA+sC,EAAApnC,EAAAq9J,GACA,IAAAvgF,EAAA3rF,KAGAytK,EADAztK,KACAg/D,QACAh/D,KAAAisK,aAAAh2H,EAAA,SAAAmrH,GACA6M,GAAA7M,EAAAsB,UACAkH,GAAAj+E,EAAA62E,OAAApB,EAAAqM,GAAA,GACA5+J,KAAAuyJ,IACK8K,IAGL0B,EAAAn0K,UAAA+zK,GAAA,SAAAl0K,GACAuf,OAAA0wJ,QAAAiE,GAAAl0K,IAGAs0K,EAAAn0K,UAAA4yK,UAAA,SAAAvvK,GACA,IAAAkiE,EAAAh/D,KAAAg/D,QAAA0jG,SACAsL,OAAAhvG,IACAliE,EAAAoxK,GAAAlvG,GAAAivG,GAAAjvG,KAIA4uG,EAAAn0K,UAAAi0K,mBAAA,WACA,OAAAM,MAGAJ,EAlFA,CAmFC1C,IAYD,SAAA4C,KACA,IAAAnvF,EAAAqvF,KACA,YAAArvF,EAAApjF,OAAA,KAGA0yK,GAAA,IAAAtvF,IACA,GAGA,SAAAqvF,KAGA,IAAArvI,EAAA9lB,OAAAo9B,SAAAtX,KACA19B,EAAA09B,EAAAjkC,QAAA,KACA,WAAAuG,EAAA,GAAA0sK,UAAAhvI,EAAAzmB,MAAAjX,EAAA,IAGA,SAAAktK,GAAAxvF,GACA,IAAAhgD,EAAA9lB,OAAAo9B,SAAAtX,KACA9mC,EAAA8mC,EAAAjkC,QAAA,KAEA,OADA7C,GAAA,EAAA8mC,EAAAzmB,MAAA,EAAArgB,GAAA8mC,GACA,IAAAggD,EAGA,SAAAuvF,GAAAvvF,GACA8rF,GACAG,GAAAuD,GAAAxvF,IAEA9lE,OAAAo9B,SAAA/rB,KAAAy0D,EAIA,SAAAsvF,GAAAtvF,GACA8rF,GACAjB,GAAA2E,GAAAxvF,IAEA9lE,OAAAo9B,SAAA/sC,QAAAilK,GAAAxvF,IAMA,IAAAyvF,GAAA,SAAAjB,GACA,SAAAiB,EAAA5L,EAAA9jK,GACAyuK,EAAAn1K,KAAAgI,KAAAwiK,EAAA9jK,GACAsB,KAAA4/C,MAAA,GACA5/C,KAAAiB,OAAA,EAiDA,OA9CAksK,IAAAiB,EAAA35F,UAAA04F,GACAiB,EAAA30K,UAAAlB,OAAAY,OAAAg0K,KAAA1zK,WACA20K,EAAA30K,UAAA8pC,YAAA6qI,EAEAA,EAAA30K,UAAAqD,KAAA,SAAAm5C,EAAApnC,EAAAq9J,GACA,IAAAvgF,EAAA3rF,KAEAA,KAAAisK,aAAAh2H,EAAA,SAAAmrH,GACAz1E,EAAA/rC,MAAA+rC,EAAA/rC,MAAA1nC,MAAA,EAAAyzE,EAAA1qF,MAAA,GAAAyL,OAAA00J,GACAz1E,EAAA1qF,QACA4N,KAAAuyJ,IACK8K,IAGLkC,EAAA30K,UAAAyP,QAAA,SAAA+sC,EAAApnC,EAAAq9J,GACA,IAAAvgF,EAAA3rF,KAEAA,KAAAisK,aAAAh2H,EAAA,SAAAmrH,GACAz1E,EAAA/rC,MAAA+rC,EAAA/rC,MAAA1nC,MAAA,EAAAyzE,EAAA1qF,OAAAyL,OAAA00J,GACAvyJ,KAAAuyJ,IACK8K,IAGLkC,EAAA30K,UAAA+zK,GAAA,SAAAl0K,GACA,IAAAqyF,EAAA3rF,KAEAq4I,EAAAr4I,KAAAiB,MAAA3H,EACA,KAAA++I,EAAA,GAAAA,GAAAr4I,KAAA4/C,MAAA7iD,QAAA,CAGA,IAAAqkK,EAAAphK,KAAA4/C,MAAAy4F,GACAr4I,KAAAmsK,kBAAA/K,EAAA,WACAz1E,EAAA1qF,MAAAo3I,EACA1sD,EAAAygF,YAAAhL,OAIAgN,EAAA30K,UAAAi0K,mBAAA,WACA,IAAA1uG,EAAAh/D,KAAA4/C,MAAA5/C,KAAA4/C,MAAA7iD,OAAA,GACA,OAAAiiE,IAAA0jG,SAAA,KAGA0L,EAAA30K,UAAA4yK,UAAA,aAIA+B,EArDA,CAsDClD,IAMDmD,GAAA,SAAAppK,QACA,IAAAA,MAAA,IAEAjF,KAAA8pK,IAAA,KACA9pK,KAAAsuK,KAAA,GACAtuK,KAAAiF,UACAjF,KAAA0sK,YAAA,GACA1sK,KAAAgtK,aAAA,GACAhtK,KAAAitK,WAAA,GACAjtK,KAAA21C,QAAA+yH,GAAAzjK,EAAA0hK,QAAA,GAAA3mK,MAEA,IAAAhH,EAAAiM,EAAAjM,MAAA,OAUA,OATAgH,KAAA+gF,SAAA,YAAA/nF,IAAAyxK,KAAA,IAAAxlK,EAAA87E,SACA/gF,KAAA+gF,WACA/nF,EAAA,QAEAy3E,IACAz3E,EAAA,YAEAgH,KAAAhH,OAEAA,GACA,cACAgH,KAAAupK,QAAA,IAAA2D,GAAAltK,KAAAiF,EAAAvG,MACA,MACA,WACAsB,KAAAupK,QAAA,IAAAqE,GAAA5tK,KAAAiF,EAAAvG,KAAAsB,KAAA+gF,UACA,MACA,eACA/gF,KAAAupK,QAAA,IAAA6E,GAAApuK,KAAAiF,EAAAvG,MACA,MACA,QACU,IAMV20E,GAAA,CAA0Bs1F,aAAA,CAAgBjjJ,cAAA,IAgJ1C,SAAA6oJ,GAAAphI,EAAAhsB,GAEA,OADAgsB,EAAArwC,KAAAqkB,GACA,WACA,IAAAtpB,EAAAs1C,EAAAzyC,QAAAymB,GACAtpB,GAAA,GAAiBs1C,EAAAlD,OAAApyC,EAAA,IAlJjBw2K,GAAA50K,UAAA4xB,MAAA,SACAo1B,EACAue,EACAujG,GAEA,OAAAviK,KAAA21C,QAAAtqB,MAAAo1B,EAAAue,EAAAujG,IAGAlvF,GAAAs1F,aAAAjwK,IAAA,WACA,OAAAsH,KAAAupK,SAAAvpK,KAAAupK,QAAAvqG,SAGAqvG,GAAA50K,UAAA2vC,KAAA,SAAA0gI,GACA,IAAAn+E,EAAA3rF,KAWA,GAHAA,KAAAsuK,KAAAxxK,KAAAgtK,IAGA9pK,KAAA8pK,IAAA,CAIA9pK,KAAA8pK,MAEA,IAAAP,EAAAvpK,KAAAupK,QAEA,GAAAA,aAAA2D,GACA3D,EAAA0C,aAAA1C,EAAAmE,2BACG,GAAAnE,aAAAqE,GAAA,CACH,IAAAY,EAAA,WACAjF,EAAAwE,kBAEAxE,EAAA0C,aACA1C,EAAAmE,qBACAc,EACAA,GAIAjF,EAAAsC,OAAA,SAAAzK,GACAz1E,EAAA2iF,KAAAhjJ,QAAA,SAAAw+I,GACAA,EAAA2E,OAAArN,QAKAiN,GAAA50K,UAAAi1K,WAAA,SAAAvtJ,GACA,OAAAotJ,GAAAvuK,KAAA0sK,YAAAvrJ,IAGAktJ,GAAA50K,UAAAk1K,cAAA,SAAAxtJ,GACA,OAAAotJ,GAAAvuK,KAAAgtK,aAAA7rJ,IAGAktJ,GAAA50K,UAAAm1K,UAAA,SAAAztJ,GACA,OAAAotJ,GAAAvuK,KAAAitK,WAAA9rJ,IAGAktJ,GAAA50K,UAAAqyK,QAAA,SAAAryF,EAAAsyF,GACA/rK,KAAAupK,QAAAuC,QAAAryF,EAAAsyF,IAGAsC,GAAA50K,UAAAuyK,QAAA,SAAAD,GACA/rK,KAAAupK,QAAAyC,QAAAD,IAGAsC,GAAA50K,UAAAqD,KAAA,SAAAm5C,EAAApnC,EAAAq9J,GACAlsK,KAAAupK,QAAAzsK,KAAAm5C,EAAApnC,EAAAq9J,IAGAmC,GAAA50K,UAAAyP,QAAA,SAAA+sC,EAAApnC,EAAAq9J,GACAlsK,KAAAupK,QAAArgK,QAAA+sC,EAAApnC,EAAAq9J,IAGAmC,GAAA50K,UAAA+zK,GAAA,SAAAl0K,GACA0G,KAAAupK,QAAAiE,GAAAl0K,IAGA+0K,GAAA50K,UAAAo1K,KAAA,WACA7uK,KAAAwtK,IAAA,IAGAa,GAAA50K,UAAAs7C,QAAA,WACA/0C,KAAAwtK,GAAA,IAGAa,GAAA50K,UAAAq1K,qBAAA,SAAArwI,GACA,IAAA2iI,EAAA3iI,EACAA,EAAAtU,QACAsU,EACAz+B,KAAA+I,QAAA01B,GAAA2iI,MACAphK,KAAA2oK,aACA,OAAAvH,EAGA,GAAA10J,OAAApP,MAAA,GAAA8jK,EAAAj3I,QAAAzlB,IAAA,SAAAzM,GACA,OAAAM,OAAAiU,KAAAvU,EAAA2hC,YAAAl1B,IAAA,SAAAtL,GACA,OAAAnB,EAAA2hC,WAAAxgC,QAJA,IASAi1K,GAAA50K,UAAAsP,QAAA,SACA01B,EACAugC,EACA9R,GAEA,IAAAjX,EAAA8xH,GACAtpI,EACAugC,GAAAh/D,KAAAupK,QAAAvqG,QACA9R,EACAltD,MAEAohK,EAAAphK,KAAAqrB,MAAA4qB,EAAA+oB,GACA0jG,EAAAtB,EAAAmB,gBAAAnB,EAAAsB,SAGA,OACAzsH,WACAmrH,QACAziI,KAwBA,SAAAjgC,EAAAgkK,EAAA1pK,GACA,IAAA2lF,EAAA,SAAA3lF,EAAA,IAAA0pK,IACA,OAAAhkK,EAAAgmK,EAAAhmK,EAAA,IAAAigF,KA9BAowF,CADA/uK,KAAAupK,QAAA7qK,KACAgkK,EAAA1iK,KAAAhH,MAMAg2K,aAAA/4H,EACA2vC,SAAAw7E,IAIAiN,GAAA50K,UAAA2vK,UAAA,SAAAzC,GACA3mK,KAAA21C,QAAAyzH,UAAAzC,GACA3mK,KAAAupK,QAAAvqG,UAAA6jG,GACA7iK,KAAAupK,QAAA0C,aAAAjsK,KAAAupK,QAAAmE,uBAIAn1K,OAAAgtB,iBAAA8oJ,GAAA50K,UAAA45E,IAeAg7F,GAAAniF,QA5iEA,SAAAA,EAAA/D,GACA,IAAA+D,EAAA+iF,WAAA5L,IAAAl7E,EAAA,CACA+D,EAAA+iF,WAAA,EAEA5L,EAAAl7E,EAEA,IAAAhb,EAAA,SAAAv5D,GAA4B,YAAA1Z,IAAA0Z,GAE5Bs7J,EAAA,SAAA9wK,EAAA+wK,GACA,IAAAt3K,EAAAuG,EAAAsuE,SAAA2X,aACAlX,EAAAt1E,IAAAs1E,EAAAt1E,IAAAuM,OAAA+oE,EAAAt1E,IAAA4pK,wBACA5pK,EAAAuG,EAAA+wK,IAIAhnF,EAAAW,MAAA,CACAhc,aAAA,WACAK,EAAAntE,KAAA0sE,SAAA81F,SACAxiK,KAAAuhK,YAAAvhK,KACAA,KAAAovK,QAAApvK,KAAA0sE,SAAA81F,OACAxiK,KAAAovK,QAAAhmI,KAAAppC,MACAmoF,EAAA0D,KAAAC,eAAA9rF,KAAA,SAAAA,KAAAovK,QAAA7F,QAAAvqG,UAEAh/D,KAAAuhK,YAAAvhK,KAAAy4E,SAAAz4E,KAAAy4E,QAAA8oF,aAAAvhK,KAEAkvK,EAAAlvK,YAEA+kC,UAAA,WACAmqI,EAAAlvK,SAIAzH,OAAAC,eAAA2vF,EAAA1uF,UAAA,WACAf,IAAA,WAA0B,OAAAsH,KAAAuhK,YAAA6N,WAG1B72K,OAAAC,eAAA2vF,EAAA1uF,UAAA,UACAf,IAAA,WAA0B,OAAAsH,KAAAuhK,YAAAkN,UAG1BtmF,EAAAvkD,UAAA,aAAAs9H,GACA/4E,EAAAvkD,UAAA,aAAA4/H,GAEA,IAAAjuF,EAAA4S,EAAAp+E,OAAAulE,sBAEAiG,EAAA85F,iBAAA95F,EAAA+5F,iBAAA/5F,EAAAg6F,kBAAAh6F,EAAA1wC,UAggEAwpI,GAAAtrJ,QAAA,QAEA0tD,GAAA53D,OAAAsvE,KACAtvE,OAAAsvE,IAAA5vD,IAAA81I,IAGe,IAAAmB,GAAA,GCtjFfrnF,IAAI5vD,IAAIk3I,IAEO,IAAAjN,GAAA,IAAIiN,GAAO,CACtBz2K,KAAM,UACN0F,KAAM,YACNioK,OAAQ,CACJ,CACIhoF,KAAM,IACN+oF,SAAU,cAEd,CACI/oF,KAAM,aACN/6C,UAAW6mE,EAAQ,QAAyBzyB,SAEhD,CACI2G,KAAM,cACN/6C,UAAW6mE,EAAQ,QAAgCzyB,SAEvD,CACI2G,KAAM,mBACN/6C,UAAW6mE,EAAQ,QAA8BzyB,QACjDlxD,SAAU,CACN,CACI63D,KAAM,IACNvmF,KAAM,0BACNwrC,UAAW6mE,EAAQ,QAA+BzyB,QAClDxyD,MAAO,CAAClqB,KAAM,UAElB,CACIqjF,KAAM,SACNvmF,KAAM,2BACNwrC,UAAW6mE,EAAQ,QAA+BzyB,QAClDxyD,MAAO,CAAClqB,KAAM,aAI1B,CACIqjF,KAAM,WACN/6C,UAAW6mE,EAAQ,QAA6BzyB,QAChDlxD,SAAU,CACN,CACI63D,KAAM,IACN+oF,SAAU,QAEd,CACI/oF,KAAM,OACN/6C,UAAW6mE,EAAQ,QAA4BzyB,SAEnD,CACI2G,KAAM,SACN/6C,UAAW6mE,EAAQ,QAA8BzyB,WAI7D,CACI2G,KAAM,uBACNvmF,KAAM,iBACNwrC,UAAW6mE,EAAQ,QAA8BzyB,QACjDxyD,OAAO,GAEX,CACIm5D,KAAM,eACNvmF,KAAM,qBACNwrC,UAAW6mE,EAAQ,QAAgCzyB,SAEvD,CACI2G,KAAM,UACN/6C,UAAW6mE,EAAQ,QAA4BzyB,SAEnD,CACI2G,KAAM,iBACNvmF,KAAM,gBACNwrC,UAAW6mE,EAAQ,QAA0BzyB,QAC7CxyD,OAAO,MC5EgLkqJ,GCCnM,CACAt3K,KAAA,oBCgBeu3K,GAXCp3K,OAAA6gC,GAAA,EAAA7gC,CACdm3K,GCRQ,WAAgB,IAAar2I,EAAbr5B,KAAas5B,eAAkD,OAA/Dt5B,KAAuCw5B,MAAAD,IAAAF,GAAwB,gBACzF,IDUA,EACA,KACA,KACA,cEPAxgB,OAAOkrD,EAAIlrD,OAAOqwB,OAASuhE,EAAQ,QACnC5xF,OAAO+a,OAAS62E,EAAQ,QAAazyB,QAErCyyB,EAAQ,QAER1mC,EAAE,QACGp2D,QAAQ,CACLw7B,SAAU,0BAEbzL,MAAM,WACHqmC,EAAE,4BAA4Bp2D,QAAQ,UAG9Cw6E,IAAI1uF,UAAU2gC,MAAQw1I,IAAMz2K,SAE5B0f,OAAOujB,IAAM,IAAI+rD,IAAI,CAAC/vF,KAAM,QAE5B+vF,IAAIvkD,UAAU,SAAU6mE,EAAQ,QAAkCzyB,SAElEmQ,IAAIp+E,OAAO2lE,aAAe,SAAUxpB,EAAK9nD,EAAIo6E,KAI7C2P,IAAIW,MAAM,CACN3uD,QAAS,CAILa,WAJK,SAIM60I,GACP,OAAOxmC,IAAkB,IAAXwmC,GAAiBh0H,KAAI,IAAIrP,MAAOsjI,oBAAsB,KAOxE3pI,YAZK,SAYO/tC,GACR,IAAKA,EAAKotC,SAAS,MAAO,OAAOptC,EAEjC,IAAIo6D,EAAQp6D,EAAKuxB,MAAM,MAEvB,OAAO6oC,EAAMA,EAAMz1D,OAAS,IAOhC2pC,kBAxBK,SAwBa2lG,GACd,OAAOrsI,KAAKg7B,WAAWqxG,GAAWpxG,OAAO,sBAO7CmL,oBAhCK,SAgCetI,GAAsB,IAAhB4c,IAAgB5sC,UAAA/Q,OAAA,QAAA7C,IAAA4T,UAAA,KAAAA,UAAA,GACtC,OAAKgwB,GAASA,EAAK/gC,OAEZk8B,IAAExsB,OAAOqxB,EAAM,SAAClkC,EAAGN,GACtB,OAAQM,EAAIA,EAAI,KAAO,KAAO8gD,EAAWzhB,IAAEyhB,SAASphD,GAAKA,IAC1D,IAJ+B,OAS9C,IAAI6uF,IAAI,CACJrgE,GAAI,QAEJ06I,UAKAp+J,KARI,WASA,MAAO,IAGXqK,OAAQ,SAAAsM,GAAC,OAAIA,EAAE40J,0CCnFnB,IAAAlyK,EAAehG,EAAQ,QACvB0H,EAAe1H,EAAQ,QACvB0L,EAAc1L,EAAQ,QAEtBgG,EAAAyB,KAAA,UACA+C,MAAA,CACAjJ,KAAA,UAGAkJ,OAAA,CACAC,MAAA,EACA7G,KAAA,SACA+G,SAAA,SACAD,GAAA,aAEAE,MAAA,EACAhH,KAAA,SACA+G,SAAA,OACAD,GAAA,cAIAI,SAAA,CACAC,UAAA,CACAC,MAAA,WAEA,UAEAC,MAAA,SAAAC,EAAAwB,GACA,IAAAg7J,EAAAh7J,EAAAC,SAAAzB,EAAAkG,cAAAnG,OAAA,GACAotK,EAAA3rK,EAAAC,SAAAzB,EAAAkG,cAAA1E,KAAAxB,EAAA3B,OACA,OAAAm+J,EAAA,MAAAx8J,EAAAC,OAAA,KAAAD,EAAAE,OAAA,KAAAitK,EAAAp3K,EAAA,SAOAf,EAAAD,QAAA,SAAAoL,GAEAA,EAAAC,YAAAgtK,OAAAjtK,EAAA4C,kBAAAhG,OAAA,CAIAiG,gBAAAzG,EAAAklE,MAKA5+D,OAAA,SAAAO,GACA,IAAAE,EAAAlG,KAEAskE,EADAp+D,EAAAG,UACAjC,KAGAjB,EAAA4D,KAAAu9D,EAAA,SAAAU,EAAA/jE,GACAiF,EAAAc,cAAAg+D,EAAA/jE,EAAA+E,MAOAgB,cAAA,SAAAg+D,EAAA/jE,EAAA+E,GACA,IAAAE,EAAAlG,KACA2E,EAAAuB,EAAAG,UACAvB,EAAAkgE,EAAAlgE,QAAA,GACA2gE,EAAAv/D,EAAAs+D,cAAA7/D,EAAAiM,SACA40D,EAAAt/D,EAAAs+D,cAAA7/D,EAAAkM,SACA5L,EAAAiB,EAAA+pK,uBAAAjrG,EAAA/jE,GACAmD,EAAA8B,EAAAE,aAAAhC,KAAAnD,GACAivK,EAAAhqK,EAAAjF,MAEA3C,EAAA0H,EAAAy/D,EAAA0qG,mBAAA,IAAA1qG,EAAA1wC,iBAAA,iBAAA3wB,IAAA0hE,IAAA7kE,EAAAivK,GACAzxK,EAAAuH,EAAAw/D,EAAA5vC,eAAA4vC,EAAAzwC,iBAAA3wB,EAAAnD,EAAAivK,GAEAlrG,EAAAgB,QAAAP,EACAT,EAAAiB,QAAAT,EACAR,EAAAh3D,SAAA/I,EACA+/D,EAAA78D,cAAA+nK,EACAlrG,EAAA58D,OAAAnH,EACA+jE,EAAA18D,OAAA,CACAjJ,gBAAA4F,EAAA5F,gBACAG,YAAAyF,EAAAzF,YACAE,YAAAuF,EAAAvF,YACAkmE,UAAA3gE,EAAA2gE,UACAjmC,WAAA16B,EAAA06B,WACA4lC,SAAAtgE,EAAAsgE,SACAlmD,OAAArZ,EAAA,EAAAf,EAAAoa,OACAk4B,KAAAzyC,EAAAyyC,MAAAnyC,MAAA9G,IAAA8G,MAAA3G,GACAH,IACAG,KAGAumE,EAAAt8D,SAMA6+D,cAAA,SAAAvC,GACA,IAAAv8D,EAAAu8D,EAAA18D,OACArD,EAAA+/D,EAAAh3D,SACAg3D,EAAAwC,eAAA,CACAnoE,gBAAAoJ,EAAApJ,gBACAG,YAAAiJ,EAAAjJ,YACAE,YAAA+I,EAAA/I,YACA2f,OAAA5W,EAAA4W,QAEA5W,EAAApJ,gBAAA8D,EAAAqF,eAAAvD,EAAAwiE,qBAAAtkE,EAAAwkE,cAAA1iE,EAAA5F,kBACAoJ,EAAAjJ,YAAA2D,EAAAqF,eAAAvD,EAAA2iE,iBAAAzkE,EAAAwkE,cAAA1iE,EAAAzF,cACAiJ,EAAA/I,YAAAyD,EAAAqF,eAAAvD,EAAA6iE,iBAAA7iE,EAAAvF,aACA+I,EAAA4W,OAAApa,EAAAoa,OAAApa,EAAA+iE,aAMAioG,uBAAA,SAAAjrG,EAAA/jE,GACA,IASApJ,EAAA2N,EAAApM,EARA8K,EADAlE,KACAkE,MAEAiC,EADAjC,EAAAE,KAAAC,SAFArE,KAGAiB,OACA6D,EAAAkgE,EAAAlgE,QAAA,GACAG,EAAAf,EAAAe,QAAA9F,SAAA6lE,MACAj8D,EAAA5F,EAAA8B,QAAA8D,QACA3E,EAAA+B,EAAA/B,KAAAnD,GACA6R,EAAA,GAIAlK,EAAA,CACA1E,QACA2E,UAAA5H,EACAkF,UACA2C,aAhBA9I,KAgBAiB,OAGAuL,EAAA,CACA,kBACA,cACA,cACA,uBACA,mBACA,mBACA,cACA,YACA,aACA,YAGA,IAAA3U,EAAA,EAAA2N,EAAAgH,EAAAzP,OAAkClF,EAAA2N,IAAU3N,EAE5Cib,EADA1Z,EAAAoT,EAAA3U,IACAkR,EAAA,CACAjE,EAAA1L,GACA+M,EAAA/M,GACA6L,EAAA7L,IACAwP,EAAA3H,GAUA,OANA6R,EAAAuM,OAAAtW,EAAA,CACAjE,EAAAua,OACAjb,IAAAzL,OAAAuB,EACAiM,EAAAkZ,OACApa,EAAAoa,QACAzW,EAAA3H,GACA6R,yCCvKA,IAAArV,EAAehG,EAAQ,QACvBiG,EAAcjG,EAAQ,QACtB0L,EAAc1L,EAAQ,QACtBshB,EAAYthB,EAAQ,QA8DpB,SAAA24K,EAAA1sK,GACA,IACA7L,EAAA2N,EADAlB,EAAA,GAGA,IAAAzM,EAAA,EAAA2N,EAAA9B,EAAA3G,OAAiClF,EAAA2N,IAAU3N,EAC3CyM,EAAAxH,KAAA4G,EAAA7L,GAAA8K,OAGA,OAAA2B,EAGA,SAAA+rK,EAAAjtK,EAAAnC,EAAA89J,GACA,IAAAuR,EAAAltK,EAAAkyB,gBAAAr0B,GASA,OAPA89J,IAEAuR,GADA,IAAArvK,GACAmC,EAAAkyB,gBAAA,GAAAg7I,GAAA,GAEAA,EAAAltK,EAAAkyB,gBAAAr0B,EAAA,OAGAqvK,EAGA,SAAAC,EAAA3nK,EAAAuqD,EAAA94C,GACA,OAAAlX,EAAAwX,QAAAw4C,GACAhwD,EAAA8Z,YAAArU,EAAAyR,EAAA84C,GACAvqD,EAAAsU,YAAAi2C,GAAAr1D,MAGA,SAAA0yK,EAAAvrK,GACA,IAAAuD,EAAArF,EAAAqF,eACAwQ,EAAAvb,EAAA6B,OACA6a,EAAA3R,EAAAvD,EAAAyU,SAAAV,EAAAc,iBACAjO,EAAArD,EAAAvD,EAAA8U,UAAAf,EAAAgB,kBACAI,EAAA5R,EAAAvD,EAAAgV,WAAAjB,EAAAkB,mBAEA,OACAC,OACAtO,QACAuO,SACAC,KAAAlX,EAAAmX,WAAAH,EAAAtO,EAAAuO,IAIA,SAAAq2J,EAAAxrK,GACA,OAAA9B,EAAA8B,QAAAg+B,aACA9/B,EAAAqF,eAAAvD,EAAAysD,WAAA,KACAvuD,EAAAqF,eAAAvD,EAAAyU,SAAAjc,EAAA6B,OAAAwa,kBA5GArc,EAAAyB,KAAA,SACAoE,SAAA,EACAjB,SAAA,OACA2rB,QAAA,EAGAzqB,UAAA,CACAD,SAAA,EACA6V,MAAA,qBACAtY,UAAA,EACA6vK,YAAA,EACAC,iBAAA,EACAC,WAAA,EACAC,eAAA,GACAC,cAAA,EACAC,cAAA,mBACAC,mBAAA,GACAC,yBAAA,EACAlS,iBAAA,EACAz/H,WAAA,GACAE,iBAAA,GAIA0xI,WAAA,CAEA5tK,SAAA,EAGA6tK,YAAA,GAGAz/G,WAAA,IAGAxpC,QAAA,CACAnpB,IAAA,EACAE,OAAA,IAKAyE,MAAA,CACAC,aAAA,EACAytK,YAAA,EACAxiC,YAAA,GACAyiC,QAAA,EACAnpJ,QAAA,EACAxJ,SAAA,EACApb,SAAA,EACA4rI,UAAA,EACAoiC,gBAAA,EACAC,YAAA,EAEAziK,SAAAiK,EAAAS,WAAA1G,OACAy4H,MAAA,GACAI,MAAA,MAuDA/zI,EAAAD,QAAA+F,EAAAiC,OAAA,CAOA6xK,WAAA,WAEA,OACA1yK,KAFAkB,KAEAygC,aAAA,EACA1hC,IAHAiB,KAGA0gC,YAAA,EACA1hC,MAJAgB,KAIA2gC,cAAA,EACA1hC,OALAe,KAKA4gC,eAAA,IAQA2tG,SAAA,WACA,OAAAvuI,KAAAy1B,QAOAxoB,kBAAA,WACA,IAAAvJ,EAAA1D,KAAAiF,QAAAvB,MAWA,QAAAtK,KAVA,IAAAsK,EAAA6nI,QACA7nI,EAAA6nI,MAAA,CACAjoI,SAAA,KAGA,IAAAI,EAAAioI,QACAjoI,EAAAioI,MAAA,CACAroI,SAAA,IAGAI,EACA,UAAAtK,GAAA,UAAAA,SACA,IAAAsK,EAAA6nI,MAAAnyI,KACAsK,EAAA6nI,MAAAnyI,GAAAsK,EAAAtK,SAEA,IAAAsK,EAAAioI,MAAAvyI,KACAsK,EAAAioI,MAAAvyI,GAAAsK,EAAAtK,MAKA2mC,aAAA,WACA58B,EAAA2L,SAAA9O,KAAAiF,QAAA86B,aAAA,CAAA//B,QAGAyF,OAAA,SAAA8V,EAAAC,EAAAwkB,GACA,IACAnoC,EAAA2N,EAAAlB,EAAA3B,EAAAe,EAAAyvD,EADAjtD,EAAAlG,KAwDA,IApDAkG,EAAA65B,eAGA75B,EAAAqV,WACArV,EAAAsV,YACAtV,EAAA85B,QAAA78B,EAAAxD,OAAA,CACAb,KAAA,EACAE,MAAA,EACAD,IAAA,EACAE,OAAA,GACG+gC,GACH95B,EAAAurK,iBAAAvrK,EAAAurK,kBAAA,GAGAvrK,EAAA+5B,sBACA/5B,EAAAmV,gBACAnV,EAAAg6B,qBAGAh6B,EAAAwrK,mBACAxrK,EAAAyV,sBACAzV,EAAAyrK,kBASAzrK,EAAA8yB,mBAIAt1B,EAAAwC,EAAA4uB,cAAA,GAEA5uB,EAAA0rK,kBAEA1rK,EAAA2rK,8BAKAvtK,EAAA4B,EAAAmW,qBAAA3Y,IAAAwC,EAAAxC,MAEAwC,EAAAgzB,6BAEAhzB,EAAAxC,MAAAY,EAKAzM,EAAA,EAAA2N,EAAAlB,EAAAvH,OAAmClF,EAAA2N,IAAU3N,EAC7C8K,EAAA2B,EAAAzM,IACAs7D,EAAAzvD,EAAA7L,IAOAs7D,EAAAxwD,QALAe,EAAA5G,KAAAq2D,EAAA,CACAxwD,QACAgpI,OAAA,IAoBA,OAbAzlI,EAAAuvB,OAAA/xB,EAGAwC,EAAA4rK,8BACA5rK,EAAA6rK,wBACA7rK,EAAA8rK,6BAEA9rK,EAAAo6B,YACAp6B,EAAAqW,MACArW,EAAAq6B,WAEAr6B,EAAAs6B,cAEAt6B,EAAAiB,SAGAq5B,YAAA,WACAr9B,EAAA2L,SAAA9O,KAAAiF,QAAAu7B,YAAA,CAAAxgC,QAKAigC,oBAAA,WACA98B,EAAA2L,SAAA9O,KAAAiF,QAAAg7B,oBAAA,CAAAjgC,QAEAqb,cAAA,WACA,IAAAnV,EAAAlG,KAEAkG,EAAAuuB,gBAEAvuB,EAAApI,MAAAoI,EAAAqV,SACArV,EAAApH,KAAA,EACAoH,EAAAlH,MAAAkH,EAAApI,QAEAoI,EAAArH,OAAAqH,EAAAsV,UAGAtV,EAAAnH,IAAA,EACAmH,EAAAjH,OAAAiH,EAAArH,QAIAqH,EAAAu6B,YAAA,EACAv6B,EAAAw6B,WAAA,EACAx6B,EAAAy6B,aAAA,EACAz6B,EAAA06B,cAAA,GAEAV,mBAAA,WACA/8B,EAAA2L,SAAA9O,KAAAiF,QAAAi7B,mBAAA,CAAAlgC,QAIA0xK,iBAAA,WACAvuK,EAAA2L,SAAA9O,KAAAiF,QAAAysK,iBAAA,CAAA1xK,QAEA2b,oBAAAxY,EAAA4C,KACA4rK,gBAAA,WACAxuK,EAAA2L,SAAA9O,KAAAiF,QAAA0sK,gBAAA,CAAA3xK,QAIAg5B,iBAAA,WACA71B,EAAA2L,SAAA9O,KAAAiF,QAAA+zB,iBAAA,CAAAh5B,QAEA80B,WAAA3xB,EAAA4C,KACA6rK,gBAAA,WACAzuK,EAAA2L,SAAA9O,KAAAiF,QAAA2sK,gBAAA,CAAA5xK,QAGA6xK,4BAAA,WACA1uK,EAAA2L,SAAA9O,KAAAiF,QAAA4sK,4BAAA,CAAA7xK,QAEAqc,qBAAA,WACA,IAEAf,EAFAtb,KAEAiF,QAAAvB,MAFA1D,KAGA0D,MAHA1D,KAGA0D,MAAAgB,IAAA4W,EAAA+yH,cAAA/yH,EAAAxM,SAAA9O,OAEAk5B,2BAAA,WACA/1B,EAAA2L,SAAA9O,KAAAiF,QAAAi0B,2BAAA,CAAAl5B,QAKA8xK,4BAAA,WACA3uK,EAAA2L,SAAA9O,KAAAiF,QAAA6sK,4BAAA,CAAA9xK,QAEA+xK,sBAAA,WACA,IAAA7rK,EAAAlG,KACA4I,EAAA1C,EAAAnG,IACAub,EAAApV,EAAAjB,QAAAvB,MACAY,EAAA8rK,EAAAlqK,EAAAuvB,QAIAw8I,EAAAzB,EAAAl1J,GACA1S,EAAAyR,KAAA43J,EAAA53J,KAEA,IAAA63J,EAAA52J,EAAA81J,aAAA,EAEA,GAAA9sK,EAAAvH,QAAAmJ,EAAAjB,QAAA3B,SAAA4C,EAAAuuB,eASA,IARA,IAEAo6G,EAFAsjC,EAAAhvK,EAAA8Z,YAAArU,EAAAqpK,EAAA53J,KAAA/V,EAAA4B,EAAAurK,kBACA5xJ,EAAAsyJ,EAIAC,EAAAlsK,EAAAovB,gBAAA,GAAApvB,EAAAovB,gBAAA,KAGAzV,EAAAuyJ,GAAAF,EAAA52J,EAAAszH,aAAA,CACA,IAAAzxH,EAAAha,EAAAwrI,UAAAujC,GAIA,GAHArjC,EAAAtwI,KAAAwf,IAAAZ,GACA5e,KAAAqf,IAAAT,GAEAg1J,EAAAjsK,EAAAsV,UAAA,CAEA02J,IACA,MAGAA,IACAryJ,EAAAgvH,EAAAsjC,EAIAjsK,EAAAgsK,iBAEAF,2BAAA,WACA7uK,EAAA2L,SAAA9O,KAAAiF,QAAA+sK,2BAAA,CAAAhyK,QAKAsgC,UAAA,WACAn9B,EAAA2L,SAAA9O,KAAAiF,QAAAq7B,UAAA,CAAAtgC,QAEAuc,IAAA,WACA,IAAArW,EAAAlG,KAEAmH,EAAAjB,EAAAiB,QAAA,CACArJ,MAAA,EACAe,OAAA,GAGAyF,EAAA8rK,EAAAlqK,EAAAuvB,QAEAvuB,EAAAhB,EAAAjB,QACAqW,EAAApU,EAAAxD,MACA2uK,EAAAnrK,EAAAgqK,WACAnyJ,EAAA7X,EAAA3D,UACAD,EAAA4D,EAAA5D,QACAmxB,EAAAvuB,EAAAuuB,eAEAw9I,EAAAzB,EAAAl1J,GACAu1J,EAAA3pK,EAAA3D,UAAAstK,eAkBA,GAbA1pK,EAAArJ,MAFA22B,EAEAvuB,EAAAosK,cAAApsK,EAAAqV,SAAArV,EAAA85B,QAAAlhC,KAAAoH,EAAA85B,QAAAhhC,MAAAkH,EAAAqV,SAEAjY,GAAAyb,EAAA6xJ,UAAAC,EAAA,EAKA1pK,EAAAtI,OADA41B,EACAnxB,GAAAyb,EAAA6xJ,UAAAC,EAAA,EAEA3qK,EAAAsV,UAIA62J,EAAA/uK,WAAA,CACA,IAEAivK,EAFA9B,EAAA4B,GACAlvK,EAAA8B,QAAAk+B,UAAAkvI,EAAAnqJ,SACArpB,OAEA41B,EACAttB,EAAAtI,QAAA0zK,EAEAprK,EAAArJ,OAAAy0K,EAKA,GAAAj3J,EAAAhY,WAAA,CACA,IAAAkvK,EAAArvK,EAAA8Z,YAAA/W,EAAAnG,IAAAkyK,EAAA53J,KAAA/V,EAAA4B,EAAAurK,kBACAgB,EAAAtvK,EAAAuvK,mBAAApuK,GACAquK,EAAA,GAAAV,EAAA93J,KACAy4J,EAAA1sK,EAAAjB,QAAAvB,MAAAwkB,QAEA,GAAAuM,EAAA,CAEAvuB,EAAA2sK,kBAAAL,EAEA,IAAAr1J,EAAAha,EAAAwrI,UAAAzoI,EAAAgsK,eACArjC,EAAAtwI,KAAAwf,IAAAZ,GAIA21J,EAHAv0K,KAAAqf,IAAAT,GAGAq1J,EACAP,EAAA93J,KAAAs4J,EACAE,GAAAF,EAAA,GACAE,EAEAxrK,EAAAtI,OAAAN,KAAAC,IAAA0H,EAAAsV,UAAArU,EAAAtI,OAAAi0K,EAAAF,GAEA1sK,EAAAnG,IAAAsa,KAAA43J,EAAA53J,KACA,IAAA04J,EAAAxC,EAAArqK,EAAAnG,IAAAuE,EAAA,GAAA2tK,EAAA53J,MACA24J,EAAAzC,EAAArqK,EAAAnG,IAAAuE,IAAAvH,OAAA,GAAAk1K,EAAA53J,MAIA,IAAAnU,EAAAgsK,eACAhsK,EAAAu6B,YAAA,WAAAv5B,EAAA7E,SAAAwsI,EAAAkkC,EAAA,EAAAlkC,EAAA8jC,EAAA,EACAzsK,EAAAy6B,aAAA,WAAAz5B,EAAA7E,SAAAwsI,EAAA8jC,EAAA,EAAA9jC,EAAAmkC,EAAA,IAEA9sK,EAAAu6B,YAAAsyI,EAAA,IACA7sK,EAAAy6B,aAAAqyI,EAAA,UAKA13J,EAAA+1J,OACAmB,EAAA,EAIAA,GAAAI,EAAAD,EAGAxrK,EAAArJ,MAAAS,KAAAC,IAAA0H,EAAAqV,SAAApU,EAAArJ,MAAA00K,GAEAtsK,EAAAw6B,WAAAuxI,EAAA93J,KAAA,EACAjU,EAAA06B,cAAAqxI,EAAA93J,KAAA,EAIAjU,EAAA+sK,gBAEA/sK,EAAApI,MAAAqJ,EAAArJ,MACAoI,EAAArH,OAAAsI,EAAAtI,QAOAo0K,cAAA,WACA,IAAA/sK,EAAAlG,KACAkG,EAAA85B,UACA95B,EAAAu6B,YAAAliC,KAAAI,IAAAuH,EAAAu6B,YAAAv6B,EAAA85B,QAAAlhC,KAAA,GACAoH,EAAAw6B,WAAAniC,KAAAI,IAAAuH,EAAAw6B,WAAAx6B,EAAA85B,QAAAjhC,IAAA,GACAmH,EAAAy6B,aAAApiC,KAAAI,IAAAuH,EAAAy6B,aAAAz6B,EAAA85B,QAAAhhC,MAAA,GACAkH,EAAA06B,cAAAriC,KAAAI,IAAAuH,EAAA06B,cAAA16B,EAAA85B,QAAA/gC,OAAA,KAIAshC,SAAA,WACAp9B,EAAA2L,SAAA9O,KAAAiF,QAAAs7B,SAAA,CAAAvgC,QAIAy0B,aAAA,WACA,cAAAz0B,KAAAiF,QAAA5C,UAAA,WAAArC,KAAAiF,QAAA5C,UAEAiwK,YAAA,WACA,OAAAtyK,KAAAiF,QAAA,WAIA+W,cAAA,SAAAD,GAEA,GAAA5Y,EAAAuM,cAAAqM,GACA,OAAA+pD,IAGA,oBAAA/pD,IAAA+Q,SAAA/Q,GACA,OAAA+pD,IAGA,GAAA/pD,EACA,GAAA/b,KAAAy0B,gBACA,QAAAv6B,IAAA6hB,EAAAzd,EACA,OAAA0B,KAAAgc,cAAAD,EAAAzd,QAEI,QAAApE,IAAA6hB,EAAAtd,EACJ,OAAAuB,KAAAgc,cAAAD,EAAAtd,GAKA,OAAAsd,GAQAO,iBAAAnZ,EAAA4C,KASAgvB,iBAAA5xB,EAAA4C,KAOAwvB,iBAAApyB,EAAA4C,KAMAuvB,gBAAA,SAAAr0B,GACA,IAAAiF,EAAAlG,KACAguB,EAAA9nB,EAAAjB,QAAA+oB,OACA,GAAA9nB,EAAAuuB,eAAA,CACA,IACA29I,GADAlsK,EAAApI,OAAAoI,EAAAu6B,YAAAv6B,EAAAy6B,eACApiC,KAAAI,IAAAuH,EAAAuvB,OAAA14B,QAAAixB,EAAA,QACAwH,EAAA48I,EAAAnxK,EAAAiF,EAAAu6B,YAEAzS,IACAwH,GAAA48I,EAAA,GAGA,IAAAc,EAAAhtK,EAAApH,KAAAP,KAAAka,MAAA+c,GAEA,OADA09I,GAAAhtK,EAAAosK,cAAApsK,EAAA85B,QAAAlhC,KAAA,EAGA,IAAA0pB,EAAAtiB,EAAArH,QAAAqH,EAAAw6B,WAAAx6B,EAAA06B,eACA,OAAA16B,EAAAnH,IAAAkC,GAAAunB,GAAAtiB,EAAAuvB,OAAA14B,OAAA,KAOAozK,mBAAA,SAAAgD,GACA,IAAAjtK,EAAAlG,KACA,GAAAkG,EAAAuuB,eAAA,CACA,IACA2+I,GADAltK,EAAApI,OAAAoI,EAAAu6B,YAAAv6B,EAAAy6B,eACAwyI,EAAAjtK,EAAAu6B,YAEAyyI,EAAAhtK,EAAApH,KAAAP,KAAAka,MAAA26J,GAEA,OADAF,GAAAhtK,EAAAosK,cAAApsK,EAAA85B,QAAAlhC,KAAA,EAGA,OAAAoH,EAAAnH,IAAAo0K,EAAAjtK,EAAArH,QAOA+2B,aAAA,WACA,OAAA51B,KAAA+0B,iBAAA/0B,KAAAqzK,iBAGAA,aAAA,WACA,IACA70K,EADAwB,KACAxB,IACAG,EAFAqB,KAEArB,IAEA,OAJAqB,KAIA2D,YAAA,EACAnF,EAAA,GAAAG,EAAA,EAAAA,EACAH,EAAA,GAAAG,EAAA,EAAAH,EACA,GAOA80K,UAAA,SAAA5vK,GACA,IAAA6vK,EASA17K,EAAAs7D,EAGAsrG,EAXAv4J,EAAAlG,KACAy0B,EAAAvuB,EAAAuuB,eACA++I,EAAAttK,EAAAjB,QAAAvB,MAAA6nI,MACAkoC,EAAA/vK,EAAA3G,OACA22K,EAAAvwK,EAAAwrI,UAAAzoI,EAAAgsK,eACArjC,EAAAtwI,KAAAwf,IAAA21J,GACAC,EAAAztK,EAAA2sK,kBAAAhkC,EACAh3H,EAAA,GAuBA,IAlBA27J,EAAAr3J,gBACAsiJ,EAAA+U,EAAAr3J,eAGAsY,IACA8+I,GAAA,GAEAI,EAAAH,EAAAlC,iBAAAmC,EAAAvtK,EAAApI,OAAAoI,EAAAu6B,YAAAv6B,EAAAy6B,gBACA4yI,EAAA,EAAAh1K,KAAAkN,OAAAkoK,EAAAH,EAAAlC,iBAAAmC,GAAAvtK,EAAApI,OAAAoI,EAAAu6B,YAAAv6B,EAAAy6B,iBAKA89H,GAAAgV,EAAAhV,IACA8U,EAAAh1K,KAAAI,IAAA40K,EAAAh1K,KAAAkN,MAAAgoK,EAAAhV,MAIA5mK,EAAA,EAAaA,EAAA47K,EAAe57K,IAC5Bs7D,EAAAzvD,EAAA7L,IAGA07K,EAAA,GAAA17K,EAAA07K,EAAA,GAAA17K,EAAA07K,GAAA,GAAA17K,EAAA07K,GAAAE,IACA57K,IAAA47K,EAAA,UAEAtgH,EAAAxwD,MAEAkV,EAAA/a,KAAAq2D,GAEA,OAAAt7C,GAKAjY,KAAA,SAAAqH,GACA,IAAAf,EAAAlG,KACAiF,EAAAiB,EAAAjB,QACA,GAAAA,EAAA3B,QAAA,CAIA,IAAAsF,EAAA1C,EAAAnG,IACAiZ,EAAAvb,EAAA6B,OACAk0K,EAAAvuK,EAAAvB,MAAA6nI,MACAqoC,EAAA3uK,EAAAvB,MAAAioI,OAAA6nC,EACAjwK,EAAA0B,EAAA1B,UACA2tK,EAAAjsK,EAAAisK,WAEA2C,EAAA,IAAA3tK,EAAAgsK,cACAz9I,EAAAvuB,EAAAuuB,eAEA/wB,EAAA8vK,EAAAtkC,SAAAhpI,EAAAotK,UAAAptK,EAAAqoI,YAAAroI,EAAAqoI,WACA/uH,EAAArc,EAAAqF,eAAAgrK,EAAA/zJ,UAAAzG,EAAA0G,kBACAuyJ,EAAAzB,EAAAgD,GACAM,EAAA3wK,EAAAqF,eAAAorK,EAAAn0J,UAAAzG,EAAA0G,kBACAq0J,EAAAvD,EAAAoD,GAEAI,EAAAzwK,EAAAqtK,UAAArtK,EAAAstK,eAAA,EAEAoD,EAAA9wK,EAAAqF,eAAA0oK,EAAAzxJ,UAAAzG,EAAA0G,kBACAw0J,EAAA1D,EAAAU,GACAiD,EAAAhxK,EAAA8B,QAAAk+B,UAAA+tI,EAAAhpJ,SACAwrJ,EAAAvwK,EAAAwrI,UAAAzoI,EAAAgsK,eAEAkC,EAAA,GAEAC,EAAAnuK,EAAAjB,QAAA1B,UAAA1C,UACAyzK,EAAA,UAAArvK,EAAA5C,SAAA6D,EAAApH,KAAAoH,EAAAlH,MAAAq1K,EAAAL,EACAO,EAAA,UAAAtvK,EAAA5C,SAAA6D,EAAApH,KAAAk1K,EAAA9tK,EAAAlH,MACAw1K,EAAA,WAAAvvK,EAAA5C,SAAA6D,EAAAnH,IAAAs1K,EAAAnuK,EAAAjH,OAAA+0K,EAAAK,EACAI,EAAA,WAAAxvK,EAAA5C,SAAA6D,EAAAnH,IAAAs1K,EAAAL,EAAA9tK,EAAAjH,OAAAo1K,EAqKA,GAnKAlxK,EAAA4D,KAAArD,EAAA,SAAAyvD,EAAAlyD,GAEA,IAAAkC,EAAAuM,cAAAyjD,EAAAxwD,OAAA,CAIA,IACA9B,EAAA6zK,EAAAp1I,EAAAE,EAeAm1I,EAAAC,EAAAC,EAAAC,EAAA92K,EAAAE,EAAAD,EAAAE,EAAA42K,EAAAC,EAhBAryK,EAAAwwD,EAAAxwD,MAEA1B,IAAAiF,EAAA+uK,eAAAhwK,EAAA+oB,SAAAzqB,EAAAw7J,iBAEAl+J,EAAA0C,EAAAutK,cACA4D,EAAAnxK,EAAAwtK,cACAzxI,EAAA/7B,EAAAytK,mBACAxxI,EAAAj8B,EAAA0tK,2BAEApwK,EAAAsC,EAAA4B,sBAAAxB,EAAA1C,UAAAI,GACAyzK,EAAAvxK,EAAA4B,sBAAAxB,EAAA4V,MAAAlY,GACAq+B,EAAAn8B,EAAAqF,eAAAjF,EAAA+7B,WAAAtmB,EAAAsmB,YACAE,EAAAr8B,EAAAqF,eAAAjF,EAAAi8B,iBAAAxmB,EAAAwmB,mBAKA,IAAAzf,EAAA,SACAC,EAAA,SACA4yJ,EAAAY,EAAAtrJ,QAEA,GAAAuM,EAAA,CACA,IAAAygJ,EAAAlB,EAAApB,EAEA,WAAA3tK,EAAA5C,UAEA2d,EAAA6zJ,EAAA,eACA9zJ,EAAA8zJ,EAAA,iBACAmB,EAAA9uK,EAAAnH,IAAAm2K,IAGAl1J,EAAA6zJ,EAAA,kBACA9zJ,EAAA8zJ,EAAA,gBACAmB,EAAA9uK,EAAAjH,OAAAi2K,GAGA,IAAAC,EAAA9E,EAAAnqK,EAAAjF,EAAAsC,EAAAw7J,iBAAAr7J,EAAA3G,OAAA,GACAo4K,EAAAjvK,EAAApH,OACA41K,EAAA,iBAEAS,GAAAhyK,EAAAiyK,WAAAv0K,GAEAk0K,EAAA7uK,EAAAovB,gBAAAr0B,GAAAuyK,EAAAjC,YAEAoD,EAAAE,EAAA72K,EAAAC,EAAAk3K,EACAP,EAAAJ,EACAM,EAAAL,EACAv2K,EAAA+I,EAAAlI,IACAZ,EAAA8I,EAAAhI,OAAAo1K,MACI,CACJ,IACAgB,EADAC,EAAA,SAAArwK,EAAA5C,SAGAmxK,EAAAnC,QACAtxJ,EAAAu1J,EAAA,eACAD,EAAAzC,IAEA7yJ,EAAAu1J,EAAA,eACAD,EAAArB,EAAApB,GAGAmC,EAAAO,EAAApvK,EAAAlH,MAAAq2K,EAAAnvK,EAAApH,KAAAu2K,EAEA,IAAAE,EAAAlF,EAAAnqK,EAAAjF,EAAAsC,EAAAw7J,iBAAAr7J,EAAA3G,OAAA,GACAw4K,EAAArvK,EAAAnH,MACA21K,EAAA,iBAEAa,GAAApyK,EAAAiyK,WAAAv0K,GAEAm0K,EAAA9uK,EAAAovB,gBAAAr0B,GAAAuyK,EAAAjC,YAEAoD,EAAAL,EACAO,EAAAN,EACAv2K,EAAAiJ,EAAAnI,KACAb,EAAAgJ,EAAAjI,MAAAq1K,EACAO,EAAAE,EAAA52K,EAAAC,EAAAo3K,EAGAnB,EAAAt3K,KAAA,CACA63K,MACAC,MACAC,MACAC,MACA92K,KACAE,KACAD,KACAE,KACA42K,SACAC,SACAQ,QAAA30K,EACA40K,QAAAf,EACAgB,aAAAp2I,EACAq2I,mBAAAn2I,EACA+lC,UAAA,EAAAmuG,EACA/wK,QACAgpI,MAAAx4E,EAAAw4E,MACA3rH,eACAD,iBAKA5c,EAAA4D,KAAAqtK,EAAA,SAAAwB,GA0BA,GAzBAryK,EAAAD,UACAsF,EAAA+W,OACA/W,EAAA/H,UAAA+0K,EAAAJ,QACA5sK,EAAAhI,YAAAg1K,EAAAH,QACA7sK,EAAAm5B,cACAn5B,EAAAm5B,YAAA6zI,EAAAF,cACA9sK,EAAA22B,eAAAq2I,EAAAD,oBAGA/sK,EAAAlI,YAEA6C,EAAAqtK,YACAhoK,EAAAzH,OAAAy0K,EAAAjB,IAAAiB,EAAAhB,KACAhsK,EAAAxH,OAAAw0K,EAAAf,IAAAe,EAAAd,MAGAvxK,EAAAotK,kBACA/nK,EAAAzH,OAAAy0K,EAAA53K,GAAA43K,EAAA13K,IACA0K,EAAAxH,OAAAw0K,EAAA33K,GAAA23K,EAAAz3K,KAGAyK,EAAAtH,SACAsH,EAAAqX,WAGAuzJ,EAAAlwK,QAAA,CAEAsF,EAAA+W,OACA/W,EAAAgX,UAAAg2J,EAAAb,OAAAa,EAAAZ,QACApsK,EAAAuO,OAAAy+J,EAAArwG,UACA38D,EAAAyR,KAAAu7J,EAAAjqC,MAAAooC,EAAA15J,KAAA43J,EAAA53J,KACAzR,EAAAjI,UAAAi1K,EAAAjqC,MAAAmoC,EAAAt0J,EACA5W,EAAAoX,aAAA41J,EAAA51J,aACApX,EAAAmX,UAAA61J,EAAA71J,UAEA,IAAApd,EAAAizK,EAAAjzK,MACA,GAAAQ,EAAAwX,QAAAhY,GAKA,IAJA,IAAAkzK,EAAAlzK,EAAA5F,OACA20D,EAAA,IAAAugH,EAAA93J,KACA1b,EAAAyH,EAAAuuB,eAAA,GAAAi9B,GAAAmkH,EAAA,KAEAh+K,EAAA,EAAoBA,EAAAg+K,IAAeh+K,EAEnC+Q,EAAA8R,SAAA,GAAA/X,EAAA9K,GAAA,EAAA4G,GAEAA,GAAAizD,OAGA9oD,EAAA8R,SAAA/X,EAAA,KAEAiG,EAAAqX,aAIAixJ,EAAA5tK,QAAA,CAEA,IAAAwyK,EACAC,EACAxwG,EAAA,EACAywG,EAAAvF,EAAAS,GAAA,EAEA,GAAAz8I,EACAqhJ,EAAA5vK,EAAApH,MAAAoH,EAAAlH,MAAAkH,EAAApH,MAAA,EACAi3K,EAAA,WAAA9wK,EAAA5C,SACA6D,EAAAjH,OAAA+2K,EAAA7B,EAAAl1K,OACAiH,EAAAnH,IAAAi3K,EAAA7B,EAAAp1K,QACI,CACJ,IAAAu2K,EAAA,SAAArwK,EAAA5C,SACAyzK,EAAAR,EACApvK,EAAApH,KAAAk3K,EAAA7B,EAAAp1K,IACAmH,EAAAlH,MAAAg3K,EAAA7B,EAAAp1K,IACAg3K,EAAA7vK,EAAAnH,KAAAmH,EAAAjH,OAAAiH,EAAAnH,KAAA,EACAwmE,EAAA+vG,GAAA,GAAA/2K,KAAAyF,GAAA,GAAAzF,KAAAyF,GAGA4E,EAAA+W,OACA/W,EAAAgX,UAAAk2J,EAAAC,GACAntK,EAAAuO,OAAAouD,GACA38D,EAAAmX,UAAA,SACAnX,EAAAoX,aAAA,SACApX,EAAAjI,UAAAszK,EACArrK,EAAAyR,KAAA65J,EAAA75J,KACAzR,EAAA8R,SAAAw2J,EAAAC,YAAA,KACAvoK,EAAAqX,UAGA,GAAA1c,EAAAmtK,WAAA,CAEA9nK,EAAA/H,UAAAsC,EAAA4B,sBAAAxB,EAAA1C,UAAA,GACA+H,EAAAhI,YAAAuC,EAAA4B,sBAAAxB,EAAA4V,MAAA,GACA,IAAAnb,EAAAkI,EAAApH,KACAb,EAAAiI,EAAAlH,MAAAq1K,EACAn2K,EAAAgI,EAAAnH,IACAZ,EAAA+H,EAAAjH,OAAAo1K,EAEAe,EAAAjyK,EAAAiyK,WAAAxsK,EAAA/H,WACA4zB,GACAv2B,EAAAC,EAAA,QAAA8G,EAAA5C,SAAA6D,EAAAjH,OAAAiH,EAAAnH,IACAb,GAAAk3K,EACAj3K,GAAAi3K,IAEAp3K,EAAAC,EAAA,SAAAgH,EAAA5C,SAAA6D,EAAAlH,MAAAkH,EAAApH,KACAd,GAAAo3K,EACAn3K,GAAAm3K,GAGAxsK,EAAAlI,YACAkI,EAAAzH,OAAAnD,EAAAE,GACA0K,EAAAxH,OAAAnD,EAAAE,GACAyK,EAAAtH,wDCl6BA,sECAyM20K,ECMzM,CACAr8I,WAAA,CAAAC,OAAAC,EAAA,EAAA0N,SAAA,GAMApjC,KAPA,WAQA,OACA8xK,MAAA,GACAC,QAAA,GACAC,SAAA,GACAh7H,OAAA,IAQAxiB,QApBA,WAqBAhY,SAAAle,MAAA,sBAEA1C,KAAAq2K,4BAOAtxI,UA9BA,WA+BA3O,aAAAp2B,KAAA22B,UAIAy3B,SAAA,CAIAkoH,iBAJA,WAKA,OAAAt2K,KAAAo7C,MAAA,aAAA1uC,OAEA1M,KAAAu2K,gBAAAv2K,KAAAk2K,MAAAM,QAAAC,aADA,kBAQAC,qBAdA,WAeA,OAAA12K,KAAAo7C,MAAA,oBAAA1uC,OAEA1M,KAAAu2K,gBAAAv2K,KAAAk2K,MAAAM,QAAAG,iBADA,4BAMAx8I,QAAA,CAIAy8I,UAJA,WAIA,IAAA/iJ,EAAA7zB,KACA,OAAAA,KAAAo6B,MAAA1hC,IAAA,sBACA2oB,KAAA,SAAAkZ,GACA1G,EAAAqiJ,MAAA37I,EAAAn2B,KAEAy2B,EAAArjB,EAAA1E,OAAAynB,EAAAn2B,KAAA+7C,MAAA,KACAtsB,EAAAqiJ,MAAAW,cAAAh8I,EAAArjB,EAAA1E,OAAAynB,EAAAn2B,KAAA+7C,MAAA,GACAtsB,EAAAqiJ,MAAAY,eAAAj8I,EAAArjB,EAAAhL,KAAA+tB,EAAAn2B,KAAA+7C,MAAA,GAAAx2B,MAAA,YASAotJ,YApBA,WAoBA,IAAAn8I,EAAA56B,KACA,OAAAA,KAAAo6B,MAAA1hC,IAAA,wBACA2oB,KAAA,SAAAkZ,GACAK,EAAAu7I,QAAA57I,EAAAn2B,QAQA4yK,aA/BA,WA+BA,IAAA74I,EAAAn+B,KAGA,OAFAA,KAAAi3K,iBAAAj3K,KAAAo7C,MAEAp7C,KAAAo6B,MAAA1hC,IAAA,yBACA2oB,KAAA,SAAAkZ,GACA4D,EAAAi4I,SAAA77I,EAAAn2B,QAQAiyK,yBA5CA,WA4CA,IAAAzwI,EAAA5lC,KACAkhB,QAAA4/B,IAAA,CACA9gD,KAAA42K,YACA52K,KAAA+2K,cACA/2K,KAAAg3K,iBACA31J,KAAA,WACAukB,EAAAwV,OAAA,EAEAxV,EAAAjP,QAAApV,WAAA,WACAqkB,EAAAywI,0BAAA,IACA,QAQAa,eA9DA,SA8DAC,GACA,OAAAt8I,EAAArjB,EAAAsjB,MAAAq8I,GAAArkK,SAAAqoB,MAAAriC,QAAAs+K,kBAOAC,sBAtEA,SAsEAC,EAAAC,GACA,OAAA18I,EAAArjB,EAAAtO,QAAAouK,EAAAC,EAAA,SAQAC,UA/EA,SA+EAz8I,GACA,OAAA08I,EAAAjgK,EAAAxL,SAAA+uB,EAAA,WAAA28I,WAAAxuK,QAAA,wBAAAyuK,GACA,OAAAA,EAAA9rJ,iBAQA0qJ,gBAzFA,SAyFAqB,GACA,OAAAH,EAAAjgK,EAAAxL,SAAAyrK,MAAAvmI,KAAAumI,MAAAhwJ,SAAAmwJ,EAAA,aAAAF,WAAAxuK,QAAA,2BClJA06B,EAAgBrrC,OAAA6gC,EAAA,EAAA7gC,CACd09K,EHRF,WAA0B,IAAAv6I,EAAA17B,KAAaq5B,EAAAqC,EAAApC,eAA0BC,EAAAmC,EAAAlC,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,UAAAA,EAAA,WAAkCoC,YAAA,eAA0B,CAAApC,EAAA,OAAYoC,YAAA,QAAmB,CAAApC,EAAA,OAAYoC,YAAA,eAA0B,CAAAD,EAAAE,GAAA,cAAAF,EAAAE,GAAA,KAAArC,EAAA,OAA6CoC,YAAA,iBAA4B,CAAApC,EAAA,OAAYoC,YAAA,mBAA8B,CAAApC,EAAA,OAAYoC,YAAA,aAAwB,CAAApC,EAAA,OAAYoC,YAAA,kBAA6B,CAAApC,EAAA,MAAWoC,YAAA,cAAyB,CAAAD,EAAAE,GAAA,qBAAAF,EAAAE,GAAA,KAAArC,EAAA,MAAmDoC,YAAA,aAAwB,CAAAD,EAAAE,GAAA,OAAAF,EAAAE,GAAA,KAAArC,EAAA,QAAuCoC,YAAA,cAAyB,CAAAD,EAAAE,GAAA,qCAAAF,EAAAG,GAAAH,EAAAw6I,MAAA2B,cAAAn8I,EAAAw6I,MAAA2B,cAAAT,iBAAA,yCAAA17I,EAAAE,GAAA,KAAArC,EAAA,OAAyLoC,YAAA,kBAA6B,CAAApC,EAAA,MAAWoC,YAAA,aAAAuB,SAAA,CAAmC2W,YAAAnY,EAAAG,GAAAH,EAAA46I,qBAA4C56I,EAAAE,GAAA,KAAArC,EAAA,MAAuBoC,YAAA,aAAwB,CAAAD,EAAAE,GAAA,OAAAF,EAAAE,GAAA,KAAArC,EAAA,QAAuCoC,YAAA,cAAyB,CAAAD,EAAAE,GAAA,qCAAAF,EAAAG,GAAAH,EAAAw6I,MAAAO,WAAA/6I,EAAAw6I,MAAAO,WAAAW,iBAAA,yCAAA17I,EAAAE,GAAA,KAAArC,EAAA,OAAmLoC,YAAA,kBAA6B,CAAApC,EAAA,MAAWoC,YAAA,aAAAuB,SAAA,CAAmC2W,YAAAnY,EAAAG,GAAAH,EAAAg7I,yBAAgDh7I,EAAAE,GAAA,KAAArC,EAAA,MAAuBoC,YAAA,aAAwB,CAAAD,EAAAE,GAAA,OAAAF,EAAAE,GAAA,KAAArC,EAAA,QAAuCoC,YAAA,cAAyB,CAAAD,EAAAE,GAAA,qCAAAF,EAAAG,GAAAH,EAAAw6I,MAAAS,eAAAj7I,EAAAw6I,MAAAS,eAAAS,iBAAA,yCAAA17I,EAAAE,GAAA,KAAArC,EAAA,OAA2LoC,YAAA,iCAA4C,CAAApC,EAAA,MAAWoC,YAAA,cAAyB,CAAAD,EAAAE,GAAA,YAAAF,EAAAE,GAAA,KAAArC,EAAA,MAA0CoC,YAAA,aAAwB,CAAAD,EAAAE,GAAA,OAAAF,EAAAE,GAAA,KAAArC,EAAA,OAAsCoC,YAAA,6BAAwC,CAAAD,EAAAw6I,MAAA,OAAA38I,EAAA,UAAkCoC,YAAA,OAAAjC,MAAA,CAA0BrnB,OAAA,WAAAqpB,EAAAw6I,MAAAvwI,OAAAkC,QAAA,UAAAnM,EAAAw6I,MAAAvwI,UAA+EjK,EAAAK,KAAAL,EAAAE,GAAA,KAAArC,EAAA,QAAkCoC,YAAA,cAAyB,CAAAD,EAAAE,GAAA,yCAAAF,EAAAG,GAAA,CAA0Di8I,QAAA,SAAAC,OAAA,SAAAzW,SAAA,YAAyD5lI,EAAAw6I,MAAAvwI,SAAA,8CAAAjK,EAAAE,GAAA,KAAArC,EAAA,OAAwFoC,YAAA,kCAA6C,CAAApC,EAAA,MAAWoC,YAAA,cAAyB,CAAAD,EAAAE,GAAA,qBAAAF,EAAAE,GAAA,KAAArC,EAAA,MAAmDoC,YAAA,cAAyB,CAAAD,EAAAE,GAAA,OAAAF,EAAAE,GAAA,KAAArC,EAAA,QAAuCoC,YAAA,cAAyB,CAAAD,EAAAE,GAAA,qCAAAF,EAAAG,GAAAH,EAAAw6I,MAAAiB,UAAAz7I,EAAAw6I,MAAAiB,UAAAC,iBAAA,yCAAA17I,EAAAE,GAAA,KAAArC,EAAA,OAAiLoC,YAAA,kCAA6C,CAAApC,EAAA,MAAWoC,YAAA,cAAyB,CAAAD,EAAAE,GAAA,mBAAAF,EAAAE,GAAA,KAAArC,EAAA,MAAiDoC,YAAA,aAAwB,CAAAD,EAAAE,GAAA,qCAAAF,EAAAG,GAAAH,EAAAw6I,MAAAY,gBAAA,yCAAAp7I,EAAAE,GAAA,KAAArC,EAAA,QAAiJoC,YAAA,cAAyB,CAAAD,EAAAE,GAAA,qCAAAF,EAAAG,GAAAH,EAAAw6I,MAAAW,cAAAn7I,EAAA87I,UAAA97I,EAAAw6I,MAAAW,eAAA,2CAAAn7I,EAAAE,GAAA,KAAArC,EAAA,OAAyLoC,YAAA,kCAA6C,CAAApC,EAAA,MAAWoC,YAAA,cAAyB,CAAAD,EAAAE,GAAA,iBAAAF,EAAAE,GAAA,KAAArC,EAAA,MAA+CoC,YAAA,cAAyB,CAAAD,EAAAE,GAAA,OAAAF,EAAAE,GAAA,KAAArC,EAAA,QAAuCoC,YAAA,cAAyB,CAAAD,EAAAE,GAAA,qCAAAF,EAAAG,GAAAH,EAAAw6I,MAAA8B,oBAAAt8I,EAAAw6I,MAAA8B,oBAAA,2CAAAt8I,EAAAE,GAAA,KAAArC,EAAA,OAAsLoC,YAAA,2BAAsC,CAAApC,EAAA,MAAWoC,YAAA,cAAyB,CAAAD,EAAAE,GAAA,oBAAAF,EAAAE,GAAA,KAAArC,EAAA,MAAkDoC,YAAA,cAAyB,CAAAD,EAAAE,GAAA,OAAAF,EAAAE,GAAA,KAAArC,EAAA,QAAuCoC,YAAA,cAAyB,CAAAD,EAAAE,GAAA,qCAAAF,EAAAG,GAAAH,EAAAw6I,MAAA+B,uBAAAv8I,EAAAw6I,MAAA+B,uBAAA,mDAAAv8I,EAAAE,GAAA,KAAAF,EAAA06I,SAAA,OAAA78I,EAAA,OAA0NoC,YAAA,aAAwB,CAAApC,EAAA,OAAYoC,YAAA,eAA0B,CAAAD,EAAAE,GAAA,sBAAAF,EAAAE,GAAA,KAAArC,EAAA,OAAqDoC,YAAA,oBAA+B,CAAApC,EAAA,SAAcoC,YAAA,gCAA2C,CAAApC,EAAA,SAAAA,EAAA,MAAAA,EAAA,MAAAmC,EAAAE,GAAA,WAAAF,EAAAE,GAAA,KAAArC,EAAA,MAAAmC,EAAAE,GAAA,eAAAF,EAAAE,GAAA,KAAArC,EAAA,MAAAmC,EAAAE,GAAA,UAAAF,EAAAE,GAAA,KAAArC,EAAA,MAAAmC,EAAAE,GAAA,cAAAF,EAAAE,GAAA,KAAArC,EAAA,QAAAmC,EAAA8C,GAAA9C,EAAA,kBAAApF,GAA0O,OAAAiD,EAAA,MAAAA,EAAA,MAAAA,EAAA,QAAAmC,EAAAE,GAAAF,EAAAG,GAAAvF,EAAAl+B,KAAA8Q,QAAA,iBAAAwyB,EAAAE,GAAA,KAAArC,EAAA,MAAAmC,EAAAE,GAAAF,EAAAG,GAAAvF,EAAA6gJ,UAAA7gJ,EAAA6gJ,UAAAC,iBAAA,MAAA17I,EAAAE,GAAA,KAAArC,EAAA,MAAAmC,EAAAE,GAAAF,EAAAG,GAAAvF,EAAAv5B,OAAAu5B,EAAAv5B,OAAAq6K,iBAAA,MAAA17I,EAAAE,GAAA,KAAArC,EAAA,MAAAmC,EAAAE,GAAAF,EAAAG,GAAAH,EAAA87I,UAAAlhJ,EAAA6pB,cAAgV,SAAAzkB,EAAAK,KAAAL,EAAAE,GAAA,KAAAF,EAAA8C,GAAA9C,EAAA,iBAAA67I,GAAsE,OAAAh+I,EAAA,OAAiBngC,IAAAm+K,EAAAn/K,KAAAujC,YAAA,aAAwC,CAAApC,EAAA,OAAYoC,YAAA,eAA0B,CAAAD,EAAAE,GAAAF,EAAAG,GAAA07I,EAAAn/K,SAAAsjC,EAAAE,GAAA,KAAArC,EAAA,OAAsDoC,YAAA,oBAA+B,CAAApC,EAAA,SAAcoC,YAAA,gCAA2C,CAAApC,EAAA,SAAAA,EAAA,MAAAA,EAAA,MAAAmC,EAAAE,GAAA,gBAAAF,EAAAE,GAAA,KAAArC,EAAA,MAAAmC,EAAAE,GAAA,eAAAF,EAAAE,GAAA,KAAArC,EAAA,MAAAmC,EAAAE,GAAA,YAAAF,EAAAE,GAAA,KAAArC,EAAA,MAAAmC,EAAAE,GAAA,mBAAAF,EAAAE,GAAA,KAAArC,EAAA,QAAAmC,EAAA8C,GAAA+4I,EAAA,qBAAAD,GAAiQ,OAAA/9I,EAAA,MAAAA,EAAA,MAAyBoC,YAAA,OAAkB,CAAApC,EAAA,QAAaoC,YAAA,OAAkB,CAAAD,EAAAE,GAAAF,EAAAG,GAAAH,EAAA27I,sBAAAC,EAAAl/K,KAAAm/K,EAAAn/K,YAAAsjC,EAAAE,GAAA,KAAArC,EAAA,MAAAmC,EAAAE,GAAAF,EAAAG,GAAAH,EAAAw7I,eAAAI,EAAAH,eAAAz7I,EAAAE,GAAA,KAAArC,EAAA,MAAAmC,EAAAE,GAAAF,EAAAG,GAAAy7I,EAAAryK,QAAAqxB,MAAAptB,QAAA,eAAAwyB,EAAAE,GAAA,KAAArC,EAAA,MAAuQoC,YAAA,6BAAwC,CAAApC,EAAA,UAAeoC,YAAA,OAAAjC,MAAA,CAA0BrnB,OAAAilK,EAAAryK,QAAAizK,WAAqCx8I,EAAAE,GAAA,KAAA07I,EAAAryK,QAAA,QAAAs0B,EAAA,QAAAmC,EAAAE,GAAA,0CAAAF,EAAAG,GAAAy7I,EAAAryK,QAAAizK,QAAA38K,OAAA,GAAAswB,cAAAyrJ,EAAAryK,QAAAizK,QAAAhgK,MAAA,6CAAAwjB,EAAAK,MAAA,OAAgQ,YAAW,MACr4L,IGUA,EACA,KACA,KACA,MAIerb,EAAA,QAAAkjB,6CCff,IAAAnmC,EAAehG,EAAQ,QACvB0L,EAAc1L,EAAQ,QAEtBgG,EAAAyB,KAAA,UACA0E,UAAA,CACAoI,SAAA,IACAwC,OAAA,eACAc,WAAAnM,EAAA4C,KACA8I,WAAA1L,EAAA4C,QAIAnO,EAAAD,QAAA,CACAwgL,cAAA,GACA/uK,WAAA,GACAgvK,WAAA,EACAjxI,QAAA,KAQA33B,aAAA,SAAAtL,EAAAN,EAAAoI,EAAA6B,GACA,IACAhW,EAAA2N,EADA4D,EAAApJ,KAAAoJ,WASA,IANAxF,EAAAM,QAEA2J,IACA3J,EAAAgO,WAAA,GAGAra,EAAA,EAAA2N,EAAA4D,EAAArM,OAAuClF,EAAA2N,IAAU3N,EACjD,GAAAuR,EAAAvR,GAAAqM,UAEA,YADAkF,EAAAvR,GAAA+L,GAKAwF,EAAAtM,KAAA8G,GAGA,IAAAwF,EAAArM,QACAiD,KAAA8zB,yBAIAzoB,gBAAA,SAAAnH,GACA,IAAAjD,EAAAkC,EAAAgoB,UAAAnrB,KAAAoJ,WAAA,SAAAxF,GACA,OAAAA,EAAAM,aAGA,IAAAjD,IACAjB,KAAAoJ,WAAA6gC,OAAAhpC,EAAA,GACAiD,EAAAgO,WAAA,IAIA4hB,sBAAA,WACA,IAAA5tB,EAAAlG,KACA,OAAAkG,EAAAihC,UAIAjhC,EAAAihC,QAAAhkC,EAAAk1K,iBAAArgL,KAAA6gB,OAAA,WACA3S,EAAAihC,QAAA,KACAjhC,EAAAoyK,kBAQAA,YAAA,WACA,IAAApyK,EAAAlG,KACA6zD,EAAArnB,KAAA2c,MACAovH,EAAA,EAEAryK,EAAAkyK,WAAA,IACAG,EAAAh6K,KAAAkN,MAAAvF,EAAAkyK,YACAlyK,EAAAkyK,WAAAlyK,EAAAkyK,WAAA,GAGAlyK,EAAAsyK,QAAA,EAAAD,GAEA,IAAAE,EAAAjsI,KAAA2c,MAEAjjD,EAAAkyK,aAAAK,EAAA5kH,GAAA3tD,EAAAiyK,cAGAjyK,EAAAkD,WAAArM,OAAA,GACAmJ,EAAA4tB,yBAOA0kJ,QAAA,SAAA5xK,GAKA,IAJA,IACAhD,EAAAM,EADAkF,EAAApJ,KAAAoJ,WAEAvR,EAAA,EAEAA,EAAAuR,EAAArM,QAEAmH,GADAN,EAAAwF,EAAAvR,IACAqM,MAEAN,EAAAuL,aAAAvL,EAAAuL,aAAA,GAAAvI,EACAhD,EAAAuL,YAAA5Q,KAAAC,IAAAoF,EAAAuL,YAAAvL,EAAAmL,UAEA5L,EAAA2L,SAAAlL,EAAA6K,OAAA,CAAAvK,EAAAN,GAAAM,GACAf,EAAA2L,SAAAlL,EAAAyL,oBAAA,CAAAzL,GAAAM,GAEAN,EAAAuL,aAAAvL,EAAAmL,UACA5L,EAAA2L,SAAAlL,EAAA2L,oBAAA,CAAA3L,GAAAM,GACAA,EAAAgO,WAAA,EACA9I,EAAA6gC,OAAApyC,EAAA,MAEAA,uCCpHA,SAAA6gL,EAAAj9K,GACAuE,KAAAvE,UAGAi9K,EAAAj/K,UAAAwe,SAAA,WACA,gBAAAjY,KAAAvE,QAAA,KAAAuE,KAAAvE,QAAA,KAGAi9K,EAAAj/K,UAAA2nG,YAAA,EAEAxpG,EAAAD,QAAA+gL,qCChBA,IAAAtgJ,EAAY3gC,EAAQ,QAEpBG,EAAAD,QACAygC,EAAAowG,uBAIA,CACAmwC,MAAA,SAAAvgL,EAAAU,EAAA8/K,EAAAj6F,EAAAk6F,EAAAC,GACA,IAAAC,EAAA,GACAA,EAAAj8K,KAAA1E,EAAA,IAAAiiC,mBAAAvhC,IAEAs/B,EAAAld,SAAA09J,IACAG,EAAAj8K,KAAA,eAAA0vC,KAAAosI,GAAAI,eAGA5gJ,EAAAiiG,SAAA17C,IACAo6F,EAAAj8K,KAAA,QAAA6hF,GAGAvmD,EAAAiiG,SAAAw+C,IACAE,EAAAj8K,KAAA,UAAA+7K,IAGA,IAAAC,GACAC,EAAAj8K,KAAA,UAGA8jB,SAAAm4J,SAAAx0K,KAAA,OAGA00K,KAAA,SAAA7gL,GACA,IAAAizB,EAAAzK,SAAAm4J,OAAA1tJ,MAAA,IAAAoiB,OAAA,aAA0Dr1C,EAAA,cAC1D,OAAAizB,EAAA22I,mBAAA32I,EAAA,UAGAiyB,OAAA,SAAAllD,GACA4H,KAAA24K,MAAAvgL,EAAA,GAAAo0C,KAAA2c,MAAA,SAOA,CACAwvH,MAAA,aACAM,KAAA,WAA6B,aAC7B37H,OAAA,wDCjDA,gBCA0M47H,ECG1M,CACAt/I,WAAA,CAAA4N,iBAAA,GAMApjC,KAPA,WAQA,OACAigC,KAAA,EACAC,QAAA,GACAC,WAAA,EACAkD,WAAA,EACA/C,KAAA,KAQAG,QArBA,WAsBA7kC,KAAA4kC,WAEA5kC,KAAA8kC,2BAMAC,UA9BA,WA+BAC,cAAAhlC,KAAAilC,WAOAN,MAAA,CACAd,OADA,WAEA7jC,KAAAqkC,KAAA,EAEArkC,KAAA4kC,aAKAzK,QAAA,CAIAyK,SAJA,WAIA,IAAA/Q,EAAA7zB,KAAAklC,EAAAp3B,UAAA/Q,OAAA,QAAA7C,IAAA4T,UAAA,GAAAA,UAAA,MAKA,SALAA,UAAA/Q,OAAA,QAAA7C,IAAA4T,UAAA,KAAAA,UAAA,MAEA9N,KAAAynC,WAAA,GAGAznC,KAAAo6B,MAAA1hC,IAAA,wCAAAwsC,EAAA,UAAAllC,KAAAskC,SACAjjB,KAAA,SAAAkZ,GAOA,OANA1G,EAAA6Q,KAAAnK,EAAAn2B,KAAAsgC,KAEA7Q,EAAA0Q,WAAAhmC,KAAA6d,KAAAme,EAAAn2B,KAAAghC,MAAAvR,EAAAyQ,SAEAzQ,EAAA4T,WAAA,EAEAlN,EAAAn2B,KAAAsgC,QAQAI,wBAzBA,WAyBA,IAAAlK,EAAA56B,KACAA,KAAAilC,SAAAY,YAAA,WACA,GAAAjL,EAAAyJ,MAIAzJ,EAAAgK,UAAA,OACA,MAOAkB,SAvCA,WAwCA9lC,KAAA4kC,UACA5kC,KAAAqkC,KAAA,GAAArkC,KAAAskC,QAAA,GAGAtkC,KAAAqkC,MAAA,GAOA0B,KAnDA,WAoDA/lC,KAAA4kC,SACA5kC,KAAAqkC,KAAArkC,KAAAskC,QAAA,GAGAtkC,KAAAqkC,MAAA,iBC1G2M80I,ECI3M,CACAv/I,WAAA,CAAAw/I,SCEgB7gL,OAAA6gC,EAAA,EAAA7gC,CACd2gL,ECRQ,WAAgB,IAAAx9I,EAAA17B,KAAaq5B,EAAAqC,EAAApC,eAA0BC,EAAAmC,EAAAlC,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBoC,YAAA,oBAA+B,CAAApC,EAAA,UAAeG,MAAA,CAAOoC,IAAAJ,EAAA+L,aAAqB/L,EAAAE,GAAA,KAAAF,EAAA+L,WAAA/L,EAAAgJ,KAAA3nC,OAA6F2+B,EAAAK,KAA7FxC,EAAA,KAA2DoC,YAAA,uBAAkC,CAAAD,EAAAE,GAAA,mDAAAF,EAAAE,GAAA,MAAAF,EAAA+L,WAAA/L,EAAAgJ,KAAA3nC,OAAAw8B,EAAA,SAAkIoC,YAAA,gCAA2C,CAAAD,EAAAoB,GAAA,GAAApB,EAAAE,GAAA,KAAArC,EAAA,QAAAmC,EAAA8C,GAAA9C,EAAA,cAAA6J,GAAmE,OAAAhM,EAAA,MAAAA,EAAA,iBAAAgM,EAAAI,OAAApM,EAAA,eAAqEG,MAAA,CAAOwM,cAAA,UAAAzH,GAAA,CAA8BrmC,KAAA,gBAAAsmC,OAAA,CAAiCuH,MAAAV,EAAAnjC,KAAiBM,MAAA6iC,EAAAntC,OAAmB,CAAAsjC,EAAAE,GAAA,6BAAAF,EAAAG,GAAAH,EAAAyK,YAAAZ,EAAAntC,OAAA,4BAAAmhC,EAAA,QAA+GG,MAAA,CAAOwM,cAAA,UAAAxjC,MAAA6iC,EAAAntC,OAA0C,CAAAsjC,EAAAE,GAAAF,EAAAG,GAAAH,EAAAyK,YAAAZ,EAAAntC,WAAA,GAAAsjC,EAAAE,GAAA,KAAArC,EAAA,MAAAmC,EAAAE,GAAAF,EAAAG,GAAA0J,EAAAjP,UAAAoF,EAAAE,GAAA,KAAArC,EAAA,MAAAA,EAAA,QAAmIG,MAAA,CAAOwM,cAAA,UAAAxjC,MAAAg5B,EAAA0K,oBAAAb,EAAAc,QAAAvI,MAAA,KAAkF,CAAApC,EAAAE,GAAAF,EAAAG,GAAAH,EAAA0K,oBAAAb,EAAAc,QAAAvI,YAAApC,EAAAE,GAAA,KAAArC,EAAA,MAAqFoC,YAAA,eAA0B,CAAAD,EAAAE,GAAAF,EAAAG,GAAAH,EAAAgL,kBAAAnB,EAAAc,QAAAsB,cAAAjM,EAAAE,GAAA,KAAArC,EAAA,gBAAAgM,EAAAI,OAAApM,EAAA,QAAAmC,EAAAE,GAAAF,EAAAG,GAAA0J,EAAAe,WAAAf,EAAAe,UAAAf,EAAAiB,aAAAC,QAAA,eAAAlN,EAAA,QAAAmC,EAAAE,GAAAF,EAAAG,GAAA0J,EAAAqC,cAAArC,EAAAqC,aAAArC,EAAAiB,aAAAC,QAAA,iBAAA/K,EAAAE,GAAA,KAAArC,EAAA,MAAAA,EAAA,UAAgWG,MAAA,CAAOrnB,OAAA,aAAAkzB,EAAAI,OAAAkC,QAAA,YAAAtC,EAAAI,QAAA,WAAAJ,EAAAI,WAAkG,OAAQ,KAAAjK,EAAAK,KAAAL,EAAAE,GAAA,MAAAF,EAAA+L,WAAA/L,EAAAgJ,KAAA3nC,OAAAw8B,EAAA,OAA2EoC,YAAA,2CAAsD,CAAApC,EAAA,UAAeoC,YAAA,yBAAAjC,MAAA,CAA4C+D,SAAA,GAAA/B,EAAA2I,MAAuB/M,GAAA,CAAKoG,MAAAhC,EAAAoK,WAAsB,CAAApK,EAAAE,GAAA,cAAAF,EAAAE,GAAA,KAAArC,EAAA,UAAgDoC,YAAA,yBAAAjC,MAAA,CAA4C+D,SAAA/B,EAAA2I,MAAA3I,EAAA6I,YAAoCjN,GAAA,CAAKoG,MAAAhC,EAAAqK,OAAkB,CAAArK,EAAAE,GAAA,YAAAF,EAAAK,MAAA,IAC99D,YAAiB,IAAAL,EAAA17B,KAAaq5B,EAAAqC,EAAApC,eAA0BC,EAAAmC,EAAAlC,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,SAAAA,EAAA,MAAAA,EAAA,MAAAmC,EAAAE,GAAA,SAAAF,EAAAE,GAAA,KAAArC,EAAA,MAAAmC,EAAAE,GAAA,QAAAF,EAAAE,GAAA,KAAArC,EAAA,MAAAmC,EAAAE,GAAA,UAAAF,EAAAE,GAAA,KAAArC,EAAA,MAAAmC,EAAAE,GAAA,eAAAF,EAAAE,GAAA,KAAArC,EAAA,MAAAmC,EAAAE,GAAA,aAAAF,EAAAE,GAAA,KAAArC,EAAA,MAAAmC,EAAAE,GAAA,mBDUnG,EACA,KACA,KACA,cDTA/B,OAAAC,EAAA,GAMAlB,QAPA,WAQAhY,SAAAle,MAAA,0BGLI67B,EAAYhmC,OAAA6gC,EAAA,EAAA7gC,CACd4gL,EPRF,WAA0B,IAAa9/I,EAAbr5B,KAAas5B,eAA0BC,EAAvCv5B,KAAuCw5B,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,UAAAA,EAAA,WAAkCoC,YAAA,gBAA2B,CAAApC,EAAA,OAAYoC,YAAA,QAAmB,CAAApC,EAAA,OAAYoC,YAAA,eAA0B,CAAjM37B,KAAiM47B,GAAA,iBAAjM57B,KAAiM47B,GAAA,KAAArC,EAAA,sBAC3N,IOUA,EACA,KACA,KACA,MAIe7Y,EAAA,QAAA6d,6CChBf,IAAAp7B,EAAc1L,EAAQ,QAEtB,SAAA4hL,EAAAriJ,EAAA30B,GACA,OAAAc,EAAAm2K,MAAAtiJ,EAAA,SAAApjB,GACA,OAAAA,EAAAvR,eAIA,SAAAk3K,EAAAviJ,EAAAtY,GACAsY,EAAA1L,QAAA,SAAA1X,EAAA/b,GAEA,OADA+b,EAAA4lK,WAAA3hL,EACA+b,IAEAojB,EAAA3N,KAAA,SAAA7R,EAAAoF,GACA,IAAAi6I,EAAAn4I,EAAA9B,EAAApF,EACAs/I,EAAAp4I,EAAAlH,EAAAoF,EACA,OAAAi6I,EAAAt/I,SAAAu/I,EAAAv/I,OACAs/I,EAAA2iB,WAAA1iB,EAAA0iB,WACA3iB,EAAAt/I,OAAAu/I,EAAAv/I,SAEAyf,EAAA1L,QAAA,SAAA1X,UACAA,EAAA4lK,aAwBA5hL,EAAAD,QAAA,CACA8F,SAAA,GAQAmlC,OAAA,SAAA1+B,EAAAtB,GACAsB,EAAA0L,QACA1L,EAAA0L,MAAA,IAIAhN,EAAAq8B,UAAAr8B,EAAAq8B,YAAA,EACAr8B,EAAAP,SAAAO,EAAAP,UAAA,MACAO,EAAA2U,OAAA3U,EAAA2U,QAAA,EAEArT,EAAA0L,MAAA9S,KAAA8F,IAQAmL,UAAA,SAAA7J,EAAAu1K,GACA,IAAAx4K,EAAAiD,EAAA0L,MAAA1L,EAAA0L,MAAAlV,QAAA++K,IAAA,GACA,IAAAx4K,GACAiD,EAAA0L,MAAAq6B,OAAAhpC,EAAA,IAUA0hC,UAAA,SAAAz+B,EAAAtB,EAAAqC,GAMA,IALA,IAGA+S,EAHAwN,EAAA,kCACAhgB,EAAAggB,EAAAzoB,OACAlF,EAAA,EAGQA,EAAA2N,IAAU3N,EAClBmgB,EAAAwN,EAAA3tB,GACAoN,EAAAvL,eAAAse,KACApV,EAAAoV,GAAA/S,EAAA+S,KAYAvS,OAAA,SAAAvB,EAAApG,EAAAe,GACA,GAAAqF,EAAA,CAIA,IAAAw1K,EAAAx1K,EAAAe,QAAA00K,QAAA,GACAzxJ,EAAA/kB,EAAA8B,QAAAk+B,UAAAu2I,EAAAxxJ,SACA0xJ,EAAA1xJ,EAAAppB,KACA+6K,EAAA3xJ,EAAAlpB,MACA86K,EAAA5xJ,EAAAnpB,IACAg7K,EAAA7xJ,EAAAjpB,OAEA+6K,EAAAX,EAAAn1K,EAAA0L,MAAA,QACAqqK,EAAAZ,EAAAn1K,EAAA0L,MAAA,SACAsqK,EAAAb,EAAAn1K,EAAA0L,MAAA,OACAuqK,EAAAd,EAAAn1K,EAAA0L,MAAA,UACAwqK,EAAAf,EAAAn1K,EAAA0L,MAAA,aAGA2pK,EAAAS,GAAA,GACAT,EAAAU,GAAA,GACAV,EAAAW,GAAA,GACAX,EAAAY,GAAA,GAwCA,IAAAE,EAAAv8K,EAAA87K,EAAAC,EACAS,EAAAz7K,EAAAi7K,EAAAC,EAEAQ,EAAAD,EAAA,EAGAE,GAAA18K,EAJAu8K,EAAA,IAIAL,EAAAj9K,OAAAk9K,EAAAl9K,QAGA09K,GAAA57K,EAAA07K,IAAAL,EAAAn9K,OAAAo9K,EAAAp9K,QAGA29K,EAAAL,EACAM,EAAAL,EACAM,EAAA,GAqBAz3K,EAAA4D,KAAAizK,EAAAttK,OAAAutK,EAAAC,EAAAC,GAnBA,SAAAtqK,GACA,IAAA1I,EACAstB,EAAA5kB,EAAA4kB,eAEAA,GACAttB,EAAA0I,EAAApK,OAAAoK,EAAAovB,UAAAo7I,EAAAK,EAAAD,GACAE,GAAAxzK,EAAAtI,SAEAsI,EAAA0I,EAAApK,OAAA+0K,EAAAG,GACAD,GAAAvzK,EAAArJ,OAGA88K,EAAA99K,KAAA,CACAoD,WAAAu0B,EACAttB,UACA0I,UAOA,IAAAgrK,EAAA,EACAC,EAAA,EACAC,EAAA,EACAC,EAAA,EAEA73K,EAAA4D,KAAAmzK,EAAAxtK,OAAAytK,GAAA,SAAAc,GACA,GAAAA,EAAAzJ,WAAA,CACA,IAAA0J,EAAAD,EAAAzJ,aACAqJ,EAAAt8K,KAAAI,IAAAk8K,EAAAK,EAAAp8K,MACAg8K,EAAAv8K,KAAAI,IAAAm8K,EAAAI,EAAAl8K,UAIAmE,EAAA4D,KAAAizK,EAAAttK,OAAAutK,GAAA,SAAAkB,GACA,GAAAA,EAAA3J,WAAA,CACA,IAAA0J,EAAAC,EAAA3J,aACAuJ,EAAAx8K,KAAAI,IAAAo8K,EAAAG,EAAAn8K,KACAi8K,EAAAz8K,KAAAI,IAAAq8K,EAAAE,EAAAj8K,WAOA,IAAAm8K,EAAAxB,EACAyB,EAAAxB,EACAyB,EAAAxB,EACAyB,EAAAxB,EA2BA52K,EAAA4D,KAAAizK,EAAAttK,OAAAutK,GAAAuB,GAEAr4K,EAAA4D,KAAAizK,EAAA,SAAAnqK,GACAurK,GAAAvrK,EAAA/R,QAGAqF,EAAA4D,KAAAkzK,EAAA,SAAApqK,GACAwrK,GAAAxrK,EAAA/R,QAIAqF,EAAA4D,KAAAmzK,EAAAxtK,OAAAytK,GAAAqB,GAGAr4K,EAAA4D,KAAAmzK,EAAA,SAAArqK,GACAyrK,GAAAzrK,EAAAhR,SAGAsE,EAAA4D,KAAAozK,EAAA,SAAAtqK,GACA0rK,GAAA1rK,EAAAhR,SAqBAsE,EAAA4D,KAAAizK,EAAAttK,OAAAutK,GAlBA,SAAApqK,GACA,IAAA4rK,EAAAt4K,EAAAu4K,cAAAd,EAAA,SAAAzzK,GACA,OAAAA,EAAA0I,UAGA8rK,EAAA,CACA78K,KAAA,EACAE,MAAA,EACAD,IAAAu8K,EACAr8K,OAAAs8K,GAGAE,GACA5rK,EAAApK,OAAAg2K,EAAAt0K,QAAArJ,MAAA68K,EAAAgB,KAQAP,EAAAxB,EACAyB,EAAAxB,EACAyB,EAAAxB,EACAyB,EAAAxB,EAEA52K,EAAA4D,KAAAizK,EAAA,SAAAnqK,GACAurK,GAAAvrK,EAAA/R,QAGAqF,EAAA4D,KAAAkzK,EAAA,SAAApqK,GACAwrK,GAAAxrK,EAAA/R,QAGAqF,EAAA4D,KAAAmzK,EAAA,SAAArqK,GACAyrK,GAAAzrK,EAAAhR,SAEAsE,EAAA4D,KAAAozK,EAAA,SAAAtqK,GACA0rK,GAAA1rK,EAAAhR,SAIA,IAAA+8K,EAAAr9K,KAAAI,IAAAk8K,EAAAO,EAAA,GACAA,GAAAQ,EACAP,GAAA98K,KAAAI,IAAAm8K,EAAAO,EAAA,GAEA,IAAAQ,EAAAt9K,KAAAI,IAAAo8K,EAAAO,EAAA,GACAA,GAAAO,EACAN,GAAAh9K,KAAAI,IAAAq8K,EAAAO,EAAA,GAKA,IAAAO,EAAAj9K,EAAAy8K,EAAAC,EACAQ,EAAAj+K,EAAAs9K,EAAAC,EAEAU,IAAArB,GAAAoB,IAAAnB,IACAx3K,EAAA4D,KAAAizK,EAAA,SAAAnqK,GACAA,EAAAhR,OAAAi9K,IAGA34K,EAAA4D,KAAAkzK,EAAA,SAAApqK,GACAA,EAAAhR,OAAAi9K,IAGA34K,EAAA4D,KAAAmzK,EAAA,SAAArqK,GACAA,EAAAovB,YACApvB,EAAA/R,MAAAi+K,KAIA54K,EAAA4D,KAAAozK,EAAA,SAAAtqK,GACAA,EAAAovB,YACApvB,EAAA/R,MAAAi+K,KAIApB,EAAAmB,EACApB,EAAAqB,GAIA,IAAAj9K,EAAA86K,EAAAgC,EACA78K,EAAA+6K,EAAA+B,EAwBA14K,EAAA4D,KAAAizK,EAAAttK,OAAAwtK,GAAA8B,GAGAl9K,GAAA47K,EACA37K,GAAA47K,EAEAx3K,EAAA4D,KAAAkzK,EAAA+B,GACA74K,EAAA4D,KAAAozK,EAAA6B,GAGA93K,EAAA+C,UAAA,CACAnI,KAAAs8K,EACAr8K,IAAAu8K,EACAt8K,MAAAo8K,EAAAV,EACAz7K,OAAAq8K,EAAAX,GAIAx3K,EAAA4D,KAAAqzK,EAAA,SAAAvqK,GACAA,EAAA/Q,KAAAoF,EAAA+C,UAAAnI,KACA+Q,EAAA9Q,IAAAmF,EAAA+C,UAAAlI,IACA8Q,EAAA7Q,MAAAkF,EAAA+C,UAAAjI,MACA6Q,EAAA5Q,OAAAiF,EAAA+C,UAAAhI,OAEA4Q,EAAApK,OAAAi1K,EAAAC,KAjLA,SAAAa,EAAA3rK,GACA,IAAA4rK,EAAAt4K,EAAAu4K,cAAAd,EAAA,SAAAqB,GACA,OAAAA,EAAApsK,UAGA,GAAA4rK,EACA,GAAA5rK,EAAA4kB,eAAA,CACA,IAAAknJ,EAAA,CACA78K,KAAAP,KAAAI,IAAAy8K,EAAAP,GACA77K,MAAAT,KAAAI,IAAA08K,EAAAP,GACA/7K,IAAA,EACAE,OAAA,GAKA4Q,EAAApK,OAAAoK,EAAAovB,UAAAo7I,EAAAK,EAAAJ,EAAA,EAAAqB,QAEA9rK,EAAApK,OAAAg2K,EAAAt0K,QAAArJ,MAAA68K,GAiHA,SAAAqB,EAAAnsK,GACAA,EAAA4kB,gBACA5kB,EAAA/Q,KAAA+Q,EAAAovB,UAAA26I,EAAAwB,EACAvrK,EAAA7Q,MAAA6Q,EAAAovB,UAAAnhC,EAAA+7K,EAAAuB,EAAAV,EACA7qK,EAAA9Q,MACA8Q,EAAA5Q,OAAAF,EAAA8Q,EAAAhR,OAGAE,EAAA8Q,EAAA5Q,SAIA4Q,EAAA/Q,OACA+Q,EAAA7Q,MAAAF,EAAA+Q,EAAA/R,MACA+R,EAAA9Q,IAAAu8K,EACAzrK,EAAA5Q,OAAAq8K,EAAAX,EAGA77K,EAAA+Q,EAAA7Q,6CCjYA,IAAAmE,EAAc1L,EAAQ,QAMtBG,EAAAD,QAAA,CAKA6hB,WAAA,CAOA1G,OAAA,SAAAha,GACA,OAAAqK,EAAAwX,QAAA7hB,KAAA,GAAAA,GAWA2gB,OAAA,SAAAyiK,EAAAj7K,EAAAyC,GAEA,IAAAqtD,EAAArtD,EAAA3G,OAAA,EAAA2G,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAGAnF,KAAA6B,IAAA2wD,GAAA,GACAmrH,IAAA39K,KAAAkN,MAAAywK,KAEAnrH,EAAAmrH,EAAA39K,KAAAkN,MAAAywK,IAIA,IAAAC,EAAAh5K,EAAAs5J,MAAAl+J,KAAA6B,IAAA2wD,IACAqrH,EAAA,GAEA,OAAAF,EAEA,GADA39K,KAAAI,IAAAJ,KAAA6B,IAAAsD,EAAA,IAAAnF,KAAA6B,IAAAsD,IAAA3G,OAAA,KACA,MACA,IAAAs/K,EAAAl5K,EAAAs5J,MAAAl+J,KAAA6B,IAAA87K,IACAE,EAAAF,EAAAI,cAAA/9K,KAAAkN,MAAA4wK,GAAA99K,KAAAkN,MAAA0wK,QACK,CACL,IAAAI,GAAA,EAAAh+K,KAAAkN,MAAA0wK,GACAI,EAAAh+K,KAAAI,IAAAJ,KAAAC,IAAA+9K,EAAA,OACAH,EAAAF,EAAAz1I,QAAA81I,QAGAH,EAAA,IAGA,OAAAA,GAGApgB,YAAA,SAAAkgB,EAAAj7K,EAAAyC,GACA,IAAA84K,EAAAN,EAAA39K,KAAAwX,IAAA,GAAAxX,KAAAkN,MAAAtI,EAAAs5J,MAAAyf,KAEA,WAAAA,EACA,IACI,IAAAM,GAAA,IAAAA,GAAA,IAAAA,GAAA,IAAAv7K,OAAAyC,EAAA3G,OAAA,EACJm/K,EAAAI,gBAEA,yCCxEA,ICA4MG,ECC5M,CACAj3J,MAAA,CACAnT,OAAA,GACAw1B,QAAA,GACA8vD,YAAA,CACA3f,QAAA,aAQA5zE,KAbA,WAcA,OACAs4K,eAAA18K,KAAA23F,2BCTA/zD,EAAgBrrC,OAAA6gC,EAAA,EAAA7gC,CACdkkL,EHRF,WAA0B,IAAapjJ,EAAbr5B,KAAas5B,eAA0BC,EAAvCv5B,KAAuCw5B,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBoC,YAAA,cAAyB,CAAzG37B,KAAyG,OAAAu5B,EAAA,OAAyBoC,YAAA,gBAA2B,CAAApC,EAAA,OAAYG,MAAA,CAAOmN,cAAA,+BAAAC,aAAA,mCAAhL9mC,KAAyQ6nC,QAAzQ7nC,KAAwa+7B,KAA/JxC,EAAA,OAA6BoC,YAAA,eAA0B,CAAApC,EAAA,OAAYG,MAAA,CAAOmN,cAAA,+BAAAC,aAAA,+BAAnV9mC,KAAwa47B,GAAA,KAAxa57B,KAAwa,QAAAu5B,EAAA,OAAiDoC,YAAA,gBAA2B,CAAApC,EAAA,OAAYG,MAAA,CAAOmN,cAAA,+BAAAC,aAAA,+BAAvgB9mC,KAA4lB+7B,QACtnB,IGUA,EACA,KACA,KACA,MAIerb,EAAA,EAAAkjB,6CChBf,IAAAzgC,EAAc1L,EAAQ,QACtBklL,EAAYllL,EAAQ,QACpBmlL,EAAUnlL,EAAQ,QAGlBoqE,EAAA+6G,EAAAC,SAAAD,EAAAD,EAOA/kL,EAAAD,QAAAwL,EAAAxD,OAAA,CAIA8K,WAAA,aASAP,eAAA,aAQA+G,eAAA,aASAS,iBAAA,aAQAC,oBAAA,cAECkwD,sCCpDDjqE,EAAAD,QAAA,SAAAoL,GAEAA,EAAA+5K,MAAA,SAAAl0K,EAAAmB,GAGA,OAFAA,EAAAzO,KAAA,QAEA,IAAAyH,EAAA6F,EAAAmB,wCCLAnS,EAAAD,QAAA,GACAC,EAAAD,QAAAolL,OAAwBtlL,EAAQ,QAChCG,EAAAD,QAAA6M,OAAwB/M,EAAQ,QAChCG,EAAAD,QAAA+K,MAAuBjL,EAAQ,6CCH/B,IAAAihL,EAAajhL,EAAQ,QAQrB,SAAAulL,EAAAC,GACA,sBAAAA,EACA,UAAA53J,UAAA,gCAGA,IAAA63J,EACAl9K,KAAAonC,QAAA,IAAAlmB,QAAA,SAAAnY,GACAm0K,EAAAn0K,IAGA,IAAAoxC,EAAAn6C,KACAi9K,EAAA,SAAAxhL,GACA0+C,EAAA6rC,SAKA7rC,EAAA6rC,OAAA,IAAA0yF,EAAAj9K,GACAyhL,EAAA/iI,EAAA6rC,WAOAg3F,EAAAvjL,UAAAu/J,iBAAA,WACA,GAAAh5J,KAAAgmF,OACA,MAAAhmF,KAAAgmF,QAQAg3F,EAAAllK,OAAA,WACA,IAAAyhH,EAIA,OACAp/E,MAJA,IAAA6iI,EAAA,SAAA9kL,GACAqhI,EAAArhI,IAIAqhI,WAIA3hI,EAAAD,QAAAqlL,wBCvDA,IAAAG,EAAiB1lL,EAAQ,QAqBzB,SAAA6b,EAAAX,GACA,GAAAA,EAAA,CAGA,IAMAI,EAAA,QACAyE,EAAA,EACA6T,EAAA1Y,EAAA0Y,MARA,wBASA,GAAAA,EAAA,CACAA,IAAA,GACA,QAAAxzB,EAAA,EAAqBA,EAAAkb,EAAAhW,OAAgBlF,IACrCkb,EAAAlb,GAAAgD,SAAAwwB,EAAAxzB,GAAAwzB,EAAAxzB,GAAA,SAGA,GAAAwzB,EAAA1Y,EAAA0Y,MAdA,wBAcA,CACAA,IAAA,GACA,IAAAxzB,EAAA,EAAqBA,EAAAkb,EAAAhW,OAAgBlF,IACrCkb,EAAAlb,GAAAgD,SAAAwwB,EAAAnT,MAAA,EAAArgB,EAAA,EAAAA,EAAA,YAGA,GAAAwzB,EAAA1Y,EAAA0Y,MAnBA,4FAmBA,CACA,IAAAxzB,EAAA,EAAqBA,EAAAkb,EAAAhW,OAAgBlF,IACrCkb,EAAAlb,GAAAgD,SAAAwwB,EAAAxzB,EAAA,IAEA2f,EAAApb,WAAAivB,EAAA,SAEA,GAAAA,EAAA1Y,EAAA0Y,MAxBA,8GAwBA,CACA,IAAAxzB,EAAA,EAAqBA,EAAAkb,EAAAhW,OAAgBlF,IACrCkb,EAAAlb,GAAA0G,KAAAka,MAAA,KAAArc,WAAAivB,EAAAxzB,EAAA,KAEA2f,EAAApb,WAAAivB,EAAA,SAEA,GAAAA,EAAA1Y,EAAA0Y,MA7BA,SA6BA,CACA,kBAAAA,EAAA,GACA,gBAGA,KADAtY,EAAAoqK,EAAA9xJ,EAAA,KAEA,OAIA,IAAAxzB,EAAA,EAAkBA,EAAAkb,EAAAhW,OAAgBlF,IAClCkb,EAAAlb,GAAAuL,EAAA2P,EAAAlb,GAAA,OASA,OAHA2f,EAJAA,GAAA,GAAAA,EAIApU,EAAAoU,EAAA,KAHA,EAKAzE,EAAA,GAAAyE,EACAzE,GAGA,SAAAS,EAAAb,GACA,GAAAA,EAAA,CAGA,IACA0Y,EAAA1Y,EAAA0Y,MADA,4GAEA,GAAAA,EAAA,CACA,IAAAjY,EAAAhX,WAAAivB,EAAA,IAKA,OAJAjoB,EAAAvI,SAAAwwB,EAAA,WACAjoB,EAAAhH,WAAAivB,EAAA,WACAjoB,EAAAhH,WAAAivB,EAAA,WACAjoB,EAAAgC,MAAAgO,GAAA,EAAAA,EAAA,QAKA,SAAAK,EAAAd,GACA,GAAAA,EAAA,CAGA,IACA0Y,EAAA1Y,EAAA0Y,MADA,0GAEA,GAAAA,EAAA,CACA,IAAAjY,EAAAhX,WAAAivB,EAAA,IAKA,OAJAjoB,EAAAvI,SAAAwwB,EAAA,WACAjoB,EAAAhH,WAAAivB,EAAA,WACAjoB,EAAAhH,WAAAivB,EAAA,WACAjoB,EAAAgC,MAAAgO,GAAA,EAAAA,EAAA,QAyCA,SAAAiC,EAAA+nK,EAAAhqK,GAIA,YAHAlZ,IAAAkZ,IACAA,OAAAlZ,IAAAkjL,EAAA,GAAAA,EAAA,MAEA,QAAAA,EAAA,QAAAA,EAAA,QAAAA,EAAA,GACA,KAAAhqK,EAAA,IAcA,SAAAiqK,EAAAD,EAAAhqK,GAIA,cAHA7U,KAAAka,MAAA2kK,EAAA,YAGA,MAFA7+K,KAAAka,MAAA2kK,EAAA,YAEA,MADA7+K,KAAAka,MAAA2kK,EAAA,YACA,OAAAhqK,GAAAgqK,EAAA,WAUA,SAAA5nK,EAAA8nK,EAAAlqK,GAIA,YAHAlZ,IAAAkZ,IACAA,OAAAlZ,IAAAojL,EAAA,GAAAA,EAAA,MAEA,QAAAA,EAAA,QAAAA,EAAA,SAAAA,EAAA,SACAlqK,EAAA,IAkBA,SAAAhQ,EAAAomC,EAAAhrC,EAAAG,GACA,OAAAJ,KAAAC,IAAAD,KAAAI,IAAAH,EAAAgrC,GAAA7qC,GAGA,SAAA4+K,EAAA/zI,GACA,IAAA5a,EAAA4a,EAAAvxB,SAAA,IAAA4T,cACA,OAAA+C,EAAA7xB,OAAA,MAAA6xB,IAjNAh3B,EAAAD,QAAA,CACA2b,UACAE,UACAgqK,OA4GA,SAAA7qK,GACA,IAAAyqK,EAAA9pK,EAAAX,GACA,OAAAyqK,KAAAllK,MAAA,MA7GAulK,OAgHA,SAAA9qK,GACA,IAAA2qK,EAAA9pK,EAAAb,GACA,OAAA2qK,KAAAplK,MAAA,MAjHAzE,SACAiqK,SAmHA,SAAA/qK,GACA,IAAAU,EAAAC,EAAAX,GACA,GAAAU,EACA,OAAAA,EAAA,GAEA,GAAAA,EAAAG,EAAAb,GACA,OAAAU,EAAA,GAEA,GAAAA,EAAAI,EAAAd,GACA,OAAAU,EAAA,IA1HA8B,UA+HA,SAAApC,GACA,UAAAwqK,EAAAxqK,EAAA,IAAAwqK,EAAAxqK,EAAA,IACAwqK,EAAAxqK,EAAA,KAhIAqC,UAmIA,SAAAgoK,EAAAhqK,GACA,GAAAA,EAAA,GAAAgqK,EAAA,IAAAA,EAAA,KACA,OAAA/nK,EAAA+nK,EAAAhqK,GAEA,aAAAgqK,EAAA,QAAAA,EAAA,QAAAA,EAAA,QAtIA/nK,aACAC,cAgJA,SAAA8nK,EAAAhqK,GACA,GAAAA,EAAA,GAAAgqK,EAAA,IAAAA,EAAA,KACA,OAAAC,EAAAD,EAAAhqK,GAEA,IAAAza,EAAA4F,KAAAka,MAAA2kK,EAAA,YACAO,EAAAp/K,KAAAka,MAAA2kK,EAAA,YACAxgK,EAAAre,KAAAka,MAAA2kK,EAAA,YAEA,aAAAzkL,EAAA,MAAAglL,EAAA,MAAA/gK,EAAA,MAvJAygK,iBACA9nK,UAgKA,SAAA+nK,EAAAlqK,GACA,GAAAA,EAAA,GAAAkqK,EAAA,IAAAA,EAAA,KACA,OAAA9nK,EAAA8nK,EAAAlqK,GAEA,aAAAkqK,EAAA,QAAAA,EAAA,SAAAA,EAAA,SAnKA9nK,aACAC,UA+KA,SAAAvC,EAAAE,QACAlZ,IAAAkZ,IACAA,OAAAlZ,IAAAgZ,EAAA,GAAAA,EAAA,MAEA,aAAAA,EAAA,QAAAA,EAAA,SAAAA,EAAA,aACAhZ,IAAAkZ,GAAA,IAAAA,EAAA,KAAAA,EAAA,SAnLAsC,QAsLA,SAAA3C,GACA,OAAA6qK,EAAA7qK,EAAAmF,MAAA,QAeA,IAAA0lK,EAAA,GACA,QAAAxlL,KAAA+kL,EACAS,EAAAT,EAAA/kL,yCCzNA,IAAAqF,EAAehG,EAAQ,QACvBiG,EAAcjG,EAAQ,QACtB0L,EAAc1L,EAAQ,QACtB6R,EAAc7R,EAAQ,QAEtBsO,EAAA5C,EAAA4C,KAEAtI,EAAAyB,KAAA,UACAwD,MAAA,CACAY,SAAA,EACAyW,UAAA,OACAklB,WAAA,EACAyyB,WAAA,IACAxpC,QAAA,GACA7lB,SAAA,MACA8B,KAAA,GACAoT,OAAA,OAOA,IAAAqiJ,EAAAl8J,EAAAiC,OAAA,CACA8K,WAAA,SAAAV,GAEA5G,EAAAxD,OADAK,KACA+J,GADA/J,KAIA6/B,eAAA,IAKAE,aAAAh6B,EACAN,OAAA,SAAA8V,EAAAC,EAAAwkB,GACA,IAAA95B,EAAAlG,KA0BA,OAvBAkG,EAAA65B,eAGA75B,EAAAqV,WACArV,EAAAsV,YACAtV,EAAA85B,UAGA95B,EAAA+5B,sBACA/5B,EAAAmV,gBACAnV,EAAAg6B,qBAEAh6B,EAAAi6B,oBACAj6B,EAAAk6B,cACAl6B,EAAAm6B,mBAGAn6B,EAAAo6B,YACAp6B,EAAAqW,MACArW,EAAAq6B,WAEAr6B,EAAAs6B,cAEAt6B,EAAAiB,SAGAq5B,YAAAz6B,EAIAk6B,oBAAAl6B,EACAsV,cAAA,WACA,IAAAnV,EAAAlG,KAEAkG,EAAAuuB,gBAEAvuB,EAAApI,MAAAoI,EAAAqV,SACArV,EAAApH,KAAA,EACAoH,EAAAlH,MAAAkH,EAAApI,QAEAoI,EAAArH,OAAAqH,EAAAsV,UAGAtV,EAAAnH,IAAA,EACAmH,EAAAjH,OAAAiH,EAAArH,QAIAqH,EAAAu6B,YAAA,EACAv6B,EAAAw6B,WAAA,EACAx6B,EAAAy6B,aAAA,EACAz6B,EAAA06B,cAAA,EAGA16B,EAAAiB,QAAA,CACArJ,MAAA,EACAe,OAAA,IAGAqhC,mBAAAn6B,EAIAo6B,kBAAAp6B,EACAq6B,YAAAr6B,EACAs6B,iBAAAt6B,EAIAu6B,UAAAv6B,EACAwW,IAAA,WACA,IAAArW,EAAAlG,KACAwI,EAAArF,EAAAqF,eACAtB,EAAAhB,EAAAjB,QACA3B,EAAA4D,EAAA5D,QACAoW,EAAAlR,EAAAtB,EAAAwS,SAAAjc,EAAA6B,OAAAwa,iBACA3S,EAAAjB,EAAAiB,QACA0uK,EAAA1yK,EAAAwX,QAAAzT,EAAA/C,MAAA+C,EAAA/C,KAAApH,OAAA,EACA20D,EAAAvuD,EAAA8B,QAAAg+B,aAAA/7B,EAAAwqD,WAAAh4C,GACAoB,EAAAxX,EAAAuyK,EAAAnkH,EAAA,EAAAxqD,EAAAghB,QAAA,EAEAhiB,EAAAuuB,gBACAttB,EAAArJ,MAAAoI,EAAAqV,SACApU,EAAAtI,OAAAic,IAEA3T,EAAArJ,MAAAgd,EACA3T,EAAAtI,OAAAqH,EAAAsV,WAGAtV,EAAApI,MAAAqJ,EAAArJ,MACAoI,EAAArH,OAAAsI,EAAAtI,QAGA0hC,SAAAx6B,EAGA0uB,aAAA,WACA,IAAA14B,EAAAiE,KAAAiF,QAAA5C,SACA,cAAAtG,GAAA,WAAAA,GAIA6D,KAAA,WACA,IAAAsG,EAAAlG,KACAD,EAAAmG,EAAAnG,IACAyI,EAAArF,EAAAqF,eACAtB,EAAAhB,EAAAjB,QACA+T,EAAAvb,EAAA6B,OAEA,GAAA4H,EAAA5D,QAAA,CACA,IAWAiY,EAAAsiK,EAAAC,EAXApkK,EAAAlR,EAAAtB,EAAAwS,SAAAV,EAAAc,iBACAC,EAAAvR,EAAAtB,EAAA6S,UAAAf,EAAAgB,kBACAC,EAAAzR,EAAAtB,EAAA+S,WAAAjB,EAAAkB,mBACA6jK,EAAA56K,EAAAmX,WAAAZ,EAAAK,EAAAE,GACAy3C,EAAAvuD,EAAA8B,QAAAg+B,aAAA/7B,EAAAwqD,WAAAh4C,GACAsU,EAAA0jC,EAAA,EAAAxqD,EAAAghB,QACAq9C,EAAA,EACAxmE,EAAAmH,EAAAnH,IACAD,EAAAoH,EAAApH,KACAG,EAAAiH,EAAAjH,OACAD,EAAAkH,EAAAlH,MAGAe,EAAAY,UAAA6H,EAAAtB,EAAAuY,UAAAzG,EAAA0G,kBACA3f,EAAAsa,KAAA0jK,EAGA73K,EAAAuuB,gBACAopJ,EAAA/+K,GAAAE,EAAAF,GAAA,EACAg/K,EAAA/+K,EAAAivB,EACAzS,EAAAvc,EAAAF,IAEA++K,EAAA,SAAA32K,EAAA7E,SAAAvD,EAAAkvB,EAAAhvB,EAAAgvB,EACA8vJ,EAAA/+K,GAAAE,EAAAF,GAAA,EACAwc,EAAAtc,EAAAF,EACAwmE,EAAAhnE,KAAAyF,IAAA,SAAAkD,EAAA7E,UAAA,QAGAtC,EAAA4f,OACA5f,EAAA6f,UAAAi+J,EAAAC,GACA/9K,EAAAoX,OAAAouD,GACAxlE,EAAAggB,UAAA,SACAhgB,EAAAigB,aAAA,SAEA,IAAA7b,EAAA+C,EAAA/C,KACA,GAAAhB,EAAAwX,QAAAxW,GAEA,IADA,IAAA1F,EAAA,EACA5G,EAAA,EAAmBA,EAAAsM,EAAApH,SAAiBlF,EACpCkI,EAAA2a,SAAAvW,EAAAtM,GAAA,EAAA4G,EAAA8c,GACA9c,GAAAizD,OAGA3xD,EAAA2a,SAAAvW,EAAA,IAAAoX,GAGAxb,EAAAkgB,cAKA,SAAA+9J,EAAA95K,EAAA+5K,GACA,IAAAv7K,EAAA,IAAAk3J,EAAA,CACA75J,IAAAmE,EAAAnE,IACAkF,QAAAg5K,EACA/5K,UAGAoF,EAAAq5B,UAAAz+B,EAAAxB,EAAAu7K,GACA30K,EAAAs5B,OAAA1+B,EAAAxB,GACAwB,EAAAg6K,WAAAx7K,EAGA9K,EAAAD,QAAA,CACAyK,GAAA,QASAygC,SAAA+2H,EAEA92H,WAAA,SAAA5+B,GACA,IAAA+5K,EAAA/5K,EAAAe,QAAAvC,MAEAu7K,GACAD,EAAA95K,EAAA+5K,IAIAl+I,aAAA,SAAA77B,GACA,IAAA+5K,EAAA/5K,EAAAe,QAAAvC,MACAw7K,EAAAh6K,EAAAg6K,WAEAD,GACA96K,EAAA4/B,QAAAk7I,EAAAxgL,EAAA6B,OAAAoD,OAEAw7K,GACA50K,EAAAq5B,UAAAz+B,EAAAg6K,EAAAD,GACAC,EAAAj5K,QAAAg5K,GAEAD,EAAA95K,EAAA+5K,IAEGC,IACH50K,EAAAyE,UAAA7J,EAAAg6K,UACAh6K,EAAAg6K,iDCtPA,IAAA/6K,EAAc1L,EAAQ,QAQtB,SAAA0mL,EAAA74K,EAAApB,GACA,OAAAoB,EAAAiN,OACA,CACAjU,EAAAgH,EAAAhH,EACAG,EAAA6G,EAAA7G,GAIA0E,EAAAg7K,oBAAA74K,EAAApB,GAQA,SAAAk6K,EAAAl6K,EAAA6sC,GACA,IACApsC,EAAA9M,EAAA2E,EAAAgJ,EAAA4mI,EAEA,IAAAv0I,EAAA,EAAA2N,EAHAtB,EAAAE,KAAAC,SAGAtH,OAAoClF,EAAA2N,IAAU3N,EAC9C,GAAAqM,EAAA8L,iBAAAnY,GAKA,IAAA2E,EAAA,EAAA4vI,GADAznI,EAAAT,EAAAU,eAAA/M,IACAuM,KAAArH,OAAsCP,EAAA4vI,IAAU5vI,EAAA,CAChD,IAAAmM,EAAAhE,EAAAP,KAAA5H,GACAmM,EAAA9K,MAAA05C,MACAxG,EAAApoC,IAYA,SAAA01K,EAAAn6K,EAAA7B,GACA,IAAAlD,EAAA,GAQA,OANAi/K,EAAAl6K,EAAA,SAAAyE,GACAA,EAAApH,QAAAc,EAAA/D,EAAA+D,EAAA5D,IACAU,EAAArC,KAAA6L,KAIAxJ,EAWA,SAAAm/K,EAAAp6K,EAAA7B,EAAAiO,EAAAiuK,GACA,IAAAC,EAAA5iK,OAAAC,kBACA4iK,EAAA,GAmBA,OAjBAL,EAAAl6K,EAAA,SAAAyE,GACA,IAAA2H,GAAA3H,EAAApH,QAAAc,EAAA/D,EAAA+D,EAAA5D,GAAA,CAIA,IAAAkyB,EAAAhoB,EAAA7G,iBACAiG,EAAAw2K,EAAAl8K,EAAAsuB,GAEA5oB,EAAAy2K,GACAC,EAAA,CAAA91K,GACA61K,EAAAz2K,GACGA,IAAAy2K,GAEHC,EAAA3hL,KAAA6L,MAIA81K,EAQA,SAAAC,EAAA95J,GACA,IAAA+5J,GAAA,IAAA/5J,EAAAlqB,QAAA,KACAkkL,GAAA,IAAAh6J,EAAAlqB,QAAA,KAEA,gBAAAmkL,EAAAC,GACA,IAAAC,EAAAJ,EAAApgL,KAAA6B,IAAAy+K,EAAAvgL,EAAAwgL,EAAAxgL,GAAA,EACA0gL,EAAAJ,EAAArgL,KAAA6B,IAAAy+K,EAAApgL,EAAAqgL,EAAArgL,GAAA,EACA,OAAAF,KAAA8uJ,KAAA9uJ,KAAAwX,IAAAgpK,EAAA,GAAAxgL,KAAAwX,IAAAipK,EAAA,KAIA,SAAAC,EAAA/6K,EAAAoB,EAAAL,GACA,IAAA5C,EAAA87K,EAAA74K,EAAApB,GAEAe,EAAA2f,KAAA3f,EAAA2f,MAAA,IACA,IAAA25J,EAAAG,EAAAz5K,EAAA2f,MACAtY,EAAArH,EAAAqL,UAAA+tK,EAAAn6K,EAAA7B,GAAAi8K,EAAAp6K,EAAA7B,GAAA,EAAAk8K,GACAp/K,EAAA,GAEA,OAAAmN,EAAAvP,QAIAmH,EAAAE,KAAAC,SAAAinB,QAAA,SAAAnlB,EAAA2C,GACA,GAAA5E,EAAA8L,iBAAAlH,GAAA,CACA,IACAH,EADAzE,EAAAU,eAAAkE,GACA1E,KAAAkI,EAAA,GAAAlE,QAGAO,MAAA9K,MAAA05C,MACAp4C,EAAArC,KAAA6L,MAKAxJ,GAfA,GA+BAvH,EAAAD,QAAA,CAEAwY,MAAA,CACAC,OAAA,SAAAlM,EAAAoB,GACA,IAAAjD,EAAA87K,EAAA74K,EAAApB,GACA/E,EAAA,GASA,OAPAi/K,EAAAl6K,EAAA,SAAAyE,GACA,GAAAA,EAAApH,QAAAc,EAAA/D,EAAA+D,EAAA5D,GAEA,OADAU,EAAArC,KAAA6L,GACAxJ,IAIAA,EAAA+Y,MAAA,MASAvV,MAAAs8K,EAYAh+K,MAAAg+K,EAWA94K,QAAA,SAAAjC,EAAAoB,EAAAL,GACA,IAAA5C,EAAA87K,EAAA74K,EAAApB,GACAe,EAAA2f,KAAA3f,EAAA2f,MAAA,KACA,IAAA25J,EAAAG,EAAAz5K,EAAA2f,MACAtY,EAAArH,EAAAqL,UAAA+tK,EAAAn6K,EAAA7B,GAAAi8K,EAAAp6K,EAAA7B,GAAA,EAAAk8K,GAMA,OAJAjyK,EAAAvP,OAAA,IACAuP,EAAApI,EAAAU,eAAA0H,EAAA,GAAAnE,eAAA/D,MAGAkI,GASA4yK,SAAA,SAAAh7K,EAAAoB,GACA,OAAA25K,EAAA/6K,EAAAoB,EAAA,CAA+BgL,WAAA,KAW/B00D,MAAA,SAAA9gE,EAAAoB,GAEA,OAAA+4K,EAAAn6K,EADAi6K,EAAA74K,EAAApB,KAYAi7K,QAAA,SAAAj7K,EAAAoB,EAAAL,GACA,IAAA5C,EAAA87K,EAAA74K,EAAApB,GACAe,EAAA2f,KAAA3f,EAAA2f,MAAA,KACA,IAAA25J,EAAAG,EAAAz5K,EAAA2f,MACA65J,EAAAH,EAAAp6K,EAAA7B,EAAA4C,EAAAqL,UAAAiuK,GAmBA,OAhBAE,EAAA1hL,OAAA,GACA0hL,EAAAp1J,KAAA,SAAA7R,EAAAoF,GACA,IAEA+sB,EAFAnyB,EAAAzV,UACA6a,EAAA7a,UAQA,OALA,IAAA4nC,IAEAA,EAAAnyB,EAAArP,cAAAyU,EAAAzU,eAGAwhC,IAKA80I,EAAAvmK,MAAA,MAWA5Z,EAAA,SAAA4F,EAAAoB,EAAAL,GACA,IAAA5C,EAAA87K,EAAA74K,EAAApB,GACAoI,EAAA,GACA8yK,GAAA,EAiBA,OAfAhB,EAAAl6K,EAAA,SAAAyE,GACAA,EAAA/G,SAAAS,EAAA/D,IACAgO,EAAAxP,KAAA6L,GAGAA,EAAApH,QAAAc,EAAA/D,EAAA+D,EAAA5D,KACA2gL,GAAA,KAMAn6K,EAAAqL,YAAA8uK,IACA9yK,EAAA,IAEAA,GAWA7N,EAAA,SAAAyF,EAAAoB,EAAAL,GACA,IAAA5C,EAAA87K,EAAA74K,EAAApB,GACAoI,EAAA,GACA8yK,GAAA,EAiBA,OAfAhB,EAAAl6K,EAAA,SAAAyE,GACAA,EAAA9G,SAAAQ,EAAA5D,IACA6N,EAAAxP,KAAA6L,GAGAA,EAAApH,QAAAc,EAAA/D,EAAA+D,EAAA5D,KACA2gL,GAAA,KAMAn6K,EAAAqL,YAAA8uK,IACA9yK,EAAA,IAEAA,wCClUA,IAAA8mH,EAAA,oEAEA,SAAAisD,IACAr/K,KAAAvE,QAAA,uCAEA4jL,EAAA5lL,UAAA,IAAAgU,MACA4xK,EAAA5lL,UAAAkvC,KAAA,EACA02I,EAAA5lL,UAAArB,KAAA,wBAwBAR,EAAAD,QAtBA,SAAA4lC,GAGA,IAFA,IAIA+hJ,EAAAn1H,EAJAv7B,EAAA2X,OAAAhJ,GACA2qG,EAAA,GAGA7tI,EAAA,EAAAqK,EAAA0uH,EAIAxkG,EAAArzB,OAAA,EAAAlB,KAAAqK,EAAA,IAAArK,EAAA,GAEA6tI,GAAAxjI,EAAAnJ,OAAA,GAAA+jL,GAAA,EAAAjlL,EAAA,KACA,CAEA,IADA8vD,EAAAv7B,EAAAxzB,WAAAf,GAAA,MACA,IACA,UAAAglL,EAEAC,KAAA,EAAAn1H,EAEA,OAAA+9E,sCC5BA,IAAA/uH,EAAY1hB,EAAQ,QACpBgG,EAAehG,EAAQ,QACvB0L,EAAc1L,EAAQ,QACtBgS,EAAmBhS,EAAQ,QAE3BG,EAAAD,QAAA,WA4ZA,SAAA4nL,EAAAC,EAAAl8J,EAAAm8J,GACA,IAAAC,EAYA,MAXA,iBAAAF,GACAE,EAAA7kL,SAAA2kL,EAAA,KAEA,IAAAA,EAAA9kL,QAAA,OAEAglL,IAAA,IAAAp8J,EAAApB,WAAAu9J,KAGAC,EAAAF,EAGAE,EAOA,SAAAC,EAAA7mL,GACA,OAAAA,SAAA,SAAAA,EAQA,SAAA8mL,EAAAC,EAAAC,EAAAC,GACA,IAAA91H,EAAArpC,SAAAkB,YACAI,EAAA/e,EAAA68K,eAAAH,GACAI,EAAAh2H,EAAAloC,iBAAA89J,GAAAC,GACAI,EAAAj2H,EAAAloC,iBAAAG,GAAA49J,GACAK,EAAAR,EAAAM,GACAG,EAAAT,EAAAO,GACAG,EAAAzkK,OAAAC,kBAEA,OAAAskK,GAAAC,EACA7hL,KAAAC,IACA2hL,EAAAZ,EAAAU,EAAAJ,EAAAE,GAAAM,EACAD,EAAAb,EAAAW,EAAAh+J,EAAA69J,GAAAM,GAGA,OApcAl9K,EAAA6G,YAAA,WACA,OAAA7G,EAAA8gC,MAAA9gC,EAAAyU,MAAA9J,UAAA,OAAAoK,MAAAlgB,KAAA8V,UAAA,IACAspJ,OAAA,SAAAh+J,EAAA2e,EAAAD,EAAA7S,GACA,IAAAiyJ,EAAAn/I,EAAA3e,IAAA,GACAoxI,EAAA1yH,EAAA1e,GAEA,WAAAA,EAEA2e,EAAA3e,GAAA+J,EAAAm9K,WAAAppB,EAAA1sB,GACK,UAAApxI,EAEL2e,EAAA3e,GAAA+J,EAAA8gC,MAAAizH,EAAA,CAAAztJ,EAAA82K,iBAAA/1C,EAAAlvI,MAAAkvI,IAEArnI,EAAA8zJ,QAAA79J,EAAA2e,EAAAD,EAAA7S,OAMA9B,EAAAm9K,WAAA,WACA,OAAAn9K,EAAA8gC,MAAA9gC,EAAAyU,MAAA9J,UAAA,OAAAoK,MAAAlgB,KAAA8V,UAAA,IACAspJ,OAAA,SAAAh+J,EAAA2e,EAAAD,EAAA7S,GACA,aAAA7L,GAAA,UAAAA,EAAA,CACA,IACAvB,EAAAyD,EAAA8H,EADAo9K,EAAA1oK,EAAA1e,GAAA2D,OAOA,IAJAgb,EAAA3e,KACA2e,EAAA3e,GAAA,IAGAvB,EAAA,EAAgBA,EAAA2oL,IAAU3oL,EAC1BuL,EAAA0U,EAAA1e,GAAAvB,GACAyD,EAAA6H,EAAAqF,eAAApF,EAAA9H,KAAA,UAAAlC,EAAA,qBAEAvB,GAAAkgB,EAAA3e,GAAA2D,QACAgb,EAAA3e,GAAA0D,KAAA,KAGAib,EAAA3e,GAAAvB,GAAAyD,MAAA8H,EAAA9H,MAAA8H,EAAA9H,OAAAyc,EAAA3e,GAAAvB,GAAAyD,KAGA6H,EAAA8gC,MAAAlsB,EAAA3e,GAAAvB,GAAA,CAAA4R,EAAA82K,iBAAAjlL,GAAA8H,IAGAD,EAAA8gC,MAAAlsB,EAAA3e,GAAAvB,GAAAuL,QAIAD,EAAA8zJ,QAAA79J,EAAA2e,EAAAD,EAAA7S,OAMA9B,EAAAm2K,MAAA,SAAAjtH,EAAAo0H,GACA,GAAAt9K,EAAAwX,QAAA0xC,IAAA1zC,MAAAlf,UAAA8vB,OACA,OAAA8iC,EAAA9iC,OAAAk3J,GAEA,IAAAC,EAAA,GAQA,OANAv9K,EAAA4D,KAAAslD,EAAA,SAAAzpD,GACA69K,EAAA79K,IACA89K,EAAA5jL,KAAA8F,KAIA89K,GAEAv9K,EAAAgoB,UAAAxS,MAAAlf,UAAA0xB,UACA,SAAA6L,EAAAloB,EAAAk1B,GACA,OAAAhN,EAAA7L,UAAArc,EAAAk1B,IAEA,SAAAhN,EAAAloB,EAAAk1B,GACAA,OAAA9pC,IAAA8pC,EAAAhN,EAAAgN,EACA,QAAAnsC,EAAA,EAAA2N,EAAAwxB,EAAAj6B,OAAuClF,EAAA2N,IAAU3N,EACjD,GAAAiX,EAAA9W,KAAAgsC,EAAAhN,EAAAn/B,KAAAm/B,GACA,OAAAn/B,EAGA,UAEAsL,EAAAu4K,cAAA,SAAAiF,EAAAF,EAAAG,GAEAz9K,EAAAuM,cAAAkxK,KACAA,GAAA,GAEA,QAAA/oL,EAAA+oL,EAAA,EAA8B/oL,EAAA8oL,EAAA5jL,OAA0BlF,IAAA,CACxD,IAAAgpL,EAAAF,EAAA9oL,GACA,GAAA4oL,EAAAI,GACA,OAAAA,IAIA19K,EAAA29K,kBAAA,SAAAH,EAAAF,EAAAG,GAEAz9K,EAAAuM,cAAAkxK,KACAA,EAAAD,EAAA5jL,QAEA,QAAAlF,EAAA+oL,EAAA,EAA8B/oL,GAAA,EAAQA,IAAA,CACtC,IAAAgpL,EAAAF,EAAA9oL,GACA,GAAA4oL,EAAAI,GACA,OAAAA,IAMA19K,EAAA+X,SAAA,SAAA5hB,GACA,OAAA8L,MAAAhJ,WAAA9C,KAAAwzB,SAAAxzB,IAEA6J,EAAA49K,aAAA,SAAAziL,EAAAG,EAAAuiL,GACA,OAAAziL,KAAA6B,IAAA9B,EAAAG,GAAAuiL,GAEA79K,EAAA89K,YAAA,SAAA3iL,EAAA0iL,GACA,IAAAE,EAAA3iL,KAAAka,MAAAna,GACA,OAAA4iL,EAAAF,EAAA1iL,GAAA4iL,EAAAF,EAAA1iL,GAEA6E,EAAAxE,IAAA,SAAAq4B,GACA,OAAAA,EAAAvqB,OAAA,SAAA9N,EAAA7F,GACA,OAAAsM,MAAAtM,GAGA6F,EAFAJ,KAAAI,MAAA7F,IAGG8iB,OAAAE,oBAEH3Y,EAAA3E,IAAA,SAAAw4B,GACA,OAAAA,EAAAvqB,OAAA,SAAAjO,EAAA1F,GACA,OAAAsM,MAAAtM,GAGA0F,EAFAD,KAAAC,MAAA1F,IAGG8iB,OAAAC,oBAEH1Y,EAAAm6J,KAAA/+J,KAAA++J,KACA,SAAAh/J,GACA,OAAAC,KAAA++J,KAAAh/J,IAEA,SAAAA,GAEA,YADAA,OACA8G,MAAA9G,GACAA,EAEAA,EAAA,QAEA6E,EAAAs5J,MAAAl+J,KAAAk+J,MACA,SAAAn+J,GACA,OAAAC,KAAAk+J,MAAAn+J,IAEA,SAAAA,GACA,IAAA6iL,EAAA5iL,KAAA6iL,IAAA9iL,GAAAC,KAAA8iL,OAGAC,EAAA/iL,KAAAka,MAAA0oK,GAGA,OAFA7iL,IAAAC,KAAAwX,IAAA,GAAAurK,GAEAA,EAAAH,GAEAh+K,EAAAwrI,UAAA,SAAAv3H,GACA,OAAAA,GAAA7Y,KAAAyF,GAAA,MAEAb,EAAAka,UAAA,SAAAkkK,GACA,OAAAA,GAAA,IAAAhjL,KAAAyF,KAGAb,EAAAi3J,kBAAA,SAAAonB,EAAAC,GACA,IAAAC,EAAAD,EAAAnjL,EAAAkjL,EAAAljL,EACAqjL,EAAAF,EAAAhjL,EAAA+iL,EAAA/iL,EACAmjL,EAAArjL,KAAA8uJ,KAAAq0B,IAAAC,KAEA17K,EAAA1H,KAAAsjL,MAAAF,EAAAD,GAMA,OAJAz7K,GAAA,GAAA1H,KAAAyF,KACAiC,GAAA,EAAA1H,KAAAyF,IAGA,CACAiC,QACA8B,SAAA65K,IAGAz+K,EAAA2+K,sBAAA,SAAAjD,EAAAC,GACA,OAAAvgL,KAAA8uJ,KAAA9uJ,KAAAwX,IAAA+oK,EAAAxgL,EAAAugL,EAAAvgL,EAAA,GAAAC,KAAAwX,IAAA+oK,EAAArgL,EAAAogL,EAAApgL,EAAA,KAEA0E,EAAAiyK,WAAA,SAAA2M,GACA,OAAAA,EAAA,WAEA5+K,EAAAyjE,YAAA,SAAAo7G,EAAAC,EAAAC,EAAAnpL,GAMA,IAAA+sC,EAAAk8I,EAAAzqI,KAAA0qI,EAAAD,EACAhjH,EAAAijH,EACAl8I,EAAAm8I,EAAA3qI,KAAA0qI,EAAAC,EAEAC,EAAA5jL,KAAA8uJ,KAAA9uJ,KAAAwX,IAAAipD,EAAA1gE,EAAAwnC,EAAAxnC,EAAA,GAAAC,KAAAwX,IAAAipD,EAAAvgE,EAAAqnC,EAAArnC,EAAA,IACA2jL,EAAA7jL,KAAA8uJ,KAAA9uJ,KAAAwX,IAAAgwB,EAAAznC,EAAA0gE,EAAA1gE,EAAA,GAAAC,KAAAwX,IAAAgwB,EAAAtnC,EAAAugE,EAAAvgE,EAAA,IAEA4jL,EAAAF,KAAAC,GACAE,EAAAF,GAAAD,EAAAC,GAMAG,EAAAxpL,GAHAspL,EAAAj9K,MAAAi9K,GAAA,EAAAA,GAIAG,EAAAzpL,GAHAupL,EAAAl9K,MAAAk9K,GAAA,EAAAA,GAKA,OACAx8I,SAAA,CACAxnC,EAAA0gE,EAAA1gE,EAAAikL,GAAAx8I,EAAAznC,EAAAwnC,EAAAxnC,GACAG,EAAAugE,EAAAvgE,EAAA8jL,GAAAx8I,EAAAtnC,EAAAqnC,EAAArnC,IAEAsnC,KAAA,CACAznC,EAAA0gE,EAAA1gE,EAAAkkL,GAAAz8I,EAAAznC,EAAAwnC,EAAAxnC,GACAG,EAAAugE,EAAAvgE,EAAA+jL,GAAAz8I,EAAAtnC,EAAAqnC,EAAArnC,MAIA0E,EAAAs/K,QAAA7mK,OAAA6mK,SAAA,MACAt/K,EAAAwjE,oBAAA,SAAArC,GAMA,IAUAzsE,EAAA6qL,EAAAC,EAAAC,EA4BAC,EAAAC,EAAAC,EAAAC,EA0BAjE,EAhEAkE,GAAA3+G,GAAA,IAAA5/D,IAAA,SAAAsgE,GACA,OACAv8D,MAAAu8D,EAAA18D,OACA46K,OAAA,EACAC,GAAA,KAKAC,EAAAH,EAAAlmL,OAEA,IAAAlF,EAAA,EAAaA,EAAAurL,IAAevrL,EAE5B,KADA8qL,EAAAM,EAAAprL,IACA4Q,MAAA8uC,KAAA,CAMA,GAFAmrI,EAAA7qL,EAAA,EAAAorL,EAAAprL,EAAA,SACA+qL,EAAA/qL,EAAAurL,EAAA,EAAAH,EAAAprL,EAAA,WACA+qL,EAAAn6K,MAAA8uC,KAAA,CACA,IAAA8rI,EAAAT,EAAAn6K,MAAAnK,EAAAqkL,EAAAl6K,MAAAnK,EAGAqkL,EAAAO,OAAA,IAAAG,GAAAT,EAAAn6K,MAAAhK,EAAAkkL,EAAAl6K,MAAAhK,GAAA4kL,EAAA,GAGAX,KAAAj6K,MAAA8uC,KACAorI,EAAAQ,GAAAR,EAAAO,QACIN,KAAAn6K,MAAA8uC,KACJorI,EAAAQ,GAAAT,EAAAQ,OACIljL,KAAAs9J,KAAAolB,EAAAQ,UAAAljL,KAAAs9J,KAAAqlB,EAAAO,QACJP,EAAAQ,GAAA,EAEAR,EAAAQ,IAAAT,EAAAQ,OAAAP,EAAAO,QAAA,EAMA,IAAArrL,EAAA,EAAaA,EAAAurL,EAAA,IAAmBvrL,EAChC8qL,EAAAM,EAAAprL,GACA+qL,EAAAK,EAAAprL,EAAA,GACA8qL,EAAAl6K,MAAA8uC,MAAAqrI,EAAAn6K,MAAA8uC,OAIAp0C,EAAA49K,aAAA4B,EAAAO,OAAA,EAAAljL,KAAAyiL,SACAE,EAAAQ,GAAAP,EAAAO,GAAA,GAIAN,EAAAF,EAAAQ,GAAAR,EAAAO,OACAJ,EAAAF,EAAAO,GAAAR,EAAAO,QACAF,EAAAzkL,KAAAwX,IAAA8sK,EAAA,GAAAtkL,KAAAwX,IAAA+sK,EAAA,KACA,IAIAC,EAAA,EAAAxkL,KAAA8uJ,KAAA21B,GACAL,EAAAQ,GAAAN,EAAAE,EAAAJ,EAAAO,OACAN,EAAAO,GAAAL,EAAAC,EAAAJ,EAAAO,UAKA,IAAArrL,EAAA,EAAaA,EAAAurL,IAAevrL,GAC5B8qL,EAAAM,EAAAprL,IACA4Q,MAAA8uC,OAIAmrI,EAAA7qL,EAAA,EAAAorL,EAAAprL,EAAA,QACA+qL,EAAA/qL,EAAAurL,EAAA,EAAAH,EAAAprL,EAAA,QACA6qL,MAAAj6K,MAAA8uC,OACAwnI,GAAA4D,EAAAl6K,MAAAnK,EAAAokL,EAAAj6K,MAAAnK,GAAA,EACAqkL,EAAAl6K,MAAAs+D,sBAAA47G,EAAAl6K,MAAAnK,EAAAygL,EACA4D,EAAAl6K,MAAAu+D,sBAAA27G,EAAAl6K,MAAAhK,EAAAsgL,EAAA4D,EAAAQ,IAEAP,MAAAn6K,MAAA8uC,OACAwnI,GAAA6D,EAAAn6K,MAAAnK,EAAAqkL,EAAAl6K,MAAAnK,GAAA,EACAqkL,EAAAl6K,MAAAw+D,kBAAA07G,EAAAl6K,MAAAnK,EAAAygL,EACA4D,EAAAl6K,MAAAy+D,kBAAAy7G,EAAAl6K,MAAAhK,EAAAsgL,EAAA4D,EAAAQ,MAIAhgL,EAAA2jE,SAAA,SAAAza,EAAAprD,EAAAu+E,GACA,OAAAA,EACAv+E,GAAAorD,EAAAtvD,OAAA,EAAAsvD,EAAA,GAAAA,EAAAprD,EAAA,GAEAA,GAAAorD,EAAAtvD,OAAA,EAAAsvD,IAAAtvD,OAAA,GAAAsvD,EAAAprD,EAAA,IAEAkC,EAAA0jE,aAAA,SAAAxa,EAAAprD,EAAAu+E,GACA,OAAAA,EACAv+E,GAAA,EAAAorD,IAAAtvD,OAAA,GAAAsvD,EAAAprD,EAAA,GAEAA,GAAA,EAAAorD,EAAA,GAAAA,EAAAprD,EAAA,IAGAkC,EAAAmgL,QAAA,SAAAx/J,EAAArL,GACA,IAAA0oK,EAAA5iL,KAAAkN,MAAAtI,EAAAs5J,MAAA34I,IACAy/J,EAAAz/J,EAAAvlB,KAAAwX,IAAA,GAAAorK,GAuBA,OApBA1oK,EACA8qK,EAAA,IACA,EACIA,EAAA,EACJ,EACIA,EAAA,EACJ,EAEA,GAEGA,GAAA,EACH,EACGA,GAAA,EACH,EACGA,GAAA,EACH,EAEA,IAGAhlL,KAAAwX,IAAA,GAAAorK,IAGAh+K,EAAAk1K,iBACA,oBAAAx/J,OACA,SAAA/J,GACAA,KAGA+J,OAAAib,uBACAjb,OAAA2qK,6BACA3qK,OAAA4qK,0BACA5qK,OAAA6qK,wBACA7qK,OAAA8qK,yBACA,SAAA70K,GACA,OAAA+J,OAAA0I,WAAAzS,EAAA,SAIA3L,EAAAg7K,oBAAA,SAAAj9G,EAAAh9D,GACA,IAAA1C,EAAAC,EACA6D,EAAA47D,EAAA1Y,eAAA0Y,EACA/2D,EAAA+2D,EAAAnpD,QAAAmpD,EAAA0iH,WACAC,EAAA15K,EAAA+b,wBAEA6kC,EAAAzlD,EAAAylD,QACAA,KAAAhuD,OAAA,GACAyE,EAAAupD,EAAA,GAAAV,QACA5oD,EAAAspD,EAAA,GAAAT,UAGA9oD,EAAA8D,EAAA+kD,QACA5oD,EAAA6D,EAAAglD,SAMA,IAAA7pB,EAAArkC,WAAA+G,EAAAuwF,SAAAvpF,EAAA,iBACAu2B,EAAAtkC,WAAA+G,EAAAuwF,SAAAvpF,EAAA,gBACAw2B,EAAAvkC,WAAA+G,EAAAuwF,SAAAvpF,EAAA,kBACAy2B,EAAAxkC,WAAA+G,EAAAuwF,SAAAvpF,EAAA,mBACArM,EAAA+lL,EAAA7kL,MAAA6kL,EAAA/kL,KAAA2hC,EAAAE,EACA9hC,EAAAglL,EAAA5kL,OAAA4kL,EAAA9kL,IAAA2hC,EAAAE,EAOA,OACAtiC,EAJAkD,EAAAjD,KAAAka,OAAAjX,EAAAqiL,EAAA/kL,KAAA2hC,GAAA,EAAAt2B,EAAArM,MAAAoG,EAAA4/K,yBAKArlL,EAJAgD,EAAAlD,KAAAka,OAAAhX,EAAAoiL,EAAA9kL,IAAA2hC,GAAA,EAAAv2B,EAAAtL,OAAAqF,EAAA4/K,2BAyDA3gL,EAAA4gL,mBAAA,SAAAlE,GACA,OAAAD,EAAAC,EAAA,4BAGA18K,EAAA6gL,oBAAA,SAAAnE,GACA,OAAAD,EAAAC,EAAA,8BAKA18K,EAAA8gL,kBAAA,SAAAr1H,EAAA1mC,EAAAg8J,GAGA,OAFAh8J,EAAA/kB,EAAAuwF,SAAA9kC,EAAA1mC,IAEAxtB,QAAA,QAAAwpL,EAAArpL,SAAAqtB,EAAA,IAAArtB,SAAAqtB,EAAA,KAKA/kB,EAAA68K,eAAA,SAAAH,GACA,IAAA94J,EAAA84J,EAAA39J,WAIA,OAHA6E,KAAA5E,OACA4E,IAAA5E,MAEA4E,GAEA5jB,EAAAuI,gBAAA,SAAAm0K,GACA,IAAAjxH,EAAAzrD,EAAA68K,eAAAH,GACA,IAAAjxH,EACA,OAAAixH,EAAAt5J,YAGA,IAAAA,EAAAqoC,EAAAroC,YAIA1S,EAAA0S,EAHApjB,EAAA8gL,kBAAAr1H,EAAA,eAAAroC,GACApjB,EAAA8gL,kBAAAr1H,EAAA,gBAAAroC,GAGA49J,EAAAhhL,EAAA4gL,mBAAAlE,GACA,OAAAz6K,MAAA++K,GAAAtwK,EAAAtV,KAAAC,IAAAqV,EAAAswK,IAEAhhL,EAAAyI,iBAAA,SAAAi0K,GACA,IAAAjxH,EAAAzrD,EAAA68K,eAAAH,GACA,IAAAjxH,EACA,OAAAixH,EAAAr5J,aAGA,IAAAA,EAAAooC,EAAApoC,aAIAzL,EAAAyL,EAHArjB,EAAA8gL,kBAAAr1H,EAAA,cAAApoC,GACArjB,EAAA8gL,kBAAAr1H,EAAA,iBAAApoC,GAGAxrB,EAAAmI,EAAA6gL,oBAAAnE,GACA,OAAAz6K,MAAApK,GAAA+f,EAAAxc,KAAAC,IAAAuc,EAAA/f,IAEAmI,EAAAuwF,SAAA,SAAA5rE,EAAAtuB,GACA,OAAAsuB,EAAAs8J,aACAt8J,EAAAs8J,aAAA5qL,GACAonB,SAAAkB,YAAAC,iBAAA+F,EAAA,MAAAwmC,iBAAA90D,IAEA2J,EAAAwH,YAAA,SAAAzG,EAAAmgL,GACA,IAAAC,EAAApgL,EAAA4/K,wBAAAO,GAAA,oBAAAxrK,eAAAjO,kBAAA,EACA,OAAA05K,EAAA,CAIA,IAAAn6K,EAAAjG,EAAAiG,OACAtL,EAAAqF,EAAArF,OACAf,EAAAoG,EAAApG,MAEAqM,EAAAtL,SAAAylL,EACAn6K,EAAArM,QAAAwmL,EACApgL,EAAAnE,IAAAqD,MAAAkhL,KAKAn6K,EAAA0B,MAAAhN,QAAAsL,EAAA0B,MAAA/N,QACAqM,EAAA0B,MAAAhN,SAAA,KACAsL,EAAA0B,MAAA/N,QAAA,QAIAqF,EAAAmX,WAAA,SAAAiqK,EAAAxqK,EAAAE,GACA,OAAAF,EAAA,IAAAwqK,EAAA,MAAAtqK,GAEA9W,EAAA8Z,YAAA,SAAAld,EAAAsa,EAAAmqK,EAAA9zI,GAEA,IAAAtsC,GADAssC,KAAA,IACAtsC,KAAAssC,EAAAtsC,MAAA,GACAqgL,EAAA/zI,EAAAg0I,eAAAh0I,EAAAg0I,gBAAA,GAEAh0I,EAAAr2B,WACAjW,EAAAssC,EAAAtsC,KAAA,GACAqgL,EAAA/zI,EAAAg0I,eAAA,GACAh0I,EAAAr2B,QAGAta,EAAAsa,OACA,IAAAsqK,EAAA,EACAxhL,EAAA4D,KAAAy9K,EAAA,SAAAI,GAEAA,UAAA,IAAAzhL,EAAAwX,QAAAiqK,GACAD,EAAAxhL,EAAA+Z,YAAAnd,EAAAqE,EAAAqgL,EAAAE,EAAAC,GACIzhL,EAAAwX,QAAAiqK,IAGJzhL,EAAA4D,KAAA69K,EAAA,SAAAC,GAEAA,SAAA1hL,EAAAwX,QAAAkqK,KACAF,EAAAxhL,EAAA+Z,YAAAnd,EAAAqE,EAAAqgL,EAAAE,EAAAE,QAMA,IAAAC,EAAAL,EAAA1nL,OAAA,EACA,GAAA+nL,EAAAN,EAAAznL,OAAA,CACA,QAAAlF,EAAA,EAAkBA,EAAAitL,EAAWjtL,WAC7BuM,EAAAqgL,EAAA5sL,IAEA4sL,EAAAx6I,OAAA,EAAA66I,GAEA,OAAAH,GAEAxhL,EAAA+Z,YAAA,SAAAnd,EAAAqE,EAAAqgL,EAAAE,EAAAhyK,GACA,IAAAkvB,EAAAz9B,EAAAuO,GAQA,OAPAkvB,IACAA,EAAAz9B,EAAAuO,GAAA5S,EAAAmd,YAAAvK,GAAA7U,MACA2mL,EAAA3nL,KAAA6V,IAEAkvB,EAAA8iJ,IACAA,EAAA9iJ,GAEA8iJ,GAEAxhL,EAAAuvK,mBAAA,SAAA8R,GACA,IAAAO,EAAA,EAQA,OAPA5hL,EAAA4D,KAAAy9K,EAAA,SAAAI,GACAzhL,EAAAwX,QAAAiqK,IACAA,EAAA7nL,OAAAgoL,IACAA,EAAAH,EAAA7nL,UAIAgoL,GAGA5hL,EAAAgW,QAKA,SAAArgB,GAMA,OAJAA,aAAAksL,iBACAlsL,EAAA2E,EAAA6B,OAAAC,cAGA4Z,EAAArgB,IAVA,SAAAA,GAEA,OAAAA,GAWAqK,EAAAwkE,cAAA,SAAAs9G,GAEA,OAAAA,aAAAC,cACAD,EACA9hL,EAAAgW,MAAA8rK,GAAAruK,SAAA,IAAAD,OAAA,IAAAvB,iDCrnBA,IAAAjS,EAAc1L,EAAQ,QACtB68B,EAAY78B,EAAQ,QAkEpBG,EAAAD,QAAA,SAAAoL,GAEA,IAAAgD,EAAA5C,EAAA4C,KAEAhD,EAAAqY,gBAAAkZ,EAAA30B,OAAA,CACAqc,cAAA,SAAAljB,GACA,uBAAAA,GACAA,EAEAw7B,EAAA76B,UAAAuiB,cAAAhkB,KAAAgI,KAAAlH,IAGAmjB,uBAAA,WACA,IAAA/V,EAAAlG,KAEAsb,EADApV,EAAAjB,QACAvB,MAKA,GAAA4X,EAAA3X,YAAA,CACA,IAAAwhL,EAAAhiL,EAAAm6J,KAAAp3J,EAAA1H,KACA4mL,EAAAjiL,EAAAm6J,KAAAp3J,EAAAvH,KAEAwmL,EAAA,GAAAC,EAAA,EAEAl/K,EAAAvH,IAAA,EACKwmL,EAAA,GAAAC,EAAA,IAELl/K,EAAA1H,IAAA,GAIA,IAAA6mL,OAAAnrL,IAAAohB,EAAA9c,UAAAtE,IAAAohB,EAAAgqK,aACAC,OAAArrL,IAAAohB,EAAA3c,UAAAzE,IAAAohB,EAAAkqK,kBAEAtrL,IAAAohB,EAAA9c,IACA0H,EAAA1H,IAAA8c,EAAA9c,SACItE,IAAAohB,EAAAgqK,eACJ,OAAAp/K,EAAA1H,IACA0H,EAAA1H,IAAA8c,EAAAgqK,aAEAp/K,EAAA1H,IAAAD,KAAAC,IAAA0H,EAAA1H,IAAA8c,EAAAgqK,oBAIAprL,IAAAohB,EAAA3c,IACAuH,EAAAvH,IAAA2c,EAAA3c,SACIzE,IAAAohB,EAAAkqK,eACJ,OAAAt/K,EAAAvH,IACAuH,EAAAvH,IAAA2c,EAAAkqK,aAEAt/K,EAAAvH,IAAAJ,KAAAI,IAAAuH,EAAAvH,IAAA2c,EAAAkqK,eAIAH,IAAAE,GAKAr/K,EAAA1H,KAAA0H,EAAAvH,MACA0mL,EACAn/K,EAAAvH,IAAAuH,EAAA1H,IAAA,EAEA0H,EAAA1H,IAAA0H,EAAAvH,IAAA,GAKAuH,EAAA1H,MAAA0H,EAAAvH,MACAuH,EAAAvH,MAEA2c,EAAA3X,aACAuC,EAAA1H,QAIA0d,aAAAnW,EACA24J,yBAAA34J,EAEA+uB,WAAA,WACA,IAAA5uB,EAAAlG,KAEAsb,EADApV,EAAAjB,QACAvB,MAMA+6J,EAAAv4J,EAAAgW,eAGAupK,EAAA,CACAhnB,SAHAA,EAAAlgK,KAAAI,IAAA,EAAA8/J,GAIAjgK,IAAA8c,EAAA9c,IACAG,IAAA2c,EAAA3c,IACAo1H,UAAAz4G,EAAAy4G,UACA6X,SAAAzoI,EAAAqF,eAAA8S,EAAAoqK,cAAApqK,EAAAswH,WAEAloI,EAAAwC,EAAAxC,MA9JA,SAAAg5J,EAAAC,GACA,IAKAlxB,EACA1X,EACAn5G,EAPAlX,EAAA,GASA,GAAAg5J,EAAA9wB,UAAA8wB,EAAA9wB,SAAA,EACAhxH,EAAA8hJ,EAAA9wB,aACE,CACF,IAAA+5C,EAAAxiL,EAAAmgL,QAAA3mB,EAAAh+J,IAAAg+J,EAAAn+J,KAAA,GACAoc,EAAAzX,EAAAmgL,QAAAqC,GAAAjpB,EAAA+B,SAAA,YAGAvkK,KADA65H,EAAA2oC,EAAA3oC,aAGA0X,EAAAltI,KAAAwX,IAAA,GAAAg+G,GACAn5G,EAAArc,KAAA6d,KAAAxB,EAAA6wH,MAGA,IAAAm6C,EAAArnL,KAAAkN,MAAAkxJ,EAAAn+J,IAAAoc,KACAirK,EAAAtnL,KAAA6d,KAAAugJ,EAAAh+J,IAAAic,KAGAzX,EAAAuM,cAAAgtJ,EAAAl+J,MAAA2E,EAAAuM,cAAAgtJ,EAAA/9J,OAAA+9J,EAAA9wB,UAEAzoI,EAAA89K,aAAAvkB,EAAA/9J,IAAA+9J,EAAAl+J,KAAAk+J,EAAA9wB,SAAAhxH,EAAA,OACAgrK,EAAAlpB,EAAAl+J,IACAqnL,EAAAnpB,EAAA/9J,KAIA,IAAAmnL,GAAAD,EAAAD,GAAAhrK,EAGAkrK,EADA3iL,EAAA49K,aAAA+E,EAAAvnL,KAAAka,MAAAqtK,GAAAlrK,EAAA,KACArc,KAAAka,MAAAqtK,GAEAvnL,KAAA6d,KAAA0pK,GAGA/xD,EAAA,EACAn5G,EAAA,IACAm5G,EAAAx1H,KAAAwX,IAAA,KAAAxX,KAAAkN,MAAAtI,EAAAs5J,MAAA7hJ,KACAgrK,EAAArnL,KAAAka,MAAAmtK,EAAA7xD,KACA8xD,EAAAtnL,KAAAka,MAAAotK,EAAA9xD,MAEArwH,EAAA5G,UAAA5C,IAAAwiK,EAAAl+J,IAAAk+J,EAAAl+J,IAAAonL,GACA,QAAAppL,EAAA,EAAgBA,EAAAspL,IAAetpL,EAC/BkH,EAAA5G,KAAAyB,KAAAka,OAAAmtK,EAAAppL,EAAAoe,GAAAm5G,MAIA,OAFArwH,EAAA5G,UAAA5C,IAAAwiK,EAAA/9J,IAAA+9J,EAAA/9J,IAAAknL,GAEAniL,EAuGAw5J,CAAAuoB,EAAAv/K,GAEAA,EAAAw4J,2BAIAx4J,EAAAvH,IAAAwE,EAAAxE,IAAA+E,GACAwC,EAAA1H,IAAA2E,EAAA3E,IAAAkF,GAEA4X,EAAAoD,SACAhb,EAAAgb,UAEAxY,EAAAI,MAAAJ,EAAAvH,IACAuH,EAAAsU,IAAAtU,EAAA1H,MAEA0H,EAAAI,MAAAJ,EAAA1H,IACA0H,EAAAsU,IAAAtU,EAAAvH,MAGA0d,qBAAA,WACA,IAAAnW,EAAAlG,KACAkG,EAAAkZ,eAAAlZ,EAAAxC,MAAAwU,QACAhS,EAAA+uK,cAAA/uK,EAAAxC,MAAAhJ,QAAA,GAEA45B,EAAA76B,UAAA4iB,qBAAArkB,KAAAkO,iDCjMA,ICA0M6/K,ECC1M,CACAnsJ,WAAA,GAMAx1B,KAPA,WAQA,OACAogC,aAAA,EACAE,KAAA,KAQA9L,QAlBA,WAmBA54B,KAAA4kC,YAIAzK,QAAA,CAIAyK,SAJA,WAIA,IAAA/Q,EAAA7zB,KACAA,KAAAwkC,aAAA,EAEAxkC,KAAAo6B,MAAA1hC,IAAA,6BACA2oB,KAAA,SAAAkZ,GACA1G,EAAA6Q,KAAAnK,EAAAn2B,KAEAyvB,EAAA2Q,aAAA,mBC5BAZ,EAAgBrrC,OAAA6gC,EAAA,EAAA7gC,CACdwtL,EHRF,WAA0B,IAAArqJ,EAAA17B,KAAaq5B,EAAAqC,EAAApC,eAA0BC,EAAAmC,EAAAlC,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBoC,YAAA,oBAA+B,CAAApC,EAAA,UAAeG,MAAA,CAAOoC,IAAAJ,EAAA8I,eAAuB9I,EAAAE,GAAA,KAAAF,EAAA8I,aAAA9I,EAAAgJ,KAAA3nC,OAA+F2+B,EAAAK,KAA/FxC,EAAA,KAA6DoC,YAAA,uBAAkC,CAAAD,EAAAE,GAAA,4CAAAF,EAAAE,GAAA,MAAAF,EAAA8I,aAAA9I,EAAAgJ,KAAA3nC,OAAAw8B,EAAA,SAA4HoC,YAAA,gCAA2C,CAAAD,EAAAoB,GAAA,GAAApB,EAAAE,GAAA,KAAArC,EAAA,QAAAmC,EAAA8C,GAAA9C,EAAA,cAAA6J,GAAmE,OAAAhM,EAAA,MAAAA,EAAA,MAAAA,EAAA,eAA2CG,MAAA,CAAO+E,GAAA,CAAMrmC,KAAA,iBAAAsmC,OAAA,CAAkCpjC,KAAA,OAAAg/B,KAAAiL,MAA6B,CAAA7J,EAAAE,GAAAF,EAAAG,GAAA0J,OAAA,OAA8B,KAAA7J,EAAAK,MAAA,IACppB,YAAoC,IAAa1C,EAAbr5B,KAAas5B,eAA0BC,EAAvCv5B,KAAuCw5B,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,SAAAA,EAAA,MAAAA,EAAA,MAA/Dv5B,KAA+D47B,GAAA,gBGUnG,EACA,KACA,KACA,MAIelb,EAAA,QAAAkjB,kECZf,IAAAzgC,EAAc1L,EAAQ,QAEtBuuL,EAAA,WACAC,EAAA,WACAC,EAAAD,EAAA,iBACAE,EAAAF,EAAA,mBACAG,EAAA,0CAOAC,EAAA,CACAC,WAAA,YACAC,UAAA,YACAC,SAAA,UACAr7H,aAAA,aACAs7H,YAAA,YACAC,YAAA,YACAC,UAAA,UACAv7H,aAAA,WACAw7H,WAAA,YAYA,SAAAC,EAAAl+K,EAAAnP,GACA,IAAAV,EAAAqK,EAAAuwF,SAAA/qF,EAAAnP,GACA0pC,EAAApqC,KAAAuyB,MAAA,qBACA,OAAA6X,EAAAtnB,OAAAsnB,EAAA,SAAAhpC,EA+DA,IAiBA4sL,IAjBA,WACA,IAAAC,GAAA,EACA,IACA,IAAA9hL,EAAA1M,OAAAC,eAAA,GAAwC,WACxCE,IAAA,WACAquL,GAAA,KAGAluK,OAAAnH,iBAAA,SAAAzM,GACE,MAAAK,IAGF,OAAAyhL,EAZA,IAiBA,CAA2D56J,SAAA,GAE3D,SAAAza,EAAA4R,EAAAhoB,EAAAiW,GACA+R,EAAA5R,iBAAApW,EAAAiW,EAAAu1K,GAGA,SAAAn1K,EAAA2R,EAAAhoB,EAAAiW,GACA+R,EAAA3R,oBAAArW,EAAAiW,EAAAu1K,GAGA,SAAAnpF,EAAAriG,EAAA4I,EAAA5F,EAAAG,EAAA8oD,GACA,OACAjsD,OACA4I,QACAqO,OAAAg1C,GAAA,KACAjpD,OAAApE,IAAAoE,IAAA,KACAG,OAAAvE,IAAAuE,IAAA,MA4HA,SAAAuoL,EAAA1jK,EAAA/R,EAAArN,GACA,IAnHAid,EAAA+mD,EACA++G,EACAt4K,EAiHA27B,EAAAhnB,EAAA0iK,KAAA1iK,EAAA0iK,GAAA,IAGAkB,EAAA58I,EAAA48I,QAnGA,SAAAn2I,GACA,IAAAm2I,EAAAtmK,SAAAkoB,cAAA,OACA+nD,EAAAo1F,EAAA,eAEAp6K,EACA,oHAUAq7K,EAAAr7K,MAAAgjD,QAAAhjD,EACAq7K,EAAAn1I,UAAA8+C,EACAq2F,EAAA50I,UACA,eAAAu+C,EAAA,mBAAAhlF,EAAA,0GASAglF,EAAA,mBAAAhlF,EAAA,qFAUA,IAAAymD,EAAA40H,EAAAz3I,WAAA,GACA03I,EAAAD,EAAAz3I,WAAA,GAEAy3I,EAAAE,OAAA,WACA90H,EAAAjsC,WAtCA,IAuCAisC,EAAAlsC,UAvCA,IAwCA+gK,EAAA9gK,WAxCA,IAyCA8gK,EAAA/gK,UAzCA,KA2CA,IAAAihK,EAAA,WACAH,EAAAE,SACAr2I,KAMA,OAHAr/B,EAAA4gD,EAAA,SAAA+0H,EAAAhuL,KAAAi5D,EAAA,WACA5gD,EAAAy1K,EAAA,SAAAE,EAAAhuL,KAAA8tL,EAAA,WAEAD,EA6CAI,EAtHAnmK,EAsHA,WACA,GAAAmpB,EAAA48I,QACA,OAAA31K,EAAAosF,EAAA,SAAAz5F,KAvHA+iL,GAAA,EACAt4K,EAAA,GAEA,WACAA,EAAAgK,MAAAlf,UAAAye,MAAAlgB,KAAA8V,WACAo6D,KAAAloE,KAEAinL,IACAA,GAAA,EACA9jL,EAAAk1K,iBAAArgL,KAAA6gB,OAAA,WACAouK,GAAA,EACA9lK,EAAA7jB,MAAA4qE,EAAAv5D,UAiEA,SAAA2U,EAAAytB,GACA,IAAAzG,EAAAhnB,EAAA0iK,KAAA1iK,EAAA0iK,GAAA,IACAviH,EAAAn5B,EAAAi9I,YAAA,SAAAjiL,GACAA,EAAAkiL,gBAAArB,GACAp1I,KAIA5tC,EAAA4D,KAAAq/K,EAAA,SAAA9qL,GACAoW,EAAA4R,EAAAhoB,EAAAmoE,KAQAn5B,EAAAgmG,SAAAhtH,EAAAH,aAEAG,EAAAswE,UAAA/3C,IAAAqqI,GA8BAuB,CAAAnkK,EAAA,WACA,GAAAgnB,EAAA48I,QAAA,CACA,IAAAt4H,EAAAtrC,EAAApB,WACA0sC,OAAAs4H,EAAAhlK,YACA0sC,EAAAxB,aAAA85H,EAAAt4H,EAAA9a,YAIAozI,EAAAE,YAKA,SAAAM,EAAApkK,GACA,IAAAgnB,EAAAhnB,EAAA0iK,IAAA,GACAkB,EAAA58I,EAAA48I,eAEA58I,EAAA48I,QA5CA,SAAA5jK,GACA,IAAAgnB,EAAAhnB,EAAA0iK,IAAA,GACAviH,EAAAn5B,EAAAi9I,YAEA9jH,IACAtgE,EAAA4D,KAAAq/K,EAAA,SAAA9qL,GACAqW,EAAA2R,EAAAhoB,EAAAmoE,YAGAn5B,EAAAi9I,aAGAjkK,EAAAswE,UAAAt2C,OAAA4oI,GAiCAyB,CAAArkK,GAEA4jK,KAAAhlK,YACAglK,EAAAhlK,WAAAiS,YAAA+yJ,GAiBAtvL,EAAAD,QAAA,CAMAklL,SAAA,oBAAAhkK,QAAA,oBAAA+H,SAEAnW,WAAA,WACA,IAtBAlB,EAAAqY,EAEA/V,EAoBA+7K,EAAA,kCAtBAhmK,EA2BA,sBAAAukK,EAAA,IAAoDyB,EAAA,eACpDzB,EAAA,IAA4CyB,EAAA,KAC5C1B,EAAA,sBACAC,EAAA,qBACAA,EAAA,YA7BAt6K,GAFAtC,EAwBAvJ,MAtBA6nL,QAAAjnK,SAAAkoB,cAAA,SACAv/B,EAAAs+K,SACAt+K,EAAAs+K,OAAAh8K,EACA+V,EAAA,mBAAAA,EACA/V,EAAA2nB,aAAA,mBACA5S,SAAAsvB,qBAAA,WAAAlH,YAAAn9B,IAGAA,EAAAm9B,YAAApoB,SAAA4kC,eAAA5jC,KA0BA1X,eAAA,SAAAtH,EAAAmH,GACA,iBAAAnH,EACAA,EAAAge,SAAAqvB,eAAArtC,GACGA,EAAA7F,SAEH6F,IAAA,IAGAA,KAAAuH,SAEAvH,IAAAuH,QAMA,IAAAvB,EAAAhG,KAAAk2B,YAAAl2B,EAAAk2B,WAAA,MASA,OAAAlwB,KAAAuB,SAAAvH,GAtTA,SAAAuH,EAAAJ,GACA,IAAA8B,EAAA1B,EAAA0B,MAIAi8K,EAAA39K,EAAAkmC,aAAA,UACA03I,EAAA59K,EAAAkmC,aAAA,SAoBA,GAjBAlmC,EAAA67K,GAAA,CACA9iI,QAAA,CACArkD,OAAAipL,EACAhqL,MAAAiqL,EACAl8K,MAAA,CACAvI,QAAAuI,EAAAvI,QACAzE,OAAAgN,EAAAhN,OACAf,MAAA+N,EAAA/N,SAQA+N,EAAAvI,QAAAuI,EAAAvI,SAAA,QAEA,OAAAykL,GAAA,KAAAA,EAAA,CACA,IAAAC,EAAAnB,EAAA18K,EAAA,cACAjQ,IAAA8tL,IACA79K,EAAArM,MAAAkqL,GAIA,UAAAF,GAAA,KAAAA,EACA,QAAA39K,EAAA0B,MAAAhN,OAIAsL,EAAAtL,OAAAsL,EAAArM,OAAAiM,EAAA9E,QAAAoF,aAAA,OACG,CACH,IAAA49K,EAAApB,EAAA18K,EAAA,eACAjQ,IAAA8tL,IACA79K,EAAAtL,OAAAopL,IA6QAC,CAAAtlL,EAAAmH,GACAnB,GAGA,MAGAqI,eAAA,SAAArI,GACA,IAAAuB,EAAAvB,EAAAuB,OACA,GAAAA,EAAA67K,GAAA,CAIA,IAAA9iI,EAAA/4C,EAAA67K,GAAA9iI,QACA,mBAAA53B,QAAA,SAAAtT,GACA,IAAAlf,EAAAoqD,EAAAlrC,GACA7U,EAAAuM,cAAA5W,GACAqR,EAAAspB,gBAAAzb,GAEA7N,EAAAqpB,aAAAxb,EAAAlf,KAIAqK,EAAA4D,KAAAm8C,EAAAr3C,OAAA,GAAkC,SAAA/S,EAAAM,GAClC+Q,EAAA0B,MAAAzS,GAAAN,IAOAqR,EAAArM,MAAAqM,EAAArM,aAEAqM,EAAA67K,KAGAt0K,iBAAA,SAAAxN,EAAA5I,EAAAiW,GACA,IAAApH,EAAAjG,EAAAiG,OACA,cAAA7O,EAAA,CAMA,IAAAgvC,EAAA/4B,EAAAy0K,KAAAz0K,EAAAy0K,GAAA,IAMAt0K,EAAAvH,EAAA7O,GALAgvC,EAAA69I,UAAA79I,EAAA69I,QAAA,KACAjkL,EAAA9B,GAAA,IAAA9G,GAAA,SAAAgxB,GACA/a,EA1QA,SAAA+a,EAAApoB,GACA,IAAA5I,EAAA+qL,EAAA/5J,EAAAhxB,OAAAgxB,EAAAhxB,KACAS,EAAAoH,EAAAg7K,oBAAA7xJ,EAAApoB,GACA,OAAAy5F,EAAAriG,EAAA4I,EAAAnI,EAAAuC,EAAAvC,EAAA0C,EAAA6tB,GAuQA87J,CAAA97J,EAAApoB,WAPA8iL,EAAA78K,EAAAoH,EAAArN,IAaAyN,oBAAA,SAAAzN,EAAA5I,EAAAiW,GACA,IAAApH,EAAAjG,EAAAiG,OACA,cAAA7O,EAAA,CAMA,IAEAmoE,IAFAlyD,EAAAy0K,IAAA,IACAmC,SAAA,IACAjkL,EAAA9B,GAAA,IAAA9G,GACAmoE,GAIA9xD,EAAAxH,EAAA7O,EAAAmoE,QAXAikH,EAAAv9K,KA0BAhH,EAAAklL,SAAA32K,EAWAvO,EAAAmkD,YAAA31C,qCCtcA/Z,EAAAD,QAAA,SAAAoL,GAEAA,EAAAulL,UAAA,SAAA1/K,EAAAmB,GAGA,OAFAA,EAAAzO,KAAA,YAEA,IAAAyH,EAAA6F,EAAAmB,+CCPA,ICA2Mw+K,ECG3M,CACA3uJ,WAAA,CAAAC,iBAAA,GAMAgL,QAPA,WAQAjkB,SAAAle,MAAA,kCCJAkhC,EAAgBrrC,OAAA6gC,EAAA,EAAA7gC,CACdgwL,EHRF,WAA0B,IAAalvJ,EAAbr5B,KAAas5B,eAA0BC,EAAvCv5B,KAAuCw5B,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,UAAAA,EAAA,WAAkCoC,YAAA,gBAA2B,CAAApC,EAAA,OAAYoC,YAAA,QAAmB,CAAApC,EAAA,OAAYoC,YAAA,eAA0B,CAAjM37B,KAAiM47B,GAAA,aAAjM57B,KAAiM47B,GAAA,KAAArC,EAAA,MAA2CoC,YAAA,0BAAqC,CAAApC,EAAA,MAAWoC,YAAA,YAAuB,CAAApC,EAAA,eAAoBoC,YAAA,WAAAjC,MAAA,CAA8B+E,GAAA,gBAAAsF,eAAA,WAA8C,CAAnZ/jC,KAAmZ47B,GAAA,cAAnZ57B,KAAmZ47B,GAAA,KAAArC,EAAA,MAA4CoC,YAAA,YAAuB,CAAApC,EAAA,eAAoBoC,YAAA,WAAAjC,MAAA,CAA8B+E,GAAA,kBAAAsF,eAAA,WAAgD,CAAxjB/jC,KAAwjB47B,GAAA,kBAAxjB57B,KAAwjB47B,GAAA,KAAArC,EAAA,wBACllB,IGUA,EACA,KACA,KACA,MAIe7Y,EAAA,QAAAkjB,8BCwCf,SAAA4kJ,EAAAz1K,GACA,IAMAgI,EAAAjjB,EANAa,EAAAoa,EAAA,OACA4qK,EAAA5qK,EAAA,OACA6J,EAAA7J,EAAA,OACAvU,EAAAD,KAAAC,IAAA7F,EAAAglL,EAAA/gK,GACAje,EAAAJ,KAAAI,IAAAhG,EAAAglL,EAAA/gK,GACAm0C,EAAApyD,EAAAH,EA0BA,OAvBAG,GAAAH,EACAuc,EAAA,EACApiB,GAAAgG,EACAoc,GAAA4iK,EAAA/gK,GAAAm0C,EACA4sH,GAAAh/K,EACAoc,EAAA,GAAA6B,EAAAjkB,GAAAo4D,EACAn0C,GAAAje,IACAoc,EAAA,GAAApiB,EAAAglL,GAAA5sH,IAEAh2C,EAAAxc,KAAAC,IAAA,GAAAuc,EAAA,MAEA,IACAA,GAAA,KAEAjjB,GAAA0G,EAAAG,GAAA,EASA,CAAAoc,EAAA,KAPApc,GAAAH,EACA,EACA1G,GAAA,GACAi5D,GAAApyD,EAAAH,GAEAuyD,GAAA,EAAApyD,EAAAH,IAEA,IAAA1G,GAGA,SAAA2wL,EAAA11K,GACA,IAMAgI,EAAAnhB,EANAjB,EAAAoa,EAAA,GACA4qK,EAAA5qK,EAAA,GACA6J,EAAA7J,EAAA,GACAvU,EAAAD,KAAAC,IAAA7F,EAAAglL,EAAA/gK,GACAje,EAAAJ,KAAAI,IAAAhG,EAAAglL,EAAA/gK,GACAm0C,EAAApyD,EAAAH,EAwBA,OApBA5E,EADA,GAAA+E,EACA,EAEAoyD,EAAApyD,EAAA,OAEAA,GAAAH,EACAuc,EAAA,EACApiB,GAAAgG,EACAoc,GAAA4iK,EAAA/gK,GAAAm0C,EACA4sH,GAAAh/K,EACAoc,EAAA,GAAA6B,EAAAjkB,GAAAo4D,EACAn0C,GAAAje,IACAoc,EAAA,GAAApiB,EAAAglL,GAAA5sH,IAEAh2C,EAAAxc,KAAAC,IAAA,GAAAuc,EAAA,MAEA,IACAA,GAAA,KAIA,CAAAA,EAAAnhB,EAFA+E,EAAA,YAKA,SAAA+pL,EAAA31K,GACA,IAAApa,EAAAoa,EAAA,GACA4qK,EAAA5qK,EAAA,GACA6J,EAAA7J,EAAA,GAKA,OAJAy1K,EAAAz1K,GAAA,GAIA,KAHA,MAAAxU,KAAAC,IAAA7F,EAAA4F,KAAAC,IAAAm/K,EAAA/gK,KAGA,KAFAA,EAAA,QAAAre,KAAAI,IAAAhG,EAAA4F,KAAAI,IAAAg/K,EAAA/gK,MAKA,SAAA+rK,EAAA51K,GACA,IAGAikJ,EAHAr+J,EAAAoa,EAAA,OACA4qK,EAAA5qK,EAAA,OACA6J,EAAA7J,EAAA,OAOA,aAHA,EAAApa,GADAq+J,EAAAz4J,KAAAC,IAAA,EAAA7F,EAAA,EAAAglL,EAAA,EAAA/gK,MACA,EAAAo6I,IAAA,GAGA,MAFA,EAAA2mB,EAAA3mB,IAAA,EAAAA,IAAA,GAEA,MADA,EAAAp6I,EAAAo6I,IAAA,EAAAA,IAAA,GACA,IAAAA,GAGA,SAAA4xB,EAAA71K,GACA,OAAA81K,EAAAnnI,KAAAynB,UAAAp2D,IAGA,SAAA+1K,EAAA/1K,GACA,IAAApa,EAAAoa,EAAA,OACA4qK,EAAA5qK,EAAA,OACA6J,EAAA7J,EAAA,OAWA,YAJA,OAJApa,IAAA,OAAA4F,KAAAwX,KAAApd,EAAA,iBAAAA,EAAA,OAIA,OAHAglL,IAAA,OAAAp/K,KAAAwX,KAAA4nK,EAAA,iBAAAA,EAAA,OAGA,OAFA/gK,IAAA,OAAAre,KAAAwX,KAAA6G,EAAA,iBAAAA,EAAA,QAMA,KAHA,MAAAjkB,EAAA,MAAAglL,EAAA,MAAA/gK,GAGA,KAFA,MAAAjkB,EAAA,MAAAglL,EAAA,MAAA/gK,IAKA,SAAAmsK,EAAAh2K,GACA,IAAAi2K,EAAAF,EAAA/1K,GACAzU,EAAA0qL,EAAA,GACAvqL,EAAAuqL,EAAA,GACAC,EAAAD,EAAA,GAeA,OAXAvqL,GAAA,IACAwqL,GAAA,QAEA3qL,GAJAA,GAAA,QAIA,QAAAC,KAAAwX,IAAAzX,EAAA,WAAAA,EAAA,OAQA,CAJA,KAHAG,IAAA,QAAAF,KAAAwX,IAAAtX,EAAA,WAAAA,EAAA,QAGA,GACA,KAAAH,EAAAG,GACA,KAAAA,GAJAwqL,IAAA,QAAA1qL,KAAAwX,IAAAkzK,EAAA,WAAAA,EAAA,UAaA,SAAAC,EAAAl2K,GACA,IAGAm2K,EAAAC,EAAAC,EAAAt2K,EAAApY,EAHAogB,EAAA/H,EAAA,OACApZ,EAAAoZ,EAAA,OACAlb,EAAAkb,EAAA,OAGA,MAAApZ,EAEA,OADAe,EAAA,IAAA7C,EACA6C,KAOAwuL,EAAA,EAAArxL,GAHAsxL,EADAtxL,EAAA,GACAA,GAAA,EAAA8B,GAEA9B,EAAA8B,EAAA9B,EAAA8B,GAGAmZ,EAAA,QACA,QAAAlb,EAAA,EAAiBA,EAAA,EAAOA,KACxBwxL,EAAAtuK,EAAA,MAAAljB,EAAA,IACA,GAAAwxL,IACAA,EAAA,GAAAA,IAGA1uL,EADA,EAAA0uL,EAAA,EACAF,EAAA,GAAAC,EAAAD,GAAAE,EACA,EAAAA,EAAA,EACAD,EACA,EAAAC,EAAA,EACAF,GAAAC,EAAAD,IAAA,IAAAE,GAAA,EAEAF,EAEAp2K,EAAAlb,GAAA,IAAA8C,EAGA,OAAAoY,EAmCA,SAAAu2K,EAAAr2K,GACA,IAAA8H,EAAA9H,EAAA,MACArZ,EAAAqZ,EAAA,OACAW,EAAAX,EAAA,OACA43H,EAAAtsI,KAAAkN,MAAAsP,GAAA,EAEAwuK,EAAAxuK,EAAAxc,KAAAkN,MAAAsP,GACAphB,EAAA,IAAAia,GAAA,EAAAha,GACA4vL,EAAA,IAAA51K,GAAA,EAAAha,EAAA2vL,GACAxwL,EAAA,IAAA6a,GAAA,EAAAha,GAAA,EAAA2vL,IACA31K,GAAA,IAEA,OAAAi3H,GACA,OACA,OAAAj3H,EAAA7a,EAAAY,GACA,OACA,OAAA6vL,EAAA51K,EAAAja,GACA,OACA,OAAAA,EAAAia,EAAA7a,GACA,OACA,OAAAY,EAAA6vL,EAAA51K,GACA,OACA,OAAA7a,EAAAY,EAAAia,GACA,OACA,OAAAA,EAAAja,EAAA6vL,IA+BA,SAAAC,EAAAv2K,GACA,IAIArb,EAAA+b,EAAA21K,EAAAjwL,EAJAyhB,EAAA7H,EAAA,OACAw2K,EAAAx2K,EAAA,OACAy2K,EAAAz2K,EAAA,OACAwD,EAAAgzK,EAAAC,EAiBA,OAbAjzK,EAAA,IACAgzK,GAAAhzK,EACAizK,GAAAjzK,GAKA6yK,EAAA,EAAAxuK,GAFAljB,EAAA0G,KAAAkN,MAAA,EAAAsP,IAGA,MAAAljB,KACA0xL,EAAA,EAAAA,GAEAjwL,EAAAowL,EAAAH,IALA31K,EAAA,EAAA+1K,GAKAD,GAEA7xL,GACA,QACA,OACA,OAAAc,EAAAib,EAAkB+pK,EAAArkL,EAAOsjB,EAAA8sK,EAAQ,MACjC,OAAA/wL,EAAAW,EAAkBqkL,EAAA/pK,EAAOgJ,EAAA8sK,EAAQ,MACjC,OAAA/wL,EAAA+wL,EAAmB/L,EAAA/pK,EAAOgJ,EAAAtjB,EAAO,MACjC,OAAAX,EAAA+wL,EAAmB/L,EAAArkL,EAAOsjB,EAAAhJ,EAAO,MACjC,OAAAjb,EAAAW,EAAkBqkL,EAAA+L,EAAQ9sK,EAAAhJ,EAAO,MACjC,OAAAjb,EAAAib,EAAkB+pK,EAAA+L,EAAQ9sK,EAAAtjB,EAG1B,WAAAX,EAAA,IAAAglL,EAAA,IAAA/gK,GAmBA,SAAAgtK,EAAAz2K,GACA,IAAAjb,EAAAib,EAAA,OACAlb,EAAAkb,EAAA,OACA1U,EAAA0U,EAAA,OACA6jJ,EAAA7jJ,EAAA,OAMA,YAHA,EAAA5U,KAAAC,IAAA,EAAAtG,GAAA,EAAA8+J,OAGA,KAFA,EAAAz4J,KAAAC,IAAA,EAAAvG,GAAA,EAAA++J,OAEA,KADA,EAAAz4J,KAAAC,IAAA,EAAAC,GAAA,EAAAu4J,QAqBA,SAAA6yB,EAAAb,GACA,IAGArwL,EAAAglL,EAAA/gK,EAHAte,EAAA0qL,EAAA,OACAvqL,EAAAuqL,EAAA,OACAC,EAAAD,EAAA,OAqBA,OAjBArL,GAAA,MAAAr/K,EAAA,OAAAG,EAAA,MAAAwqL,EACArsK,EAAA,MAAAte,GAAA,KAAAG,EAAA,MAAAwqL,EAGAtwL,GALAA,EAAA,OAAA2F,GAAA,OAAAG,GAAA,MAAAwqL,GAKA,eAAA1qL,KAAAwX,IAAApd,EAAA,YACAA,GAAA,MAEAglL,IAAA,eAAAp/K,KAAAwX,IAAA4nK,EAAA,YACAA,GAAA,MAEA/gK,IAAA,eAAAre,KAAAwX,IAAA6G,EAAA,YACAA,GAAA,MAMA,MAJAjkB,EAAA4F,KAAAC,IAAAD,KAAAI,IAAA,EAAAhG,GAAA,IAIA,KAHAglL,EAAAp/K,KAAAC,IAAAD,KAAAI,IAAA,EAAAg/K,GAAA,IAGA,KAFA/gK,EAAAre,KAAAC,IAAAD,KAAAI,IAAA,EAAAie,GAAA,KAKA,SAAAktK,EAAAd,GACA,IAAA1qL,EAAA0qL,EAAA,GACAvqL,EAAAuqL,EAAA,GACAC,EAAAD,EAAA,GAeA,OAXAvqL,GAAA,IACAwqL,GAAA,QAEA3qL,GAJAA,GAAA,QAIA,QAAAC,KAAAwX,IAAAzX,EAAA,WAAAA,EAAA,OAQA,CAJA,KAHAG,IAAA,QAAAF,KAAAwX,IAAAtX,EAAA,WAAAA,EAAA,QAGA,GACA,KAAAH,EAAAG,GACA,KAAAA,GAJAwqL,IAAA,QAAA1qL,KAAAwX,IAAAkzK,EAAA,WAAAA,EAAA,UAaA,SAAAc,EAAAC,GACA,IAGA1rL,EAAAG,EAAAwqL,EAAA9qL,EAHArG,EAAAkyL,EAAA,GACAxyK,EAAAwyK,EAAA,GACAptK,EAAAotK,EAAA,GAeA,OAZAlyL,GAAA,EAEAqG,GADAM,EAAA,IAAA3G,EAAA,OACA,kBAEA2G,EAAA,IAAAF,KAAAwX,KAAAje,EAAA,WACAqG,EAAAI,KAAAwX,IAAAtX,EAAA,UAOA,CAJAH,IAAA,gBAAAA,EAAA,QAAAkZ,EAAA,IAAArZ,EAAA,qBAAAI,KAAAwX,IAAAyB,EAAA,IAAArZ,EAAA,GAIAM,EAFAwqL,IAAA,iBAAAA,EAAA,SAAA9qL,EAAAye,EAAA,0BAAAre,KAAAwX,IAAA5X,EAAAye,EAAA,QAKA,SAAAqtK,EAAAD,GACA,IAGAjvK,EAHAjjB,EAAAkyL,EAAA,GACAxyK,EAAAwyK,EAAA,GACAptK,EAAAotK,EAAA,GASA,OALAjvK,EAAA,IADAxc,KAAAsjL,MAAAjlK,EAAApF,GACA,EAAAjZ,KAAAyF,IACA,IACA+W,GAAA,KAGA,CAAAjjB,EADAyG,KAAA8uJ,KAAA71I,IAAAoF,KACA7B,GAGA,SAAAmvK,EAAAv7K,GACA,OAAAk7K,EAAAE,EAAAp7K,IAGA,SAAAw7K,EAAAC,GACA,IAGAC,EAHAvyL,EAAAsyL,EAAA,GACAlyL,EAAAkyL,EAAA,GAOA,OAHAC,EAHAD,EAAA,GAGA,MAAA7rL,KAAAyF,GAGA,CAAAlM,EAFAI,EAAAqG,KAAAwf,IAAAssK,GACAnyL,EAAAqG,KAAAqf,IAAAysK,IAYA,SAAAC,EAAA50K,GACA,OAAA60K,EAAA70K,GAlgBA9d,EAAAD,QAAA,CACA6wL,UACAC,UACAC,UACAC,WACAC,cACAE,UACAC,UACAyB,QAuLA,SAAA77K,GACA,OAAAs7K,EAAAlB,EAAAp6K,KAtLAu6K,UACAuB,QA8NA,SAAAz3K,GACA,IAAA+H,EAAA/H,EAAA,GACApZ,EAAAoZ,EAAA,OACAlb,EAAAkb,EAAA,OAGA,OAAAlb,EAGA,cAOA,OAAAijB,EAAA,KADA,GAFAnhB,IADA9B,GAAA,IACA,EAAAA,EAAA,EAAAA,IAEAA,EAAA8B,IACA,MAFA9B,EAAA8B,GAAA,KA3OA8wL,QAgPA,SAAA/7K,GACA,OAAA+5K,EAAAQ,EAAAv6K,KAhPAg8K,SAmPA,SAAAh8K,GACA,OAAAg6K,EAAAO,EAAAv6K,KAnPAi8K,YAsPA,SAAAj8K,GACA,OAAAi6K,EAAAM,EAAAv6K,KArPA26K,UACAuB,QAoRA,SAAA53K,GACA,IAGA63K,EAAAhzL,EAHAijB,EAAA9H,EAAA,GACArZ,EAAAqZ,EAAA,OACAW,EAAAX,EAAA,OAQA,OAJA63K,EAAAlxL,EAAAga,EAIA,CAAAmH,EAAA,KAFA+vK,GADAA,IAFAhzL,GAAA,EAAA8B,GAAAga,IAEA,EAAA9b,EAAA,EAAAA,IACA,GAEA,KADAA,GAAA,KA7RAizL,QAiSA,SAAAp8K,GACA,OAAA+5K,EAAAY,EAAA36K,KAjSAq8K,SAoSA,SAAAr8K,GACA,OAAAg6K,EAAAW,EAAA36K,KApSAs8K,YAuSA,SAAAt8K,GACA,OAAAi6K,EAAAU,EAAA36K,KAtSA86K,UACAyB,QA4UA,SAAAv8K,GACA,OAAA65K,EAAAiB,EAAA96K,KA5UAw8K,QA+UA,SAAAx8K,GACA,OAAA85K,EAAAgB,EAAA96K,KA/UAy8K,SAkVA,SAAAz8K,GACA,OAAAg6K,EAAAc,EAAA96K,KAlVA08K,YAqVA,SAAA18K,GACA,OAAAi6K,EAAAa,EAAA96K,KApVAi7K,WACA0B,SAmWA,SAAA38K,GACA,OAAA65K,EAAAoB,EAAAj7K,KAnWA48K,SAsWA,SAAA58K,GACA,OAAA85K,EAAAmB,EAAAj7K,KAtWA68K,SAyWA,SAAA78K,GACA,OAAA+5K,EAAAkB,EAAAj7K,KAzWA88K,aA4WA,SAAA98K,GACA,OAAAi6K,EAAAgB,EAAAj7K,KA3WA27K,cACAoB,YAkeA,SAAA/8K,GACA,OAAA65K,EAAA8B,EAAA37K,KAleAg9K,YAqeA,SAAAh9K,GACA,OAAA85K,EAAA6B,EAAA37K,KAreAi9K,YAweA,SAAAj9K,GACA,OAAA+5K,EAAA4B,EAAA37K,KAxeAk9K,aA2eA,SAAAl9K,GACA,OAAAg6K,EAAA2B,EAAA37K,KA3eAm9K,YA8eA,SAAAn9K,GACA,OAAAo6K,EAAAuB,EAAA37K,KA9eAo9K,YAifA,SAAAp9K,GACA,OAAAm6K,EAAAwB,EAAA37K,KAhfAk7K,UACAC,UACAkC,QAqZA,SAAAr9K,GACA,OAAAs7K,EAAAH,EAAAn7K,KApZAo7K,UACAG,UACAD,UAEAE,UACA8B,QAscA,SAAAt9K,GACA,OAAAo7K,EAAAI,EAAAx7K,KAtcAu9K,QAycA,SAAAv9K,GACA,OAAAu7K,EAAAC,EAAAx7K,MA+BA,IAAA47K,EAAA,CACA18B,UAAA,cACAC,aAAA,cACAC,KAAA,YACAC,WAAA,cACAC,MAAA,cACAC,MAAA,cACAC,OAAA,cACAj5I,MAAA,QACAk5I,eAAA,cACAz5I,KAAA,UACA05I,WAAA,aACAC,MAAA,YACAC,UAAA,cACAC,UAAA,aACAC,WAAA,YACAC,UAAA,aACAC,MAAA,aACAC,eAAA,cACAC,SAAA,cACAC,QAAA,YACA/6I,KAAA,YACAg7I,SAAA,UACAC,SAAA,YACAC,cAAA,aACAC,SAAA,cACAC,UAAA,UACAC,SAAA,cACAC,UAAA,cACAC,YAAA,YACAC,eAAA,YACAC,WAAA,YACAC,WAAA,aACAC,QAAA,UACAC,WAAA,cACAC,aAAA,cACAC,cAAA,YACAC,cAAA,WACAC,cAAA,WACAC,cAAA,YACAC,WAAA,YACAC,SAAA,aACAC,YAAA,YACAC,QAAA,cACAC,QAAA,cACAC,WAAA,aACAC,UAAA,YACAC,YAAA,cACAC,YAAA,YACAC,QAAA,YACAC,UAAA,cACAC,WAAA,cACAC,KAAA,YACAC,UAAA,aACAC,KAAA,cACAr8I,MAAA,UACAs8I,YAAA,aACAC,KAAA,cACAC,SAAA,cACAC,QAAA,cACAC,UAAA,YACAC,OAAA,WACAC,MAAA,cACAC,MAAA,cACAC,SAAA,cACAC,cAAA,cACAC,UAAA,YACAC,aAAA,cACAC,UAAA,cACAC,WAAA,cACAC,UAAA,cACAC,qBAAA,cACAC,UAAA,cACAC,WAAA,cACAC,UAAA,cACAC,UAAA,cACAC,YAAA,cACAC,cAAA,aACAC,aAAA,cACAC,eAAA,cACAC,eAAA,cACAC,eAAA,cACAC,YAAA,cACAC,KAAA,UACAC,UAAA,YACAC,MAAA,cACA79I,QAAA,YACA89I,OAAA,UACAC,iBAAA,cACAC,WAAA,UACAC,aAAA,aACAC,aAAA,cACAC,eAAA,aACAC,gBAAA,cACAC,kBAAA,YACAC,gBAAA,aACAC,gBAAA,aACAC,aAAA,YACAC,UAAA,cACAC,UAAA,cACAC,SAAA,cACAC,YAAA,cACAC,KAAA,UACAC,QAAA,cACAC,MAAA,YACAC,UAAA,aACAC,OAAA,YACAC,UAAA,WACAC,OAAA,cACAC,cAAA,cACAC,UAAA,cACAC,cAAA,cACAC,cAAA,cACAC,WAAA,cACAC,UAAA,cACAC,KAAA,aACAC,KAAA,cACAC,KAAA,cACAC,WAAA,cACAC,OAAA,YACAC,cAAA,aACArhJ,IAAA,UACAshJ,UAAA,cACAC,UAAA,aACAC,YAAA,YACAC,OAAA,cACAC,WAAA,aACAC,SAAA,YACAC,SAAA,cACAC,OAAA,YACAC,OAAA,cACAC,QAAA,cACAC,UAAA,aACAC,UAAA,cACAC,UAAA,cACAC,KAAA,cACAC,YAAA,YACAC,UAAA,aACAC,IAAA,cACAC,KAAA,YACAC,QAAA,cACAC,OAAA,YACAC,UAAA,aACAC,OAAA,cACAC,MAAA,cACAC,MAAA,cACAC,WAAA,cACAvhJ,OAAA,YACAwhJ,YAAA,cAGAoyB,EAAA,GACA,QAAAzvL,KAAAmxL,EACA1B,EAAAnnI,KAAAynB,UAAAohH,EAAAnxL,0CCtrBA,IAAAg/B,EAAY3gC,EAAQ,QACpB00L,EAAa10L,EAAQ,QACrB20L,EAAe30L,EAAQ,QACvB40L,EAAmB50L,EAAQ,QAC3B60L,EAAsB70L,EAAQ,QAC9B03I,EAAkB13I,EAAQ,QAC1B80L,EAAA,oBAAA1zK,eAAA0zK,MAAA1zK,OAAA0zK,KAAAlzL,KAAAwf,SAAyFphB,EAAQ,QAEjGG,EAAAD,QAAA,SAAAoS,GACA,WAAAmX,QAAA,SAAAnY,EAAAs1B,GACA,IAAAmuJ,EAAAziL,EAAA3F,KACAi5D,EAAAtzD,EAAAo0D,QAEA/lC,EAAAuwC,WAAA6jH,WACAnvH,EAAA,gBAGA,IAAAl2B,EAAA,IAAA04B,eACA4sH,EAAA,qBACAC,GAAA,EAiBA,GAXA,oBAAA7zK,SACAA,OAAA8zK,gBAAA,oBAAAxlJ,GACAmlJ,EAAAviL,EAAAxM,OACA4pC,EAAA,IAAAtuB,OAAA8zK,eACAF,EAAA,SACAC,GAAA,EACAvlJ,EAAAylJ,WAAA,aACAzlJ,EAAAu5B,UAAA,cAIA32D,EAAA8iL,KAAA,CACA,IAAAxsH,EAAAt2D,EAAA8iL,KAAAxsH,UAAA,GACAnpB,EAAAntC,EAAA8iL,KAAA31I,UAAA,GACAmmB,EAAAyvH,cAAA,SAAAP,EAAAlsH,EAAA,IAAAnpB,GA+DA,GA5DA/P,EAAAi5B,KAAAr2D,EAAA0G,OAAAob,cAAAugK,EAAAriL,EAAAxM,IAAAwM,EAAA20B,OAAA30B,EAAAw9H,mBAAA,GAGApgG,EAAAxQ,QAAA5sB,EAAA4sB,QAGAwQ,EAAAslJ,GAAA,WACA,GAAAtlJ,IAAA,IAAAA,EAAAiZ,YAAAssI,KAQA,IAAAvlJ,EAAAxB,QAAAwB,EAAA4lJ,aAAA,IAAA5lJ,EAAA4lJ,YAAAryL,QAAA,WAKA,IAAAkiE,EAAA,0BAAAz1B,EAAAklJ,EAAAllJ,EAAAs2B,yBAAA,KAEAljC,EAAA,CACAn2B,KAFA2F,EAAA62D,cAAA,SAAA72D,EAAA62D,aAAAz5B,EAAA5M,SAAA4M,EAAA05B,aAIAl7B,OAAA,OAAAwB,EAAAxB,OAAA,IAAAwB,EAAAxB,OACAm4B,WAAA,OAAA32B,EAAAxB,OAAA,aAAAwB,EAAA22B,WACAK,QAAAvB,EACA7yD,SACAo9B,WAGAglJ,EAAApjL,EAAAs1B,EAAA9D,GAGA4M,EAAA,OAIAA,EAAAq5B,QAAA,WAGAniC,EAAA8wG,EAAA,gBAAAplI,EAAA,KAAAo9B,IAGAA,EAAA,MAIAA,EAAAu5B,UAAA,WACAriC,EAAA8wG,EAAA,cAAAplI,EAAA4sB,QAAA,cAAA5sB,EAAA,eACAo9B,IAGAA,EAAA,MAMA/O,EAAAowG,uBAAA,CACA,IAAAwkD,EAAoBv1L,EAAQ,QAG5Bw1L,GAAAljL,EAAAmjL,iBAAAZ,EAAAviL,EAAAxM,OAAAwM,EAAAs/D,eACA2jH,EAAA/T,KAAAlvK,EAAAs/D,qBACAnvE,EAEA+yL,IACA5vH,EAAAtzD,EAAAu/D,gBAAA2jH,GAuBA,GAlBA,qBAAA9lJ,GACA/O,EAAA9M,QAAA+xC,EAAA,SAAA1iE,EAAAvB,QACA,IAAAozL,GAAA,iBAAApzL,EAAAo3B,qBAEA6sC,EAAAjkE,GAGA+tC,EAAAu2B,iBAAAtkE,EAAAuB,KAMAoP,EAAAmjL,kBACA/lJ,EAAA+lJ,iBAAA,GAIAnjL,EAAA62D,aACA,IACAz5B,EAAAy5B,aAAA72D,EAAA62D,aACO,MAAAt7D,GAGP,YAAAyE,EAAA62D,aACA,MAAAt7D,EAMA,mBAAAyE,EAAAojL,oBACAhmJ,EAAAz1B,iBAAA,WAAA3H,EAAAojL,oBAIA,mBAAApjL,EAAAqjL,kBAAAjmJ,EAAAkmJ,QACAlmJ,EAAAkmJ,OAAA37K,iBAAA,WAAA3H,EAAAqjL,kBAGArjL,EAAAgvJ,aAEAhvJ,EAAAgvJ,YAAA3xH,QAAA/lB,KAAA,SAAAk4G,GACApyF,IAIAA,EAAA02B,QACAx/B,EAAAk7F,GAEApyF,EAAA,aAIAjtC,IAAAsyL,IACAA,EAAA,MAIArlJ,EAAAm3B,KAAAkuH,yCC/KA,IAAA/uL,EAAehG,EAAQ,QACvB0L,EAAc1L,EAAQ,QACtB6R,EAAc7R,EAAQ,QAEtBG,EAAAD,QAAA,CAGA21L,aAAA,GAKA7vL,SAAA,GACAgjB,kBAAA,SAAAnlB,EAAAiyL,EAAAC,GACAxtL,KAAAstL,aAAAhyL,GAAAiyL,EACAvtL,KAAAvC,SAAAnC,GAAA6H,EAAAyU,MAAA41K,IAEAxgL,oBAAA,SAAA1R,GACA,OAAA0E,KAAAstL,aAAA5zL,eAAA4B,GAAA0E,KAAAstL,aAAAhyL,QAAApB,GAEAqmL,iBAAA,SAAAjlL,GAEA,OAAA0E,KAAAvC,SAAA/D,eAAA4B,GAAA6H,EAAA8gC,MAAA,GAA8D,CAAAxmC,EAAA2F,MAAApD,KAAAvC,SAAAnC,KAAA,IAE9DmyL,oBAAA,SAAAnyL,EAAAoyL,GACA1tL,KACAvC,SAAA/D,eAAA4B,KADA0E,KAEAvC,SAAAnC,GAAA6H,EAAAxD,OAFAK,KAEAvC,SAAAnC,GAAAoyL,KAGAvgL,kBAAA,SAAAjJ,GAEAf,EAAA4D,KAAA7C,EAAAhC,OAAA,SAAAkB,GAEAA,EAAA67B,UAAA77B,EAAA6B,QAAAg6B,UACA77B,EAAAf,SAAAe,EAAA6B,QAAA5C,SACAe,EAAAmU,OAAAnU,EAAA6B,QAAAsS,OACAjO,EAAAs5B,OAAA1+B,EAAAd,0CCrCA,IAAAD,EAAc1L,EAAQ,QAOtByX,EAAA,CACAuK,OAAA,SAAA1gB,GACA,OAAAA,GAGA40L,WAAA,SAAA50L,GACA,OAAAA,KAGA60L,YAAA,SAAA70L,GACA,OAAAA,KAAA,IAGA80L,cAAA,SAAA90L,GACA,OAAAA,GAAA,MACA,GAAAA,KAEA,MAAAA,KAAA,OAGA+0L,YAAA,SAAA/0L,GACA,OAAAA,OAGAg1L,aAAA,SAAAh1L,GACA,OAAAA,GAAA,GAAAA,IAAA,GAGAi1L,eAAA,SAAAj1L,GACA,OAAAA,GAAA,MACA,GAAAA,MAEA,KAAAA,GAAA,GAAAA,IAAA,IAGAk1L,YAAA,SAAAl1L,GACA,OAAAA,SAGAm1L,aAAA,SAAAn1L,GACA,SAAAA,GAAA,GAAAA,MAAA,IAGAo1L,eAAA,SAAAp1L,GACA,OAAAA,GAAA,MACA,GAAAA,SAEA,KAAAA,GAAA,GAAAA,MAAA,IAGAq1L,YAAA,SAAAr1L,GACA,OAAAA,WAGAs1L,aAAA,SAAAt1L,GACA,OAAAA,GAAA,GAAAA,QAAA,GAGAu1L,eAAA,SAAAv1L,GACA,OAAAA,GAAA,MACA,GAAAA,UAEA,KAAAA,GAAA,GAAAA,QAAA,IAGAw1L,WAAA,SAAAx1L,GACA,SAAAwF,KAAAwf,IAAAhlB,GAAAwF,KAAAyF,GAAA,KAGAwqL,YAAA,SAAAz1L,GACA,OAAAwF,KAAAqf,IAAA7kB,GAAAwF,KAAAyF,GAAA,KAGAyqL,cAAA,SAAA11L,GACA,WAAAwF,KAAAwf,IAAAxf,KAAAyF,GAAAjL,GAAA,IAGA21L,WAAA,SAAA31L,GACA,WAAAA,EAAA,EAAAwF,KAAAwX,IAAA,MAAAhd,EAAA,KAGA41L,YAAA,SAAA51L,GACA,WAAAA,EAAA,IAAAwF,KAAAwX,IAAA,MAAAhd,IAGA61L,cAAA,SAAA71L,GACA,WAAAA,EACA,EAEA,IAAAA,EACA,GAEAA,GAAA,MACA,GAAAwF,KAAAwX,IAAA,MAAAhd,EAAA,IAEA,MAAAwF,KAAAwX,IAAA,QAAAhd,KAGA81L,WAAA,SAAA91L,GACA,OAAAA,GAAA,EACAA,IAEAwF,KAAA8uJ,KAAA,EAAAt0J,KAAA,IAGA+1L,YAAA,SAAA/1L,GACA,OAAAwF,KAAA8uJ,KAAA,GAAAt0J,GAAA,GAAAA,IAGAg2L,cAAA,SAAAh2L,GACA,OAAAA,GAAA,OACA,IAAAwF,KAAA8uJ,KAAA,EAAAt0J,KAAA,GAEA,IAAAwF,KAAA8uJ,KAAA,GAAAt0J,GAAA,GAAAA,GAAA,IAGAi2L,cAAA,SAAAj2L,GACA,IAAAa,EAAA,QACAD,EAAA,EACA6d,EAAA,EACA,WAAAze,EACA,EAEA,IAAAA,EACA,GAEAY,IACAA,EAAA,IAEA6d,EAAA,GACAA,EAAA,EACA5d,EAAAD,EAAA,GAEAC,EAAAD,GAAA,EAAA4E,KAAAyF,IAAAzF,KAAA0wL,KAAA,EAAAz3K,IAEAA,EAAAjZ,KAAAwX,IAAA,MAAAhd,GAAA,IAAAwF,KAAAqf,KAAA7kB,EAAAa,IAAA,EAAA2E,KAAAyF,IAAArK,KAGAu1L,eAAA,SAAAn2L,GACA,IAAAa,EAAA,QACAD,EAAA,EACA6d,EAAA,EACA,WAAAze,EACA,EAEA,IAAAA,EACA,GAEAY,IACAA,EAAA,IAEA6d,EAAA,GACAA,EAAA,EACA5d,EAAAD,EAAA,GAEAC,EAAAD,GAAA,EAAA4E,KAAAyF,IAAAzF,KAAA0wL,KAAA,EAAAz3K,GAEAA,EAAAjZ,KAAAwX,IAAA,MAAAhd,GAAAwF,KAAAqf,KAAA7kB,EAAAa,IAAA,EAAA2E,KAAAyF,IAAArK,GAAA,IAGAw1L,iBAAA,SAAAp2L,GACA,IAAAa,EAAA,QACAD,EAAA,EACA6d,EAAA,EACA,WAAAze,EACA,EAEA,IAAAA,GAAA,IACA,GAEAY,IACAA,EAAA,KAEA6d,EAAA,GACAA,EAAA,EACA5d,EAAAD,EAAA,GAEAC,EAAAD,GAAA,EAAA4E,KAAAyF,IAAAzF,KAAA0wL,KAAA,EAAAz3K,GAEAze,EAAA,EACAye,EAAAjZ,KAAAwX,IAAA,MAAAhd,GAAA,IAAAwF,KAAAqf,KAAA7kB,EAAAa,IAAA,EAAA2E,KAAAyF,IAAArK,IAAA,GAEA6d,EAAAjZ,KAAAwX,IAAA,OAAAhd,GAAA,IAAAwF,KAAAqf,KAAA7kB,EAAAa,IAAA,EAAA2E,KAAAyF,IAAArK,GAAA,OAEAy1L,WAAA,SAAAr2L,GACA,IAAAa,EAAA,QACA,OAAAb,MAAAa,EAAA,GAAAb,EAAAa,IAGAy1L,YAAA,SAAAt2L,GACA,IAAAa,EAAA,QACA,OAAAb,GAAA,GAAAA,IAAAa,EAAA,GAAAb,EAAAa,GAAA,GAGA01L,cAAA,SAAAv2L,GACA,IAAAa,EAAA,QACA,OAAAb,GAAA,MACAA,MAAA,GAAAa,GAAA,QAAAb,EAAAa,GAAA,GAEA,KAAAb,GAAA,GAAAA,IAAA,GAAAa,GAAA,QAAAb,EAAAa,GAAA,IAGA21L,aAAA,SAAAx2L,GACA,SAAAmW,EAAAsgL,cAAA,EAAAz2L,IAGAy2L,cAAA,SAAAz2L,GACA,OAAAA,EAAA,OACA,OAAAA,IAEAA,EAAA,OACA,QAAAA,GAAA,UAAAA,EAAA,IAEAA,EAAA,SACA,QAAAA,GAAA,WAAAA,EAAA,MAEA,QAAAA,GAAA,YAAAA,EAAA,SAGA02L,gBAAA,SAAA12L,GACA,OAAAA,EAAA,GACA,GAAAmW,EAAAqgL,aAAA,EAAAx2L,GAEA,GAAAmW,EAAAsgL,cAAA,EAAAz2L,EAAA,QAIAnB,EAAAD,QAAA,CACAuX,WAYA/L,EAAAusL,cAAAxgL,wBCzPA,IAAAygL,EAAkBl4L,EAAQ,QAE1Bib,EAAA,WACA,WAAAk9K,GAGA,QAAAjyI,KAAAgyI,EAAA,CAEAj9K,EAAAirC,EAAA,gBAAAA,GAEA,gBAAArS,GAGA,MAFA,iBAAAA,IACAA,EAAA3yB,MAAAlf,UAAAye,MAAAlgB,KAAA8V,YACA6hL,EAAAhyI,GAAArS,IALA,CAOGqS,GAEH,IAAAs2E,EAAA,cAAAjkF,KAAA2N,GACA83B,EAAAw+C,EAAA,GACAx1F,EAAAw1F,EAAA,IAGAvhH,EAAA+iE,GAAA/iE,EAAA+iE,IAAA,IAEAh3C,GAAA/rB,EAAAirC,GAAA,SAAAA,GACA,gBAAArS,GACA,iBAAAA,IACAA,EAAA3yB,MAAAlf,UAAAye,MAAAlgB,KAAA8V,YAEA,IAAAnT,EAAAg1L,EAAAhyI,GAAArS,GACA,oBAAA3wC,QAAAT,IAAAS,EACA,OAAAA,EAEA,QAAA9C,EAAA,EAAqBA,EAAA8C,EAAAoC,OAAgBlF,IACrC8C,EAAA9C,GAAA0G,KAAAka,MAAA9d,EAAA9C,IACA,OAAA8C,GAXA,CAaGgjD,GAKH,IAAAiyI,EAAA,WACA5vL,KAAA6vL,MAAA,IAKAD,EAAAn2L,UAAAq2L,WAAA,SAAAx3K,EAAA3J,GACA,IAAAmE,EAAAnE,EAAA,GACA,YAAAzU,IAAA4Y,EAEA9S,KAAAqY,UAAAC,IAGA,iBAAAxF,IACAA,EAAA6F,MAAAlf,UAAAye,MAAAlgB,KAAA2W,IAGA3O,KAAAuT,UAAA+E,EAAAxF,KAIA88K,EAAAn2L,UAAA8Z,UAAA,SAAA+E,EAAAxF,GAIA,OAHA9S,KAAAsY,QACAtY,KAAA6vL,MAAA,GACA7vL,KAAA6vL,MAAAv3K,GAAAxF,EACA9S,MAMA4vL,EAAAn2L,UAAA4e,UAAA,SAAAC,GACA,IAAAjF,EAAArT,KAAA6vL,MAAAv3K,GACA,IAAAjF,EAAA,CACA,IAAA08K,EAAA/vL,KAAAsY,MACAm9D,EAAAz1E,KAAA6vL,MAAAE,GACA18K,EAAAX,EAAAq9K,GAAAz3K,GAAAm9D,GAEAz1E,KAAA6vL,MAAAv3K,GAAAjF,EAEA,OAAAA,GAGA,qCAAAiY,QAAA,SAAAhT,GACAs3K,EAAAn2L,UAAA6e,GAAA,SAAAjF,GACA,OAAArT,KAAA8vL,WAAAx3K,EAAAxK,cAIAlW,EAAAD,QAAA+a,wBC3FA9a,EAAAD,QAAiBF,EAAQ,2CCQzB,IAAAgG,EAAehG,EAAQ,QACvB0H,EAAe1H,EAAQ,QACvB0L,EAAc1L,EAAQ,QAEtBgG,EAAAyB,KAAA,UACAsK,QAAA,CACAuzK,OAAA,CACAiT,WAAA,MAKA,IAAAC,EAAA,CACA9pL,QAAA,SAAA2R,GACA,IAAA7W,EAAA6W,EAAAzW,KACA6C,EAAA4T,EAAA5T,MACAS,EAAAT,EAAAU,eAAA3D,GAEAqjE,EADA3/D,GAAAT,EAAA8L,iBAAA/O,IACA0D,EAAAwB,QAAAu+D,WAAA,GACA3nE,EAAAunE,EAAAvnE,QAAA,EAEA,OAAAA,EAAA,SAAAioE,EAAAntE,GACA,OAAAA,EAAAkF,GAAAunE,EAAAzsE,GAAAgG,OAAA,MADA,MAKAmgJ,SAAA,SAAAlmI,GACA,IAAAkmI,EAAAlmI,EAAAkmI,SACA1/I,EAAA0/I,IAAA1/I,EAAA,KACAG,EAAAu/I,IAAAv/I,EAAA,KAEA,gBAAAumE,GACA,OACA1mE,EAAA,OAAAA,EAAA0mE,EAAA1mE,IACAG,EAAA,OAAAA,EAAAumE,EAAAvmE,QAOA,SAAAyxL,EAAApoK,EAAA7mB,EAAA2F,GACA,IAEAmR,EAFAtP,EAAAqf,EAAAxf,QAAA,GACAjH,EAAAoH,EAAApH,KAOA,QAJAnH,IAAAmH,IACAA,IAAAoH,EAAApJ,kBAGA,IAAAgC,GAAA,OAAAA,EACA,SAGA,QAAAA,EACA,eAIA,GADA0W,EAAA3b,WAAAiF,EAAA,IACAyrB,SAAA/U,IAAAxZ,KAAAkN,MAAAsM,OAKA,MAJA,MAAA1W,EAAA,UAAAA,EAAA,KACA0W,EAAA9W,EAAA8W,KAGAA,IAAA9W,GAAA8W,EAAA,GAAAA,GAAAnR,IAIAmR,EAGA,OAAA1W,GAEA,aACA,cACA,UACA,YACA,WACA,eAEA,aACA,YACA,UACA,OAAAA,EAEA,QACA,UAIA,SAAA8uL,EAAAr4K,GACA,IAIA5X,EAJAuI,EAAAqP,EAAAgQ,GAAAxf,QAAA,GACAlF,EAAA0U,EAAAgQ,GAAAzf,QAAA,GACAhH,EAAAyW,EAAAzW,KACA0W,EAAA,KAGA,GAAA+U,SAAAzrB,GACA,YAmBA,GAZA,UAAAA,EACA0W,OAAA7d,IAAAuO,EAAA2nL,YAAAhtL,EAAAnE,OAAAwJ,EAAA2nL,YACE,QAAA/uL,EACF0W,OAAA7d,IAAAuO,EAAA4nL,SAAAjtL,EAAArE,IAAA0J,EAAA4nL,cACEn2L,IAAAuO,EAAA6nL,UACFv4K,EAAAtP,EAAA6nL,UACEltL,EAAA0b,gBACF/G,EAAA3U,EAAA0b,kBACE1b,EAAAwyB,eACF7d,EAAA3U,EAAAwyB,gBAGA7d,QAAA,CACA,QAAA7d,IAAA6d,EAAAzZ,QAAApE,IAAA6d,EAAAtZ,EACA,OAAAsZ,EAGA,oBAAAA,GAAA+U,SAAA/U,GAEA,OACAzZ,GAFA4B,EAAAkD,EAAAqxB,gBAEA1c,EAAA,KACAtZ,EAAAyB,EAAA,KAAA6X,GAKA,YAGA,SAAAw4K,EAAAngE,EAAAnvH,EAAA+uL,GACA,IAGAj4K,EAFA1W,EADA+uH,EAAAnvH,GACAI,KACAmvL,EAAA,CAAAvvL,GAGA,IAAA+uL,EACA,OAAA3uL,EAGA,UAAAA,IAAA,IAAAmvL,EAAA91L,QAAA2G,IAAA,CACA,IAAAyrB,SAAAzrB,GACA,OAAAA,EAIA,KADA0W,EAAAq4G,EAAA/uH,IAEA,SAGA,GAAA0W,EAAA4nD,QACA,OAAAt+D,EAGAmvL,EAAA1zL,KAAAuE,GACAA,EAAA0W,EAAA1W,KAGA,SAGA,SAAAovL,EAAA34K,GACA,IAAAzW,EAAAyW,EAAAzW,KACA/F,EAAA,UAEA,WAAA+F,EACA,MAGAyrB,SAAAzrB,KACA/F,EAAA,YAGA20L,EAAA30L,GAAAwc,IAGA,SAAA44K,EAAA1rH,GACA,OAAAA,MAAAztB,KAGA,SAAAo5I,EAAA5wL,EAAA6wL,EAAAC,EAAAC,EAAAC,GACA,IAAAl5L,EAEA,GAAAi5L,GAAAC,EAAA,CAMA,IADAhxL,EAAAoB,OAAAyvL,EAAA,GAAAtyL,EAAAsyL,EAAA,GAAAnyL,GACA5G,EAAA,EAAYA,EAAAi5L,IAAUj5L,EACtBsL,EAAAgH,OAAA/I,OAAArB,EAAA6wL,EAAA/4L,EAAA,GAAA+4L,EAAA/4L,IAOA,IAHAkI,EAAAqB,OAAAyvL,EAAAE,EAAA,GAAAzyL,EAAAuyL,EAAAE,EAAA,GAAAtyL,GAGA5G,EAAAk5L,EAAA,EAAmBl5L,EAAA,IAAOA,EAC1BsL,EAAAgH,OAAA/I,OAAArB,EAAA8wL,EAAAh5L,GAAAg5L,EAAAh5L,EAAA,QAiDAD,EAAAD,QAAA,CACAyK,GAAA,SAEA4uL,oBAAA,SAAA9sL,EAAAe,GACA,IAGAN,EAAA9M,EAAAiwB,EAAAhQ,EAHAlR,GAAA1C,EAAAE,KAAAC,UAAA,IAAAtH,OACAizL,EAAA/qL,EAAA+qL,UACA5/D,EAAA,GAGA,IAAAv4H,EAAA,EAAaA,EAAA+O,IAAW/O,EAGxBigB,EAAA,MADAgQ,GADAnjB,EAAAT,EAAAU,eAAA/M,IACAsO,UAGA2hB,EAAAxf,QAAAwf,aAAA3oB,EAAA2Z,OACAhB,EAAA,CACA6nD,QAAAz7D,EAAA8L,iBAAAnY,GACAwJ,KAAA6uL,EAAApoK,EAAAjwB,EAAA+O,GACA1C,QACA4jB,OAIAnjB,EAAAssL,QAAAn5K,EACAs4G,EAAAtzH,KAAAgb,GAGA,IAAAjgB,EAAA,EAAaA,EAAA+O,IAAW/O,GACxBigB,EAAAs4G,EAAAv4H,MAKAigB,EAAAzW,KAAAkvL,EAAAngE,EAAAv4H,EAAAm4L,GACAl4K,EAAAkmI,SAAAmyC,EAAAr4K,GACAA,EAAAo5K,OAAAT,EAAA34K,KAIAq5K,kBAAA,SAAAjtL,EAAAyK,GACA,IAAAhK,EAAAgK,EAAAhK,KAAAssL,QACA,GAAAtsL,EAAA,CAIA,IAAA5E,EAAAmE,EAAAnE,IACA+nB,EAAAnjB,EAAAmjB,GACAmiC,EAAAniC,EAAAjqB,MACAymE,EAAAx8C,EAAA48C,WAAA,GACAwsH,EAAAvsL,EAAAusL,OACA/3K,EAAA8wC,EAAA5qD,iBAAA5B,EAAA6B,OAAAC,aAEA2xL,GAAA/3K,GAAAmrD,EAAAvnE,SACAoG,EAAAgH,OAAAk9D,SAAAtnE,EAAAmE,EAAA+C,WAlGA,SAAAlH,EAAAukE,EAAA4sH,EAAAjnI,EAAA9wC,EAAAqmE,GACA,IAMA3nF,EAAA2N,EAAAvE,EAAAmwL,EAAAC,EAAAC,EAAAC,EANA3qL,EAAA09D,EAAAvnE,OACAguI,EAAA9gF,EAAAga,SACA2sH,EAAA,GACAC,EAAA,GACAC,EAAA,EACAC,EAAA,EAKA,IAFAhxL,EAAAW,YAEA7I,EAAA,EAAA2N,EAAAoB,IAAA44E,EAAqC3nF,EAAA2N,IAAU3N,EAG/Cw5L,EAAAH,EADAE,EAAA9sH,EADArjE,EAAApJ,EAAA+O,GACA/I,MACAoD,EAAAgpD,GACAqnI,EAAAZ,EAAAU,GACAG,EAAAb,EAAAW,GAEAC,GAAAC,GACAT,EAAAF,EAAA9zL,KAAAs0L,GACAL,EAAAF,EAAA/zL,KAAAu0L,IACGP,GAAAC,IACHhmD,GAMAumD,GACAV,EAAA9zL,KAAAs0L,GAEAG,GACAV,EAAA/zL,KAAAu0L,KATAV,EAAA5wL,EAAA6wL,EAAAC,EAAAC,EAAAC,GACAD,EAAAC,EAAA,EACAH,EAAA,GACAC,EAAA,KAYAF,EAAA5wL,EAAA6wL,EAAAC,EAAAC,EAAAC,GAEAhxL,EAAAuf,YACAvf,EAAAY,UAAAwY,EACApZ,EAAAsB,OAyDAmwL,CAAAzxL,EAAAukE,EAAA4sH,EAAAjnI,EAAA9wC,EAAA2O,EAAAsxI,OACAj2J,EAAAgH,OAAAm9D,WAAAvnE,4CCxTAnI,EAAAD,QAAA,GACAC,EAAAD,QAAAkO,IAAqBpO,EAAQ,QAC7BG,EAAAD,QAAAmhB,KAAsBrhB,EAAQ,QAC9BG,EAAAD,QAAA0sE,MAAuB5sE,EAAQ,QAC/BG,EAAAD,QAAAqnK,UAA2BvnK,EAAQ,2CCJnC,IAAA2gC,EAAY3gC,EAAQ,QAIpBg6L,EAAA,CACA,6DACA,kEACA,gEACA,sCAgBA75L,EAAAD,QAAA,SAAAwmE,GACA,IACA/kE,EACAuB,EACA9C,EAHAkqE,EAAA,GAKA,OAAA5D,GAEA/lC,EAAA9M,QAAA6yC,EAAAx0C,MAAA,eAAAzmB,GAKA,GAJArL,EAAAqL,EAAAxI,QAAA,KACAtB,EAAAg/B,EAAA/J,KAAAnrB,EAAAlH,OAAA,EAAAnE,IAAA24B,cACA71B,EAAAy9B,EAAA/J,KAAAnrB,EAAAlH,OAAAnE,EAAA,IAEAuB,EAAA,CACA,GAAA2oE,EAAA3oE,IAAAq4L,EAAA/2L,QAAAtB,IAAA,EACA,OAGA2oE,EAAA3oE,GADA,eAAAA,GACA2oE,EAAA3oE,GAAA2oE,EAAA3oE,GAAA,IAAAsT,OAAA,CAAA/R,IAEAonE,EAAA3oE,GAAA2oE,EAAA3oE,GAAA,KAAAuB,OAKAonE,GAnBiBA,4BChCjB,SAAAnqE,GAGgEA,EAAAD,QAG/D,WAAqB,aAEtB,IAAA+5L,EA6GAjmK,EA3GA,SAAAw2B,IACA,OAAAyvI,EAAAp0L,MAAA,KAAAwQ,WASA,SAAA6M,EAAA4iB,GACA,OAAAA,aAAA5kB,OAAA,mBAAApgB,OAAAkB,UAAAwe,SAAAjgB,KAAAulC,GAGA,SAAA6F,EAAA7F,GAGA,aAAAA,GAAA,oBAAAhlC,OAAAkB,UAAAwe,SAAAjgB,KAAAulC,GAiBA,SAAAirC,EAAAjrC,GACA,gBAAAA,EAGA,SAAAriB,EAAAqiB,GACA,uBAAAA,GAAA,oBAAAhlC,OAAAkB,UAAAwe,SAAAjgB,KAAAulC,GAGA,SAAAqtE,EAAArtE,GACA,OAAAA,aAAAiP,MAAA,kBAAAj0C,OAAAkB,UAAAwe,SAAAjgB,KAAAulC,GAGA,SAAA74B,EAAAomB,EAAA3J,GACA,IAAAtpB,EAAAizE,EAAA,GACA,IAAAjzE,EAAA,EAAmBA,EAAAizB,EAAA/tB,SAAgBlF,EACnCizE,EAAAhuE,KAAAqkB,EAAA2J,EAAAjzB,OAEA,OAAAizE,EAGA,SAAA6mH,EAAAn6K,EAAAoF,GACA,OAAArkB,OAAAkB,UAAAC,eAAA1B,KAAAwf,EAAAoF,GAGA,SAAAjd,EAAA6X,EAAAoF,GACA,QAAA/kB,KAAA+kB,EACA+0K,EAAA/0K,EAAA/kB,KACA2f,EAAA3f,GAAA+kB,EAAA/kB,IAYA,OARA85L,EAAA/0K,EAAA,cACApF,EAAAS,SAAA2E,EAAA3E,UAGA05K,EAAA/0K,EAAA,aACApF,EAAAknG,QAAA9hG,EAAA8hG,SAGAlnG,EAGA,SAAAo6K,EAAAr0J,EAAAtC,EAAA42J,EAAA3rB,GACA,OAAA4rB,GAAAv0J,EAAAtC,EAAA42J,EAAA3rB,GAAA,GAAA6rB,MAuBA,SAAAC,EAAA/5L,GAIA,OAHA,MAAAA,EAAAg6L,MACAh6L,EAAAg6L,IApBA,CACAz7I,OAAA,EACA07I,aAAA,GACAC,YAAA,GACA5vK,UAAA,EACA6vK,cAAA,EACAC,WAAA,EACAC,aAAA,KACAC,eAAA,EACAC,iBAAA,EACAC,KAAA,EACAC,gBAAA,GACAC,SAAA,KACAC,SAAA,EACAC,iBAAA,IAQA56L,EAAAg6L,IAqBA,SAAAj+K,EAAA/b,GACA,SAAAA,EAAA66L,SAAA,CACA,IAAA9sB,EAAAgsB,EAAA/5L,GACA86L,EAAAtnK,EAAAzzB,KAAAguK,EAAA0sB,gBAAA,SAAA76L,GACA,aAAAA,IAEAm7L,GAAA5tL,MAAAnN,EAAAg7L,GAAAlkH,YACAi3F,EAAAzjJ,SAAA,IACAyjJ,EAAAxvH,QACAwvH,EAAAssB,eACAtsB,EAAAktB,iBACAltB,EAAA6sB,kBACA7sB,EAAAqsB,YACArsB,EAAAusB,gBACAvsB,EAAAwsB,mBACAxsB,EAAA2sB,UAAA3sB,EAAA2sB,UAAAI,GASA,GAPA96L,EAAAk7L,UACAH,KACA,IAAAhtB,EAAAosB,eACA,IAAApsB,EAAAksB,aAAAn1L,aACA7C,IAAA8rK,EAAAotB,SAGA,MAAA76L,OAAAyhF,UAAAzhF,OAAAyhF,SAAA/hF,GAIA,OAAA+6L,EAHA/6L,EAAA66L,SAAAE,EAMA,OAAA/6L,EAAA66L,SAGA,SAAAO,EAAArtB,GACA,IAAA/tK,EAAA25L,EAAA9rH,KAQA,OAPA,MAAAkgG,EACArmK,EAAAqyL,EAAA/5L,GAAA+tK,GAGAgsB,EAAA/5L,GAAAu6L,iBAAA,EAGAv6L,EA3DAwzB,EADA9S,MAAAlf,UAAAgyB,KACA9S,MAAAlf,UAAAgyB,KAEA,SAAA0K,GAIA,IAHA,IAAAp9B,EAAAR,OAAAyH,MACA/E,EAAAlC,EAAAgE,SAAA,EAEAlF,EAAA,EAA2BA,EAAAoD,EAASpD,IACpC,GAAAA,KAAAkB,GAAAo9B,EAAAn+B,KAAAgI,KAAAjH,EAAAlB,KAAAkB,GACA,SAIA,UAoDA,IAAAu6L,EAAArxI,EAAAqxI,iBAAA,GAEA,SAAAC,EAAA90J,EAAAg3C,GACA,IAAA59E,EAAAmgB,EAAArd,EAiCA,GA/BA6tE,EAAAiN,EAAA+9G,oBACA/0J,EAAA+0J,iBAAA/9G,EAAA+9G,kBAEAhrH,EAAAiN,EAAAuN,MACAvkD,EAAAukD,GAAAvN,EAAAuN,IAEAxa,EAAAiN,EAAAwN,MACAxkD,EAAAwkD,GAAAxN,EAAAwN,IAEAza,EAAAiN,EAAAj3C,MACAC,EAAAD,GAAAi3C,EAAAj3C,IAEAgqC,EAAAiN,EAAA09G,WACA10J,EAAA00J,QAAA19G,EAAA09G,SAEA3qH,EAAAiN,EAAAg+G,QACAh1J,EAAAg1J,KAAAh+G,EAAAg+G,MAEAjrH,EAAAiN,EAAAi+G,UACAj1J,EAAAi1J,OAAAj+G,EAAAi+G,QAEAlrH,EAAAiN,EAAAk+G,WACAl1J,EAAAk1J,QAAAl+G,EAAAk+G,SAEAnrH,EAAAiN,EAAAw8G,OACAxzJ,EAAAwzJ,IAAAD,EAAAv8G,IAEAjN,EAAAiN,EAAAm+G,WACAn1J,EAAAm1J,QAAAn+G,EAAAm+G,SAGAN,EAAAv2L,OAAA,EACA,IAAAlF,EAAA,EAAuBA,EAAAy7L,EAAAv2L,OAA6BlF,IACpDmgB,EAAAs7K,EAAAz7L,GAEA2wE,EADA7tE,EAAA86E,EAAAz9D,MAEAymB,EAAAzmB,GAAArd,GAKA,OAAA8jC,EAGA,IAAAo1J,GAAA,EAGA,SAAAC,EAAA/pL,GACAwpL,EAAAvzL,KAAA+J,GACA/J,KAAAizL,GAAA,IAAAzmJ,KAAA,MAAAziC,EAAAkpL,GAAAlpL,EAAAkpL,GAAAlkH,UAAAjJ,KACA9lE,KAAAgU,YACAhU,KAAAizL,GAAA,IAAAzmJ,KAAAs5B,OAIA,IAAA+tH,IACAA,GAAA,EACA5xI,EAAA8xI,aAAA/zL,MACA6zL,GAAA,GAIA,SAAAG,EAAA/2L,GACA,OAAAA,aAAA62L,GAAA,MAAA72L,GAAA,MAAAA,EAAAu2L,iBAGA,SAAAS,EAAA5hG,GACA,OAAAA,EAAA,EAEA9zF,KAAA6d,KAAAi2E,IAAA,EAEA9zF,KAAAkN,MAAA4mF,GAIA,SAAA6hG,EAAAC,GACA,IAAAC,GAAAD,EACAr7L,EAAA,EAMA,OAJA,IAAAs7L,GAAAtnK,SAAAsnK,KACAt7L,EAAAm7L,EAAAG,IAGAt7L,EAIA,SAAAu7L,EAAAC,EAAAC,EAAAC,GACA,IAGA38L,EAHAoD,EAAAsD,KAAAC,IAAA81L,EAAAv3L,OAAAw3L,EAAAx3L,QACA03L,EAAAl2L,KAAA6B,IAAAk0L,EAAAv3L,OAAAw3L,EAAAx3L,QACA23L,EAAA,EAEA,IAAA78L,EAAA,EAAmBA,EAAAoD,EAASpD,KAC5B28L,GAAAF,EAAAz8L,KAAA08L,EAAA18L,KACA28L,GAAAN,EAAAI,EAAAz8L,MAAAq8L,EAAAK,EAAA18L,MACA68L,IAGA,OAAAA,EAAAD,EAGA,SAAA30I,EAAApV,IACA,IAAAuX,EAAA0yI,6BACA,oBAAA90I,iBAAAC,KAKA,SAAA8+G,EAAAl0H,EAAAvpB,GACA,IAAAyzK,GAAA,EAEA,OAAAj1L,EAAA,WAIA,GAHA,MAAAsiD,EAAA4yI,oBACA5yI,EAAA4yI,mBAAA,KAAAnqJ,GAEAkqJ,EAAA,CAGA,IAFA,IACAtpJ,EADA38B,EAAA,GAEA9W,EAAA,EAA+BA,EAAAiW,UAAA/Q,OAAsBlF,IAAA,CAErD,GADAyzC,EAAA,GACA,iBAAAx9B,UAAAjW,GAAA,CAEA,QAAAuB,KADAkyC,GAAA,MAAAzzC,EAAA,KACAiW,UAAA,GACAw9B,GAAAlyC,EAAA,KAAA0U,UAAA,GAAA1U,GAAA,KAEAkyC,IAAApzB,MAAA,WAEAozB,EAAAx9B,UAAAjW,GAEA8W,EAAA7R,KAAAwuC,GAEAwU,GAAAnnC,MAAAlf,UAAAye,MAAAlgB,KAAA2W,GAAApK,KAAA,SAAAkJ,OAAAmyC,QACAg1I,GAAA,EAEA,OAAAzzK,EAAA7jB,MAAA0C,KAAA8N,YACSqT,GAGT,IAsEA3U,EAtEAsoL,EAAA,GAEA,SAAAC,EAAA38L,EAAAsyC,GACA,MAAAuX,EAAA4yI,oBACA5yI,EAAA4yI,mBAAAz8L,EAAAsyC,GAEAoqJ,EAAA18L,KACA0nD,IACAg1I,EAAA18L,IAAA,GAOA,SAAAopB,EAAA+b,GACA,OAAAA,aAAA2wC,UAAA,sBAAA31E,OAAAkB,UAAAwe,SAAAjgB,KAAAulC,GAsBA,SAAAy3J,EAAAC,EAAAC,GACA,IAA2Bl9K,EAA3B8yD,EAAAnrE,EAAA,GAA2Bs1L,GAC3B,IAAAj9K,KAAAk9K,EACAvD,EAAAuD,EAAAl9K,KACAorB,EAAA6xJ,EAAAj9K,KAAAorB,EAAA8xJ,EAAAl9K,KACA8yD,EAAA9yD,GAAA,GACArY,EAAAmrE,EAAA9yD,GAAAi9K,EAAAj9K,IACArY,EAAAmrE,EAAA9yD,GAAAk9K,EAAAl9K,KACiB,MAAAk9K,EAAAl9K,GACjB8yD,EAAA9yD,GAAAk9K,EAAAl9K,UAEA8yD,EAAA9yD,IAIA,IAAAA,KAAAi9K,EACAtD,EAAAsD,EAAAj9K,KACA25K,EAAAuD,EAAAl9K,IACAorB,EAAA6xJ,EAAAj9K,MAEA8yD,EAAA9yD,GAAArY,EAAA,GAAqCmrE,EAAA9yD,KAGrC,OAAA8yD,EAGA,SAAAqqH,EAAAprL,GACA,MAAAA,GACA/J,KAAAwK,IAAAT,GAtDAk4C,EAAA0yI,6BAAA,EACA1yI,EAAA4yI,mBAAA,KA4DAroL,EADAjU,OAAAiU,KACAjU,OAAAiU,KAEA,SAAAvP,GACA,IAAApF,EAAAizE,EAAA,GACA,IAAAjzE,KAAAoF,EACA00L,EAAA10L,EAAApF,IACAizE,EAAAhuE,KAAAjF,GAGA,OAAAizE,GAoFA,IAAA+8F,EAAA,GAEA,SAAAutB,EAAApoK,EAAAqoK,GACA,IAAAx5D,EAAA7uG,EAAAwD,cACAq3I,EAAAhsC,GAAAgsC,EAAAhsC,EAAA,KAAAgsC,EAAAwtB,GAAAroK,EAGA,SAAAsoK,EAAAC,GACA,uBAAAA,EAAA1tB,EAAA0tB,IAAA1tB,EAAA0tB,EAAA/kK,oBAAAt2B,EAGA,SAAAs7L,EAAAC,GACA,IACAC,EACA19K,EAFA29K,EAAA,GAIA,IAAA39K,KAAAy9K,EACA9D,EAAA8D,EAAAz9K,KACA09K,EAAAJ,EAAAt9K,MAEA29K,EAAAD,GAAAD,EAAAz9K,IAKA,OAAA29K,EAGA,IAAAC,EAAA,GAEA,SAAAC,EAAA7oK,EAAA6C,GACA+lK,EAAA5oK,GAAA6C,EAcA,SAAAimK,EAAAzjG,EAAA0jG,EAAAC,GACA,IAAAC,EAAA,GAAA13L,KAAA6B,IAAAiyF,GACA6jG,EAAAH,EAAAE,EAAAl5L,OACAugK,EAAAjrE,GAAA,EACA,OAAAirE,EAAA04B,EAAA,YACAz3L,KAAAwX,IAAA,GAAAxX,KAAAI,IAAA,EAAAu3L,IAAAj+K,WAAAjc,OAAA,GAAAi6L,EAGA,IAAAE,EAAA,uLAEAC,EAAA,6CAEAC,EAAA,GAEAC,EAAA,GAMA,SAAAC,EAAAp8I,EAAAq8I,EAAAC,EAAA3nL,GACA,IAAA6uC,EAAA7uC,EACA,iBAAAA,IACA6uC,EAAA,WACA,OAAA39C,KAAA8O,OAGAqrC,IACAm8I,EAAAn8I,GAAAwD,GAEA64I,IACAF,EAAAE,EAAA,eACA,OAAAV,EAAAn4I,EAAArgD,MAAA0C,KAAA8N,WAAA0oL,EAAA,GAAAA,EAAA,MAGAC,IACAH,EAAAG,GAAA,WACA,OAAAz2L,KAAA02L,aAAAD,QAAA94I,EAAArgD,MAAA0C,KAAA8N,WAAAqsC,KAiCA,SAAAw8I,EAAA1+L,EAAAgjC,GACA,OAAAhjC,EAAA+b,WAIAinB,EAAA27J,EAAA37J,EAAAhjC,EAAAy+L,cACAL,EAAAp7J,GAAAo7J,EAAAp7J,IA3BA,SAAAA,GACA,IAAApjC,EAAAkF,EARAwgC,EAQAvG,EAAAiE,EAAA5P,MAAA8qK,GAEA,IAAAt+L,EAAA,EAAAkF,EAAAi6B,EAAAj6B,OAA0ClF,EAAAkF,EAAYlF,IACtDy+L,EAAAt/J,EAAAn/B,IACAm/B,EAAAn/B,GAAAy+L,EAAAt/J,EAAAn/B,IAEAm/B,EAAAn/B,IAdA0lC,EAcAvG,EAAAn/B,IAbAwzB,MAAA,YACAkS,EAAAr0B,QAAA,eAEAq0B,EAAAr0B,QAAA,UAcA,gBAAA2tL,GACA,IAAAh/L,EAAAqwI,EAAA,GACA,IAAArwI,EAAA,EAAuBA,EAAAkF,EAAYlF,IACnCqwI,GAAA1mH,EAAAwV,EAAAn/B,IAAAm/B,EAAAn/B,GAAAG,KAAA6+L,EAAA57J,GAAAjE,EAAAn/B,GAEA,OAAAqwI,GAWA4uD,CAAA77J,GAEAo7J,EAAAp7J,GAAAhjC,IANAA,EAAAy+L,aAAAK,cASA,SAAAH,EAAA37J,EAAA42J,GACA,IAAAh6L,EAAA,EAEA,SAAAm/L,EAAAz5J,GACA,OAAAs0J,EAAAoF,eAAA15J,MAIA,IADA64J,EAAA96G,UAAA,EACAzjF,GAAA,GAAAu+L,EAAA54L,KAAAy9B,IACAA,IAAA/xB,QAAAktL,EAAAY,GACAZ,EAAA96G,UAAA,EACAzjF,GAAA,EAGA,OAAAojC,EAGA,IAAAi8J,EAAA,KACAC,EAAA,OACAC,EAAA,QACAC,EAAA,QACAC,EAAA,aACAC,EAAA,QACAC,EAAA,YACAC,EAAA,gBACAC,GAAA,UACAC,GAAA,UACAC,GAAA,eAEAC,GAAA,MACAC,GAAA,WAEAC,GAAA,qBACAC,GAAA,0BAMAC,GAAA,wJAEAC,GAAA,GAEA,SAAAC,GAAAh+I,EAAAqtH,EAAA4wB,GACAF,GAAA/9I,GAAA34B,EAAAgmJ,KAAA,SAAAniD,EAAAqxE,GACA,OAAArxE,GAAA+yE,IAAA5wB,GAIA,SAAA6wB,GAAAl+I,EAAApwC,GACA,OAAA4nL,EAAAuG,GAAA/9I,GAIA+9I,GAAA/9I,GAAApwC,EAAAopL,QAAAppL,EAAA6pL,SAHA,IAAAnmJ,OAQA6qJ,GARAn+I,EAQAjxC,QAAA,SAAAA,QAAA,+CAAAihB,EAAAknK,EAAAkH,EAAAC,EAAAC,GACA,OAAApH,GAAAkH,GAAAC,GAAAC,MAIA,SAAAH,GAAA1+L,GACA,OAAAA,EAAAsP,QAAA,yBAA8C,QAG9C,IAAAmuC,GAAA,GAEA,SAAAqhJ,GAAAv+I,EAAArrC,GACA,IAAAjX,EAAA8lD,EAAA7uC,EASA,IARA,iBAAAqrC,IACAA,EAAA,CAAAA,IAEAj/B,EAAApM,KACA6uC,EAAA,SAAApgB,EAAAvG,GACAA,EAAAloB,GAAAolL,EAAA32J,KAGA1lC,EAAA,EAAmBA,EAAAsiD,EAAAp9C,OAAkBlF,IACrCw/C,GAAA8C,EAAAtiD,IAAA8lD,EAIA,SAAAg7I,GAAAx+I,EAAArrC,GACA4pL,GAAAv+I,EAAA,SAAA5c,EAAAvG,EAAAjtB,EAAAowC,GACApwC,EAAA6uL,GAAA7uL,EAAA6uL,IAAA,GACA9pL,EAAAyuB,EAAAxzB,EAAA6uL,GAAA7uL,EAAAowC,KAIA,SAAA0+I,GAAA1+I,EAAA5c,EAAAxzB,GACA,MAAAwzB,GAAAo0J,EAAAt6I,GAAA8C,IACA9C,GAAA8C,GAAA5c,EAAAxzB,EAAA+uL,GAAA/uL,EAAAowC,GAIA,IAAA4+I,GAAA,EACAC,GAAA,EACAC,GAAA,EACAC,GAAA,EACAC,GAAA,EACAC,GAAA,EACAC,GAAA,EACAC,GAAA,EACAC,GAAA,EA8CA,SAAAC,GAAAvvD,GACA,OAAAwvD,GAAAxvD,GAAA,QAGA,SAAAwvD,GAAAxvD,GACA,OAAAA,EAAA,MAAAA,EAAA,QAAAA,EAAA,OA/CAssD,EAAA,mBACA,IAAA93L,EAAAuB,KAAAiqI,OACA,OAAAxrI,GAAA,QAAAA,EAAA,IAAAA,IAGA83L,EAAA,wBACA,OAAAv2L,KAAAiqI,OAAA,MAGAssD,EAAA,uBACAA,EAAA,wBACAA,EAAA,4BAIAnB,EAAA,YAIAS,EAAA,UAIAsC,GAAA,IAAAL,IACAK,GAAA,KAAAZ,EAAAJ,GACAgB,GAAA,OAAAR,GAAAN,GACAc,GAAA,QAAAP,GAAAN,GACAa,GAAA,SAAAP,GAAAN,GAEAoB,GAAA,mBAAAK,IACAL,GAAA,gBAAAn7J,EAAAvG,GACAA,EAAA+hK,IAAA,IAAAx7J,EAAAxgC,OAAAklD,EAAAy3I,kBAAAn8J,GAAA22J,EAAA32J,KAEAm7J,GAAA,cAAAn7J,EAAAvG,GACAA,EAAA+hK,IAAA92I,EAAAy3I,kBAAAn8J,KAEAm7J,GAAA,aAAAn7J,EAAAvG,GACAA,EAAA+hK,IAAAl+L,SAAA0iC,EAAA,MAeA0kB,EAAAy3I,kBAAA,SAAAn8J,GACA,OAAA22J,EAAA32J,IAAA22J,EAAA32J,GAAA,cAKA,IAiEA7iC,GAjEAi/L,GAAAC,GAAA,eAMA,SAAAA,GAAA5sK,EAAA6sK,GACA,gBAAA/gM,GACA,aAAAA,GACAghM,GAAA95L,KAAAgtB,EAAAl0B,GACAmpD,EAAA8xI,aAAA/zL,KAAA65L,GACA75L,MAEAtH,GAAAsH,KAAAgtB,IAKA,SAAAt0B,GAAAm+L,EAAA7pK,GACA,OAAA6pK,EAAA7iL,UACA6iL,EAAA5D,GAAA,OAAA4D,EAAAnD,OAAA,UAAA1mK,KAAA84C,IAGA,SAAAg0H,GAAAjD,EAAA7pK,EAAAl0B,GACA+9L,EAAA7iL,YAAA5O,MAAAtM,KACA,aAAAk0B,GAAAysK,GAAA5C,EAAA5sD,SAAA,IAAA4sD,EAAA9sD,SAAA,KAAA8sD,EAAAkD,OACAlD,EAAA5D,GAAA,OAAA4D,EAAAnD,OAAA,UAAA1mK,GAAAl0B,EAAA+9L,EAAA9sD,QAAAiwD,GAAAlhM,EAAA+9L,EAAA9sD,UAGA8sD,EAAA5D,GAAA,OAAA4D,EAAAnD,OAAA,UAAA1mK,GAAAl0B,IAqDA,SAAAkhM,GAAA/vD,EAAAF,GACA,GAAA3kI,MAAA6kI,IAAA7kI,MAAA2kI,GACA,OAAAjkE,IAEA,IAzBAxnE,EAyBA27L,GAAAlwD,GAzBAzrI,EAyBA,IAxBAA,KA0BA,OADA2rI,IAAAF,EAAAkwD,GAAA,GACA,IAAAA,EAAAR,GAAAxvD,GAAA,SAAAgwD,EAAA,IApBAv/L,GADAie,MAAAlf,UAAAiB,QACAie,MAAAlf,UAAAiB,QAEA,SAAApC,GAEA,IAAAT,EACA,IAAAA,EAAA,EAAuBA,EAAAmI,KAAAjD,SAAiBlF,EACxC,GAAAmI,KAAAnI,KAAAS,EACA,OAAAT,EAGA,UAeA0+L,EAAA,6BACA,OAAAv2L,KAAA+pI,QAAA,IAGAwsD,EAAA,mBAAAt7J,GACA,OAAAj7B,KAAA02L,aAAAwD,YAAAl6L,KAAAi7B,KAGAs7J,EAAA,oBAAAt7J,GACA,OAAAj7B,KAAA02L,aAAAyD,OAAAn6L,KAAAi7B,KAKAm6J,EAAA,aAIAS,EAAA,WAIAsC,GAAA,IAAAZ,GACAY,GAAA,KAAAZ,EAAAJ,GACAgB,GAAA,eAAA9yE,EAAAwsE,GACA,OAAAA,EAAAuI,iBAAA/0E,KAEA8yE,GAAA,gBAAA9yE,EAAAwsE,GACA,OAAAA,EAAAwI,YAAAh1E,KAGAqzE,GAAA,oBAAAn7J,EAAAvG,GACAA,EAAAgiK,IAAA9E,EAAA32J,GAAA,IAGAm7J,GAAA,wBAAAn7J,EAAAvG,EAAAjtB,EAAAowC,GACA,IAAA4vF,EAAAhgI,EAAA6pL,QAAA0G,YAAA/8J,EAAA4c,EAAApwC,EAAAopL,SAEA,MAAAppD,EACA/yG,EAAAgiK,IAAAjvD,EAEAioD,EAAAjoL,GAAAuoL,aAAA/0J,IAMA,IAAAg9J,GAAA,gCACAC,GAAA,wFAAA7wK,MAAA,KAUA8wK,GAAA,kDAAA9wK,MAAA,KA2FA,SAAA+wK,GAAA7D,EAAA/9L,GACA,IAAA6hM,EAEA,IAAA9D,EAAA7iL,UAEA,OAAA6iL,EAGA,oBAAA/9L,EACA,WAAA0E,KAAA1E,GACAA,EAAAo7L,EAAAp7L,QAIA,IAAAoiB,EAFApiB,EAAA+9L,EAAAH,aAAA4D,YAAAxhM,IAGA,OAAA+9L,EAOA,OAFA8D,EAAAp8L,KAAAC,IAAAq4L,EAAAkD,OAAAC,GAAAnD,EAAA5sD,OAAAnxI,IACA+9L,EAAA5D,GAAA,OAAA4D,EAAAnD,OAAA,mBAAA56L,EAAA6hM,GACA9D,EAGA,SAAA+D,GAAA9hM,GACA,aAAAA,GACA4hM,GAAA16L,KAAAlH,GACAmpD,EAAA8xI,aAAA/zL,MAAA,GACAA,MAEAtH,GAAAsH,KAAA,SAQA,IAAA66L,GAAA5C,GAoBA6C,GAAA7C,GAoBA,SAAA8C,KACA,SAAAC,EAAAxjL,EAAAoF,GACA,OAAAA,EAAA7f,OAAAya,EAAAza,OAGA,IACAlF,EAAAg/L,EADAoE,EAAA,GAAAC,EAAA,GAAAC,EAAA,GAEA,IAAAtjM,EAAA,EAAmBA,EAAA,GAAQA,IAE3Bg/L,EAAAjF,EAAA,KAAA/5L,IACAojM,EAAAn+L,KAAAkD,KAAAk6L,YAAArD,EAAA,KACAqE,EAAAp+L,KAAAkD,KAAAm6L,OAAAtD,EAAA,KACAsE,EAAAr+L,KAAAkD,KAAAm6L,OAAAtD,EAAA,KACAsE,EAAAr+L,KAAAkD,KAAAk6L,YAAArD,EAAA,KAOA,IAHAoE,EAAA5xK,KAAA2xK,GACAE,EAAA7xK,KAAA2xK,GACAG,EAAA9xK,KAAA2xK,GACAnjM,EAAA,EAAmBA,EAAA,GAAQA,IAC3BojM,EAAApjM,GAAAygM,GAAA2C,EAAApjM,IACAqjM,EAAArjM,GAAAygM,GAAA4C,EAAArjM,IAEA,IAAAA,EAAA,EAAmBA,EAAA,GAAQA,IAC3BsjM,EAAAtjM,GAAAygM,GAAA6C,EAAAtjM,IAGAmI,KAAAo7L,aAAA,IAAA3tJ,OAAA,KAAA0tJ,EAAA52L,KAAA,cACAvE,KAAAq7L,kBAAAr7L,KAAAo7L,aACAp7L,KAAAs7L,mBAAA,IAAA7tJ,OAAA,KAAAytJ,EAAA32L,KAAA,cACAvE,KAAAu7L,wBAAA,IAAA9tJ,OAAA,KAAAwtJ,EAAA12L,KAAA,cAqBA,SAAAi3L,GAAA/8L,GACA,IAAAs7L,EAEA,GAAAt7L,EAAA,KAAAA,GAAA,GACA,IAAAkQ,EAAAgK,MAAAlf,UAAAye,MAAAlgB,KAAA8V,WAEAa,EAAA,GAAAlQ,EAAA,IACAs7L,EAAA,IAAAvtJ,UAAAivJ,IAAAn+L,MAAA,KAAAqR,IACAme,SAAAitK,EAAA2B,mBACA3B,EAAA4B,eAAAl9L,QAGAs7L,EAAA,IAAAvtJ,UAAAivJ,IAAAn+L,MAAA,KAAAwQ,YAGA,OAAAisL,EAIA,SAAA6B,GAAA3xD,EAAA4xD,EAAAC,GACA,IACAC,EAAA,EAAAF,EAAAC,EAEAE,GAAA,EAAAR,GAAAvxD,EAAA,EAAA8xD,GAAAE,YAAAJ,GAAA,EAEA,OAAAG,EAAAD,EAAA,EAIA,SAAAG,GAAAjyD,EAAAH,EAAAgC,EAAA+vD,EAAAC,GACA,IAGAK,EAAAC,EAHAC,GAAA,EAAAvwD,EAAA+vD,GAAA,EACAS,EAAAV,GAAA3xD,EAAA4xD,EAAAC,GACAS,EAAA,KAAAzyD,EAAA,GAAAuyD,EAAAC,EAcA,OAXAC,GAAA,EAEAH,EAAA5C,GADA2C,EAAAlyD,EAAA,GACAsyD,EACSA,EAAA/C,GAAAvvD,IACTkyD,EAAAlyD,EAAA,EACAmyD,EAAAG,EAAA/C,GAAAvvD,KAEAkyD,EAAAlyD,EACAmyD,EAAAG,GAGA,CACAtyD,KAAAkyD,EACAI,UAAAH,GAIA,SAAAI,GAAA3F,EAAAgF,EAAAC,GACA,IAEAW,EAAAN,EAFAG,EAAAV,GAAA/E,EAAA5sD,OAAA4xD,EAAAC,GACAhyD,EAAAvrI,KAAAkN,OAAAorL,EAAA0F,YAAAD,EAAA,QAcA,OAXAxyD,EAAA,GACAqyD,EAAAtF,EAAA5sD,OAAA,EACAwyD,EAAA3yD,EAAA4yD,GAAAP,EAAAN,EAAAC,IACShyD,EAAA4yD,GAAA7F,EAAA5sD,OAAA4xD,EAAAC,IACTW,EAAA3yD,EAAA4yD,GAAA7F,EAAA5sD,OAAA4xD,EAAAC,GACAK,EAAAtF,EAAA5sD,OAAA,IAEAkyD,EAAAtF,EAAA5sD,OACAwyD,EAAA3yD,GAGA,CACAA,KAAA2yD,EACAxyD,KAAAkyD,GAIA,SAAAO,GAAAzyD,EAAA4xD,EAAAC,GACA,IAAAQ,EAAAV,GAAA3xD,EAAA4xD,EAAAC,GACAa,EAAAf,GAAA3xD,EAAA,EAAA4xD,EAAAC,GACA,OAAAtC,GAAAvvD,GAAAqyD,EAAAK,GAAA,EAoJA,SAAAC,GAAAC,EAAAvjM,GACA,OAAAujM,EAAA3kL,MAAA5e,EAAA,GAAAoT,OAAAmwL,EAAA3kL,MAAA,EAAA5e,IAhJAi9L,EAAA,0BACAA,EAAA,6BAIAnB,EAAA,YACAA,EAAA,eAIAS,EAAA,UACAA,EAAA,aAIAsC,GAAA,IAAAZ,GACAY,GAAA,KAAAZ,EAAAJ,GACAgB,GAAA,IAAAZ,GACAY,GAAA,KAAAZ,EAAAJ,GAEAwB,GAAA,6BAAAp7J,EAAAusG,EAAA//H,EAAAowC,GACA2vF,EAAA3vF,EAAAn+C,OAAA,MAAAk4L,EAAA32J,KAsCAg5J,EAAA,kBAEAA,EAAA,kBAAAt7J,GACA,OAAAj7B,KAAA02L,aAAAoG,YAAA98L,KAAAi7B,KAGAs7J,EAAA,mBAAAt7J,GACA,OAAAj7B,KAAA02L,aAAAqG,cAAA/8L,KAAAi7B,KAGAs7J,EAAA,oBAAAt7J,GACA,OAAAj7B,KAAA02L,aAAAsG,SAAAh9L,KAAAi7B,KAGAs7J,EAAA,mBACAA,EAAA,sBAIAnB,EAAA,WACAA,EAAA,eACAA,EAAA,kBAGAS,EAAA,UACAA,EAAA,cACAA,EAAA,iBAIAsC,GAAA,IAAAZ,GACAY,GAAA,IAAAZ,GACAY,GAAA,IAAAZ,GACAY,GAAA,cAAA9yE,EAAAwsE,GACA,OAAAA,EAAAoL,iBAAA53E,KAEA8yE,GAAA,eAAA9yE,EAAAwsE,GACA,OAAAA,EAAAqL,mBAAA73E,KAEA8yE,GAAA,gBAAA9yE,EAAAwsE,GACA,OAAAA,EAAAsL,cAAA93E,KAGAszE,GAAA,6BAAAp7J,EAAAusG,EAAA//H,EAAAowC,GACA,IAAA2xF,EAAA/hI,EAAA6pL,QAAAwJ,cAAA7/J,EAAA4c,EAAApwC,EAAAopL,SAEA,MAAArnD,EACAhC,EAAA3xI,EAAA2zI,EAEAkmD,EAAAjoL,GAAAmpL,eAAA31J,IAIAo7J,GAAA,uBAAAp7J,EAAAusG,EAAA//H,EAAAowC,GACA2vF,EAAA3vF,GAAA+5I,EAAA32J,KAkCA,IAAA8/J,GAAA,2DAAA1zK,MAAA,KAQA2zK,GAAA,8BAAA3zK,MAAA,KAMA4zK,GAAA,uBAAA5zK,MAAA,KAsJA6zK,GAAAvF,GAoBAwF,GAAAxF,GAoBAyF,GAAAzF,GAqBA,SAAA0F,KACA,SAAA3C,EAAAxjL,EAAAoF,GACA,OAAAA,EAAA7f,OAAAya,EAAAza,OAGA,IACAlF,EAAAg/L,EAAA+G,EAAAC,EAAAC,EADAC,EAAA,GAAA9C,EAAA,GAAAC,EAAA,GAAAC,EAAA,GAEA,IAAAtjM,EAAA,EAAmBA,EAAA,EAAOA,IAE1Bg/L,EAAAjF,EAAA,SAAA/nD,IAAAhyI,GACA+lM,EAAA59L,KAAA88L,YAAAjG,EAAA,IACAgH,EAAA79L,KAAA+8L,cAAAlG,EAAA,IACAiH,EAAA99L,KAAAg9L,SAAAnG,EAAA,IACAkH,EAAAjhM,KAAA8gM,GACA3C,EAAAn+L,KAAA+gM,GACA3C,EAAAp+L,KAAAghM,GACA3C,EAAAr+L,KAAA8gM,GACAzC,EAAAr+L,KAAA+gM,GACA1C,EAAAr+L,KAAAghM,GAQA,IAJAC,EAAA10K,KAAA2xK,GACAC,EAAA5xK,KAAA2xK,GACAE,EAAA7xK,KAAA2xK,GACAG,EAAA9xK,KAAA2xK,GACAnjM,EAAA,EAAmBA,EAAA,EAAOA,IAC1BojM,EAAApjM,GAAAygM,GAAA2C,EAAApjM,IACAqjM,EAAArjM,GAAAygM,GAAA4C,EAAArjM,IACAsjM,EAAAtjM,GAAAygM,GAAA6C,EAAAtjM,IAGAmI,KAAAg+L,eAAA,IAAAvwJ,OAAA,KAAA0tJ,EAAA52L,KAAA,cACAvE,KAAAi+L,oBAAAj+L,KAAAg+L,eACAh+L,KAAAk+L,kBAAAl+L,KAAAg+L,eAEAh+L,KAAAm+L,qBAAA,IAAA1wJ,OAAA,KAAAytJ,EAAA32L,KAAA,cACAvE,KAAAo+L,0BAAA,IAAA3wJ,OAAA,KAAAwtJ,EAAA12L,KAAA,cACAvE,KAAAq+L,wBAAA,IAAA5wJ,OAAA,KAAAswJ,EAAAx5L,KAAA,cAKA,SAAA+5L,KACA,OAAAt+L,KAAAu+L,QAAA,OA6BA,SAAA5L,GAAAx4I,EAAAqkJ,GACAjI,EAAAp8I,EAAA,eACA,OAAAn6C,KAAA02L,aAAA/D,SAAA3yL,KAAAu+L,QAAAv+L,KAAA43K,UAAA4mB,KAgBA,SAAAC,GAAAp5E,EAAAwsE,GACA,OAAAA,EAAA6M,eAzCAnI,EAAA,uBACAA,EAAA,eAAA+H,IACA/H,EAAA,eANA,WACA,OAAAv2L,KAAAu+L,SAAA,KAOAhI,EAAA,qBACA,SAAA+H,GAAAhhM,MAAA0C,MAAA81L,EAAA91L,KAAA43K,UAAA,KAGA2e,EAAA,uBACA,SAAA+H,GAAAhhM,MAAA0C,MAAA81L,EAAA91L,KAAA43K,UAAA,GACAke,EAAA91L,KAAA2+L,UAAA,KAGApI,EAAA,qBACA,SAAAv2L,KAAAu+L,QAAAzI,EAAA91L,KAAA43K,UAAA,KAGA2e,EAAA,uBACA,SAAAv2L,KAAAu+L,QAAAzI,EAAA91L,KAAA43K,UAAA,GACAke,EAAA91L,KAAA2+L,UAAA,KASAhM,GAAA,QACAA,GAAA,QAIAyC,EAAA,YAGAS,EAAA,WAQAsC,GAAA,IAAAsG,IACAtG,GAAA,IAAAsG,IACAtG,GAAA,IAAAZ,GACAY,GAAA,IAAAZ,GACAY,GAAA,IAAAZ,GACAY,GAAA,KAAAZ,EAAAJ,GACAgB,GAAA,KAAAZ,EAAAJ,GACAgB,GAAA,KAAAZ,EAAAJ,GAEAgB,GAAA,MAAAX,GACAW,GAAA,QAAAV,GACAU,GAAA,MAAAX,GACAW,GAAA,QAAAV,GAEAiB,GAAA,WAAAQ,IACAR,GAAA,oBAAAn7J,EAAAvG,EAAAjtB,GACA,IAAA60L,EAAA1K,EAAA32J,GACAvG,EAAAkiK,IAAA,KAAA0F,EAAA,EAAAA,IAEAlG,GAAA,mBAAAn7J,EAAAvG,EAAAjtB,GACAA,EAAA80L,MAAA90L,EAAA6pL,QAAAkL,KAAAvhK,GACAxzB,EAAAg1L,UAAAxhK,IAEAm7J,GAAA,oBAAAn7J,EAAAvG,EAAAjtB,GACAitB,EAAAkiK,IAAAhF,EAAA32J,GACAy0J,EAAAjoL,GAAAqpL,SAAA,IAEAsF,GAAA,eAAAn7J,EAAAvG,EAAAjtB,GACA,IAAAhO,EAAAwhC,EAAAxgC,OAAA,EACAi6B,EAAAkiK,IAAAhF,EAAA32J,EAAAvhC,OAAA,EAAAD,IACAi7B,EAAAmiK,IAAAjF,EAAA32J,EAAAvhC,OAAAD,IACAi2L,EAAAjoL,GAAAqpL,SAAA,IAEAsF,GAAA,iBAAAn7J,EAAAvG,EAAAjtB,GACA,IAAAi1L,EAAAzhK,EAAAxgC,OAAA,EACAkiM,EAAA1hK,EAAAxgC,OAAA,EACAi6B,EAAAkiK,IAAAhF,EAAA32J,EAAAvhC,OAAA,EAAAgjM,IACAhoK,EAAAmiK,IAAAjF,EAAA32J,EAAAvhC,OAAAgjM,EAAA,IACAhoK,EAAAoiK,IAAAlF,EAAA32J,EAAAvhC,OAAAijM,IACAjN,EAAAjoL,GAAAqpL,SAAA,IAEAsF,GAAA,eAAAn7J,EAAAvG,EAAAjtB,GACA,IAAAhO,EAAAwhC,EAAAxgC,OAAA,EACAi6B,EAAAkiK,IAAAhF,EAAA32J,EAAAvhC,OAAA,EAAAD,IACAi7B,EAAAmiK,IAAAjF,EAAA32J,EAAAvhC,OAAAD,MAEA28L,GAAA,iBAAAn7J,EAAAvG,EAAAjtB,GACA,IAAAi1L,EAAAzhK,EAAAxgC,OAAA,EACAkiM,EAAA1hK,EAAAxgC,OAAA,EACAi6B,EAAAkiK,IAAAhF,EAAA32J,EAAAvhC,OAAA,EAAAgjM,IACAhoK,EAAAmiK,IAAAjF,EAAA32J,EAAAvhC,OAAAgjM,EAAA,IACAhoK,EAAAoiK,IAAAlF,EAAA32J,EAAAvhC,OAAAijM,MA2BA,IAyBAC,GAzBAC,GAAAvF,GAAA,YAEAwF,GAAA,CACAC,SAj2CA,CACAC,QAAA,gBACAC,QAAA,mBACAC,SAAA,eACAC,QAAA,oBACAC,SAAA,sBACAC,SAAA,KA41CA1I,eAp1CA,CACA2I,IAAA,YACAC,GAAA,SACAC,EAAA,aACAC,GAAA,eACAC,IAAA,sBACAC,KAAA,6BA+0CAlJ,YA7zCA,eA8zCAN,QAxzCA,KAyzCAyJ,uBAxzCA,UAyzCAC,aAnzCA,CACAC,OAAA,QACAC,KAAA,SACAzmM,EAAA,gBACA0mM,GAAA,aACAroM,EAAA,WACAsoM,GAAA,aACAxlL,EAAA,UACAylL,GAAA,WACAroM,EAAA,QACAsoM,GAAA,UACAC,EAAA,UACAC,GAAA,YACAliM,EAAA,SACAmiM,GAAA,YAuyCAzG,OAAAK,GACAN,YAAAO,GAEA3wD,KA9gBA,CACA+xD,IAAA,EACAC,IAAA,GA8gBAkB,SAAAK,GACAP,YAAAS,GACAR,cAAAO,GAEAuD,cAnCA,iBAuCAC,GAAA,GACAC,GAAA,GAGA,SAAAC,GAAA5nM,GACA,OAAAA,IAAAo3B,cAAAtnB,QAAA,SAAA9P,EA8BA,SAAA6nM,GAAA7oM,GACA,IAAA8oM,EAAA,KAEA,IAAAJ,GAAA1oM,SAAA,IAAAR,GACAA,KAAAD,QACA,IACAupM,EAAAhC,GAAAiC,OAEgB,eAAA77L,EAAA,IAAAmI,MAAA,wCAAAnI,EAAAqjC,KAAA,mBAAArjC,EAAA,GAChB87L,GAAAF,GACa,MAAA57L,IAEb,OAAAw7L,GAAA1oM,GAMA,SAAAgpM,GAAAhoM,EAAA0Z,GACA,IAAA1O,EAqBA,OApBAhL,KAEAgL,EADAokE,EAAA11D,GACAuuL,GAAAjoM,GAGAkoM,GAAAloM,EAAA0Z,IAKAosL,GAAA96L,EAGA,oBAAAy7C,iBAAAC,MAOAo/I,GAAAiC,MAGA,SAAAG,GAAAlpM,EAAA2R,GACA,UAAAA,EAAA,CACA,IAAA8nL,EAAAoD,EAAAmK,GAEA,GADAr1L,EAAAw3L,KAAAnpM,EACA,MAAA0oM,GAAA1oM,GACA28L,EAAA,uBACA,2OAIAE,EAAA6L,GAAA1oM,GAAAo+I,aACa,SAAAzsI,EAAAy3L,aACb,SAAAV,GAAA/2L,EAAAy3L,cACAvM,EAAA6L,GAAA/2L,EAAAy3L,cAAAhrD,YACiB,CAEjB,UADAq7C,EAAAoP,GAAAl3L,EAAAy3L,eAWA,OAPAT,GAAAh3L,EAAAy3L,gBACAT,GAAAh3L,EAAAy3L,cAAA,IAEAT,GAAAh3L,EAAAy3L,cAAA1kM,KAAA,CACA1E,OACA2R,WAEA,KATAkrL,EAAApD,EAAAr7C,QA2BA,OAdAsqD,GAAA1oM,GAAA,IAAA+8L,EAAAH,EAAAC,EAAAlrL,IAEAg3L,GAAA3oM,IACA2oM,GAAA3oM,GAAAkzB,QAAA,SAAAhtB,GACAgjM,GAAAhjM,EAAAlG,KAAAkG,EAAAyL,UAOAq3L,GAAAhpM,GAGA0oM,GAAA1oM,GAIA,cADA0oM,GAAA1oM,GACA,KAiCA,SAAAipM,GAAAjoM,GACA,IAAAy4L,EAMA,GAJAz4L,KAAAw6L,SAAAx6L,EAAAw6L,QAAAuN,QACA/nM,IAAAw6L,QAAAuN,QAGA/nM,EACA,OAAA8lM,GAGA,IAAAvkL,EAAAvhB,GAAA,CAGA,GADAy4L,EAAAoP,GAAA7nM,GAEA,OAAAy4L,EAEAz4L,EAAA,CAAAA,GAGA,OAxKA,SAAAqoM,GAGA,IAFA,IAAAjlM,EAAAupC,EAAA8rJ,EAAAloK,EAAA9xB,EAAA,EAEAA,EAAA4pM,EAAA1kM,QAAA,CAKA,IAJA4sB,EAAAq3K,GAAAS,EAAA5pM,IAAA8xB,MAAA,KACAntB,EAAAmtB,EAAA5sB,OAEAgpC,GADAA,EAAAi7J,GAAAS,EAAA5pM,EAAA,KACAkuC,EAAApc,MAAA,UACAntB,EAAA,IAEA,GADAq1L,EAAAoP,GAAAt3K,EAAAzR,MAAA,EAAA1b,GAAA+H,KAAA,MAEA,OAAAstL,EAEA,GAAA9rJ,KAAAhpC,QAAAP,GAAA63L,EAAA1qK,EAAAoc,GAAA,IAAAvpC,EAAA,EAEA,MAEAA,IAEA3E,IAEA,OAAAqnM,GAmJAwC,CAAAtoM,GAOA,SAAAuoM,GAAA1pM,GACA,IAAAsqB,EACA/K,EAAAvf,EAAA6gM,GAyBA,OAvBAthL,IAAA,IAAAw6K,EAAA/5L,GAAAsqB,WACAA,EACA/K,EAAAwhL,IAAA,GAAAxhL,EAAAwhL,IAAA,GAAAA,GACAxhL,EAAAyhL,IAAA,GAAAzhL,EAAAyhL,IAAAe,GAAAxiL,EAAAuhL,IAAAvhL,EAAAwhL,KAAAC,GACAzhL,EAAA0hL,IAAA,GAAA1hL,EAAA0hL,IAAA,SAAA1hL,EAAA0hL,MAAA,IAAA1hL,EAAA2hL,KAAA,IAAA3hL,EAAA4hL,KAAA,IAAA5hL,EAAA6hL,KAAAH,GACA1hL,EAAA2hL,IAAA,GAAA3hL,EAAA2hL,IAAA,GAAAA,GACA3hL,EAAA4hL,IAAA,GAAA5hL,EAAA4hL,IAAA,GAAAA,GACA5hL,EAAA6hL,IAAA,GAAA7hL,EAAA6hL,IAAA,IAAAA,IACA,EAEArH,EAAA/5L,GAAA2pM,qBAAAr/K,EAAAw2K,IAAAx2K,EAAA02K,MACA12K,EAAA02K,IAEAjH,EAAA/5L,GAAA4pM,iBAAA,IAAAt/K,IACAA,EAAA+2K,IAEAtH,EAAA/5L,GAAA6pM,mBAAA,IAAAv/K,IACAA,EAAAg3K,IAGAvH,EAAA/5L,GAAAsqB,YAGAtqB,EAIA,SAAAwF,GAAA+Z,EAAAoF,EAAA1kB,GACA,aAAAsf,EACAA,EAEA,MAAAoF,EACAA,EAEA1kB,EAgBA,SAAA6pM,GAAAh4L,GACA,IAAAlS,EAAAkiM,EAAAiI,EAAAC,EAAAC,EAAA3kK,EAAA,GAEA,IAAAxzB,EAAAkpL,GAAA,CA6BA,IAzBA+O,EApBA,SAAAj4L,GAEA,IAAAo4L,EAAA,IAAA31J,KAAAyV,EAAAkH,OACA,OAAAp/C,EAAAq4L,QACA,CAAAD,EAAAzG,iBAAAyG,EAAAE,cAAAF,EAAAG,cAEA,CAAAH,EAAAI,cAAAJ,EAAAK,WAAAL,EAAAM,WAcAC,CAAA34L,GAGAA,EAAA6uL,IAAA,MAAA7uL,EAAA+uL,GAAAG,KAAA,MAAAlvL,EAAA+uL,GAAAE,KA2DA,SAAAjvL,GACA,IAAA8J,EAAA8uL,EAAA74D,EAAAgC,EAAA+vD,EAAAC,EAAAzjJ,EAAAuqJ,EAGA,UADA/uL,EAAA9J,EAAA6uL,IACAiK,IAAA,MAAAhvL,EAAAivL,GAAA,MAAAjvL,EAAAwrK,EACAwc,EAAA,EACAC,EAAA,EAMA6G,EAAAllM,GAAAoW,EAAAgvL,GAAA94L,EAAA+uL,GAAAC,IAAAyD,GAAAuG,KAAA,KAAA94D,MACAH,EAAArsI,GAAAoW,EAAAivL,EAAA,KACAh3D,EAAAruI,GAAAoW,EAAAwrK,EAAA,IACA,GAAAvzC,EAAA,KACA82D,GAAA,OAES,CACT/G,EAAA9xL,EAAA6pL,QAAAoP,MAAAnH,IACAC,EAAA/xL,EAAA6pL,QAAAoP,MAAAlH,IAEA,IAAAmH,EAAAzG,GAAAuG,KAAAlH,EAAAC,GAEA6G,EAAAllM,GAAAoW,EAAAqvL,GAAAn5L,EAAA+uL,GAAAC,IAAAkK,EAAAh5D,MAGAH,EAAArsI,GAAAoW,IAAAovL,EAAAn5D,MAEA,MAAAj2H,EAAA1b,IAEA2zI,EAAAj4H,EAAA1b,GACA,GAAA2zI,EAAA,KACA82D,GAAA,GAEa,MAAA/uL,EAAAvO,GAEbwmI,EAAAj4H,EAAAvO,EAAAu2L,GACAhoL,EAAAvO,EAAA,GAAAuO,EAAAvO,EAAA,KACAs9L,GAAA,IAIA92D,EAAA+vD,EAGA/xD,EAAA,GAAAA,EAAA4yD,GAAAiG,EAAA9G,EAAAC,GACA9J,EAAAjoL,GAAA83L,gBAAA,EACS,MAAAe,EACT5Q,EAAAjoL,GAAA+3L,kBAAA,GAEAzpJ,EAAA6jJ,GAAAyG,EAAA74D,EAAAgC,EAAA+vD,EAAAC,GACA/xL,EAAA+uL,GAAAC,IAAA1gJ,EAAA4xF,KACAlgI,EAAAo5L,WAAA9qJ,EAAAkkJ,WA/GA6G,CAAAr5L,GAIA,MAAAA,EAAAo5L,aACAjB,EAAAzkM,GAAAsM,EAAA+uL,GAAAC,IAAAiJ,EAAAjJ,MAEAhvL,EAAAo5L,WAAA3J,GAAA0I,IAAA,IAAAn4L,EAAAo5L,cACAnR,EAAAjoL,GAAA63L,oBAAA,GAGA7H,EAAAyB,GAAA0G,EAAA,EAAAn4L,EAAAo5L,YACAp5L,EAAA+uL,GAAAE,IAAAe,EAAAsI,cACAt4L,EAAA+uL,GAAAG,IAAAc,EAAAuI,cAQAzqM,EAAA,EAAmBA,EAAA,SAAAkS,EAAA+uL,GAAAjhM,KAA+BA,EAClDkS,EAAA+uL,GAAAjhM,GAAA0lC,EAAA1lC,GAAAmqM,EAAAnqM,GAIA,KAAcA,EAAA,EAAOA,IACrBkS,EAAA+uL,GAAAjhM,GAAA0lC,EAAA1lC,GAAA,MAAAkS,EAAA+uL,GAAAjhM,GAAA,IAAAA,EAAA,IAAAkS,EAAA+uL,GAAAjhM,GAIA,KAAAkS,EAAA+uL,GAAAI,KACA,IAAAnvL,EAAA+uL,GAAAK,KACA,IAAApvL,EAAA+uL,GAAAM,KACA,IAAArvL,EAAA+uL,GAAAO,MACAtvL,EAAAs5L,UAAA,EACAt5L,EAAA+uL,GAAAI,IAAA,GAGAnvL,EAAAkpL,IAAAlpL,EAAAq4L,QAAA5G,GA97BA,SAAA/8L,EAAAxG,EAAAE,EAAA4iB,EAAA2lL,EAAA9mM,EAAA0pM,GAGA,IAAAvJ,EAYA,OAVAt7L,EAAA,KAAAA,GAAA,GAEAs7L,EAAA,IAAAvtJ,KAAA/tC,EAAA,IAAAxG,EAAAE,EAAA4iB,EAAA2lL,EAAA9mM,EAAA0pM,GACAx2K,SAAAitK,EAAAwI,gBACAxI,EAAAwJ,YAAA9kM,IAGAs7L,EAAA,IAAAvtJ,KAAA/tC,EAAAxG,EAAAE,EAAA4iB,EAAA2lL,EAAA9mM,EAAA0pM,GAGAvJ,IA+6BAz8L,MAAA,KAAAigC,GACA0kK,EAAAl4L,EAAAq4L,QAAAr4L,EAAAkpL,GAAAgJ,YAAAlyL,EAAAkpL,GAAAuQ,SAIA,MAAAz5L,EAAA0pL,MACA1pL,EAAAkpL,GAAAwQ,cAAA15L,EAAAkpL,GAAAyQ,gBAAA35L,EAAA0pL,MAGA1pL,EAAAs5L,WACAt5L,EAAA+uL,GAAAI,IAAA,IAIAnvL,EAAA6uL,SAAA,IAAA7uL,EAAA6uL,GAAAzgM,GAAA4R,EAAA6uL,GAAAzgM,IAAA8pM,IACAjQ,EAAAjoL,GAAA8oL,iBAAA,IA+DA,IAAA8Q,GAAA,mJACAC,GAAA,8IAEAC,GAAA,wBAEAC,GAAA,CACA,uCACA,iCACA,kCACA,6BAA6B,GAC7B,2BACA,yBAA0B,GAC1B,4BACA,qBAEA,6BACA,4BAAkC,GAClC,qBAIAC,GAAA,CACA,wCACA,uCACA,8BACA,sBACA,oCACA,mCACA,0BACA,oBACA,eAGAC,GAAA,sBAGA,SAAAC,GAAAl6L,GACA,IAAAlS,EAAAC,EAGAosM,EAAAC,EAAAC,EAAAC,EAFA1xL,EAAA5I,EAAAi5E,GACA33D,EAAAs4K,GAAA3zJ,KAAAr9B,IAAAixL,GAAA5zJ,KAAAr9B,GAGA,GAAA0Y,EAAA,CAGA,IAFA2mK,EAAAjoL,GAAA0oL,KAAA,EAEA56L,EAAA,EAAAC,EAAAgsM,GAAA/mM,OAA4ClF,EAAAC,EAAOD,IACnD,GAAAisM,GAAAjsM,GAAA,GAAAm4C,KAAA3kB,EAAA,KACA84K,EAAAL,GAAAjsM,GAAA,GACAqsM,GAAA,IAAAJ,GAAAjsM,GAAA,GACA,MAGA,SAAAssM,EAEA,YADAp6L,EAAA+oL,UAAA,GAGA,GAAAznK,EAAA,IACA,IAAAxzB,EAAA,EAAAC,EAAAisM,GAAAhnM,OAAgDlF,EAAAC,EAAOD,IACvD,GAAAksM,GAAAlsM,GAAA,GAAAm4C,KAAA3kB,EAAA,KAEA+4K,GAAA/4K,EAAA,SAAA04K,GAAAlsM,GAAA,GACA,MAGA,SAAAusM,EAEA,YADAr6L,EAAA+oL,UAAA,GAIA,IAAAoR,GAAA,MAAAE,EAEA,YADAr6L,EAAA+oL,UAAA,GAGA,GAAAznK,EAAA,IACA,IAAAw4K,GAAA7zJ,KAAA3kB,EAAA,IAIA,YADAthB,EAAA+oL,UAAA,GAFAuR,EAAA,IAMAt6L,EAAAk5E,GAAAkhH,GAAAC,GAAA,KAAAC,GAAA,IACAC,GAAAv6L,QAEAA,EAAA+oL,UAAA,EAKA,IAAAF,GAAA,0LAkBA,SAAA2R,GAAAC,GACA,IAAAv6D,EAAApvI,SAAA2pM,EAAA,IACA,OAAAv6D,GAAA,GACA,IAAAA,EACSA,GAAA,IACT,KAAAA,EAEAA,EAsBA,IAAAw6D,GAAA,CACAC,GAAA,EACAC,IAAA,EACAC,KAAA,IACAC,KAAA,IACAC,KAAA,IACAC,KAAA,IACAC,KAAA,IACAC,KAAA,IACAC,KAAA,IACAC,KAAA,KAiBA,SAAAC,GAAAr7L,GACA,IAzEAy6L,EAAAa,EAAAC,EAAAC,EAAAC,EAAAC,EACA5tL,EAwEAwT,EAAAunK,GAAA5iJ,KAAAjmC,EAAAi5E,GA7CA95E,QAAA,yBAAAA,QAAA,gBAAAA,QAAA,aAAAA,QAAA,cA8CA,GAAAmiB,EAAA,CACA,IAAAq6K,GA3EAlB,EA2EAn5K,EAAA,GA3EAg6K,EA2EAh6K,EAAA,GA3EAi6K,EA2EAj6K,EAAA,GA3EAk6K,EA2EAl6K,EAAA,GA3EAm6K,EA2EAn6K,EAAA,GA3EAo6K,EA2EAp6K,EAAA,GA1EAxT,EAAA,CACA0sL,GAAAC,GACA/J,GAAA//L,QAAA2qM,GACAxqM,SAAAyqM,EAAA,IACAzqM,SAAA0qM,EAAA,IACA1qM,SAAA2qM,EAAA,KAGAC,GACA5tL,EAAA/a,KAAAjC,SAAA4qM,EAAA,KAGA5tL,GA+DA,IA7CA,SAAA8tL,EAAAC,EAAA77L,GACA,GAAA47L,EAAA,CAEA,IAAAE,EAAAvI,GAAA5iM,QAAAirM,GACAG,EAAA,IAAAt5J,KAAAo5J,EAAA,GAAAA,EAAA,GAAAA,EAAA,IAAApC,SACA,GAAAqC,IAAAC,EAGA,OAFA9T,EAAAjoL,GAAA8oL,iBAAA,EACA9oL,EAAA+oL,UAAA,GACA,EAGA,SAkCAiT,CAAA16K,EAAA,GAAAq6K,EAAA37L,GACA,OAGAA,EAAA+uL,GAAA4M,EACA37L,EAAA0pL,KAvBA,SAAAuS,EAAAC,EAAAC,GACA,GAAAF,EACA,OAAAvB,GAAAuB,GACS,GAAAC,EAET,SAEA,IAAAE,EAAAtrM,SAAAqrM,EAAA,IACAjuM,EAAAkuM,EAAA,IAAAprL,GAAAorL,EAAAluM,GAAA,IACA,UAAA8iB,EAAA9iB,EAcAmuM,CAAA/6K,EAAA,GAAAA,EAAA,GAAAA,EAAA,KAEAthB,EAAAkpL,GAAAuI,GAAAl+L,MAAA,KAAAyM,EAAA+uL,IACA/uL,EAAAkpL,GAAAwQ,cAAA15L,EAAAkpL,GAAAyQ,gBAAA35L,EAAA0pL,MAEAzB,EAAAjoL,GAAA6oL,SAAA,OAEA7oL,EAAA+oL,UAAA,EAgDA,SAAAwR,GAAAv6L,GAEA,GAAAA,EAAAk5E,KAAAhhC,EAAAokJ,SAIA,GAAAt8L,EAAAk5E,KAAAhhC,EAAAqkJ,SAAA,CAIAv8L,EAAA+uL,GAAA,GACA9G,EAAAjoL,GAAAysC,OAAA,EAGA,IACA3+C,EAAA+tM,EAAAvuJ,EAAA8C,EAAAosJ,EADA5zL,EAAA,GAAA5I,EAAAi5E,GAEAwjH,EAAA7zL,EAAA5V,OACA0pM,EAAA,EAIA,IAFApvJ,EAAAu/I,EAAA7sL,EAAAk5E,GAAAl5E,EAAA6pL,SAAAvoK,MAAA8qK,IAAA,GAEAt+L,EAAA,EAAmBA,EAAAw/C,EAAAt6C,OAAmBlF,IACtCsiD,EAAA9C,EAAAx/C,IACA+tM,GAAAjzL,EAAA0Y,MAAAgtK,GAAAl+I,EAAApwC,KAAA,WAIAw8L,EAAA5zL,EAAA3W,OAAA,EAAA2W,EAAAjY,QAAAkrM,KACA7oM,OAAA,GACAi1L,EAAAjoL,GAAAooL,YAAAr1L,KAAAypM,GAEA5zL,IAAAuF,MAAAvF,EAAAjY,QAAAkrM,KAAA7oM,QACA0pM,GAAAb,EAAA7oM,QAGAu5L,EAAAn8I,IACAyrJ,EACA5T,EAAAjoL,GAAAysC,OAAA,EAGAw7I,EAAAjoL,GAAAmoL,aAAAp1L,KAAAq9C,GAEA0+I,GAAA1+I,EAAAyrJ,EAAA77L,IAEAA,EAAAopL,UAAAyS,GACA5T,EAAAjoL,GAAAmoL,aAAAp1L,KAAAq9C,GAKA63I,EAAAjoL,GAAAqoL,cAAAoU,EAAAC,EACA9zL,EAAA5V,OAAA,GACAi1L,EAAAjoL,GAAAooL,YAAAr1L,KAAA6V,GAIA5I,EAAA+uL,GAAAI,KAAA,KACA,IAAAlH,EAAAjoL,GAAAqpL,SACArpL,EAAA+uL,GAAAI,IAAA,IACAlH,EAAAjoL,GAAAqpL,aAAAl5L,GAGA83L,EAAAjoL,GAAA2oL,gBAAA3oL,EAAA+uL,GAAA5gL,MAAA,GACA85K,EAAAjoL,GAAA4oL,SAAA5oL,EAAAg1L,UAEAh1L,EAAA+uL,GAAAI,KAOArH,EAPA9nL,EAAA6pL,QAOAhqD,EAPA7/H,EAAA+uL,GAAAI,IAUA,OAHAvG,EAPA5oL,EAAAg1L,WAYAn1D,EAEA,MAAAioD,EAAA6U,aACA7U,EAAA6U,aAAA98D,EAAA+oD,GACS,MAAAd,EAAAiN,OAET6H,EAAA9U,EAAAiN,KAAAnM,KACA/oD,EAAA,KACAA,GAAA,IAEA+8D,GAAA,KAAA/8D,IACAA,EAAA,GAEAA,GAGAA,GA1BAm4D,GAAAh4L,GACA43L,GAAA53L,QA7DAq7L,GAAAr7L,QAJAk6L,GAAAl6L,GAqEA,IAAA8nL,EAAAjoD,EAAA+oD,EACAgU,EA6FA,SAAAC,GAAA78L,GACA,IAAAwzB,EAAAxzB,EAAAi5E,GACA/nD,EAAAlxB,EAAAk5E,GAIA,OAFAl5E,EAAA6pL,QAAA7pL,EAAA6pL,SAAAyN,GAAAt3L,EAAAy0B,IAEA,OAAAjB,QAAArjC,IAAA+gC,GAAA,KAAAsC,EACA81J,EAAA,CAAkChB,WAAA,KAGlC,iBAAA90J,IACAxzB,EAAAi5E,GAAAzlD,EAAAxzB,EAAA6pL,QAAAiT,SAAAtpK,IAGAy2J,EAAAz2J,GACA,IAAAu2J,EAAA6N,GAAApkK,KACSqtE,EAAArtE,GACTxzB,EAAAkpL,GAAA11J,EACS5iB,EAAAsgB,GAtFT,SAAAlxB,GACA,IAAA+8L,EACAC,EAEAC,EACAnvM,EACAovM,EAEA,OAAAl9L,EAAAk5E,GAAAlmF,OAGA,OAFAi1L,EAAAjoL,GAAAwoL,eAAA,OACAxoL,EAAAkpL,GAAA,IAAAzmJ,KAAAs5B,MAIA,IAAAjuE,EAAA,EAAmBA,EAAAkS,EAAAk5E,GAAAlmF,OAAsBlF,IACzCovM,EAAA,EACAH,EAAAvT,EAAA,GAAsCxpL,GACtC,MAAAA,EAAAq4L,UACA0E,EAAA1E,QAAAr4L,EAAAq4L,SAEA0E,EAAA7jH,GAAAl5E,EAAAk5E,GAAAprF,GACAysM,GAAAwC,GAEA9yL,EAAA8yL,KAKAG,GAAAjV,EAAA8U,GAAA1U,cAGA6U,GAAA,GAAAjV,EAAA8U,GAAA5U,aAAAn1L,OAEAi1L,EAAA8U,GAAAI,MAAAD,GAEA,MAAAD,GAAAC,EAAAD,KACAA,EAAAC,EACAF,EAAAD,IAIAnnM,EAAAoK,EAAAg9L,GAAAD,GA8CAK,CAAAp9L,GACSkxB,EACTqpK,GAAAv6L,GAYA,SAAAA,GACA,IAAAwzB,EAAAxzB,EAAAi5E,GACAxa,EAAAjrC,GACAxzB,EAAAkpL,GAAA,IAAAzmJ,KAAAyV,EAAAkH,OACSyhD,EAAArtE,GACTxzB,EAAAkpL,GAAA,IAAAzmJ,KAAAjP,EAAAmhF,WACS,iBAAAnhF,EAxPT,SAAAxzB,GACA,IAAAogB,EAAA65K,GAAAh0J,KAAAjmC,EAAAi5E,IAEA,OAAA74D,GAKA85K,GAAAl6L,IACA,IAAAA,EAAA+oL,kBACA/oL,EAAA+oL,SAKAsS,GAAAr7L,IACA,IAAAA,EAAA+oL,kBACA/oL,EAAA+oL,SAMA7wI,EAAAmlJ,wBAAAr9L,MAnBAA,EAAAkpL,GAAA,IAAAzmJ,MAAAriB,EAAA,IAqPAk9K,CAAAt9L,GACS4Q,EAAA4iB,IACTxzB,EAAA+uL,GAAAp0L,EAAA64B,EAAArlB,MAAA,YAAAjb,GACA,OAAApC,SAAAoC,EAAA,MAEA8kM,GAAAh4L,IACSq5B,EAAA7F,GAtET,SAAAxzB,GACA,IAAAA,EAAAkpL,GAAA,CAIA,IAAAp7L,EAAA29L,EAAAzrL,EAAAi5E,IACAj5E,EAAA+uL,GAAAp0L,EAAA,CAAA7M,EAAAoyI,KAAApyI,EAAAkyI,MAAAlyI,EAAAgyI,KAAAhyI,EAAAkiM,KAAAliM,EAAA+xI,KAAA/xI,EAAA8xI,OAAA9xI,EAAAqzC,OAAArzC,EAAA4xI,aAAA,SAAAxsI,GACA,OAAAA,GAAApC,SAAAoC,EAAA,MAGA8kM,GAAAh4L,IA6DAu9L,CAAAv9L,GACSmR,EAAAqiB,GAETxzB,EAAAkpL,GAAA,IAAAzmJ,KAAAjP,GAEA0kB,EAAAmlJ,wBAAAr9L,GA7BAw9L,CAAAx9L,GAGAiK,EAAAjK,KACAA,EAAAkpL,GAAA,MAGAlpL,IA0BA,SAAA+nL,GAAAv0J,EAAAtC,EAAA42J,EAAA3rB,EAAAshC,GACA,IAnEA18H,EAmEA5yE,EAAA,GAoBA,OAlBA,IAAA25L,IAAA,IAAAA,IACA3rB,EAAA2rB,EACAA,OAAA33L,IAGAkpC,EAAA7F,IA5iFA,SAAAtgC,GACA,GAAA1E,OAAA67E,oBACA,WAAA77E,OAAA67E,oBAAAn3E,GAAAF,OAEA,IAAAi6J,EACA,IAAAA,KAAA/5J,EACA,GAAAA,EAAAvD,eAAAs9J,GACA,SAGA,SAkiFAywC,CAAAlqK,IACA5iB,EAAA4iB,IAAA,IAAAA,EAAAxgC,UACAwgC,OAAArjC,GAIAhC,EAAAs7L,kBAAA,EACAt7L,EAAAkqM,QAAAlqM,EAAAw7L,OAAA8T,EACAtvM,EAAAsmC,GAAAqzJ,EACA35L,EAAA8qF,GAAAzlD,EACArlC,EAAA+qF,GAAAhoD,EACA/iC,EAAAi7L,QAAAjtB,GArFAp7F,EAAA,IAAAgpH,EAAA6N,GAAAiF,GAuFA1uM,MAtFAmrM,WAEAv4H,EAAAjvB,IAAA,OACAivB,EAAAu4H,cAAAnpM,GAGA4wE,EAmFA,SAAAi4H,GAAAxlK,EAAAtC,EAAA42J,EAAA3rB,GACA,OAAA4rB,GAAAv0J,EAAAtC,EAAA42J,EAAA3rB,GAAA,GAxQAjkH,EAAAmlJ,wBAAAxoC,EACA,iVAIA,SAAA70J,GACAA,EAAAkpL,GAAA,IAAAzmJ,KAAAziC,EAAAi5E,IAAAj5E,EAAAq4L,QAAA,cAKAngJ,EAAAokJ,SAAA,aAGApkJ,EAAAqkJ,SAAA,aA6PA,IAAAoB,GAAA9oC,EACA,qGACA,WACA,IAAAr4C,EAAAw8E,GAAAzlM,MAAA,KAAAwQ,WACA,OAAA9N,KAAAgU,WAAAuyG,EAAAvyG,UACAuyG,EAAAvmH,UAAAumH,EAEA8sE,MAKAsU,GAAA/oC,EACA,qGACA,WACA,IAAAr4C,EAAAw8E,GAAAzlM,MAAA,KAAAwQ,WACA,OAAA9N,KAAAgU,WAAAuyG,EAAAvyG,UACAuyG,EAAAvmH,UAAAumH,EAEA8sE,MAUA,SAAA93D,GAAAp6G,EAAAymL,GACA,IAAA98H,EAAAjzE,EAIA,GAHA,IAAA+vM,EAAA7qM,QAAA4d,EAAAitL,EAAA,MACAA,IAAA,KAEAA,EAAA7qM,OACA,OAAAgmM,KAGA,IADAj4H,EAAA88H,EAAA,GACA/vM,EAAA,EAAmBA,EAAA+vM,EAAA7qM,SAAoBlF,EACvC+vM,EAAA/vM,GAAAmc,YAAA4zL,EAAA/vM,GAAAspB,GAAA2pD,KACAA,EAAA88H,EAAA/vM,IAGA,OAAAizE,EAgBA,IAIA+8H,GAAA,+EAgCA,SAAAC,GAAA97L,GACA,IAAA2pL,EAAAH,EAAAxpL,GACA+7L,EAAApS,EAAA1rD,MAAA,EACA+9D,EAAArS,EAAA3rD,SAAA,EACAmwD,EAAAxE,EAAA5rD,OAAA,EACAk+D,EAAAtS,EAAA7rD,MAAA6rD,EAAAuS,SAAA,EACAC,EAAAxS,EAAA9rD,KAAA,EACA00D,EAAA5I,EAAA/rD,MAAA,EACAguC,EAAA+d,EAAAhsD,QAAA,EACAg1D,EAAAhJ,EAAAzqJ,QAAA,EACA+gG,EAAA0pD,EAAAlsD,aAAA,EAEAzpI,KAAA8yL,SA1CA,SAAA76L,GACA,QAAAmB,KAAAnB,EACA,QAAAyC,GAAA1C,KAAA6vM,GAAAzuM,IAAA,MAAAnB,EAAAmB,IAAAgM,MAAAnN,EAAAmB,IACA,SAKA,IADA,IAAAgvM,GAAA,EACAvwM,EAAA,EAAuBA,EAAAgwM,GAAA9qM,SAAqBlF,EAC5C,GAAAI,EAAA4vM,GAAAhwM,IAAA,CACA,GAAAuwM,EACA,SAEAhsM,WAAAnE,EAAA4vM,GAAAhwM,OAAAq8L,EAAAj8L,EAAA4vM,GAAAhwM,OACAuwM,GAAA,GAKA,SAuBAC,CAAA1S,GAGA31L,KAAAsoM,eAAAr8D,EACA,IAAA0yD,EACA,IAAA/mB,EACA,IAAA2mB,EAAA,MAGAv+L,KAAAuoM,OAAAJ,EACA,EAAAF,EAIAjoM,KAAAwoM,SAAArO,EACA,EAAA6N,EACA,GAAAD,EAEA/nM,KAAAkO,MAAA,GAEAlO,KAAA4zL,QAAAyN,KAEArhM,KAAAyoM,UAGA,SAAAC,GAAAzrM,GACA,OAAAA,aAAA6qM,GAGA,SAAAa,GAAAt2G,GACA,OAAAA,EAAA,GACA,EAAA9zF,KAAAka,OAAA,EAAA45E,GAEA9zF,KAAAka,MAAA45E,GAMA,SAAArkE,GAAAmsB,EAAA2lF,GACAy2D,EAAAp8I,EAAA,eACA,IAAAnsB,EAAAhuB,KAAA4oM,YACAtrC,EAAA,IAKA,OAJAtvI,EAAA,IACAA,KACAsvI,EAAA,KAEAA,EAAAw4B,KAAA9nK,EAAA,OAAA8xG,EAAAg2D,IAAA,UAIA9nK,GAAA,SACAA,GAAA,SAIAmqK,GAAA,IAAAH,IACAG,GAAA,KAAAH,IACAU,GAAA,oBAAAn7J,EAAAvG,EAAAjtB,GACAA,EAAAq4L,SAAA,EACAr4L,EAAA0pL,KAAAoV,GAAA7Q,GAAAz6J,KAQA,IAAAurK,GAAA,kBAEA,SAAAD,GAAAlzJ,EAAAhjC,GACA,IAAAuwB,GAAAvwB,GAAA,IAAA0Y,MAAAsqB,GAEA,UAAAzS,EACA,YAGA,IAAAy6F,EAAAz6F,IAAAnmC,OAAA,OACAy1D,GAAAmrE,EAAA,IAAAtyG,MAAAy9K,KAAA,UACAlxB,EAAA,GAAAplH,EAAA,GAAA0hI,EAAA1hI,EAAA,IAEA,WAAAolH,EACA,EACA,MAAAplH,EAAA,GAAAolH,KAIA,SAAAmxB,GAAAxrK,EAAA90B,GACA,IAAAqiE,EAAA55B,EACA,OAAAzoC,EAAAirL,QACA5oH,EAAAriE,EAAAmP,QACAs5B,GAAA8iJ,EAAAz2J,IAAAqtE,EAAArtE,KAAAmhF,UAAAqkF,GAAAxlK,GAAAmhF,WAAA5zC,EAAA4zC,UAEA5zC,EAAAmoH,GAAA+V,QAAAl+H,EAAAmoH,GAAAv0E,UAAAxtE,GACA+Q,EAAA8xI,aAAAjpH,GAAA,GACAA,GAEAi4H,GAAAxlK,GAAA0rK,QAIA,SAAAC,GAAAjxM,GAGA,WAAAsG,KAAAka,MAAAxgB,EAAAg7L,GAAAnjB,oBAAA,IAqJA,SAAAq5B,KACA,QAAAnpM,KAAAgU,WAAAhU,KAAA0zL,QAAA,IAAA1zL,KAAA2zL,QA/IA1xI,EAAA8xI,aAAA,aAmJA,IAAAqV,GAAA,2DAKAC,GAAA,sKAEA,SAAAC,GAAA/rK,EAAAnkC,GACA,IAGAkkK,EACA3zH,EACA4/J,EAiFA7qM,EAAA6nH,EACAz7C,EAvFA9+D,EAAAuxB,EAEAlS,EAAA,KAuDA,OAlDAq9K,GAAAnrK,GACAvxB,EAAA,CACAs3L,GAAA/lK,EAAA+qK,cACAnwM,EAAAolC,EAAAgrK,MACA7H,EAAAnjK,EAAAirK,SAESttL,EAAAqiB,IACTvxB,EAAA,GACA5S,EACA4S,EAAA5S,GAAAmkC,EAEAvxB,EAAAigI,aAAA1uG,IAESlS,EAAA+9K,GAAAp5J,KAAAzS,KACT+/H,EAAA,MAAAjyI,EAAA,QACArf,EAAA,CACAvN,EAAA,EACAtG,EAAA+7L,EAAA7oK,EAAA4tK,KAAA37B,EACAviJ,EAAAm5K,EAAA7oK,EAAA6tK,KAAA57B,EACArlK,EAAAi8L,EAAA7oK,EAAA8tK,KAAA77B,EACA1jK,EAAAs6L,EAAA7oK,EAAA+tK,KAAA97B,EACAgmC,GAAApP,EAAAyU,GAAA,IAAAt9K,EAAAguK,MAAA/7B,KAESjyI,EAAAg+K,GAAAr5J,KAAAzS,KACT+/H,EAAA,MAAAjyI,EAAA,QACArf,EAAA,CACAvN,EAAA+qM,GAAAn+K,EAAA,GAAAiyI,GACAojC,EAAA8I,GAAAn+K,EAAA,GAAAiyI,GACAzpJ,EAAA21L,GAAAn+K,EAAA,GAAAiyI,GACAnlK,EAAAqxM,GAAAn+K,EAAA,GAAAiyI,GACAviJ,EAAAyuL,GAAAn+K,EAAA,GAAAiyI,GACArlK,EAAAuxM,GAAAn+K,EAAA,GAAAiyI,GACA1jK,EAAA4vM,GAAAn+K,EAAA,GAAAiyI,KAES,MAAAtxJ,EACTA,EAAA,GACS,iBAAAA,IAAA,SAAAA,GAAA,OAAAA,KA2CTtN,EA1CAqkM,GAAA/2L,EAAAypE,MA0CA8wC,EA1CAw8E,GAAA/2L,EAAAyyB,IAAA8qK,EA4CA7qM,EAAAsV,WAAAuyG,EAAAvyG,WAIAuyG,EAAAwiF,GAAAxiF,EAAA7nH,GACAA,EAAA+qM,SAAAljF,GACAz7C,EAAA4+H,GAAAhrM,EAAA6nH,KAEAz7C,EAAA4+H,GAAAnjF,EAAA7nH,IACAutI,cAAAnhE,EAAAmhE,aACAnhE,EAAAqvH,QAAArvH,EAAAqvH,QAGArvH,GAZA,CAAoBmhE,aAAA,EAAAkuD,OAAA,IA3CpBnuL,EAAA,IACAs3L,GAAAiG,EAAAt9D,aACAjgI,EAAA00L,EAAA6I,EAAApP,QAGAxwJ,EAAA,IAAAm+J,GAAA97L,GAEA08L,GAAAnrK,IAAAo0J,EAAAp0J,EAAA,aACAoM,EAAAiqJ,QAAAr2J,EAAAq2J,SAGAjqJ,EAMA,SAAA6/J,GAAAG,EAAArsC,GAIA,IAAAxyF,EAAA6+H,GAAAvtM,WAAAutM,EAAAzgM,QAAA,UAEA,OAAA9D,MAAA0lE,GAAA,EAAAA,GAAAwyF,EAGA,SAAAosC,GAAAhrM,EAAA6nH,GACA,IAAAz7C,EAAA,GAUA,OARAA,EAAAqvH,OAAA5zE,EAAAwjB,QAAArrI,EAAAqrI,QACA,IAAAxjB,EAAA0jB,OAAAvrI,EAAAurI,QACAvrI,EAAAkZ,QAAAikC,IAAAivB,EAAAqvH,OAAA,KAAAyP,QAAArjF,MACAz7C,EAAAqvH,OAGArvH,EAAAmhE,cAAA1lB,GAAA7nH,EAAAkZ,QAAAikC,IAAAivB,EAAAqvH,OAAA,KAEArvH,EAsBA,SAAA++H,GAAAtyD,EAAAn/I,GACA,gBAAAuC,EAAAmvM,GACA,IAAAz3J,EAWA,OATA,OAAAy3J,GAAA1kM,OAAA0kM,KACA/U,EAAA38L,EAAA,YAAAA,EAAA,uDAAAA,EAAA,kGAEAi6C,EAAA13C,EAA0BA,EAAAmvM,EAAcA,EAAAz3J,GAKxC03J,GAAA/pM,KADAspM,GADA3uM,EAAA,iBAAAA,OACAmvM,GACAvyD,GACAv3I,MAIA,SAAA+pM,GAAAlT,EAAA7qL,EAAAg+L,EAAAjW,GACA,IAAA9nD,EAAAjgI,EAAAs8L,cACAH,EAAAQ,GAAA38L,EAAAu8L,OACApO,EAAAwO,GAAA38L,EAAAw8L,SAEA3R,EAAA7iL,YAKA+/K,EAAA,MAAAA,KAEAoG,GACAO,GAAA7D,EAAAn+L,GAAAm+L,EAAA,SAAAsD,EAAA6P,GAEA7B,GACArO,GAAAjD,EAAA,OAAAn+L,GAAAm+L,EAAA,QAAAsR,EAAA6B,GAEA/9D,GACA4qD,EAAA5D,GAAA+V,QAAAnS,EAAA5D,GAAAv0E,UAAAutB,EAAA+9D,GAEAjW,GACA9xI,EAAA8xI,aAAA8C,EAAAsR,GAAAhO,IApFAmP,GAAAnoL,GAAA2mL,GAAAruM,UACA6vM,GAAAW,QAvVA,WACA,OAAAX,GAAAxjI,MA6aA,IAAAjqB,GAAAguJ,GAAA,SACApiL,GAAAoiL,IAAA,cA0HA,SAAAK,GAAA1yL,EAAAoF,GAEA,IAGAutL,EAAAC,EAHAC,EAAA,IAAAztL,EAAAqtH,OAAAzyH,EAAAyyH,SAAArtH,EAAAmtH,QAAAvyH,EAAAuyH,SAEAugE,EAAA9yL,EAAAI,QAAAikC,IAAAwuJ,EAAA,UAcA,OAXAztL,EAAA0tL,EAAA,GACAH,EAAA3yL,EAAAI,QAAAikC,IAAAwuJ,EAAA,YAEAD,GAAAxtL,EAAA0tL,MAAAH,KAEAA,EAAA3yL,EAAAI,QAAAikC,IAAAwuJ,EAAA,YAEAD,GAAAxtL,EAAA0tL,IAAAH,EAAAG,MAIAD,EAAAD,IAAA,EA6FA,SAAAvY,GAAAz4L,GACA,IAAAmxM,EAEA,YAAArwM,IAAAd,EACA4G,KAAA4zL,QAAAuN,OAGA,OADAoJ,EAAAlJ,GAAAjoM,MAEA4G,KAAA4zL,QAAA2W,GAEAvqM,MApGAiiD,EAAAuoJ,cAAA,uBACAvoJ,EAAAwoJ,iBAAA,yBAuGA,IAAA10J,GAAA6oH,EACA,kJACA,SAAAxlK,GACA,YAAAc,IAAAd,EACA4G,KAAA02L,aAEA12L,KAAA6xL,OAAAz4L,KAKA,SAAAs9L,KACA,OAAA12L,KAAA4zL,QAGA,IAAA8W,GAAA,IACAC,GAAA,GAAAD,GACAE,GAAA,GAAAD,GACAE,GAAA,QAAAD,GAGA,SAAAE,GAAA3tE,EAAAC,GACA,OAAAD,EAAAC,OAGA,SAAA2tE,GAAAtsM,EAAAxG,EAAAE,GAEA,OAAAsG,EAAA,KAAAA,GAAA,EAEA,IAAA+tC,KAAA/tC,EAAA,IAAAxG,EAAAE,GAAA0yM,GAEA,IAAAr+J,KAAA/tC,EAAAxG,EAAAE,GAAAumH,UAIA,SAAAssF,GAAAvsM,EAAAxG,EAAAE,GAEA,OAAAsG,EAAA,KAAAA,GAAA,EAEA+tC,KAAAivJ,IAAAh9L,EAAA,IAAAxG,EAAAE,GAAA0yM,GAEAr+J,KAAAivJ,IAAAh9L,EAAAxG,EAAAE,GAuKA,SAAA8yM,GAAA9wJ,EAAA9hD,GACAk+L,EAAA,GAAAp8I,IAAAp9C,QAAA,EAAA1E,GA+DA,SAAA6yM,GAAA3tK,EAAAusG,EAAAgC,EAAA+vD,EAAAC,GACA,IAAAqP,EACA,aAAA5tK,EACAi/J,GAAAx8L,KAAA67L,EAAAC,GAAA7xD,MAEAkhE,EAAAzO,GAAAn/J,EAAAs+J,EAAAC,GACAhyD,EAAAqhE,IACArhE,EAAAqhE,GAMA,SAAAxI,EAAA74D,EAAAgC,EAAA+vD,EAAAC,GACA,IAAAsP,EAAAlP,GAAAyG,EAAA74D,EAAAgC,EAAA+vD,EAAAC,GACA/B,EAAAyB,GAAA4P,EAAAnhE,KAAA,EAAAmhE,EAAA7O,WAKA,OAHAv8L,KAAAiqI,KAAA8vD,EAAA2B,kBACA17L,KAAA+pI,MAAAgwD,EAAAsI,eACAriM,KAAA+5L,OAAAuI,cACAtiM,MAXAhI,KAAAgI,KAAAu9B,EAAAusG,EAAAgC,EAAA+vD,EAAAC,IAjFAvF,EAAA,wBACA,OAAAv2L,KAAA2iM,WAAA,MAGApM,EAAA,wBACA,OAAAv2L,KAAAqrM,cAAA,MAOAJ,GAAA,mBACAA,GAAA,oBACAA,GAAA,sBACAA,GAAA,uBAIA7V,EAAA,iBACAA,EAAA,oBAIAS,EAAA,cACAA,EAAA,iBAKAsC,GAAA,IAAAL,IACAK,GAAA,IAAAL,IACAK,GAAA,KAAAZ,EAAAJ,GACAgB,GAAA,KAAAZ,EAAAJ,GACAgB,GAAA,OAAAR,GAAAN,GACAc,GAAA,OAAAR,GAAAN,GACAc,GAAA,QAAAP,GAAAN,GACAa,GAAA,QAAAP,GAAAN,GAEAqB,GAAA,yCAAAp7J,EAAAusG,EAAA//H,EAAAowC,GACA2vF,EAAA3vF,EAAAn+C,OAAA,MAAAk4L,EAAA32J,KAGAo7J,GAAA,qBAAAp7J,EAAAusG,EAAA//H,EAAAowC,GACA2vF,EAAA3vF,GAAA8H,EAAAy3I,kBAAAn8J,KAqDAg5J,EAAA,sBAIAnB,EAAA,eAIAS,EAAA,aAIAsC,GAAA,IAAAjB,GACAwB,GAAA,aAAAn7J,EAAAvG,GACAA,EAAAgiK,IAAA,GAAA9E,EAAA32J,GAAA,KAWAg5J,EAAA,0BAIAnB,EAAA,YAGAS,EAAA,UAIAsC,GAAA,IAAAZ,GACAY,GAAA,KAAAZ,EAAAJ,GACAgB,GAAA,cAAA9yE,EAAAwsE,GAEA,OAAAxsE,EACAwsE,EAAAyZ,yBAAAzZ,EAAA0Z,cACA1Z,EAAA2Z,iCAGA9S,GAAA,WAAAO,IACAP,GAAA,cAAAn7J,EAAAvG,GACAA,EAAAiiK,IAAA/E,EAAA32J,EAAAlS,MAAAksK,GAAA,MAKA,IAAAkU,GAAA7R,GAAA,WAIArD,EAAA,qCAIAnB,EAAA,mBAGAS,EAAA,eAIAsC,GAAA,MAAAT,IACAS,GAAA,OAAAf,GACAsB,GAAA,wBAAAn7J,EAAAvG,EAAAjtB,GACAA,EAAAo5L,WAAAjP,EAAA32J,KAcAg5J,EAAA,yBAIAnB,EAAA,cAIAS,EAAA,aAIAsC,GAAA,IAAAZ,GACAY,GAAA,KAAAZ,EAAAJ,GACAuB,GAAA,WAAAS,IAIA,IAAAuS,GAAA9R,GAAA,cAIArD,EAAA,yBAIAnB,EAAA,cAIAS,EAAA,aAIAsC,GAAA,IAAAZ,GACAY,GAAA,KAAAZ,EAAAJ,GACAuB,GAAA,WAAAU,IAIA,IA+CAj/I,GA/CAwxJ,GAAA/R,GAAA,cAgDA,IA5CArD,EAAA,mBACA,SAAAv2L,KAAAypI,cAAA,OAGA8sD,EAAA,wBACA,SAAAv2L,KAAAypI,cAAA,MAGA8sD,EAAA,6BACAA,EAAA,0BACA,UAAAv2L,KAAAypI,gBAEA8sD,EAAA,2BACA,WAAAv2L,KAAAypI,gBAEA8sD,EAAA,4BACA,WAAAv2L,KAAAypI,gBAEA8sD,EAAA,6BACA,WAAAv2L,KAAAypI,gBAEA8sD,EAAA,8BACA,WAAAv2L,KAAAypI,gBAEA8sD,EAAA,+BACA,WAAAv2L,KAAAypI,gBAMA2rD,EAAA,oBAIAS,EAAA,kBAIAsC,GAAA,IAAAT,GAAAR,GACAiB,GAAA,KAAAT,GAAAP,GACAgB,GAAA,MAAAT,GAAAN,GAGAj9I,GAAA,OAAwBA,GAAAp9C,QAAA,EAAmBo9C,IAAA,IAC3Cg+I,GAAAh+I,GAAA09I,IAGA,SAAA+T,GAAAruK,EAAAvG,GACAA,EAAAqiK,IAAAnF,EAAA,UAAA32J,IAGA,IAAA4c,GAAA,IAAqBA,GAAAp9C,QAAA,EAAmBo9C,IAAA,IACxCu+I,GAAAv+I,GAAAyxJ,IAIA,IAAAC,GAAAjS,GAAA,mBAIArD,EAAA,oBACAA,EAAA,qBAYA,IAAA5rJ,GAAAmpJ,EAAAr6L,UAsFA,SAAAqyM,GAAAn5L,GACA,OAAAA,EArFAg4B,GAAAkR,OACAlR,GAAA00J,SAjuBA,SAAAtkK,EAAA+yG,GAGA,IAAA3kF,EAAApuB,GAAAgoK,KACAgJ,EAAAhD,GAAA5/I,EAAAnpD,MAAAkrI,QAAA,OACAjwG,EAAAgnB,EAAA+pJ,eAAAhsM,KAAA+rM,IAAA,WAEA7jE,EAAA4F,IAAAtsH,EAAAssH,EAAA7yG,IAAA6yG,EAAA7yG,GAAAjjC,KAAAgI,KAAAmpD,GAAA2kF,EAAA7yG,IAEA,OAAAj7B,KAAAi7B,OAAAitG,GAAAloI,KAAA02L,aAAA2I,SAAApkK,EAAAj7B,KAAA+iM,GAAA55I,MAytBAxe,GAAA/yB,MAttBA,WACA,WAAAk8K,EAAA9zL,OAstBA2qC,GAAAuG,KAvpBA,SAAA3T,EAAAg4J,EAAA0W,GACA,IAAAttJ,EACAutJ,EACAhkE,EAEA,IAAAloI,KAAAgU,UACA,OAAA8xD,IAKA,KAFAnnB,EAAAoqJ,GAAAxrK,EAAAv9B,OAEAgU,UACA,OAAA8xD,IAOA,OAJAomI,EAAA,KAAAvtJ,EAAAiqJ,YAAA5oM,KAAA4oM,aAEArT,EAAAD,EAAAC,IAGA,WAAArtD,EAAAgiE,GAAAlqM,KAAA2+C,GAAA,GAA6D,MAC7D,YAAAupF,EAAAgiE,GAAAlqM,KAAA2+C,GAAyD,MACzD,cAAAupF,EAAAgiE,GAAAlqM,KAAA2+C,GAAA,EAA+D,MAC/D,aAAAupF,GAAAloI,KAAA2+C,GAAA,IAAwD,MACxD,aAAAupF,GAAAloI,KAAA2+C,GAAA,IAAwD,MACxD,WAAAupF,GAAAloI,KAAA2+C,GAAA,KAAuD,MACvD,UAAAupF,GAAAloI,KAAA2+C,EAAAutJ,GAAA,MAAmE,MACnE,WAAAhkE,GAAAloI,KAAA2+C,EAAAutJ,GAAA,OAAqE,MACrE,QAAAhkE,EAAAloI,KAAA2+C,EAGA,OAAAstJ,EAAA/jE,EAAA+rD,EAAA/rD,IAynBAv9F,GAAA4hG,MA5ZA,SAAAgpD,GACA,IAAAx6J,EAEA,QAAA7gC,KADAq7L,EAAAD,EAAAC,KACA,gBAAAA,IAAAv1L,KAAAgU,UACA,OAAAhU,KAGA,IAAAmsM,EAAAnsM,KAAA0zL,OAAAsX,GAAAD,GAEA,OAAAxV,GACA,WACAx6J,EAAAoxK,EAAAnsM,KAAAiqI,OAAA,SACA,MACA,cACAlvG,EAAAoxK,EAAAnsM,KAAAiqI,OAAAjqI,KAAA+pI,QAAA/pI,KAAA+pI,QAAA,SACA,MACA,YACAhvG,EAAAoxK,EAAAnsM,KAAAiqI,OAAAjqI,KAAA+pI,QAAA,OACA,MACA,WACAhvG,EAAAoxK,EAAAnsM,KAAAiqI,OAAAjqI,KAAA+pI,QAAA/pI,KAAA+5L,OAAA/5L,KAAA8rI,UAAA,KACA,MACA,cACA/wG,EAAAoxK,EAAAnsM,KAAAiqI,OAAAjqI,KAAA+pI,QAAA/pI,KAAA+5L,QAAA/5L,KAAA+rI,aAAA,QACA,MACA,UACA,WACAhxG,EAAAoxK,EAAAnsM,KAAAiqI,OAAAjqI,KAAA+pI,QAAA/pI,KAAA+5L,OAAA,KACA,MACA,WACAh/J,EAAA/6B,KAAAizL,GAAAv0E,UACA3jF,GAAA6vK,GAAAE,GAAA/vK,GAAA/6B,KAAA0zL,OAAA,EAAA1zL,KAAA4oM,YAAA+B,IAAAC,IAAA,EACA,MACA,aACA7vK,EAAA/6B,KAAAizL,GAAAv0E,UACA3jF,GAAA4vK,GAAAG,GAAA/vK,EAAA4vK,IAAA,EACA,MACA,aACA5vK,EAAA/6B,KAAAizL,GAAAv0E,UACA3jF,GAAA2vK,GAAAI,GAAA/vK,EAAA2vK,IAAA,EAMA,OAFA1qM,KAAAizL,GAAA+V,QAAAjuK,GACAknB,EAAA8xI,aAAA/zL,MAAA,GACAA,MAgXA2qC,GAAA1P,OA/iBA,SAAAmxK,GACAA,IACAA,EAAApsM,KAAAmpM,QAAAlnJ,EAAAwoJ,iBAAAxoJ,EAAAuoJ,eAEA,IAAAtiE,EAAAyuD,EAAA32L,KAAAosM,GACA,OAAApsM,KAAA02L,aAAA2V,WAAAnkE,IA2iBAv9F,GAAA8qC,KAxiBA,SAAA16C,EAAAuxK,GACA,OAAAtsM,KAAAgU,YACAggL,EAAAj5J,MAAA/mB,WACA+uL,GAAAhoK,GAAA/mB,WACAs1L,GAAA,CAAmC7qK,GAAAz+B,KAAAy1E,KAAA16C,IAAqB82J,OAAA7xL,KAAA6xL,UAAAna,UAAA40B,GAExDtsM,KAAA02L,aAAAK,eAmiBApsJ,GAAA4hK,QA/hBA,SAAAD,GACA,OAAAtsM,KAAAy1E,KAAAstH,KAAAuJ,IA+hBA3hK,GAAAlM,GA5hBA,SAAA1D,EAAAuxK,GACA,OAAAtsM,KAAAgU,YACAggL,EAAAj5J,MAAA/mB,WACA+uL,GAAAhoK,GAAA/mB,WACAs1L,GAAA,CAAmC7zH,KAAAz1E,KAAAy+B,GAAA1D,IAAqB82J,OAAA7xL,KAAA6xL,UAAAna,UAAA40B,GAExDtsM,KAAA02L,aAAAK,eAuhBApsJ,GAAA6hK,MAnhBA,SAAAF,GACA,OAAAtsM,KAAAy+B,GAAAskK,KAAAuJ,IAmhBA3hK,GAAAjyC,IAxiGA,SAAA68L,GAEA,OAAA/zK,EAAAxhB,KADAu1L,EAAAD,EAAAC,KAEAv1L,KAAAu1L,KAEAv1L,MAoiGA2qC,GAAA8hK,UAxUA,WACA,OAAAza,EAAAhyL,MAAAuiB,UAwUAooB,GAAAi/J,QA5tBA,SAAArsK,EAAAg4J,GACA,IAAAmX,EAAA1Y,EAAAz2J,KAAAwlK,GAAAxlK,GACA,SAAAv9B,KAAAgU,YAAA04L,EAAA14L,aAIA,iBADAuhL,EAAAD,EAAAC,IAAA,eAEAv1L,KAAA0+G,UAAAguF,EAAAhuF,UAEAguF,EAAAhuF,UAAA1+G,KAAA4X,QAAAszH,QAAAqqD,GAAA72E,YAotBA/zE,GAAA8+J,SAhtBA,SAAAlsK,EAAAg4J,GACA,IAAAmX,EAAA1Y,EAAAz2J,KAAAwlK,GAAAxlK,GACA,SAAAv9B,KAAAgU,YAAA04L,EAAA14L,aAIA,iBADAuhL,EAAAD,EAAAC,IAAA,eAEAv1L,KAAA0+G,UAAAguF,EAAAhuF,UAEA1+G,KAAA4X,QAAA20H,MAAAgpD,GAAA72E,UAAAguF,EAAAhuF,YAwsBA/zE,GAAAgiK,UApsBA,SAAAl3H,EAAAh3C,EAAA82J,EAAAqX,GACA,IAAAC,EAAA7Y,EAAAv+G,KAAAstH,GAAAttH,GACAq3H,EAAA9Y,EAAAv1J,KAAAskK,GAAAtkK,GACA,SAAAz+B,KAAAgU,WAAA64L,EAAA74L,WAAA84L,EAAA94L,cAIA,OADA44L,KAAA,MACA,GAAA5sM,KAAA4pM,QAAAiD,EAAAtX,IAAAv1L,KAAAypM,SAAAoD,EAAAtX,MACA,MAAAqX,EAAA,GAAA5sM,KAAAypM,SAAAqD,EAAAvX,IAAAv1L,KAAA4pM,QAAAkD,EAAAvX,MA6rBA5qJ,GAAAoiK,OA1rBA,SAAAxvK,EAAAg4J,GACA,IACAyX,EADAN,EAAA1Y,EAAAz2J,KAAAwlK,GAAAxlK,GAEA,SAAAv9B,KAAAgU,YAAA04L,EAAA14L,aAIA,iBADAuhL,EAAAD,EAAAC,IAAA,eAEAv1L,KAAA0+G,YAAAguF,EAAAhuF,WAEAsuF,EAAAN,EAAAhuF,UACA1+G,KAAA4X,QAAAszH,QAAAqqD,GAAA72E,WAAAsuF,MAAAhtM,KAAA4X,QAAA20H,MAAAgpD,GAAA72E,aAgrBA/zE,GAAAsiK,cA5qBA,SAAA1vK,EAAAg4J,GACA,OAAAv1L,KAAA+sM,OAAAxvK,EAAAg4J,IAAAv1L,KAAA4pM,QAAArsK,EAAAg4J,IA4qBA5qJ,GAAAuiK,eAzqBA,SAAA3vK,EAAAg4J,GACA,OAAAv1L,KAAA+sM,OAAAxvK,EAAAg4J,IAAAv1L,KAAAypM,SAAAlsK,EAAAg4J,IAyqBA5qJ,GAAA32B,QAvVA,WACA,OAAAA,EAAAhU,OAuVA2qC,GAAAoL,QACApL,GAAAknJ,UACAlnJ,GAAA+rJ,cACA/rJ,GAAAhsC,IAAAgpM,GACAh9J,GAAAnsC,IAAAkpM,GACA/8J,GAAAwiK,aAzVA,WACA,OAAAxtM,EAAA,GAAwBqyL,EAAAhyL,QAyVxB2qC,GAAAngC,IA9iGA,SAAA+qL,EAAAz8L,GACA,oBAAAy8L,EAGA,IADA,IAAA6X,EApTA,SAAAC,GACA,IAAA9X,EAAA,GACA,QAAA+X,KAAAD,EACA9X,EAAAz4L,KAAA,CAAwBkwB,KAAAsgL,EAAAz9K,SAAA+lK,EAAA0X,KAKxB,OAHA/X,EAAAlsK,KAAA,SAAA7R,EAAAoF,GACA,OAAApF,EAAAqY,SAAAjT,EAAAiT,WAEA0lK,EA4SAgY,CADAhY,EAAAC,EAAAD,IAEA19L,EAAA,EAA2BA,EAAAu1M,EAAArwM,OAAwBlF,IACnDmI,KAAAotM,EAAAv1M,GAAAm1B,MAAAuoK,EAAA6X,EAAAv1M,GAAAm1B,YAIA,GAAAxL,EAAAxhB,KADAu1L,EAAAD,EAAAC,KAEA,OAAAv1L,KAAAu1L,GAAAz8L,GAGA,OAAAkH,MAkiGA2qC,GAAAugG,QAleA,SAAAqqD,GACA,IAAAx6J,EAEA,QAAA7gC,KADAq7L,EAAAD,EAAAC,KACA,gBAAAA,IAAAv1L,KAAAgU,UACA,OAAAhU,KAGA,IAAAmsM,EAAAnsM,KAAA0zL,OAAAsX,GAAAD,GAEA,OAAAxV,GACA,WACAx6J,EAAAoxK,EAAAnsM,KAAAiqI,OAAA,KACA,MACA,cACAlvG,EAAAoxK,EAAAnsM,KAAAiqI,OAAAjqI,KAAA+pI,QAAA/pI,KAAA+pI,QAAA,KACA,MACA,YACAhvG,EAAAoxK,EAAAnsM,KAAAiqI,OAAAjqI,KAAA+pI,QAAA,GACA,MACA,WACAhvG,EAAAoxK,EAAAnsM,KAAAiqI,OAAAjqI,KAAA+pI,QAAA/pI,KAAA+5L,OAAA/5L,KAAA8rI,WACA,MACA,cACA/wG,EAAAoxK,EAAAnsM,KAAAiqI,OAAAjqI,KAAA+pI,QAAA/pI,KAAA+5L,QAAA/5L,KAAA+rI,aAAA,IACA,MACA,UACA,WACAhxG,EAAAoxK,EAAAnsM,KAAAiqI,OAAAjqI,KAAA+pI,QAAA/pI,KAAA+5L,QACA,MACA,WACAh/J,EAAA/6B,KAAAizL,GAAAv0E,UACA3jF,GAAA+vK,GAAA/vK,GAAA/6B,KAAA0zL,OAAA,EAAA1zL,KAAA4oM,YAAA+B,IAAAC,IACA,MACA,aACA7vK,EAAA/6B,KAAAizL,GAAAv0E,UACA3jF,GAAA+vK,GAAA/vK,EAAA4vK,IACA,MACA,aACA5vK,EAAA/6B,KAAAizL,GAAAv0E,UACA3jF,GAAA+vK,GAAA/vK,EAAA2vK,IAMA,OAFA1qM,KAAAizL,GAAA+V,QAAAjuK,GACAknB,EAAA8xI,aAAA/zL,MAAA,GACAA,MAsbA2qC,GAAAljB,YACAkjB,GAAApB,QAxXA,WACA,IAAAtxC,EAAA+H,KACA,OAAA/H,EAAAgyI,OAAAhyI,EAAA8xI,QAAA9xI,EAAA8hM,OAAA9hM,EAAA2xI,OAAA3xI,EAAA0xI,SAAA1xI,EAAAizC,SAAAjzC,EAAAwxI,gBAuXA9+F,GAAA2jC,SApXA,WACA,IAAAr2E,EAAA+H,KACA,OACA+nM,MAAA9vM,EAAAgyI,OACAkwD,OAAAliM,EAAA8xI,QACAgwD,KAAA9hM,EAAA8hM,OACAwE,MAAAtmM,EAAAsmM,QACA3mB,QAAA3/K,EAAA2/K,UACA+mB,QAAA1mM,EAAA0mM,UACA1yD,aAAAh0I,EAAAg0I,iBA4WAthG,GAAA6iK,OA9XA,WACA,WAAAhhK,KAAAxsC,KAAA0+G,YA8XA/zE,GAAA88F,YArnBA,SAAAgmE,GACA,IAAAztM,KAAAgU,UACA,YAEA,IAAA+9K,GAAA,IAAA0b,EACAx1M,EAAA85L,EAAA/xL,KAAA4X,QAAAm6K,MAAA/xL,KACA,OAAA/H,EAAAgyI,OAAA,GAAAhyI,EAAAgyI,OAAA,KACA0sD,EAAA1+L,EAAA85L,EAAA,iEAEAvwK,EAAAgrB,KAAA/yC,UAAAguI,aAEAsqD,EACA/xL,KAAAwtM,SAAA/lE,cAEA,IAAAj7F,KAAAxsC,KAAA0+G,UAAA,GAAA1+G,KAAA4oM,YAAA,KAAAnhE,cAAAv+H,QAAA,IAAAytL,EAAA1+L,EAAA,MAGA0+L,EAAA1+L,EAAA85L,EAAA,8DAqmBApnJ,GAAAowB,QA5lBA,WACA,IAAA/6D,KAAAgU,UACA,2BAAAhU,KAAAgjF,GAAA,OAEA,IAAArlC,EAAA,SACA+vJ,EAAA,GACA1tM,KAAAu7D,YACA5d,EAAA,IAAA39C,KAAA4oM,YAAA,gCACA8E,EAAA,KAEA,IAAA5hL,EAAA,IAAA6xB,EAAA,MACAssF,EAAA,GAAAjqI,KAAAiqI,QAAAjqI,KAAAiqI,QAAA,qBAEA53E,EAAAq7I,EAAA,OAEA,OAAA1tM,KAAAi7B,OAAAnP,EAAAm+G,EAHA,wBAGA53E,IA8kBA1nB,GAAAhzB,OA3WA,WAEA,OAAA3X,KAAAgU,UAAAhU,KAAAynI,cAAA,MA0WA98F,GAAA1yB,SA5nBA,WACA,OAAAjY,KAAA4X,QAAAi6K,OAAA,MAAA52J,OAAA,qCA4nBA0P,GAAAgjK,KAvYA,WACA,OAAApvM,KAAAkN,MAAAzL,KAAA0+G,UAAA,MAuYA/zE,GAAA+zE,QA5YA,WACA,OAAA1+G,KAAAizL,GAAAv0E,UAAA,KAAA1+G,KAAA2zL,SAAA,IA4YAhpJ,GAAAijK,aA9VA,WACA,OACArwK,MAAAv9B,KAAAgjF,GACA/nD,OAAAj7B,KAAAijF,GACA4uG,OAAA7xL,KAAA4zL,QACA4T,MAAAxnM,KAAA0zL,OACAxtB,OAAAlmK,KAAAmzL,UAyVAxoJ,GAAAs/F,KAAA0vD,GACAhvJ,GAAA8uJ,WAvmGA,WACA,OAAAA,GAAAz5L,KAAAiqI,SAumGAt/F,GAAAg4J,SApSA,SAAAplK,GACA,OAAA2tK,GAAAlzM,KAAAgI,KACAu9B,EACAv9B,KAAA8pI,OACA9pI,KAAA8rI,UACA9rI,KAAA02L,aAAAsM,MAAAnH,IACA77L,KAAA02L,aAAAsM,MAAAlH,MA+RAnxJ,GAAA0gK,YA5RA,SAAA9tK,GACA,OAAA2tK,GAAAlzM,KAAAgI,KACAu9B,EAAAv9B,KAAAkoM,UAAAloM,KAAA+rI,aAAA,MA2RAphG,GAAAq/F,QAAAr/F,GAAAq9J,SAnOA,SAAAzqK,GACA,aAAAA,EAAAh/B,KAAA6d,MAAApc,KAAA+pI,QAAA,MAAA/pI,KAAA+pI,MAAA,GAAAxsG,EAAA,GAAAv9B,KAAA+pI,QAAA,IAmOAp/F,GAAAo/F,MAAA6wD,GACAjwJ,GAAAqvJ,YAz1FA,WACA,OAAAA,GAAAh6L,KAAAiqI,OAAAjqI,KAAA+pI,UAy1FAp/F,GAAAm/F,KAAAn/F,GAAAs9J,MAznFA,SAAA1qK,GACA,IAAAusG,EAAA9pI,KAAA02L,aAAA5sD,KAAA9pI,MACA,aAAAu9B,EAAAusG,EAAA9pI,KAAA67C,IAAA,GAAAte,EAAAusG,GAAA,MAwnFAn/F,GAAAu9J,QAAAv9J,GAAAkjK,SArnFA,SAAAtwK,GACA,IAAAusG,EAAA0yD,GAAAx8L,KAAA,KAAA8pI,KACA,aAAAvsG,EAAAusG,EAAA9pI,KAAA67C,IAAA,GAAAte,EAAAusG,GAAA,MAonFAn/F,GAAA+xJ,YAzRA,WACA,IAAAoR,EAAA9tM,KAAA02L,aAAAsM,MACA,OAAAtG,GAAA18L,KAAAiqI,OAAA6jE,EAAAjS,IAAAiS,EAAAhS,MAwRAnxJ,GAAAojK,eA9RA,WACA,OAAArR,GAAA18L,KAAAiqI,OAAA,MA8RAt/F,GAAAovJ,KAAA0R,GACA9gK,GAAAk/F,IAAAl/F,GAAAw9J,KA55EA,SAAA5qK,GACA,IAAAv9B,KAAAgU,UACA,aAAAupB,EAAAv9B,KAAA8lE,IAEA,IAAA+jE,EAAA7pI,KAAA0zL,OAAA1zL,KAAAizL,GAAAgJ,YAAAj8L,KAAAizL,GAAAuQ,SACA,aAAAjmK,GACAA,EAjKA,SAAAA,EAAAs0J,GACA,uBAAAt0J,EACAA,EAGAn4B,MAAAm4B,GAKA,iBADAA,EAAAs0J,EAAAuL,cAAA7/J,IAEAA,EAGA,KARA1iC,SAAA0iC,EAAA,IA2JAywK,CAAAzwK,EAAAv9B,KAAA02L,cACA12L,KAAA67C,IAAAte,EAAAssG,EAAA,MAEAA,GAo5EAl/F,GAAAmhG,QAh5EA,SAAAvuG,GACA,IAAAv9B,KAAAgU,UACA,aAAAupB,EAAAv9B,KAAA8lE,IAEA,IAAAgmE,GAAA9rI,KAAA6pI,MAAA,EAAA7pI,KAAA02L,aAAAsM,MAAAnH,KAAA,EACA,aAAAt+J,EAAAuuG,EAAA9rI,KAAA67C,IAAAte,EAAAuuG,EAAA,MA44EAnhG,GAAAohG,WAz4EA,SAAAxuG,GACA,IAAAv9B,KAAAgU,UACA,aAAAupB,EAAAv9B,KAAA8lE,IAOA,SAAAvoC,EAAA,CACA,IAAAuuG,EAzKA,SAAAvuG,EAAAs0J,GACA,uBAAAt0J,EACAs0J,EAAAuL,cAAA7/J,GAAA,KAEAn4B,MAAAm4B,GAAA,KAAAA,EAqKA0wK,CAAA1wK,EAAAv9B,KAAA02L,cACA,OAAA12L,KAAA6pI,IAAA7pI,KAAA6pI,MAAA,EAAAiC,IAAA,GAEA,OAAA9rI,KAAA6pI,OAAA,GA63EAl/F,GAAA4xJ,UApLA,SAAAh/J,GACA,IAAAg/J,EAAAh+L,KAAAka,OAAAzY,KAAA4X,QAAAszH,QAAA,OAAAlrI,KAAA4X,QAAAszH,QAAA,kBACA,aAAA3tG,EAAAg/J,EAAAv8L,KAAA67C,IAAAte,EAAAg/J,EAAA,MAmLA5xJ,GAAAi/F,KAAAj/F,GAAA4zJ,MAAAY,GACAx0J,GAAAg/F,OAAAh/F,GAAAitI,QAAA8zB,GACA/gK,GAAAO,OAAAP,GAAAg0J,QAAAgN,GACAhhK,GAAA8+F,YAAA9+F,GAAAshG,aAAA4/D,GACAlhK,GAAAi+J,UAxkCA,SAAArrK,EAAA2wK,EAAAC,GACA,IACAC,EADApgL,EAAAhuB,KAAA2zL,SAAA,EAEA,IAAA3zL,KAAAgU,UACA,aAAAupB,EAAAv9B,KAAA8lE,IAEA,SAAAvoC,EAAA,CACA,oBAAAA,GAEA,WADAA,EAAAsrK,GAAA7Q,GAAAz6J,IAEA,OAAAv9B,UAEazB,KAAA6B,IAAAm9B,GAAA,KAAA4wK,IACb5wK,GAAA,IAmBA,OAjBAv9B,KAAA0zL,QAAAwa,IACAE,EAAAlF,GAAAlpM,OAEAA,KAAA2zL,QAAAp2J,EACAv9B,KAAA0zL,QAAA,EACA,MAAA0a,GACApuM,KAAA67C,IAAAuyJ,EAAA,KAEApgL,IAAAuP,KACA2wK,GAAAluM,KAAAquM,kBACAtE,GAAA/pM,KAAAspM,GAAA/rK,EAAAvP,EAAA,WACiBhuB,KAAAquM,oBACjBruM,KAAAquM,mBAAA,EACApsJ,EAAA8xI,aAAA/zL,MAAA,GACAA,KAAAquM,kBAAA,OAGAruM,KAEA,OAAAA,KAAA0zL,OAAA1lK,EAAAk7K,GAAAlpM,OAuiCA2qC,GAAAonJ,IArhCA,SAAAmc,GACA,OAAAluM,KAAA4oM,UAAA,EAAAsF,IAqhCAvjK,GAAAs+J,MAlhCA,SAAAiF,GASA,OARAluM,KAAA0zL,SACA1zL,KAAA4oM,UAAA,EAAAsF,GACAluM,KAAA0zL,QAAA,EAEAwa,GACAluM,KAAAynB,SAAAyhL,GAAAlpM,MAAA,MAGAA,MA0gCA2qC,GAAA2jK,UAvgCA,WACA,SAAAtuM,KAAAyzL,KACAzzL,KAAA4oM,UAAA5oM,KAAAyzL,MAAA,WACS,oBAAAzzL,KAAAgjF,GAAA,CACT,IAAAurH,EAAA1F,GAAA9Q,GAAA/3L,KAAAgjF,IACA,MAAAurH,EACAvuM,KAAA4oM,UAAA2F,GAGAvuM,KAAA4oM,UAAA,MAGA,OAAA5oM,MA4/BA2qC,GAAA6jK,qBAz/BA,SAAAjxK,GACA,QAAAv9B,KAAAgU,YAGAupB,IAAAwlK,GAAAxlK,GAAAqrK,YAAA,GAEA5oM,KAAA4oM,YAAArrK,GAAA,QAo/BAoN,GAAA8jK,MAj/BA,WACA,OACAzuM,KAAA4oM,YAAA5oM,KAAA4X,QAAAmyH,MAAA,GAAA6+D,aACA5oM,KAAA4oM,YAAA5oM,KAAA4X,QAAAmyH,MAAA,GAAA6+D,aA++BAj+J,GAAA4wB,QAt9BA,WACA,QAAAv7D,KAAAgU,YAAAhU,KAAA0zL,QAs9BA/oJ,GAAA+jK,YAn9BA,WACA,QAAA1uM,KAAAgU,WAAAhU,KAAA0zL,QAm9BA/oJ,GAAAw+J,SACAx+J,GAAA68J,MAAA2B,GACAx+J,GAAAgkK,SA9EA,WACA,OAAA3uM,KAAA0zL,OAAA,UA8EA/oJ,GAAAikK,SA3EA,WACA,OAAA5uM,KAAA0zL,OAAA,iCA2EA/oJ,GAAAkkK,MAAAjwC,EAAA,kDAAA6sC,IACA9gK,GAAAwvJ,OAAAv7B,EAAA,mDAAAg8B,IACAjwJ,GAAAo9J,MAAAnpC,EAAA,iDAAA+6B,IACAhvJ,GAAA+iK,KAAA9uC,EAAA,2GAjjCA,SAAArhI,EAAA2wK,GACA,aAAA3wK,GACA,iBAAAA,IACAA,MAGAv9B,KAAA4oM,UAAArrK,EAAA2wK,GAEAluM,OAEAA,KAAA4oM,cAwiCAj+J,GAAAmkK,aAAAlwC,EAAA,0GAr/BA,WACA,IAAAp2F,EAAAxoE,KAAA+uM,eACA,OAAA/uM,KAAA+uM,cAGA,IAAA72M,EAAA,GAKA,GAHAq7L,EAAAr7L,EAAA8H,OACA9H,EAAA0uM,GAAA1uM,IAEA4gM,GAAA,CACA,IAAAvyE,EAAAruH,EAAAw7L,OAAA9B,EAAA15L,EAAA4gM,IAAAiK,GAAA7qM,EAAA4gM,IACA94L,KAAA+uM,cAAA/uM,KAAAgU,WACAqgL,EAAAn8L,EAAA4gM,GAAAvyE,EAAAh9E,WAAA,OAEAvpC,KAAA+uM,eAAA,EAGA,OAAA/uM,KAAA+uM,gBAi/BA,IAAAC,GAAA7Z,EAAA17L,UAiCA,SAAAw1M,GAAAh0K,EAAAh6B,EAAAiuM,EAAA/sJ,GACA,IAAA0vI,EAAAwP,KACAtP,EAAAH,IAAApnL,IAAA23C,EAAAlhD,GACA,OAAA4wL,EAAAqd,GAAAnd,EAAA92J,GAGA,SAAAk0K,GAAAl0K,EAAAh6B,EAAAiuM,GAQA,GAPAh0L,EAAA+f,KACAh6B,EAAAg6B,EACAA,OAAA/gC,GAGA+gC,KAAA,GAEA,MAAAh6B,EACA,OAAAguM,GAAAh0K,EAAAh6B,EAAAiuM,EAAA,SAGA,IAAAr3M,EACAwyI,EAAA,GACA,IAAAxyI,EAAA,EAAmBA,EAAA,GAAQA,IAC3BwyI,EAAAxyI,GAAAo3M,GAAAh0K,EAAApjC,EAAAq3M,EAAA,SAEA,OAAA7kE,EAWA,SAAA+kE,GAAAC,EAAAp0K,EAAAh6B,EAAAiuM,GACA,kBAAAG,GACAn0L,EAAA+f,KACAh6B,EAAAg6B,EACAA,OAAA/gC,GAGA+gC,KAAA,KAGAh6B,EADAg6B,EAAAo0K,EAEAA,GAAA,EAEAn0L,EAAA+f,KACAh6B,EAAAg6B,EACAA,OAAA/gC,GAGA+gC,KAAA,IAGA,IAOApjC,EAPAg6L,EAAAwP,KACAjyK,EAAAigL,EAAAxd,EAAAmR,MAAAnH,IAAA,EAEA,SAAA56L,EACA,OAAAguM,GAAAh0K,GAAAh6B,EAAAmuB,GAAA,EAAA8/K,EAAA,OAIA,IAAA7kE,EAAA,GACA,IAAAxyI,EAAA,EAAmBA,EAAA,EAAOA,IAC1BwyI,EAAAxyI,GAAAo3M,GAAAh0K,GAAApjC,EAAAu3B,GAAA,EAAA8/K,EAAA,OAEA,OAAA7kE,EAlGA2kE,GAAA3P,SAzgHA,SAAAjmM,EAAAy9L,EAAA1tI,GACA,IAAA++E,EAAAloI,KAAAsvM,UAAAl2M,IAAA4G,KAAAsvM,UAAA,SACA,OAAA9tL,EAAA0mH,KAAAlwI,KAAA6+L,EAAA1tI,GAAA++E,GAwgHA8mE,GAAA/X,eA5/GA,SAAA79L,GACA,IAAA6hC,EAAAj7B,KAAAuvM,gBAAAn2M,GACAo2M,EAAAxvM,KAAAuvM,gBAAAn2M,EAAAyyB,eAEA,OAAAoP,IAAAu0K,EACAv0K,GAGAj7B,KAAAuvM,gBAAAn2M,GAAAo2M,EAAAtmM,QAAA,4BAAAvO,GACA,OAAAA,EAAAud,MAAA,KAGAlY,KAAAuvM,gBAAAn2M,KAi/GA41M,GAAAjY,YA5+GA,WACA,OAAA/2L,KAAAyvM,cA4+GAT,GAAAvY,QAt+GA,SAAApkG,GACA,OAAAryF,KAAA0vM,SAAAxmM,QAAA,KAAAmpF,IAs+GA28G,GAAAnI,SAAAiF,GACAkD,GAAA3C,WAAAP,GACAkD,GAAA7O,aAp9GA,SAAA9tG,EAAAi6G,EAAA35L,EAAAg9L,GACA,IAAAznE,EAAAloI,KAAA4vM,cAAAj9L,GACA,OAAA6O,EAAA0mH,GACAA,EAAA71C,EAAAi6G,EAAA35L,EAAAg9L,GACAznE,EAAAh/H,QAAA,MAAAmpF,IAi9GA28G,GAAAa,WA98GA,SAAA3+J,EAAAg3F,GACA,IAAAjtG,EAAAj7B,KAAA4vM,cAAA1+J,EAAA,mBACA,OAAA1vB,EAAAyZ,KAAAitG,GAAAjtG,EAAA/xB,QAAA,MAAAg/H,IA68GA8mE,GAAAxkM,IA7lHA,SAAAT,GACA,IAAAiO,EAAAngB,EACA,IAAAA,KAAAkS,EAEAyX,EADAxJ,EAAAjO,EAAAlS,IAEAmI,KAAAnI,GAAAmgB,EAEAhY,KAAA,IAAAnI,GAAAmgB,EAGAhY,KAAAw2I,QAAAzsI,EAIA/J,KAAAwrM,+BAAA,IAAA/9J,QACAztC,KAAAsrM,wBAAAxzL,QAAA9X,KAAAurM,cAAAzzL,QACA,cAA+BA,SA+kH/Bk3L,GAAA7U,OAxhGA,SAAAliM,EAAAgjC,GACA,OAAAhjC,EAIA0iB,EAAA3a,KAAAwoM,SAAAxoM,KAAAwoM,QAAAvwM,EAAA8xI,SACA/pI,KAAAwoM,SAAAxoM,KAAAwoM,QAAAsH,UAAAvV,IAAA/8L,KAAAy9B,GAAA,uBAAAhjC,EAAA8xI,SAJApvH,EAAA3a,KAAAwoM,SAAAxoM,KAAAwoM,QACAxoM,KAAAwoM,QAAA,YAshGAwG,GAAA9U,YA/gGA,SAAAjiM,EAAAgjC,GACA,OAAAhjC,EAIA0iB,EAAA3a,KAAA+vM,cAAA/vM,KAAA+vM,aAAA93M,EAAA8xI,SACA/pI,KAAA+vM,aAAAxV,GAAA/8L,KAAAy9B,GAAA,uBAAAhjC,EAAA8xI,SAJApvH,EAAA3a,KAAA+vM,cAAA/vM,KAAA+vM,aACA/vM,KAAA+vM,aAAA,YA6gGAf,GAAA1U,YA99FA,SAAA0V,EAAA/0K,EAAAirI,GACA,IAAAruK,EAAAg/L,EAAArvB,EAEA,GAAAxnK,KAAAiwM,kBACA,OA7CA,SAAAD,EAAA/0K,EAAAirI,GACA,IAAAruK,EAAAq4M,EAAArZ,EAAAsZ,EAAAH,EAAAI,oBACA,IAAApwM,KAAAqwM,aAKA,IAHArwM,KAAAqwM,aAAA,GACArwM,KAAAswM,iBAAA,GACAtwM,KAAAuwM,kBAAA,GACA14M,EAAA,EAAuBA,EAAA,KAAQA,EAC/Bg/L,EAAAjF,EAAA,KAAA/5L,IACAmI,KAAAuwM,kBAAA14M,GAAAmI,KAAAk6L,YAAArD,EAAA,IAAAuZ,oBACApwM,KAAAswM,iBAAAz4M,GAAAmI,KAAAm6L,OAAAtD,EAAA,IAAAuZ,oBAIA,OAAAlqC,EACA,QAAAjrI,GAEA,KADAi1K,EAAAx1M,GAAA1C,KAAAgI,KAAAuwM,kBAAAJ,IACAD,EAAA,MAGA,KADAA,EAAAx1M,GAAA1C,KAAAgI,KAAAswM,iBAAAH,IACAD,EAAA,KAGA,QAAAj1K,GAEA,KADAi1K,EAAAx1M,GAAA1C,KAAAgI,KAAAuwM,kBAAAJ,IAEAD,GAGA,KADAA,EAAAx1M,GAAA1C,KAAAgI,KAAAswM,iBAAAH,IACAD,EAAA,MAGA,KADAA,EAAAx1M,GAAA1C,KAAAgI,KAAAswM,iBAAAH,IAEAD,GAGA,KADAA,EAAAx1M,GAAA1C,KAAAgI,KAAAuwM,kBAAAJ,IACAD,EAAA,MASAl4M,KAAAgI,KAAAgwM,EAAA/0K,EAAAirI,GAYA,IATAlmK,KAAAqwM,eACArwM,KAAAqwM,aAAA,GACArwM,KAAAswM,iBAAA,GACAtwM,KAAAuwM,kBAAA,IAMA14M,EAAA,EAAmBA,EAAA,GAAQA,IAAA,CAY3B,GAVAg/L,EAAAjF,EAAA,KAAA/5L,IACAquK,IAAAlmK,KAAAswM,iBAAAz4M,KACAmI,KAAAswM,iBAAAz4M,GAAA,IAAA41C,OAAA,IAAAztC,KAAAm6L,OAAAtD,EAAA,IAAA3tL,QAAA,iBACAlJ,KAAAuwM,kBAAA14M,GAAA,IAAA41C,OAAA,IAAAztC,KAAAk6L,YAAArD,EAAA,IAAA3tL,QAAA,kBAEAg9J,GAAAlmK,KAAAqwM,aAAAx4M,KACA2vK,EAAA,IAAAxnK,KAAAm6L,OAAAtD,EAAA,SAAA72L,KAAAk6L,YAAArD,EAAA,IACA72L,KAAAqwM,aAAAx4M,GAAA,IAAA41C,OAAA+5H,EAAAt+J,QAAA,cAGAg9J,GAAA,SAAAjrI,GAAAj7B,KAAAswM,iBAAAz4M,GAAA2F,KAAAwyM,GACA,OAAAn4M,EACa,GAAAquK,GAAA,QAAAjrI,GAAAj7B,KAAAuwM,kBAAA14M,GAAA2F,KAAAwyM,GACb,OAAAn4M,EACa,IAAAquK,GAAAlmK,KAAAqwM,aAAAx4M,GAAA2F,KAAAwyM,GACb,OAAAn4M,IA87FAm3M,GAAA3U,YA33FA,SAAAh1E,GACA,OAAArlH,KAAAiwM,mBACAte,EAAA3xL,KAAA,iBACA+6L,GAAA/iM,KAAAgI,MAEAqlH,EACArlH,KAAAs7L,mBAEAt7L,KAAAo7L,eAGAzJ,EAAA3xL,KAAA,kBACAA,KAAAo7L,aAAAN,IAEA96L,KAAAs7L,oBAAAj2E,EACArlH,KAAAs7L,mBAAAt7L,KAAAo7L,eA62FA4T,GAAA5U,iBAh5FA,SAAA/0E,GACA,OAAArlH,KAAAiwM,mBACAte,EAAA3xL,KAAA,iBACA+6L,GAAA/iM,KAAAgI,MAEAqlH,EACArlH,KAAAu7L,wBAEAv7L,KAAAq7L,oBAGA1J,EAAA3xL,KAAA,uBACAA,KAAAq7L,kBAAAR,IAEA76L,KAAAu7L,yBAAAl2E,EACArlH,KAAAu7L,wBAAAv7L,KAAAq7L,oBAk4FA2T,GAAAllE,KAxsFA,SAAA+sD,GACA,OAAA2F,GAAA3F,EAAA72L,KAAAgjM,MAAAnH,IAAA77L,KAAAgjM,MAAAlH,KAAAhyD,MAwsFAklE,GAAAwB,eA5rFA,WACA,OAAAxwM,KAAAgjM,MAAAlH,KA4rFAkT,GAAAyB,eAjsFA,WACA,OAAAzwM,KAAAgjM,MAAAnH,KAksFAmT,GAAAhS,SAplFA,SAAA/kM,EAAAgjC,GACA,IAAA+hK,EAAAriL,EAAA3a,KAAA0wM,WAAA1wM,KAAA0wM,UACA1wM,KAAA0wM,UAAAz4M,IAAA,IAAAA,GAAA+H,KAAA0wM,UAAAZ,SAAAtyM,KAAAy9B,GAAA,uBACA,WAAAhjC,EAAA2kM,GAAAI,EAAAh9L,KAAAgjM,MAAAnH,KACA,EAAAmB,EAAA/kM,EAAA4xI,OAAAmzD,GAilFAgS,GAAAlS,YAvkFA,SAAA7kM,GACA,WAAAA,EAAA2kM,GAAA58L,KAAA2wM,aAAA3wM,KAAAgjM,MAAAnH,KACA,EAAA77L,KAAA2wM,aAAA14M,EAAA4xI,OAAA7pI,KAAA2wM,cAskFA3B,GAAAjS,cA9kFA,SAAA9kM,GACA,WAAAA,EAAA2kM,GAAA58L,KAAA4wM,eAAA5wM,KAAAgjM,MAAAnH,KACA,EAAA77L,KAAA4wM,eAAA34M,EAAA4xI,OAAA7pI,KAAA4wM,gBA6kFA5B,GAAA5R,cApgFA,SAAAyT,EAAA51K,EAAAirI,GACA,IAAAruK,EAAAg/L,EAAArvB,EAEA,GAAAxnK,KAAA8wM,oBACA,OApEA,SAAAD,EAAA51K,EAAAirI,GACA,IAAAruK,EAAAq4M,EAAArZ,EAAAsZ,EAAAU,EAAAT,oBACA,IAAApwM,KAAA+wM,eAKA,IAJA/wM,KAAA+wM,eAAA,GACA/wM,KAAAgxM,oBAAA,GACAhxM,KAAAixM,kBAAA,GAEAp5M,EAAA,EAAuBA,EAAA,IAAOA,EAC9Bg/L,EAAAjF,EAAA,SAAA/nD,IAAAhyI,GACAmI,KAAAixM,kBAAAp5M,GAAAmI,KAAA88L,YAAAjG,EAAA,IAAAuZ,oBACApwM,KAAAgxM,oBAAAn5M,GAAAmI,KAAA+8L,cAAAlG,EAAA,IAAAuZ,oBACApwM,KAAA+wM,eAAAl5M,GAAAmI,KAAAg9L,SAAAnG,EAAA,IAAAuZ,oBAIA,OAAAlqC,EACA,SAAAjrI,GAEA,KADAi1K,EAAAx1M,GAAA1C,KAAAgI,KAAA+wM,eAAAZ,IACAD,EAAA,KACa,QAAAj1K,GAEb,KADAi1K,EAAAx1M,GAAA1C,KAAAgI,KAAAgxM,oBAAAb,IACAD,EAAA,MAGA,KADAA,EAAAx1M,GAAA1C,KAAAgI,KAAAixM,kBAAAd,IACAD,EAAA,KAGA,SAAAj1K,GAEA,KADAi1K,EAAAx1M,GAAA1C,KAAAgI,KAAA+wM,eAAAZ,IAEAD,GAGA,KADAA,EAAAx1M,GAAA1C,KAAAgI,KAAAgxM,oBAAAb,IAEAD,GAGA,KADAA,EAAAx1M,GAAA1C,KAAAgI,KAAAixM,kBAAAd,IACAD,EAAA,KACa,QAAAj1K,GAEb,KADAi1K,EAAAx1M,GAAA1C,KAAAgI,KAAAgxM,oBAAAb,IAEAD,GAGA,KADAA,EAAAx1M,GAAA1C,KAAAgI,KAAA+wM,eAAAZ,IAEAD,GAGA,KADAA,EAAAx1M,GAAA1C,KAAAgI,KAAAixM,kBAAAd,IACAD,EAAA,MAGA,KADAA,EAAAx1M,GAAA1C,KAAAgI,KAAAixM,kBAAAd,IAEAD,GAGA,KADAA,EAAAx1M,GAAA1C,KAAAgI,KAAA+wM,eAAAZ,IAEAD,GAGA,KADAA,EAAAx1M,GAAA1C,KAAAgI,KAAAgxM,oBAAAb,IACAD,EAAA,MASAl4M,KAAAgI,KAAA6wM,EAAA51K,EAAAirI,GAUA,IAPAlmK,KAAA+wM,iBACA/wM,KAAA+wM,eAAA,GACA/wM,KAAAixM,kBAAA,GACAjxM,KAAAgxM,oBAAA,GACAhxM,KAAAkxM,mBAAA,IAGAr5M,EAAA,EAAmBA,EAAA,EAAOA,IAAA,CAc1B,GAXAg/L,EAAAjF,EAAA,SAAA/nD,IAAAhyI,GACAquK,IAAAlmK,KAAAkxM,mBAAAr5M,KACAmI,KAAAkxM,mBAAAr5M,GAAA,IAAA41C,OAAA,IAAAztC,KAAAg9L,SAAAnG,EAAA,IAAA3tL,QAAA,qBACAlJ,KAAAgxM,oBAAAn5M,GAAA,IAAA41C,OAAA,IAAAztC,KAAA+8L,cAAAlG,EAAA,IAAA3tL,QAAA,qBACAlJ,KAAAixM,kBAAAp5M,GAAA,IAAA41C,OAAA,IAAAztC,KAAA88L,YAAAjG,EAAA,IAAA3tL,QAAA,sBAEAlJ,KAAA+wM,eAAAl5M,KACA2vK,EAAA,IAAAxnK,KAAAg9L,SAAAnG,EAAA,SAAA72L,KAAA+8L,cAAAlG,EAAA,SAAA72L,KAAA88L,YAAAjG,EAAA,IACA72L,KAAA+wM,eAAAl5M,GAAA,IAAA41C,OAAA+5H,EAAAt+J,QAAA,cAGAg9J,GAAA,SAAAjrI,GAAAj7B,KAAAkxM,mBAAAr5M,GAAA2F,KAAAqzM,GACA,OAAAh5M,EACa,GAAAquK,GAAA,QAAAjrI,GAAAj7B,KAAAgxM,oBAAAn5M,GAAA2F,KAAAqzM,GACb,OAAAh5M,EACa,GAAAquK,GAAA,OAAAjrI,GAAAj7B,KAAAixM,kBAAAp5M,GAAA2F,KAAAqzM,GACb,OAAAh5M,EACa,IAAAquK,GAAAlmK,KAAA+wM,eAAAl5M,GAAA2F,KAAAqzM,GACb,OAAAh5M,IAm+EAm3M,GAAA7R,cAr7EA,SAAA93E,GACA,OAAArlH,KAAA8wM,qBACAnf,EAAA3xL,KAAA,mBACA29L,GAAA3lM,KAAAgI,MAEAqlH,EACArlH,KAAAm+L,qBAEAn+L,KAAAg+L,iBAGArM,EAAA3xL,KAAA,oBACAA,KAAAg+L,eAAAR,IAEAx9L,KAAAm+L,sBAAA94E,EACArlH,KAAAm+L,qBAAAn+L,KAAAg+L,iBAu6EAgR,GAAA9R,mBAl6EA,SAAA73E,GACA,OAAArlH,KAAA8wM,qBACAnf,EAAA3xL,KAAA,mBACA29L,GAAA3lM,KAAAgI,MAEAqlH,EACArlH,KAAAo+L,0BAEAp+L,KAAAi+L,sBAGAtM,EAAA3xL,KAAA,yBACAA,KAAAi+L,oBAAAR,IAEAz9L,KAAAo+L,2BAAA/4E,EACArlH,KAAAo+L,0BAAAp+L,KAAAi+L,sBAo5EA+Q,GAAA/R,iBA/4EA,SAAA53E,GACA,OAAArlH,KAAA8wM,qBACAnf,EAAA3xL,KAAA,mBACA29L,GAAA3lM,KAAAgI,MAEAqlH,EACArlH,KAAAq+L,wBAEAr+L,KAAAk+L,oBAGAvM,EAAA3xL,KAAA,uBACAA,KAAAk+L,kBAAAR,IAEA19L,KAAAq+L,yBAAAh5E,EACArlH,KAAAq+L,wBAAAr+L,KAAAk+L,oBAk4EA8Q,GAAAlQ,KAtuEA,SAAAvhK,GAGA,aAAAA,EAAA,IAAA/M,cAAAj1B,OAAA,IAouEAyzM,GAAArc,SAhuEA,SAAA4L,EAAA3mB,EAAAu5B,GACA,OAAA5S,EAAA,GACA4S,EAAA,UAEAA,EAAA,WAwzEA/P,GAAA,MACAlB,uBAAA,uBACAzJ,QAAA,SAAApkG,GACA,IAAAz1E,EAAAy1E,EAAA,GACA61C,EAAA,IAAAgsD,EAAA7hG,EAAA,aACA,IAAAz1E,EAAA,KACA,IAAAA,EAAA,KACA,IAAAA,EAAA,UACA,OAAAy1E,EAAA61C,KAMAjmF,EAAAlM,KAAA6oH,EAAA,wDAAAwiC,IACAn/I,EAAAmvJ,SAAAxyC,EAAA,gEAAAyiC,IAEA,IAAAgQ,GAAA9yM,KAAA6B,IAmBA,SAAAkxM,GAAAtlM,EAAAuxB,EAAAzkC,EAAAy+I,GACA,IAAAhxB,EAAA+iF,GAAA/rK,EAAAzkC,GAMA,OAJAkT,EAAAs8L,eAAA/wD,EAAAhxB,EAAA+hF,cACAt8L,EAAAu8L,OAAAhxD,EAAAhxB,EAAAgiF,MACAv8L,EAAAw8L,SAAAjxD,EAAAhxB,EAAAiiF,QAEAx8L,EAAAy8L,UAaA,SAAA8I,GAAAl/G,GACA,OAAAA,EAAA,EACA9zF,KAAAkN,MAAA4mF,GAEA9zF,KAAA6d,KAAAi2E,GAmDA,SAAAm/G,GAAArJ,GAGA,YAAAA,EAAA,OAGA,SAAAsJ,GAAAtX,GAEA,cAAAA,EAAA,KAkDA,SAAAuX,GAAA9pC,GACA,kBACA,OAAA5nK,KAAA6sI,GAAA+6B,IAIA,IAAA+pC,GAAAD,GAAA,MACAE,GAAAF,GAAA,KACAG,GAAAH,GAAA,KACAI,GAAAJ,GAAA,KACAK,GAAAL,GAAA,KACAM,GAAAN,GAAA,KACAO,GAAAP,GAAA,KACAQ,GAAAR,GAAA,KACAS,GAAAT,GAAA,KAWA,SAAAU,GAAAh6M,GACA,kBACA,OAAA4H,KAAAgU,UAAAhU,KAAAkO,MAAA9V,GAAA0tE,KAIA,IAAAmmE,GAAAmmE,GAAA,gBACAzT,GAAAyT,GAAA,WACAx6B,GAAAw6B,GAAA,WACA7T,GAAA6T,GAAA,SACAjK,GAAAiK,GAAA,QACAjY,GAAAiY,GAAA,UACArK,GAAAqK,GAAA,SAMA35L,GAAAla,KAAAka,MACA45L,GAAA,CACA/R,GAAA,GACA1mM,EAAA,GACA3B,EAAA,GACA8iB,EAAA,GACA5iB,EAAA,GACAuoM,EAAA,IA6EA4R,GAAA/zM,KAAA6B,IAEA,SAAAk9J,GAAAh/J,GACA,OAAAA,EAAA,IAAAA,EAAA,KAAAA,EAGA,SAAAi0M,KAQA,IAAAvyM,KAAAgU,UACA,OAAAhU,KAAA02L,aAAAK,cAGA,IAGAnf,EAAA2mB,EAHAI,EAAA2T,GAAAtyM,KAAAsoM,eAAA,IACAH,EAAAmK,GAAAtyM,KAAAuoM,OACApO,EAAAmY,GAAAtyM,KAAAwoM,SAIA5wB,EAAAqc,EAAA0K,EAAA,IACAJ,EAAAtK,EAAArc,EAAA,IACA+mB,GAAA,GACA/mB,GAAA,GAQA,IAAA46B,EALAve,EAAAkG,EAAA,IAMAuG,EALAvG,GAAA,GAMAsY,EAAAtK,EACAptL,EAAAwjL,EACAtmM,EAAA2/K,EACAh+K,EAAA+kM,IAAAl4J,QAAA,GAAAv9B,QAAA,gBACAk8B,EAAAplC,KAAA4xM,YAEA,IAAAxsK,EAGA,YAGA,IAAAstK,EAAAttK,EAAA,SACAutK,EAAAr1C,GAAAt9J,KAAAwoM,WAAAlrC,GAAAl4H,GAAA,OACAwtK,EAAAt1C,GAAAt9J,KAAAuoM,SAAAjrC,GAAAl4H,GAAA,OACAytK,EAAAv1C,GAAAt9J,KAAAsoM,iBAAAhrC,GAAAl4H,GAAA,OAEA,OAAAstK,EAAA,KACAF,EAAAG,EAAAH,EAAA,SACA9R,EAAAiS,EAAAjS,EAAA,SACA+R,EAAAG,EAAAH,EAAA,SACA13L,GAAA9iB,GAAA2B,EAAA,SACAmhB,EAAA83L,EAAA93L,EAAA,SACA9iB,EAAA46M,EAAA56M,EAAA,SACA2B,EAAAi5M,EAAAj5M,EAAA,QAGA,IAAAk5M,GAAAhL,GAAAruM,UAwGA,OAtGAq5M,GAAA9+L,QA5tDA,WACA,OAAAhU,KAAA8yL,UA4tDAggB,GAAA1yM,IAxVA,WACA,IAAAgE,EAAApE,KAAAkO,MAaA,OAXAlO,KAAAsoM,cAAA+I,GAAArxM,KAAAsoM,eACAtoM,KAAAuoM,MAAA8I,GAAArxM,KAAAuoM,OACAvoM,KAAAwoM,QAAA6I,GAAArxM,KAAAwoM,SAEApkM,EAAA6nI,aAAAolE,GAAAjtM,EAAA6nI,cACA7nI,EAAAu6L,QAAA0S,GAAAjtM,EAAAu6L,SACAv6L,EAAAwzK,QAAAy5B,GAAAjtM,EAAAwzK,SACAxzK,EAAAm6L,MAAA8S,GAAAjtM,EAAAm6L,OACAn6L,EAAA+1L,OAAAkX,GAAAjtM,EAAA+1L,QACA/1L,EAAA2jM,MAAAsJ,GAAAjtM,EAAA2jM,OAEA/nM,MA2UA8yM,GAAAj3J,IA7TA,SAAAte,EAAAzkC,GACA,OAAAw4M,GAAAtxM,KAAAu9B,EAAAzkC,EAAA,IA6TAg6M,GAAArrL,SAzTA,SAAA8V,EAAAzkC,GACA,OAAAw4M,GAAAtxM,KAAAu9B,EAAAzkC,GAAA,IAyTAg6M,GAAAjmE,GApPA,SAAA0oD,GACA,IAAAv1L,KAAAgU,UACA,OAAA8xD,IAEA,IAAAqiI,EACAhO,EACAluD,EAAAjsI,KAAAsoM,cAIA,cAFA/S,EAAAD,EAAAC,KAEA,YAAAA,GAAA,SAAAA,EAGA,OAFA4S,EAAAnoM,KAAAuoM,MAAAt8D,EAAA,MACAkuD,EAAAn6L,KAAAwoM,QAAAgJ,GAAArJ,GACA5S,GACA,mBAAA4E,EACA,qBAAAA,EAAA,EACA,kBAAAA,EAAA,QAKA,OADAgO,EAAAnoM,KAAAuoM,MAAAhqM,KAAAka,MAAAg5L,GAAAzxM,KAAAwoM,UACAjT,GACA,kBAAA4S,EAAA,EAAAl8D,EAAA,OACA,iBAAAk8D,EAAAl8D,EAAA,MACA,qBAAAk8D,EAAAl8D,EAAA,KACA,yBAAAk8D,EAAAl8D,EAAA,IACA,0BAAAk8D,EAAAl8D,EAAA,IAEA,yBAAA1tI,KAAAkN,MAAA,MAAA08L,GAAAl8D,EACA,kBAAAx+H,MAAA,gBAAA8nL,KAwNAud,GAAAnB,kBACAmB,GAAAlB,aACAkB,GAAAjB,aACAiB,GAAAhB,WACAgB,GAAAf,UACAe,GAAAd,WACAc,GAAAb,YACAa,GAAAZ,cACAY,GAAAX,WACAW,GAAAp0F,QA3NA,WACA,OAAA1+G,KAAAgU,UAIAhU,KAAAsoM,cACA,MAAAtoM,KAAAuoM,MACAvoM,KAAAwoM,QAAA,UACA,QAAAtU,EAAAl0L,KAAAwoM,QAAA,IANA1iI,KA0NAgtI,GAAArK,QAzTA,WACA,IAIA9J,EAAA/mB,EAAA2mB,EAAAwJ,EAAAgL,EAJA9mE,EAAAjsI,KAAAsoM,cACAH,EAAAnoM,KAAAuoM,MACApO,EAAAn6L,KAAAwoM,QACApkM,EAAApE,KAAAkO,MAwCA,OAnCA+9H,GAAA,GAAAk8D,GAAA,GAAAhO,GAAA,GACAluD,GAAA,GAAAk8D,GAAA,GAAAhO,GAAA,IACAluD,GAAA,MAAAslE,GAAAE,GAAAtX,GAAAgO,GACAA,EAAA,EACAhO,EAAA,GAKA/1L,EAAA6nI,eAAA,IAEA0yD,EAAA1K,EAAAhoD,EAAA,KACA7nI,EAAAu6L,UAAA,GAEA/mB,EAAAqc,EAAA0K,EAAA,IACAv6L,EAAAwzK,UAAA,GAEA2mB,EAAAtK,EAAArc,EAAA,IACAxzK,EAAAm6L,QAAA,GAEA4J,GAAAlU,EAAAsK,EAAA,IAGAwU,EAAA9e,EAAAud,GAAArJ,IACAhO,GAAA4Y,EACA5K,GAAAoJ,GAAAE,GAAAsB,IAGAhL,EAAA9T,EAAAkG,EAAA,IACAA,GAAA,GAEA/1L,EAAA+jM,OACA/jM,EAAA+1L,SACA/1L,EAAA2jM,QAEA/nM,MA8QA8yM,GAAAl7L,MAjMA,WACA,OAAA0xL,GAAAtpM,OAiMA8yM,GAAAp6M,IA9LA,SAAA68L,GAEA,OADAA,EAAAD,EAAAC,GACAv1L,KAAAgU,UAAAhU,KAAAu1L,EAAA,OAAAzvH,KA6LAgtI,GAAA7mE,gBACA6mE,GAAAnU,WACAmU,GAAAl7B,WACAk7B,GAAAvU,SACAuU,GAAA3K,QACA2K,GAAA7K,MAjLA,WACA,OAAAhU,EAAAj0L,KAAAmoM,OAAA,IAiLA2K,GAAA3Y,UACA2Y,GAAA/K,SACA+K,GAAAp7B,SA3GA,SAAAs7B,GACA,IAAAhzM,KAAAgU,UACA,OAAAhU,KAAA02L,aAAAK,cAGA,IAAAlF,EAAA7xL,KAAA02L,aACAxuD,EA5DA,SAAA+qE,EAAA3G,EAAAza,GACA,IAAA7lL,EAAAs9L,GAAA2J,GAAA7yM,MACAu+L,EAAAlmL,GAAAzM,EAAA6gI,GAAA,MACA+qC,EAAAn/J,GAAAzM,EAAA6gI,GAAA,MACA0xD,EAAA9lL,GAAAzM,EAAA6gI,GAAA,MACAs7D,EAAA1vL,GAAAzM,EAAA6gI,GAAA,MACAstD,EAAA1hL,GAAAzM,EAAA6gI,GAAA,MACAk7D,EAAAtvL,GAAAzM,EAAA6gI,GAAA,MAEAr1H,EAAAmnL,GAAA0T,GAAA/R,IAAA,KAAA3B,IACAA,EAAA0T,GAAAz4M,GAAA,MAAA+kM,IACA/mB,GAAA,UACAA,EAAAy6B,GAAAp6M,GAAA,MAAA2/K,IACA2mB,GAAA,UACAA,EAAA8T,GAAAt3L,GAAA,MAAAwjL,IACA4J,GAAA,UACAA,EAAAkK,GAAAl6M,GAAA,MAAAgwM,IACAhO,GAAA,UACAA,EAAAkY,GAAA3R,GAAA,MAAAvG,IACA4N,GAAA,gBAAAA,GAKA,OAHAvwL,EAAA,GAAA80L,EACA90L,EAAA,IAAAy7L,EAAA,EACAz7L,EAAA,GAAAq6K,EA3BA,SAAAl/K,EAAA0/E,EAAAi6G,EAAAqD,EAAA9d,GACA,OAAAA,EAAAsO,aAAA9tG,GAAA,IAAAi6G,EAAA35L,EAAAg9L,IA2BAryM,MAAA,KAAAka,GAoCA07L,CAAAlzM,MAAAgzM,EAAAnhB,GAMA,OAJAmhB,IACA9qE,EAAA2pD,EAAAge,YAAA7vM,KAAAkoI,IAGA2pD,EAAAwa,WAAAnkE,IAgGA4qE,GAAArrE,YAAA8qE,GACAO,GAAA76L,SAAAs6L,GACAO,GAAAn7L,OAAA46L,GACAO,GAAAjhB,UACAihB,GAAApc,cAEAoc,GAAAK,YAAAv0C,EAAA,sFAAA2zC,IACAO,GAAA/8J,QAMAwgJ,EAAA,gBACAA,EAAA,mBAIA4B,GAAA,IAAAL,IACAK,GAAA,IAlzHA,wBAmzHAO,GAAA,aAAAn7J,EAAAvG,EAAAjtB,GACAA,EAAAkpL,GAAA,IAAAzmJ,KAAA,IAAApwC,WAAAmhC,EAAA,OAEAm7J,GAAA,aAAAn7J,EAAAvG,EAAAjtB,GACAA,EAAAkpL,GAAA,IAAAzmJ,KAAA0nJ,EAAA32J,MAMA0kB,EAAAl/B,QAAA,SAz7IA2uK,EA27IAqR,GAEA9gJ,EAAA9gC,GAAAwpB,GACAsX,EAAAzjD,IAl0DA,WAGA,OAAA+8H,GAAA,WAFA,GAAArjH,MAAAlgB,KAAA8V,UAAA,KAk0DAm0C,EAAAtjD,IA7zDA,WAGA,OAAA48H,GAAA,UAFA,GAAArjH,MAAAlgB,KAAA8V,UAAA,KA6zDAm0C,EAAAkH,IAxzDA,WACA,OAAA3c,KAAA2c,IAAA3c,KAAA2c,OAAA,IAAA3c,MAwzDAyV,EAAA8vI,IAAAH,EACA3vI,EAAA0rJ,KAnjBA,SAAApwK,GACA,OAAAwlK,GAAA,IAAAxlK,IAmjBA0kB,EAAAk4I,OAjcA,SAAAl/J,EAAAh6B,GACA,OAAAkuM,GAAAl0K,EAAAh6B,EAAA,WAicAghD,EAAA2oD,SACA3oD,EAAA4vI,OAAAuP,GACAn/I,EAAAgoJ,QAAA5W,EACApxI,EAAAj2C,SAAAs9L,GACArnJ,EAAA+xI,WACA/xI,EAAA+6I,SA/bA,SAAAqS,EAAAp0K,EAAAh6B,GACA,OAAAmuM,GAAAC,EAAAp0K,EAAAh6B,EAAA,aA+bAghD,EAAAqsJ,UAvjBA,WACA,OAAAvL,GAAAzlM,MAAA,KAAAwQ,WAAAwgM,aAujBArsJ,EAAAy0I,WAAA2K,GACAp/I,EAAAymJ,cACAzmJ,EAAAi4I,YAvcA,SAAAj/J,EAAAh6B,GACA,OAAAkuM,GAAAl0K,EAAAh6B,EAAA,gBAucAghD,EAAA66I,YA5bA,SAAAuS,EAAAp0K,EAAAh6B,GACA,OAAAmuM,GAAAC,EAAAp0K,EAAAh6B,EAAA,gBA4bAghD,EAAAq/I,gBACAr/I,EAAAmxJ,aA9kFA,SAAAh7M,EAAA2R,GACA,SAAAA,EAAA,CACA,IAAA8nL,EAAAwhB,EAAApe,EAAAmK,GAGA,OADAiU,EAAApS,GAAA7oM,MAEA68L,EAAAoe,EAAA78D,SAEAzsI,EAAAirL,EAAAC,EAAAlrL,IACA8nL,EAAA,IAAAsD,EAAAprL,IACAy3L,aAAAV,GAAA1oM,GACA0oM,GAAA1oM,GAAAy5L,EAGAuP,GAAAhpM,QAGA,MAAA0oM,GAAA1oM,KACA,MAAA0oM,GAAA1oM,GAAAopM,aACAV,GAAA1oM,GAAA0oM,GAAA1oM,GAAAopM,aACiB,MAAAV,GAAA1oM,WACjB0oM,GAAA1oM,IAIA,OAAA0oM,GAAA1oM,IAsjFA6pD,EAAA6+I,QA3hFA,WACA,OAAAt0L,EAAAs0L,KA2hFA7+I,EAAA86I,cApcA,SAAAsS,EAAAp0K,EAAAh6B,GACA,OAAAmuM,GAAAC,EAAAp0K,EAAAh6B,EAAA,kBAocAghD,EAAAqzI,iBACArzI,EAAAqxJ,qBA/LA,SAAAC,GACA,YAAAr5M,IAAAq5M,EACA96L,GAEA,uBACAA,GAAA86L,GACA,IA0LAtxJ,EAAAuxJ,sBApLA,SAAAC,EAAA1zE,GACA,YAAA7lI,IAAAm4M,GAAAoB,UAGAv5M,IAAA6lI,EACAsyE,GAAAoB,IAEApB,GAAAoB,GAAA1zE,EACA,MAAA0zE,IACApB,GAAA/R,GAAAvgE,EAAA,IAEA,KA0KA99E,EAAA+pJ,eA73CA,SAAA0H,EAAAvqJ,GACA,IAAAjY,EAAAwiK,EAAAxiK,KAAAiY,EAAA,WACA,OAAAjY,GAAA,aACAA,GAAA,aACAA,EAAA,YACAA,EAAA,YACAA,EAAA,YACAA,EAAA,yBAu3CA+Q,EAAAxoD,UAAAkxC,GAGAsX,EAAA0xJ,UAAA,CACAC,eAAA,mBACAC,uBAAA,sBACAC,kBAAA,0BACA7a,KAAA,aACA8a,KAAA,QACAC,aAAA,WACAC,QAAA,eACA3a,KAAA,aACAN,MAAA,WAGA/2I,EAp/IgEhoD,gECDhE,IAAAwD,EAAehG,EAAQ,QACvBiG,EAAcjG,EAAQ,QACtB0L,EAAc1L,EAAQ,QAEtBgG,EAAAyB,KAAA,UACAsD,SAAA,CACAqP,SAAA,EACA/M,OAAA,KACA9L,KAAA,UACAqJ,SAAA,UACAiO,WAAA,EACAjR,gBAAA,kBACA60M,eAAA,OACAC,aAAA,EACAC,kBAAA,EACAC,eAAA,OACAC,WAAA,OACAC,YAAA,EACAC,cAAA,OACAC,UAAA,OACAC,gBAAA,OACAC,cAAA,EACAC,gBAAA,EACAC,gBAAA,OACAC,YAAA,OACAC,SAAA,EACAC,SAAA,EACAC,aAAA,EACAC,UAAA,EACAC,aAAA,EACAC,mBAAA,OACAC,eAAA,EACA71M,YAAA,gBACAE,YAAA,EACA+C,UAAA,CAEA6yM,YAAAnyM,EAAA4C,KACArD,MAAA,SAAA6yM,EAAAnxM,GAEA,IAAA1B,EAAA,GACA4B,EAAAF,EAAAE,OACAkxM,EAAAlxM,IAAAvH,OAAA,EAEA,GAAAw4M,EAAAx4M,OAAA,GACA,IAAA6F,EAAA2yM,EAAA,GAEA3yM,EAAAC,OACAH,EAAAE,EAAAC,OACM2yM,EAAA,GAAA5yM,EAAA3B,MAAAu0M,IACN9yM,EAAA4B,EAAA1B,EAAA3B,QAIA,OAAAyB,GAEA+yM,WAAAtyM,EAAA4C,KAGA2vM,WAAAvyM,EAAA4C,KAGA4vM,YAAAxyM,EAAA4C,KACApD,MAAA,SAAAm4J,EAAA12J,GACA,IAAAzB,EAAAyB,EAAAC,SAAAy2J,EAAAhyJ,cAAAnG,OAAA,GAMA,OAJAA,IACAA,GAAA,MAEAA,GAAAm4J,EAAAh4J,QAGA8yM,WAAA,SAAA96C,EAAA52J,GACA,IAEA+lD,EAFA/lD,EAAAU,eAAAk2J,EAAAhyJ,cACA1E,KAAA02J,EAAA75J,OACApD,MACA,OACA2B,YAAAyqD,EAAAzqD,YACAH,gBAAA4qD,EAAA5qD,kBAGAw2M,eAAA,WACA,OAAA71M,KAAAgO,SAAAwmM,eAEAsB,WAAA3yM,EAAA4C,KAGAgwM,UAAA5yM,EAAA4C,KAGAiwM,aAAA7yM,EAAA4C,KACAkwM,OAAA9yM,EAAA4C,KACAmwM,YAAA/yM,EAAA4C,SAKA,IAAAowM,EAAA,CAOAC,QAAA,SAAAj3M,GACA,IAAAA,EAAApC,OACA,SAGA,IAAAlF,EAAAoD,EACAqD,EAAA,EACAG,EAAA,EACAmI,EAAA,EAEA,IAAA/O,EAAA,EAAAoD,EAAAkE,EAAApC,OAAoClF,EAAAoD,IAASpD,EAAA,CAC7C,IAAAiwB,EAAA3oB,EAAAtH,GACA,GAAAiwB,KAAAoiD,WAAA,CACA,IAAAnuE,EAAA+rB,EAAA9lB,kBACA1D,GAAAvC,EAAAuC,EACAG,GAAA1C,EAAA0C,IACAmI,GAIA,OACAtI,EAAAC,KAAAka,MAAAna,EAAAsI,GACAnI,EAAAF,KAAAka,MAAAha,EAAAmI,KAWAu4K,QAAA,SAAAhgL,EAAAk3M,GACA,IAGAx+M,EAAAoD,EAAAq7M,EAHAh4M,EAAA+3M,EAAA/3M,EACAG,EAAA43M,EAAA53M,EACA+/K,EAAA5iK,OAAAC,kBAGA,IAAAhkB,EAAA,EAAAoD,EAAAkE,EAAApC,OAAoClF,EAAAoD,IAASpD,EAAA,CAC7C,IAAAiwB,EAAA3oB,EAAAtH,GACA,GAAAiwB,KAAAoiD,WAAA,CACA,IAAAv5C,EAAA7I,EAAAhmB,iBACA3J,EAAAgL,EAAA2+K,sBAAAu0B,EAAA1lL,GAEAx4B,EAAAqmL,IACAA,EAAArmL,EACAm+M,EAAAxuL,IAKA,GAAAwuL,EAAA,CACA,IAAAC,EAAAD,EAAAt0M,kBACA1D,EAAAi4M,EAAAj4M,EACAG,EAAA83M,EAAA93M,EAGA,OACAH,IACAG,OAQA,SAAA+3M,EAAAC,EAAArlJ,GACA,IAAAj4C,EAAAhW,EAAAgW,MAAAs9L,GACA,OAAAt9L,EAAA/F,MAAAg+C,EAAAj4C,EAAA/F,SAAAiC,aAIA,SAAAqhM,EAAAh4M,EAAAi4M,GAUA,OATAA,IACAxzM,EAAAwX,QAAAg8L,GAEAh+L,MAAAlf,UAAAqD,KAAAQ,MAAAoB,EAAAi4M,GAEAj4M,EAAA5B,KAAA65M,IAIAj4M,EASA,SAAAk4M,EAAAhoL,GACA,wBAAAA,gBAAA2X,SAAA3X,EAAAl0B,QAAA,SACAk0B,EAAAjF,MAAA,MAEAiF,EA2BA,SAAAioL,EAAAC,GACA,IAAA99L,EAAAvb,EAAA6B,OACAkJ,EAAArF,EAAAqF,eAEA,OAEAwsM,SAAA8B,EAAA9B,SACAD,SAAA+B,EAAA/B,SACAgC,OAAAD,EAAAC,OACAC,OAAAF,EAAAE,OAGAxC,cAAAsC,EAAAtC,cACAyC,gBAAAzuM,EAAAsuM,EAAAI,eAAAl+L,EAAAkB,mBACAi9L,eAAA3uM,EAAAsuM,EAAAM,cAAAp+L,EAAAgB,kBACAq9L,WAAAP,EAAArC,UACA6C,aAAA9uM,EAAAsuM,EAAAQ,aAAAt+L,EAAAc,iBACAy6L,YAAAuC,EAAAvC,YAGAF,eAAAyC,EAAAzC,eACAkD,iBAAA/uM,EAAAsuM,EAAAU,gBAAAx+L,EAAAkB,mBACAu9L,gBAAAjvM,EAAAsuM,EAAA5C,eAAAl7L,EAAAgB,kBACA09L,cAAAlvM,EAAAsuM,EAAAY,cAAA1+L,EAAAc,iBACA69L,YAAAb,EAAAxC,WACAH,aAAA2C,EAAA3C,aACAC,kBAAA0C,EAAA1C,kBAGAS,gBAAAiC,EAAAjC,gBACA+C,kBAAApvM,EAAAsuM,EAAAe,iBAAA7+L,EAAAkB,mBACA49L,iBAAAtvM,EAAAsuM,EAAApC,gBAAA17L,EAAAgB,kBACA+9L,eAAAvvM,EAAAsuM,EAAAiB,eAAA/+L,EAAAc,iBACAk+L,aAAAlB,EAAAhC,YACAH,cAAAmC,EAAAnC,cACAC,gBAAAkC,EAAAlC,gBAGAM,UAAA4B,EAAA5B,UACAC,aAAA2B,EAAA3B,aACA91M,gBAAAy3M,EAAAz3M,gBACA+xD,QAAA,EACA6mJ,sBAAAnB,EAAA1B,mBACAC,cAAAyB,EAAAzB,cACA71M,YAAAs3M,EAAAt3M,YACAE,YAAAo3M,EAAAp3M,aA0MA,SAAAw4M,EAAAppM,GACA,OAAA4nM,EAAA,GAAAE,EAAA9nM,KAGAlX,EAAAD,QAAA+F,EAAAiC,OAAA,CACA8K,WAAA,WACAzK,KAAAsI,OAAAuuM,EAAA72M,KAAAgO,UACAhO,KAAAm4M,YAAA,IAKA3xD,SAAA,WACA,IAEA/jJ,EAFAzC,KACAgO,SACAvL,UAEA6yM,EAAA7yM,EAAA6yM,YAAAh4M,MAJA0C,KAIA8N,WACApL,EAAAD,EAAAC,MAAApF,MALA0C,KAKA8N,WACA2nM,EAAAhzM,EAAAgzM,WAAAn4M,MANA0C,KAMA8N,WAEAm6H,EAAA,GAKA,OAJAA,EAAAyuE,EAAAzuE,EAAA2uE,EAAAtB,IACArtE,EAAAyuE,EAAAzuE,EAAA2uE,EAAAl0M,IACAulI,EAAAyuE,EAAAzuE,EAAA2uE,EAAAnB,KAMA2C,cAAA,WACA,OAAAF,EAAAl4M,KAAAgO,SAAAvL,UAAAizM,WAAAp4M,MAAA0C,KAAA8N,aAIAuqM,QAAA,SAAA9C,EAAAnxM,GACA,IAAA8B,EAAAlG,KACAyC,EAAAyD,EAAA8H,SAAAvL,UACA61M,EAAA,GAeA,OAbAn1M,EAAA4D,KAAAwuM,EAAA,SAAAz6C,GACA,IAAAy9C,EAAA,CACAlrJ,OAAA,GACA46E,MAAA,GACA36E,MAAA,IAEAopJ,EAAA6B,EAAAlrJ,OAAAupJ,EAAAn0M,EAAAkzM,YAAA39M,KAAAkO,EAAA40J,EAAA12J,KACAsyM,EAAA6B,EAAAtwE,MAAAxlI,EAAAE,MAAA3K,KAAAkO,EAAA40J,EAAA12J,IACAsyM,EAAA6B,EAAAjrJ,MAAAspJ,EAAAn0M,EAAAqzM,WAAA99M,KAAAkO,EAAA40J,EAAA12J,KAEAk0M,EAAAx7M,KAAAy7M,KAGAD,GAIAE,aAAA,WACA,OAAAN,EAAAl4M,KAAAgO,SAAAvL,UAAAszM,UAAAz4M,MAAA0C,KAAA8N,aAKA2qM,UAAA,WACA,IACAh2M,EADAzC,KACAgO,SAAAvL,UAEAuzM,EAAAvzM,EAAAuzM,aAAA14M,MAHA0C,KAGA8N,WACAmoM,EAAAxzM,EAAAwzM,OAAA34M,MAJA0C,KAIA8N,WACAooM,EAAAzzM,EAAAyzM,YAAA54M,MALA0C,KAKA8N,WAEAm6H,EAAA,GAKA,OAJAA,EAAAyuE,EAAAzuE,EAAA2uE,EAAAZ,IACA/tE,EAAAyuE,EAAAzuE,EAAA2uE,EAAAX,IACAhuE,EAAAyuE,EAAAzuE,EAAA2uE,EAAAV,KAKAzwM,OAAA,SAAAqM,GACA,IA8BAja,EAAAoD,EAzXA0N,EACA88D,EACAD,EACAvkE,EACA6H,EAuVA5C,EAAAlG,KACAkH,EAAAhB,EAAA8H,SAKA0qM,EAAAxyM,EAAAoC,OACAG,EAAAvC,EAAAoC,OAAAuuM,EAAA3vM,GACAmL,EAAAnM,EAAAyyM,QAEAv0M,EAAA8B,EAAAgI,MAGA0qM,EAAA,CACA7B,OAAA2B,EAAA3B,OACAC,OAAA0B,EAAA1B,QAEA6B,EAAA,CACAv6M,EAAAo6M,EAAAp6M,EACAG,EAAAi6M,EAAAj6M,GAEAq6M,EAAA,CACAh7M,MAAA46M,EAAA56M,MACAe,OAAA65M,EAAA75M,QAEAmD,EAAA,CACA1D,EAAAo6M,EAAAK,OACAt6M,EAAAi6M,EAAAM,QAKA,GAAA3mM,EAAAtV,OAAA,CACA0L,EAAA2oD,QAAA,EAEA,IAAA6nJ,EAAA,GACAC,EAAA,GACAl3M,EAAAm0M,EAAAjvM,EAAA7E,UAAArK,KAAAkO,EAAAmM,EAAAnM,EAAAizM,gBAEA,IAAA5D,EAAA,GACA,IAAA19M,EAAA,EAAAoD,EAAAoX,EAAAtV,OAAmClF,EAAAoD,IAASpD,EAC5C09M,EAAAz4M,MApYA6L,EAoYA0J,EAAAxa,GAnYA4tE,SACAD,SACAvkE,SACA6H,SAHA28D,EAAA98D,EAAAq9D,QACAR,EAAA78D,EAAAs9D,SAAAt9D,EAAAN,OACApH,EAAA0H,EAAAP,OACAU,EAAAH,EAAAR,cAEA,CACAtF,OAAA4iE,IAAAnpD,iBAAArb,EAAA6H,GAAA,GACAhG,OAAA0iE,IAAAlpD,iBAAArb,EAAA6H,GAAA,GACA7H,QACA6H,eACAxK,EAAAqK,EAAAL,OAAAhK,EACAG,EAAAkK,EAAAL,OAAA7J,KA4XAyI,EAAAqiB,SACAgsL,IAAAhsL,OAAA,SAAA/R,GACA,OAAAtQ,EAAAqiB,OAAA/R,EAAApT,MAKA8C,EAAAkyM,WACA7D,IAAAlsL,KAAA,SAAA7R,EAAAoF,GACA,OAAA1V,EAAAkyM,SAAA5hM,EAAAoF,EAAAxY,MAKAjB,EAAA4D,KAAAwuM,EAAA,SAAAz6C,GACAm+C,EAAAn8M,KAAAoK,EAAAzE,UAAAmzM,WAAA59M,KAAAkO,EAAA40J,EAAA50J,EAAAjG,SACAi5M,EAAAp8M,KAAAoK,EAAAzE,UAAAozM,eAAA79M,KAAAkO,EAAA40J,EAAA50J,EAAAjG,WAKAwI,EAAA/F,MAAAwD,EAAAsgJ,SAAA+uD,EAAAnxM,GACAqE,EAAAitM,WAAAxvM,EAAAkyM,cAAA7C,EAAAnxM,GACAqE,EAAA4Z,KAAAnc,EAAAmyM,QAAA9C,EAAAnxM,GACAqE,EAAAstM,UAAA7vM,EAAAsyM,aAAAjD,EAAAnxM,GACAqE,EAAAwtM,OAAA/vM,EAAAuyM,UAAAlD,EAAAnxM,GAGAqE,EAAAnK,EAAAC,KAAAka,MAAAzW,EAAA1D,GACAmK,EAAAhK,EAAAF,KAAAka,MAAAzW,EAAAvD,GACAgK,EAAAwsM,aAAA/tM,EAAA+tM,aACAxsM,EAAAwwM,cACAxwM,EAAAywM,kBAGAzwM,EAAA4wM,WAAA9D,EAGAuD,EAtWA,SAAAnrM,EAAAlF,GACA,IAAA1I,EAAA4N,EAAA1N,OAAAF,IAEAlB,EAAA,EAAA4J,EAAAssM,SACAj3M,EAAA,EAGAukB,EAAA5Z,EAAA4Z,KACAi3L,EAAAj3L,EAAA5V,OAAA,SAAA7F,EAAA2xM,GACA,OAAA3xM,EAAA2xM,EAAAlrJ,OAAAtwD,OAAAw7M,EAAAtwE,MAAAlrI,OAAAw7M,EAAAjrJ,MAAAvwD,QACE,GACFu8M,GAAA7wM,EAAAitM,WAAA34M,OAAA0L,EAAAstM,UAAAh5M,OAEA,IAAAw8M,EAAA9wM,EAAA/F,MAAA3F,OACAy8M,EAAA/wM,EAAAwtM,OAAAl5M,OACA26M,EAAAjvM,EAAAivM,cACAJ,EAAA7uM,EAAA6uM,aACAS,EAAAtvM,EAAAsvM,eAEAl5M,GAAA06M,EAAA7B,EACA74M,GAAA06M,KAAA,GAAA9wM,EAAA0rM,aAAA,EACAt1M,GAAA06M,EAAA9wM,EAAA2rM,kBAAA,EACAv1M,GAAAy6M,EAAAhC,EACAz4M,GAAAy6M,KAAA,GAAA7wM,EAAA8rM,YAAA,EACA11M,GAAA26M,EAAA/wM,EAAAmsM,gBAAA,EACA/1M,GAAA26M,EAAA,EACA36M,GAAA26M,KAAA,GAAA/wM,EAAAksM,cAAA,EAGA,IAAA8E,EAAA,EACAC,EAAA,SAAAx2M,GACApF,EAAAS,KAAAI,IAAAb,EAAAiC,EAAAmd,YAAAha,GAAApF,MAAA27M,IA4BA,OAzBA15M,EAAAsa,KAAAlX,EAAAmX,WAAAo9L,EAAAjvM,EAAAgvM,gBAAAhvM,EAAA8uM,kBACAp0M,EAAA4D,KAAA0B,EAAA/F,MAAAg3M,GAGA35M,EAAAsa,KAAAlX,EAAAmX,WAAAg9L,EAAA7uM,EAAA0uM,eAAA1uM,EAAAwuM,iBACA9zM,EAAA4D,KAAA0B,EAAAitM,WAAAhpM,OAAAjE,EAAAstM,WAAA2D,GAGAD,EAAAhxM,EAAA4sM,cAAAiC,EAAA,IACAn0M,EAAA4D,KAAAsb,EAAA,SAAAk2L,GACAp1M,EAAA4D,KAAAwxM,EAAAlrJ,OAAAqsJ,GACAv2M,EAAA4D,KAAAwxM,EAAAtwE,MAAAyxE,GACAv2M,EAAA4D,KAAAwxM,EAAAjrJ,MAAAosJ,KAIAD,EAAA,EAGA15M,EAAAsa,KAAAlX,EAAAmX,WAAAy9L,EAAAtvM,EAAAqvM,iBAAArvM,EAAAmvM,mBACAz0M,EAAA4D,KAAA0B,EAAAwtM,OAAAyD,GAKA,CACA57M,MAHAA,GAAA,EAAA2K,EAAAusM,SAIAn2M,UAySA86M,CAAA35M,KAAAyI,GAGAowM,EA5NA,SAAAz6M,EAAA+b,EAAAy+L,EAAA10M,GAEA,IAAA5F,EAAAF,EAAAE,EACAG,EAAAL,EAAAK,EAEAy2M,EAAA92M,EAAA82M,UACAD,EAAA72M,EAAA62M,aACAE,EAAA/2M,EAAA+2M,aACA4B,EAAA6B,EAAA7B,OACAC,EAAA4B,EAAA5B,OACA4C,EAAA1E,EAAAD,EACA4E,EAAA1E,EAAAF,EAkCA,MAhCA,UAAA8B,EACAz4M,GAAA6b,EAAArc,MACE,WAAAi5M,KACFz4M,GAAA6b,EAAArc,MAAA,GACAqc,EAAArc,MAAAoG,EAAApG,QACAQ,EAAA4F,EAAApG,MAAAqc,EAAArc,OAEAQ,EAAA,IACAA,EAAA,IAIA,QAAA04M,EACAv4M,GAAAm7M,EAEAn7M,GADE,WAAAu4M,EACF78L,EAAAtb,OAAA+6M,EAEAz/L,EAAAtb,OAAA,EAGA,WAAAm4M,EACA,SAAAD,EACAz4M,GAAAs7M,EACG,UAAA7C,IACHz4M,GAAAs7M,GAEE,SAAA7C,EACFz4M,GAAAu7M,EACE,UAAA9C,IACFz4M,GAAAu7M,GAGA,CACAv7M,IACAG,KA6KAq7M,CAAArxM,EAAAqwM,EAFAF,EAnSA,SAAAjrM,EAAAwM,GACA,IAYA4/L,EAAAC,EACAC,EAAAC,EACAC,EAdA1xM,EAAAkF,EAAArF,OACApE,EAAAyJ,EAAA1N,OACAgH,EAAA0G,EAAA1N,OAAAgH,UACA8vM,EAAA,SACAC,EAAA,SAEAvuM,EAAAhK,EAAA0b,EAAAtb,OACAm4M,EAAA,MACEvuM,EAAAhK,EAAAyF,EAAArF,OAAAsb,EAAAtb,SACFm4M,EAAA,UAMA,IAAAoD,GAAAnzM,EAAAnI,KAAAmI,EAAAjI,OAAA,EACAq7M,GAAApzM,EAAAlI,IAAAkI,EAAAhI,QAAA,EAEA,WAAA+3M,GACA+C,EAAA,SAAAz7M,GACA,OAAAA,GAAA87M,GAEAJ,EAAA,SAAA17M,GACA,OAAAA,EAAA87M,KAGAL,EAAA,SAAAz7M,GACA,OAAAA,GAAA6b,EAAArc,MAAA,GAEAk8M,EAAA,SAAA17M,GACA,OAAAA,GAAA4F,EAAApG,MAAAqc,EAAArc,MAAA,IAIAm8M,EAAA,SAAA37M,GACA,OAAAA,EAAA6b,EAAArc,MAAA2K,EAAAysM,UAAAzsM,EAAAwsM,aAAA/wM,EAAApG,OAEAo8M,EAAA,SAAA57M,GACA,OAAAA,EAAA6b,EAAArc,MAAA2K,EAAAysM,UAAAzsM,EAAAwsM,aAAA,GAEAkF,EAAA,SAAA17M,GACA,OAAAA,GAAA47M,EAAA,gBAGAN,EAAAtxM,EAAAnK,IACAy4M,EAAA,OAGAkD,EAAAxxM,EAAAnK,KACAy4M,EAAA,SACAC,EAAAmD,EAAA1xM,EAAAhK,KAEEu7M,EAAAvxM,EAAAnK,KACFy4M,EAAA,QAGAmD,EAAAzxM,EAAAnK,KACAy4M,EAAA,SACAC,EAAAmD,EAAA1xM,EAAAhK,KAIA,IAAAyI,EAAAyG,EAAAK,SACA,OACA+oM,OAAA7vM,EAAA6vM,OAAA7vM,EAAA6vM,SACAC,OAAA9vM,EAAA8vM,OAAA9vM,EAAA8vM,UAiOAsD,CAAAt6M,KAAA84M,GAEA5yM,EAAAjG,aAEAwI,EAAA2oD,QAAA,EAoBA,OAjBA3oD,EAAAsuM,OAAA6B,EAAA7B,OACAtuM,EAAAuuM,OAAA4B,EAAA5B,OACAvuM,EAAAnK,EAAAu6M,EAAAv6M,EACAmK,EAAAhK,EAAAo6M,EAAAp6M,EACAgK,EAAA3K,MAAAg7M,EAAAh7M,MACA2K,EAAA5J,OAAAi6M,EAAAj6M,OAGA4J,EAAAswM,OAAA/2M,EAAA1D,EACAmK,EAAAuwM,OAAAh3M,EAAAvD,EAEAyH,EAAAoC,OAAAG,EAEAqJ,GAAA5K,EAAApC,QACAoC,EAAApC,OAAA9M,KAAAkO,EAAAuC,GAGAvC,GAGAq0M,UAAA,SAAAC,EAAArgM,GACA,IAAApa,EAAAC,KAAAC,OAAAF,IACA3B,EAAA4B,KAAAnC,MACA48M,EAAAz6M,KAAA06M,iBAAAF,EAAArgM,EAAA/b,GAEA2B,EAAAqB,OAAAq5M,EAAAz8M,GAAAy8M,EAAAv8M,IACA6B,EAAAqB,OAAAq5M,EAAAx8M,GAAAw8M,EAAAt8M,IACA4B,EAAAqB,OAAAq5M,EAAAE,GAAAF,EAAAG,KAEAF,iBAAA,SAAAF,EAAArgM,EAAA/b,GACA,IAAAJ,EAAAC,EAAA08M,EAAAz8M,EAAAC,EAAAy8M,EACA1F,EAAA92M,EAAA82M,UACAC,EAAA/2M,EAAA+2M,aACA4B,EAAA34M,EAAA24M,OACAC,EAAA54M,EAAA44M,OACA6D,EAAAL,EAAAl8M,EACAw8M,EAAAN,EAAA/7M,EACAX,EAAAqc,EAAArc,MACAe,EAAAsb,EAAAtb,OAEA,cAAAm4M,EACA74M,EAAA28M,EAAAj8M,EAAA,EAEA,SAAAk4M,GAEA94M,GADAD,EAAA68M,GACA3F,EACAyF,EAAA38M,EAEAE,EAAAC,EAAA+2M,EACA0F,EAAAz8M,EAAA+2M,IAGAj3M,GADAD,EAAA68M,EAAA/8M,GACAo3M,EACAyF,EAAA38M,EAEAE,EAAAC,EAAA+2M,EACA0F,EAAAz8M,EAAA+2M,QAgBA,GAbA,SAAA6B,GAEA/4M,GADAC,EAAA48M,EAAA1F,EAAA,GACAD,EACAyF,EAAA18M,EAAAi3M,GACI,UAAA6B,GAEJ/4M,GADAC,EAAA48M,EAAA/8M,EAAAq3M,EAAAD,GACAA,EACAyF,EAAA18M,EAAAi3M,IAGAl3M,GADAC,EAAAG,EAAA26M,QACA7D,EACAyF,EAAA18M,EAAAi3M,GAEA,QAAA8B,EAEA74M,GADAD,EAAA48M,GACA5F,EACA0F,EAAA18M,MACI,CAEJC,GADAD,EAAA48M,EAAAj8M,GACAq2M,EACA0F,EAAA18M,EAEA,IAAAm0C,EAAAsoK,EACAA,EAAA38M,EACAA,EAAAq0C,EAGA,OAAUr0C,KAAAC,KAAA08M,KAAAz8M,KAAAC,KAAAy8M,OAGVG,UAAA,SAAAr0I,EAAAtoE,EAAA2B,EAAAqxD,GACA,IAAA1uD,EAAAtE,EAAAsE,MAEA,GAAAA,EAAA3F,OAAA,CACAgD,EAAAggB,UAAA3hB,EAAAu5M,YACA53M,EAAAigB,aAAA,MAEA,IAMAnoB,EAAAoD,EANAy8M,EAAAt5M,EAAAs5M,cACAvD,EAAA/1M,EAAA+1M,aAMA,IAJAp0M,EAAAY,UAAA61M,EAAAp4M,EAAAi2M,eAAAjjJ,GACArxD,EAAAsa,KAAAlX,EAAAmX,WAAAo9L,EAAAt5M,EAAAq5M,gBAAAr5M,EAAAm5M,kBAGA1/M,EAAA,EAAAoD,EAAAyH,EAAA3F,OAAkClF,EAAAoD,IAASpD,EAC3CkI,EAAA2a,SAAAhY,EAAA7K,GAAA6uE,EAAApoE,EAAAooE,EAAAjoE,GACAioE,EAAAjoE,GAAAi5M,EAAAvD,EAEAt8M,EAAA,IAAA6K,EAAA3F,SACA2pE,EAAAjoE,GAAAL,EAAAg2M,kBAAAD,KAMA6G,SAAA,SAAAt0I,EAAAtoE,EAAA2B,EAAAqxD,GACA,IAAAkmJ,EAAAl5M,EAAAk5M,aACA/C,EAAAn2M,EAAAm2M,YACAlyL,EAAAjkB,EAAAikB,KAEAtiB,EAAAggB,UAAA3hB,EAAAi5M,WACAt3M,EAAAigB,aAAA,MACAjgB,EAAAsa,KAAAlX,EAAAmX,WAAAg9L,EAAAl5M,EAAA+4M,eAAA/4M,EAAA64M,iBAGA,IAAAgE,EAAA,EACAC,EAAA,SAAAh4M,GACAnD,EAAA2a,SAAAxX,EAAAwjE,EAAApoE,EAAA28M,EAAAv0I,EAAAjoE,GACAioE,EAAAjoE,GAAA64M,EAAA/C,GAIAx0M,EAAAY,UAAA61M,EAAAp4M,EAAAo2M,cAAApjJ,GACAjuD,EAAA4D,KAAA3I,EAAAs3M,WAAAwF,GAEA,IAAAC,EAAA/8M,EAAAi3M,cACA4F,EAAAE,EAAA7D,EAAA,IAGAn0M,EAAA4D,KAAAsb,EAAA,SAAAk2L,EAAA1gN,GACA,IAAAujN,EAAA5E,EAAAp4M,EAAA86M,gBAAArhN,GAAAu5D,GACArxD,EAAAY,UAAAy6M,EACAj4M,EAAA4D,KAAAwxM,EAAAlrJ,OAAA6tJ,GAEA/3M,EAAA4D,KAAAwxM,EAAAtwE,MAAA,SAAA/kI,GAEAi4M,IAEAp7M,EAAAY,UAAA61M,EAAAp4M,EAAA65M,sBAAA7mJ,GACArxD,EAAA+f,SAAA4mD,EAAApoE,EAAAooE,EAAAjoE,EAAA64M,KAGAv3M,EAAAc,UAAA,EACAd,EAAAa,YAAA41M,EAAAp4M,EAAA66M,YAAAphN,GAAA2H,YAAA4xD,GACArxD,EAAAmiC,WAAAwkC,EAAApoE,EAAAooE,EAAAjoE,EAAA64M,KAGAv3M,EAAAY,UAAA61M,EAAAp4M,EAAA66M,YAAAphN,GAAAwH,gBAAA+xD,GACArxD,EAAA+f,SAAA4mD,EAAApoE,EAAA,EAAAooE,EAAAjoE,EAAA,EAAA64M,EAAA,EAAAA,EAAA,GACAv3M,EAAAY,UAAAy6M,GAGAF,EAAAh4M,KAGAC,EAAA4D,KAAAwxM,EAAAjrJ,MAAA4tJ,KAIAD,EAAA,EAGA93M,EAAA4D,KAAA3I,EAAA23M,UAAAmF,GACAx0I,EAAAjoE,GAAA81M,GAGA8G,WAAA,SAAA30I,EAAAtoE,EAAA2B,EAAAqxD,GACA,IAAA6kJ,EAAA73M,EAAA63M,OAEAA,EAAAl5M,SACA2pE,EAAAjoE,GAAAL,EAAAw2M,gBAEA70M,EAAAggB,UAAA3hB,EAAA45M,aACAj4M,EAAAigB,aAAA,MAEAjgB,EAAAY,UAAA61M,EAAAp4M,EAAAy2M,gBAAAzjJ,GACArxD,EAAAsa,KAAAlX,EAAAmX,WAAAlc,EAAA25M,eAAA35M,EAAA05M,iBAAA15M,EAAAw5M,mBAEAz0M,EAAA4D,KAAAkvM,EAAA,SAAA/yM,GACAnD,EAAA2a,SAAAxX,EAAAwjE,EAAApoE,EAAAooE,EAAAjoE,GACAioE,EAAAjoE,GAAAL,EAAA25M,eAAA35M,EAAAu2M,kBAKA2G,eAAA,SAAA50I,EAAAtoE,EAAA2B,EAAA+4M,EAAA1nJ,GACArxD,EAAAY,UAAA61M,EAAAp4M,EAAAiB,gBAAA+xD,GACArxD,EAAAa,YAAA41M,EAAAp4M,EAAAoB,YAAA4xD,GACArxD,EAAAc,UAAAzC,EAAAsB,YACA,IAAAq3M,EAAA34M,EAAA24M,OACAC,EAAA54M,EAAA44M,OACA14M,EAAAooE,EAAApoE,EACAG,EAAAioE,EAAAjoE,EACAX,EAAAg7M,EAAAh7M,MACAe,EAAAi6M,EAAAj6M,OACAwgB,EAAAjhB,EAAA+2M,aAEAp1M,EAAAW,YACAX,EAAAoB,OAAA7C,EAAA+gB,EAAA5gB,GACA,QAAAu4M,GACAh3M,KAAAu6M,UAAA7zI,EAAAoyI,GAEA/4M,EAAAqB,OAAA9C,EAAAR,EAAAuhB,EAAA5gB,GACAsB,EAAAw7M,iBAAAj9M,EAAAR,EAAAW,EAAAH,EAAAR,EAAAW,EAAA4gB,GACA,WAAA23L,GAAA,UAAAD,GACA/2M,KAAAu6M,UAAA7zI,EAAAoyI,GAEA/4M,EAAAqB,OAAA9C,EAAAR,EAAAW,EAAAI,EAAAwgB,GACAtf,EAAAw7M,iBAAAj9M,EAAAR,EAAAW,EAAAI,EAAAP,EAAAR,EAAAuhB,EAAA5gB,EAAAI,GACA,WAAAm4M,GACAh3M,KAAAu6M,UAAA7zI,EAAAoyI,GAEA/4M,EAAAqB,OAAA9C,EAAA+gB,EAAA5gB,EAAAI,GACAkB,EAAAw7M,iBAAAj9M,EAAAG,EAAAI,EAAAP,EAAAG,EAAAI,EAAAwgB,GACA,WAAA23L,GAAA,SAAAD,GACA/2M,KAAAu6M,UAAA7zI,EAAAoyI,GAEA/4M,EAAAqB,OAAA9C,EAAAG,EAAA4gB,GACAtf,EAAAw7M,iBAAAj9M,EAAAG,EAAAH,EAAA+gB,EAAA5gB,GACAsB,EAAAuf,YAEAvf,EAAAsB,OAEAjD,EAAAsB,YAAA,GACAK,EAAAuB,UAIA1B,KAAA,WACA,IAAAG,EAAAC,KAAAC,OAAAF,IACA3B,EAAA4B,KAAAnC,MAEA,OAAAO,EAAAgzD,QAAA,CAIA,IAAA0nJ,EAAA,CACAh7M,MAAAM,EAAAN,MACAe,OAAAT,EAAAS,QAEA6nE,EAAA,CACApoE,EAAAF,EAAAE,EACAG,EAAAL,EAAAK,GAIA2yD,EAAA7yD,KAAA6B,IAAAhC,EAAAgzD,QAAA,QAAAhzD,EAAAgzD,QAGAoqJ,EAAAp9M,EAAAsE,MAAA3F,QAAAqB,EAAAs3M,WAAA34M,QAAAqB,EAAAikB,KAAAtlB,QAAAqB,EAAA23M,UAAAh5M,QAAAqB,EAAA63M,OAAAl5M,OAEAiD,KAAAgO,SAAA6D,SAAA2pM,IAEAx7M,KAAAs7M,eAAA50I,EAAAtoE,EAAA2B,EAAA+4M,EAAA1nJ,GAGAsV,EAAApoE,GAAAF,EAAA42M,SACAtuI,EAAAjoE,GAAAL,EAAA22M,SAGA/0M,KAAA+6M,UAAAr0I,EAAAtoE,EAAA2B,EAAAqxD,GAGApxD,KAAAg7M,SAAAt0I,EAAAtoE,EAAA2B,EAAAqxD,GAGApxD,KAAAq7M,WAAA30I,EAAAtoE,EAAA2B,EAAAqxD,MAUAr/C,YAAA,SAAAzM,GACA,IAEAwM,EAFA5L,EAAAlG,KACAiF,EAAAiB,EAAA8H,SA8BA,OA3BA9H,EAAAiyM,YAAAjyM,EAAAiyM,aAAA,GAGA,aAAA7yM,EAAAhK,KACA4K,EAAAyyM,QAAA,GAEAzyM,EAAAyyM,QAAAzyM,EAAAjG,OAAAuQ,0BAAAlL,EAAAL,EAAAjM,KAAAiM,IAIA6M,GAAA3O,EAAAqP,YAAAtM,EAAAyyM,QAAAzyM,EAAAiyM,gBAIAjyM,EAAAiyM,YAAAjyM,EAAAyyM,SAEA1zM,EAAA4M,SAAA5M,EAAAH,UACAoB,EAAAizM,eAAA,CACA76M,EAAAgH,EAAAhH,EACAG,EAAA6G,EAAA7G,GAGAyH,EAAAT,QAAA,GACAS,EAAAwC,UAIAoJ,MAOAqkM,iDCz8BA,IAAA/9K,EAAY3gC,EAAQ,QAUpBG,EAAAD,QAAA,SAAAyM,EAAA+5D,EAAAlgB,GAMA,OAJA7lB,EAAA9M,QAAA2yB,EAAA,SAAA98B,GACA/c,EAAA+c,EAAA/c,EAAA+5D,KAGA/5D,wCChBA,IAAA/K,EAAW5B,EAAQ,QACnB6rC,EAAe7rC,EAAQ,QAMvBwgB,EAAA1f,OAAAkB,UAAAwe,SAQA,SAAA0C,EAAAhgB,GACA,yBAAAsd,EAAAjgB,KAAA2C,GA2EA,SAAAyoC,EAAAzoC,GACA,cAAAA,GAAA,iBAAAA,EAuCA,SAAA6mB,EAAA7mB,GACA,4BAAAsd,EAAAjgB,KAAA2C,GAoEA,SAAA2wB,EAAAruB,EAAAkkB,GAEA,GAAAlkB,QAUA,GALA,iBAAAA,IAEAA,EAAA,CAAAA,IAGA0d,EAAA1d,GAEA,QAAApF,EAAA,EAAAC,EAAAmF,EAAAF,OAAmClF,EAAAC,EAAOD,IAC1CspB,EAAAnpB,KAAA,KAAAiF,EAAApF,KAAAoF,QAIA,QAAA7D,KAAA6D,EACA1E,OAAAkB,UAAAC,eAAA1B,KAAAiF,EAAA7D,IACA+nB,EAAAnpB,KAAA,KAAAiF,EAAA7D,KAAA6D,GA0DArF,EAAAD,QAAA,CACAgjB,UACAiuD,cAhQA,SAAAjuE,GACA,+BAAAsd,EAAAjgB,KAAA2C,IAgQA2oC,WACAqlC,WAxPA,SAAAhuE,GACA,0BAAA8gN,UAAA9gN,aAAA8gN,UAwPAzyI,kBA/OA,SAAAruE,GAOA,MALA,oBAAA06H,yBAAA,OACAA,YAAAqmF,OAAA/gN,GAEA,GAAAA,EAAA,QAAAA,EAAAsuE,kBAAAosD,aA2OAgF,SAhOA,SAAA1/H,GACA,uBAAAA,GAgOAugB,SAvNA,SAAAvgB,GACA,uBAAAA,GAuNAyoC,WACAolC,YA/MA,SAAA7tE,GACA,gBAAAA,GA+MAiwG,OA5LA,SAAAjwG,GACA,wBAAAsd,EAAAjgB,KAAA2C,IA4LAmuE,OAnLA,SAAAnuE,GACA,wBAAAsd,EAAAjgB,KAAA2C,IAmLAouE,OA1KA,SAAApuE,GACA,wBAAAsd,EAAAjgB,KAAA2C,IA0KA6mB,aACAqnD,SAxJA,SAAAluE,GACA,OAAAyoC,EAAAzoC,IAAA6mB,EAAA7mB,EAAAqjD,OAwJAkrB,kBA/IA,SAAAvuE,GACA,0BAAAghN,iBAAAhhN,aAAAghN,iBA+IAnzE,qBArHA,WACA,2BAAAznH,WAAA,gBAAAA,UAAA66L,UAIA,oBAAA/iM,QACA,oBAAA+H,UAgHA0K,UACA2Y,MArDA,SAAAA,IACA,IAAApsB,EAAA,GACA,SAAA2pG,EAAA7mH,EAAAvB,GACA,iBAAAye,EAAAze,IAAA,iBAAAuB,EACAkd,EAAAze,GAAA6qC,EAAApsB,EAAAze,GAAAuB,GAEAkd,EAAAze,GAAAuB,EAIA,QAAA9C,EAAA,EAAAC,EAAAgW,UAAA/Q,OAAuClF,EAAAC,EAAOD,IAC9CyzB,EAAAxd,UAAAjW,GAAA2pH,GAEA,OAAA3pG,GAyCAlY,OA9BA,SAAA6X,EAAAoF,EAAAsrD,GAQA,OAPA58C,EAAA1O,EAAA,SAAAjiB,EAAAvB,GAEAoe,EAAApe,GADA8uE,GAAA,mBAAAvtE,EACAtB,EAAAsB,EAAAutE,GAEAvtE,IAGA6c,GAuBA6W,KA1IA,SAAAO,GACA,OAAAA,EAAA1lB,QAAA,WAAAA,QAAA,gDClKA,IAAAkvB,EAAY3gC,EAAQ,QAEpBG,EAAAD,QAAA,SAAAwmE,EAAA40B,GACA36D,EAAA9M,QAAA6yC,EAAA,SAAArlE,EAAAV,GACAA,IAAA26F,GAAA36F,EAAAyzB,gBAAAknE,EAAAlnE,gBACAsyC,EAAA40B,GAAAj6F,SACAqlE,EAAA/lE,2BCRA,IAAAulL,EAGAA,EAAA,WACA,OAAA39K,KADA,GAIA,IAEA29K,KAAA,IAAAzvG,SAAA,iBACC,MAAA5oE,GAED,iBAAAuT,SAAA8kK,EAAA9kK,QAOAjhB,EAAAD,QAAAgmL,qCCjBelmL,EAAQ,QAEvByH,KAAA,UACA4L,YAAA,EACAmB,4BAAA,EACAV,qBAAA,EACAkG,OAAA,0DACAxP,MAAA,CACAqQ,QAAA,KACAtZ,KAAA,UACAsX,WAAA,EACA6B,kBAAA,KAEA9M,QAAA,KACA9F,aAAA,kBACAmgB,iBAAA,OACAxF,kBAAA,qDACAJ,gBAAA,GACAE,iBAAA,SACAzX,WAAA,EAGApD,SAAA,GAGAw6K,OAAA,CACAzxJ,QAAA,CACAnpB,IAAA,EACAC,MAAA,EACAC,OAAA,EACAH,KAAA,MAKAlH,EAAAD,QAAA,WAGA,IAAAoL,EAAA,SAAAH,EAAAmH,GAEA,OADA/J,KAAA8J,UAAAlH,EAAAmH,GACA/J,MAKA,OAFA+C,UAEAA,sCC7CA,IAAAq1B,EAAY3gC,EAAQ,QACpB4B,EAAW5B,EAAQ,QACnBuvC,EAAYvvC,EAAQ,QACpBgG,EAAehG,EAAQ,QAQvB,SAAAokN,EAAA5iM,GACA,IAAArQ,EAAA,IAAAo+B,EAAA/tB,GACAkM,EAAA9rB,EAAA2tC,EAAAvtC,UAAA0tC,QAAAv+B,GAQA,OALAwvB,EAAAz4B,OAAAwlB,EAAA6hB,EAAAvtC,UAAAmP,GAGAwvB,EAAAz4B,OAAAwlB,EAAAvc,GAEAuc,EAIA,IAAAyqJ,EAAAisC,EAAAp+M,GAGAmyK,EAAA5oI,QAGA4oI,EAAAz2K,OAAA,SAAA8tC,GACA,OAAA40K,EAAAzjL,EAAA6L,MAAAxmC,EAAAwpC,KAIA2oI,EAAA8I,OAAejhL,EAAQ,QACvBm4K,EAAAoN,YAAoBvlL,EAAQ,QAC5Bm4K,EAAAjX,SAAiBlhK,EAAQ,QAGzBm4K,EAAA9uH,IAAA,SAAAg7J,GACA,OAAA56L,QAAA4/B,IAAAg7J,IAEAlsC,EAAA5vC,OAAevoI,EAAQ,QAEvBG,EAAAD,QAAAi4K,EAGAh4K,EAAAD,QAAAqgF,QAAA43F","file":"/js/app.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","/*!\n * php-unserialize-js JavaScript Library\n * https://github.com/bd808/php-unserialize-js\n *\n * Copyright 2013 Bryan Davis and contributors\n * Released under the MIT license\n * http://www.opensource.org/licenses/MIT\n */\n\n(function (root, factory) {\n /*global define, exports, module */\n \"use strict\";\n\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define([], factory);\n } else if (typeof exports === 'object') {\n // Node. Does not work with strict CommonJS, but\n // only CommonJS-like environments that support module.exports,\n // like Node.\n module.exports = factory();\n } else {\n // Browser globals (root is window)\n root.phpUnserialize = factory();\n }\n}(this, function () {\n \"use strict\";\n\n /**\n * Parse php serialized data into js objects.\n *\n * @param {String} phpstr Php serialized string to parse\n * @return {mixed} Parsed result\n */\n return function (phpstr) {\n var idx = 0\n , refStack = []\n , ridx = 0\n , parseNext // forward declaraton for \"use strict\"\n\n , readLength = function () {\n var del = phpstr.indexOf(':', idx)\n , val = phpstr.substring(idx, del);\n idx = del + 2;\n return parseInt(val, 10);\n } //end readLength\n\n , readInt = function () {\n var del = phpstr.indexOf(';', idx)\n , val = phpstr.substring(idx, del);\n idx = del + 1;\n return parseInt(val, 10);\n } //end readInt\n\n , parseAsInt = function () {\n var val = readInt();\n refStack[ridx++] = val;\n return val;\n } //end parseAsInt\n\n , parseAsFloat = function () {\n var del = phpstr.indexOf(';', idx)\n , val = phpstr.substring(idx, del);\n idx = del + 1;\n val = parseFloat(val);\n refStack[ridx++] = val;\n return val;\n } //end parseAsFloat\n\n , parseAsBoolean = function () {\n var del = phpstr.indexOf(';', idx)\n , val = phpstr.substring(idx, del);\n idx = del + 1;\n val = (\"1\" === val)? true: false;\n refStack[ridx++] = val;\n return val;\n } //end parseAsBoolean\n\n , readString = function () {\n var len = readLength()\n , utfLen = 0\n , bytes = 0\n , ch\n , val;\n while (bytes < len) {\n ch = phpstr.charCodeAt(idx + utfLen++);\n if (ch <= 0x007F) {\n bytes++;\n } else if (ch > 0x07FF) {\n bytes += 3;\n } else {\n bytes += 2;\n }\n }\n val = phpstr.substring(idx, idx + utfLen);\n idx += utfLen + 2;\n return val;\n } //end readString\n\n , parseAsString = function () {\n var val = readString();\n refStack[ridx++] = val;\n return val;\n } //end parseAsString\n\n , readType = function () {\n var type = phpstr.charAt(idx);\n idx += 2;\n return type;\n } //end readType\n\n , readKey = function () {\n var type = readType();\n switch (type) {\n case 'i': return readInt();\n case 's': return readString();\n default:\n throw {\n name: \"Parse Error\",\n message: \"Unknown key type '\" + type + \"' at position \" +\n (idx - 2)\n };\n } //end switch\n }\n\n , parseAsArray = function () {\n var len = readLength()\n , resultArray = []\n , resultHash = {}\n , keep = resultArray\n , lref = ridx++\n , key\n , val\n , i\n , j\n , alen;\n\n refStack[lref] = keep;\n for (i = 0; i < len; i++) {\n key = readKey();\n val = parseNext();\n if (keep === resultArray && parseInt(key, 10) === i) {\n // store in array version\n resultArray.push(val);\n\n } else {\n if (keep !== resultHash) {\n // found first non-sequential numeric key\n // convert existing data to hash\n for (j = 0, alen = resultArray.length; j < alen; j++) {\n resultHash[j] = resultArray[j];\n }\n keep = resultHash;\n refStack[lref] = keep;\n }\n resultHash[key] = val;\n } //end if\n } //end for\n\n idx++;\n return keep;\n } //end parseAsArray\n\n , fixPropertyName = function (parsedName, baseClassName) {\n var class_name\n , prop_name\n , pos;\n if (\"\\u0000\" === parsedName.charAt(0)) {\n // \"<NUL>*<NUL>property\"\n // \"<NUL>class<NUL>property\"\n pos = parsedName.indexOf(\"\\u0000\", 1);\n if (pos > 0) {\n class_name = parsedName.substring(1, pos);\n prop_name = parsedName.substr(pos + 1);\n\n if (\"*\" === class_name) {\n // protected\n return prop_name;\n } else if (baseClassName === class_name) {\n // own private\n return prop_name;\n } else {\n // private of a descendant\n return class_name + \"::\" + prop_name;\n\n // On the one hand, we need to prefix property name with\n // class name, because parent and child classes both may\n // have private property with same name. We don't want\n // just to overwrite it and lose something.\n //\n // On the other hand, property name can be \"foo::bar\"\n //\n // $obj = new stdClass();\n // $obj->{\"foo::bar\"} = 42;\n // // any user-defined class can do this by default\n //\n // and such property also can overwrite something.\n //\n // So, we can to lose something in any way.\n }\n }\n } else {\n // public \"property\"\n return parsedName;\n }\n }\n\n , parseAsObject = function () {\n var len\n , obj = {}\n , lref = ridx++\n // HACK last char after closing quote is ':',\n // but not ';' as for normal string\n , clazzname = readString()\n , key\n , val\n , i;\n\n refStack[lref] = obj;\n len = readLength();\n for (i = 0; i < len; i++) {\n key = fixPropertyName(readKey(), clazzname);\n val = parseNext();\n obj[key] = val;\n }\n idx++;\n return obj;\n } //end parseAsObject\n\n , parseAsCustom = function () {\n var clazzname = readString()\n , content = readString();\n return {\n \"__PHP_Incomplete_Class_Name\": clazzname,\n \"serialized\": content\n };\n } //end parseAsCustom\n\n , parseAsRefValue = function () {\n var ref = readInt()\n // php's ref counter is 1-based; our stack is 0-based.\n , val = refStack[ref - 1];\n refStack[ridx++] = val;\n return val;\n } //end parseAsRefValue\n\n , parseAsRef = function () {\n var ref = readInt();\n // php's ref counter is 1-based; our stack is 0-based.\n return refStack[ref - 1];\n } //end parseAsRef\n\n , parseAsNull = function () {\n var val = null;\n refStack[ridx++] = val;\n return val;\n }; //end parseAsNull\n\n parseNext = function () {\n var type = readType();\n switch (type) {\n case 'i': return parseAsInt();\n case 'd': return parseAsFloat();\n case 'b': return parseAsBoolean();\n case 's': return parseAsString();\n case 'a': return parseAsArray();\n case 'O': return parseAsObject();\n case 'C': return parseAsCustom();\n\n // link to object, which is a value - affects refStack\n case 'r': return parseAsRefValue();\n\n // PHP's reference - DOES NOT affect refStack\n case 'R': return parseAsRef();\n\n case 'N': return parseAsNull();\n default:\n throw {\n name: \"Parse Error\",\n message: \"Unknown type '\" + type + \"' at position \" + (idx - 2)\n };\n } //end switch\n }; //end parseNext\n\n return parseNext();\n };\n}));\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar Element = require('../core/core.element');\n\ndefaults._set('global', {\n\telements: {\n\t\trectangle: {\n\t\t\tbackgroundColor: defaults.global.defaultColor,\n\t\t\tborderColor: defaults.global.defaultColor,\n\t\t\tborderSkipped: 'bottom',\n\t\t\tborderWidth: 0\n\t\t}\n\t}\n});\n\nfunction isVertical(bar) {\n\treturn bar._view.width !== undefined;\n}\n\n/**\n * Helper function to get the bounds of the bar regardless of the orientation\n * @param bar {Chart.Element.Rectangle} the bar\n * @return {Bounds} bounds of the bar\n * @private\n */\nfunction getBarBounds(bar) {\n\tvar vm = bar._view;\n\tvar x1, x2, y1, y2;\n\n\tif (isVertical(bar)) {\n\t\t// vertical\n\t\tvar halfWidth = vm.width / 2;\n\t\tx1 = vm.x - halfWidth;\n\t\tx2 = vm.x + halfWidth;\n\t\ty1 = Math.min(vm.y, vm.base);\n\t\ty2 = Math.max(vm.y, vm.base);\n\t} else {\n\t\t// horizontal bar\n\t\tvar halfHeight = vm.height / 2;\n\t\tx1 = Math.min(vm.x, vm.base);\n\t\tx2 = Math.max(vm.x, vm.base);\n\t\ty1 = vm.y - halfHeight;\n\t\ty2 = vm.y + halfHeight;\n\t}\n\n\treturn {\n\t\tleft: x1,\n\t\ttop: y1,\n\t\tright: x2,\n\t\tbottom: y2\n\t};\n}\n\nmodule.exports = Element.extend({\n\tdraw: function() {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\t\tvar left, right, top, bottom, signX, signY, borderSkipped;\n\t\tvar borderWidth = vm.borderWidth;\n\n\t\tif (!vm.horizontal) {\n\t\t\t// bar\n\t\t\tleft = vm.x - vm.width / 2;\n\t\t\tright = vm.x + vm.width / 2;\n\t\t\ttop = vm.y;\n\t\t\tbottom = vm.base;\n\t\t\tsignX = 1;\n\t\t\tsignY = bottom > top ? 1 : -1;\n\t\t\tborderSkipped = vm.borderSkipped || 'bottom';\n\t\t} else {\n\t\t\t// horizontal bar\n\t\t\tleft = vm.base;\n\t\t\tright = vm.x;\n\t\t\ttop = vm.y - vm.height / 2;\n\t\t\tbottom = vm.y + vm.height / 2;\n\t\t\tsignX = right > left ? 1 : -1;\n\t\t\tsignY = 1;\n\t\t\tborderSkipped = vm.borderSkipped || 'left';\n\t\t}\n\n\t\t// Canvas doesn't allow us to stroke inside the width so we can\n\t\t// adjust the sizes to fit if we're setting a stroke on the line\n\t\tif (borderWidth) {\n\t\t\t// borderWidth shold be less than bar width and bar height.\n\t\t\tvar barSize = Math.min(Math.abs(left - right), Math.abs(top - bottom));\n\t\t\tborderWidth = borderWidth > barSize ? barSize : borderWidth;\n\t\t\tvar halfStroke = borderWidth / 2;\n\t\t\t// Adjust borderWidth when bar top position is near vm.base(zero).\n\t\t\tvar borderLeft = left + (borderSkipped !== 'left' ? halfStroke * signX : 0);\n\t\t\tvar borderRight = right + (borderSkipped !== 'right' ? -halfStroke * signX : 0);\n\t\t\tvar borderTop = top + (borderSkipped !== 'top' ? halfStroke * signY : 0);\n\t\t\tvar borderBottom = bottom + (borderSkipped !== 'bottom' ? -halfStroke * signY : 0);\n\t\t\t// not become a vertical line?\n\t\t\tif (borderLeft !== borderRight) {\n\t\t\t\ttop = borderTop;\n\t\t\t\tbottom = borderBottom;\n\t\t\t}\n\t\t\t// not become a horizontal line?\n\t\t\tif (borderTop !== borderBottom) {\n\t\t\t\tleft = borderLeft;\n\t\t\t\tright = borderRight;\n\t\t\t}\n\t\t}\n\n\t\tctx.beginPath();\n\t\tctx.fillStyle = vm.backgroundColor;\n\t\tctx.strokeStyle = vm.borderColor;\n\t\tctx.lineWidth = borderWidth;\n\n\t\t// Corner points, from bottom-left to bottom-right clockwise\n\t\t// | 1 2 |\n\t\t// | 0 3 |\n\t\tvar corners = [\n\t\t\t[left, bottom],\n\t\t\t[left, top],\n\t\t\t[right, top],\n\t\t\t[right, bottom]\n\t\t];\n\n\t\t// Find first (starting) corner with fallback to 'bottom'\n\t\tvar borders = ['bottom', 'left', 'top', 'right'];\n\t\tvar startCorner = borders.indexOf(borderSkipped, 0);\n\t\tif (startCorner === -1) {\n\t\t\tstartCorner = 0;\n\t\t}\n\n\t\tfunction cornerAt(index) {\n\t\t\treturn corners[(startCorner + index) % 4];\n\t\t}\n\n\t\t// Draw rectangle from 'startCorner'\n\t\tvar corner = cornerAt(0);\n\t\tctx.moveTo(corner[0], corner[1]);\n\n\t\tfor (var i = 1; i < 4; i++) {\n\t\t\tcorner = cornerAt(i);\n\t\t\tctx.lineTo(corner[0], corner[1]);\n\t\t}\n\n\t\tctx.fill();\n\t\tif (borderWidth) {\n\t\t\tctx.stroke();\n\t\t}\n\t},\n\n\theight: function() {\n\t\tvar vm = this._view;\n\t\treturn vm.base - vm.y;\n\t},\n\n\tinRange: function(mouseX, mouseY) {\n\t\tvar inRange = false;\n\n\t\tif (this._view) {\n\t\t\tvar bounds = getBarBounds(this);\n\t\t\tinRange = mouseX >= bounds.left && mouseX <= bounds.right && mouseY >= bounds.top && mouseY <= bounds.bottom;\n\t\t}\n\n\t\treturn inRange;\n\t},\n\n\tinLabelRange: function(mouseX, mouseY) {\n\t\tvar me = this;\n\t\tif (!me._view) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar inRange = false;\n\t\tvar bounds = getBarBounds(me);\n\n\t\tif (isVertical(me)) {\n\t\t\tinRange = mouseX >= bounds.left && mouseX <= bounds.right;\n\t\t} else {\n\t\t\tinRange = mouseY >= bounds.top && mouseY <= bounds.bottom;\n\t\t}\n\n\t\treturn inRange;\n\t},\n\n\tinXRange: function(mouseX) {\n\t\tvar bounds = getBarBounds(this);\n\t\treturn mouseX >= bounds.left && mouseX <= bounds.right;\n\t},\n\n\tinYRange: function(mouseY) {\n\t\tvar bounds = getBarBounds(this);\n\t\treturn mouseY >= bounds.top && mouseY <= bounds.bottom;\n\t},\n\n\tgetCenterPoint: function() {\n\t\tvar vm = this._view;\n\t\tvar x, y;\n\t\tif (isVertical(this)) {\n\t\t\tx = vm.x;\n\t\t\ty = (vm.y + vm.base) / 2;\n\t\t} else {\n\t\t\tx = (vm.x + vm.base) / 2;\n\t\t\ty = vm.y;\n\t\t}\n\n\t\treturn {x: x, y: y};\n\t},\n\n\tgetArea: function() {\n\t\tvar vm = this._view;\n\t\treturn vm.width * Math.abs(vm.y - vm.base);\n\t},\n\n\ttooltipPosition: function() {\n\t\tvar vm = this._view;\n\t\treturn {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y\n\t\t};\n\t}\n});\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\n\ndefaults._set('scatter', {\n\thover: {\n\t\tmode: 'single'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\tid: 'x-axis-1', // need an ID so datasets can reference the scale\n\t\t\ttype: 'linear', // scatter should not use a category axis\n\t\t\tposition: 'bottom'\n\t\t}],\n\t\tyAxes: [{\n\t\t\tid: 'y-axis-1',\n\t\t\ttype: 'linear',\n\t\t\tposition: 'left'\n\t\t}]\n\t},\n\n\tshowLines: false,\n\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\treturn ''; // doesn't make sense for scatter since data are formatted as a point\n\t\t\t},\n\t\t\tlabel: function(item) {\n\t\t\t\treturn '(' + item.xLabel + ', ' + item.yLabel + ')';\n\t\t\t}\n\t\t}\n\t}\n});\n\nmodule.exports = function(Chart) {\n\n\t// Scatter charts use line controllers\n\tChart.controllers.scatter = Chart.controllers.line;\n\n};\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar elements = require('../elements/index');\nvar helpers = require('../helpers/index');\n\ndefaults._set('polarArea', {\n\tscale: {\n\t\ttype: 'radialLinear',\n\t\tangleLines: {\n\t\t\tdisplay: false\n\t\t},\n\t\tgridLines: {\n\t\t\tcircular: true\n\t\t},\n\t\tpointLabels: {\n\t\t\tdisplay: false\n\t\t},\n\t\tticks: {\n\t\t\tbeginAtZero: true\n\t\t}\n\t},\n\n\t// Boolean - Whether to animate the rotation of the chart\n\tanimation: {\n\t\tanimateRotate: true,\n\t\tanimateScale: true\n\t},\n\n\tstartAngle: -0.5 * Math.PI,\n\tlegendCallback: function(chart) {\n\t\tvar text = [];\n\t\ttext.push('<ul class=\"' + chart.id + '-legend\">');\n\n\t\tvar data = chart.data;\n\t\tvar datasets = data.datasets;\n\t\tvar labels = data.labels;\n\n\t\tif (datasets.length) {\n\t\t\tfor (var i = 0; i < datasets[0].data.length; ++i) {\n\t\t\t\ttext.push('<li><span style=\"background-color:' + datasets[0].backgroundColor[i] + '\"></span>');\n\t\t\t\tif (labels[i]) {\n\t\t\t\t\ttext.push(labels[i]);\n\t\t\t\t}\n\t\t\t\ttext.push('</li>');\n\t\t\t}\n\t\t}\n\n\t\ttext.push('</ul>');\n\t\treturn text.join('');\n\t},\n\tlegend: {\n\t\tlabels: {\n\t\t\tgenerateLabels: function(chart) {\n\t\t\t\tvar data = chart.data;\n\t\t\t\tif (data.labels.length && data.datasets.length) {\n\t\t\t\t\treturn data.labels.map(function(label, i) {\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\n\t\t\t\t\t\tvar ds = data.datasets[0];\n\t\t\t\t\t\tvar arc = meta.data[i];\n\t\t\t\t\t\tvar custom = arc.custom || {};\n\t\t\t\t\t\tvar valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n\t\t\t\t\t\tvar arcOpts = chart.options.elements.arc;\n\t\t\t\t\t\tvar fill = custom.backgroundColor ? custom.backgroundColor : valueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor);\n\t\t\t\t\t\tvar stroke = custom.borderColor ? custom.borderColor : valueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor);\n\t\t\t\t\t\tvar bw = custom.borderWidth ? custom.borderWidth : valueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttext: label,\n\t\t\t\t\t\t\tfillStyle: fill,\n\t\t\t\t\t\t\tstrokeStyle: stroke,\n\t\t\t\t\t\t\tlineWidth: bw,\n\t\t\t\t\t\t\thidden: isNaN(ds.data[i]) || meta.data[i].hidden,\n\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\n\t\t\t\t\t\t\tindex: i\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn [];\n\t\t\t}\n\t\t},\n\n\t\tonClick: function(e, legendItem) {\n\t\t\tvar index = legendItem.index;\n\t\t\tvar chart = this.chart;\n\t\t\tvar i, ilen, meta;\n\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\n\t\t\t}\n\n\t\t\tchart.update();\n\t\t}\n\t},\n\n\t// Need to override these to give a nice default\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\treturn '';\n\t\t\t},\n\t\t\tlabel: function(item, data) {\n\t\t\t\treturn data.labels[item.index] + ': ' + item.yLabel;\n\t\t\t}\n\t\t}\n\t}\n});\n\nmodule.exports = function(Chart) {\n\n\tChart.controllers.polarArea = Chart.DatasetController.extend({\n\n\t\tdataElementType: elements.Arc,\n\n\t\tlinkScales: helpers.noop,\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar start = me.chart.options.startAngle || 0;\n\t\t\tvar starts = me._starts = [];\n\t\t\tvar angles = me._angles = [];\n\t\t\tvar i, ilen, angle;\n\n\t\t\tme._updateRadius();\n\n\t\t\tmeta.count = me.countVisibleElements();\n\n\t\t\tfor (i = 0, ilen = dataset.data.length; i < ilen; i++) {\n\t\t\t\tstarts[i] = start;\n\t\t\t\tangle = me._computeAngle(i);\n\t\t\t\tangles[i] = angle;\n\t\t\t\tstart += angle;\n\t\t\t}\n\n\t\t\thelpers.each(meta.data, function(arc, index) {\n\t\t\t\tme.updateElement(arc, index, reset);\n\t\t\t});\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\t_updateRadius: function() {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar chartArea = chart.chartArea;\n\t\t\tvar opts = chart.options;\n\t\t\tvar arcOpts = opts.elements.arc;\n\t\t\tvar minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n\n\t\t\tchart.outerRadius = Math.max((minSize - arcOpts.borderWidth / 2) / 2, 0);\n\t\t\tchart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n\t\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\n\n\t\t\tme.outerRadius = chart.outerRadius - (chart.radiusLength * me.index);\n\t\t\tme.innerRadius = me.outerRadius - chart.radiusLength;\n\t\t},\n\n\t\tupdateElement: function(arc, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar opts = chart.options;\n\t\t\tvar animationOpts = opts.animation;\n\t\t\tvar scale = chart.scale;\n\t\t\tvar labels = chart.data.labels;\n\n\t\t\tvar centerX = scale.xCenter;\n\t\t\tvar centerY = scale.yCenter;\n\n\t\t\t// var negHalfPI = -0.5 * Math.PI;\n\t\t\tvar datasetStartAngle = opts.startAngle;\n\t\t\tvar distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\n\t\t\tvar startAngle = me._starts[index];\n\t\t\tvar endAngle = startAngle + (arc.hidden ? 0 : me._angles[index]);\n\n\t\t\tvar resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\n\n\t\t\thelpers.extend(arc, {\n\t\t\t\t// Utility\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_index: index,\n\t\t\t\t_scale: scale,\n\n\t\t\t\t// Desired view properties\n\t\t\t\t_model: {\n\t\t\t\t\tx: centerX,\n\t\t\t\t\ty: centerY,\n\t\t\t\t\tinnerRadius: 0,\n\t\t\t\t\touterRadius: reset ? resetRadius : distance,\n\t\t\t\t\tstartAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle,\n\t\t\t\t\tendAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle,\n\t\t\t\t\tlabel: helpers.valueAtIndexOrDefault(labels, index, labels[index])\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Apply border and fill style\n\t\t\tvar elementOpts = this.chart.options.elements.arc;\n\t\t\tvar custom = arc.custom || {};\n\t\t\tvar valueOrDefault = helpers.valueAtIndexOrDefault;\n\t\t\tvar model = arc._model;\n\n\t\t\tmodel.backgroundColor = custom.backgroundColor ? custom.backgroundColor : valueOrDefault(dataset.backgroundColor, index, elementOpts.backgroundColor);\n\t\t\tmodel.borderColor = custom.borderColor ? custom.borderColor : valueOrDefault(dataset.borderColor, index, elementOpts.borderColor);\n\t\t\tmodel.borderWidth = custom.borderWidth ? custom.borderWidth : valueOrDefault(dataset.borderWidth, index, elementOpts.borderWidth);\n\n\t\t\tarc.pivot();\n\t\t},\n\n\t\tcountVisibleElements: function() {\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar meta = this.getMeta();\n\t\t\tvar count = 0;\n\n\t\t\thelpers.each(meta.data, function(element, index) {\n\t\t\t\tif (!isNaN(dataset.data[index]) && !element.hidden) {\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn count;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\t_computeAngle: function(index) {\n\t\t\tvar me = this;\n\t\t\tvar count = this.getMeta().count;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar meta = me.getMeta();\n\n\t\t\tif (isNaN(dataset.data[index]) || meta.data[index].hidden) {\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\t// Scriptable options\n\t\t\tvar context = {\n\t\t\t\tchart: me.chart,\n\t\t\t\tdataIndex: index,\n\t\t\t\tdataset: dataset,\n\t\t\t\tdatasetIndex: me.index\n\t\t\t};\n\n\t\t\treturn helpers.options.resolve([\n\t\t\t\tme.chart.options.elements.arc.angle,\n\t\t\t\t(2 * Math.PI) / count\n\t\t\t], context, index);\n\t\t}\n\t});\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar Animation = require('./core.animation');\nvar animations = require('./core.animations');\nvar defaults = require('./core.defaults');\nvar helpers = require('../helpers/index');\nvar Interaction = require('./core.interaction');\nvar layouts = require('./core.layouts');\nvar platform = require('../platforms/platform');\nvar plugins = require('./core.plugins');\nvar scaleService = require('../core/core.scaleService');\nvar Tooltip = require('./core.tooltip');\n\nmodule.exports = function(Chart) {\n\n\t// Create a dictionary of chart types, to allow for extension of existing types\n\tChart.types = {};\n\n\t// Store a reference to each instance - allowing us to globally resize chart instances on window resize.\n\t// Destroy method on the chart will remove the instance of the chart from this reference.\n\tChart.instances = {};\n\n\t// Controllers available for dataset visualization eg. bar, line, slice, etc.\n\tChart.controllers = {};\n\n\t/**\n\t * Initializes the given config with global and chart default values.\n\t */\n\tfunction initConfig(config) {\n\t\tconfig = config || {};\n\n\t\t// Do NOT use configMerge() for the data object because this method merges arrays\n\t\t// and so would change references to labels and datasets, preventing data updates.\n\t\tvar data = config.data = config.data || {};\n\t\tdata.datasets = data.datasets || [];\n\t\tdata.labels = data.labels || [];\n\n\t\tconfig.options = helpers.configMerge(\n\t\t\tdefaults.global,\n\t\t\tdefaults[config.type],\n\t\t\tconfig.options || {});\n\n\t\treturn config;\n\t}\n\n\t/**\n\t * Updates the config of the chart\n\t * @param chart {Chart} chart to update the options for\n\t */\n\tfunction updateConfig(chart) {\n\t\tvar newOptions = chart.options;\n\n\t\thelpers.each(chart.scales, function(scale) {\n\t\t\tlayouts.removeBox(chart, scale);\n\t\t});\n\n\t\tnewOptions = helpers.configMerge(\n\t\t\tChart.defaults.global,\n\t\t\tChart.defaults[chart.config.type],\n\t\t\tnewOptions);\n\n\t\tchart.options = chart.config.options = newOptions;\n\t\tchart.ensureScalesHaveIDs();\n\t\tchart.buildOrUpdateScales();\n\t\t// Tooltip\n\t\tchart.tooltip._options = newOptions.tooltips;\n\t\tchart.tooltip.initialize();\n\t}\n\n\tfunction positionIsHorizontal(position) {\n\t\treturn position === 'top' || position === 'bottom';\n\t}\n\n\thelpers.extend(Chart.prototype, /** @lends Chart */ {\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tconstruct: function(item, config) {\n\t\t\tvar me = this;\n\n\t\t\tconfig = initConfig(config);\n\n\t\t\tvar context = platform.acquireContext(item, config);\n\t\t\tvar canvas = context && context.canvas;\n\t\t\tvar height = canvas && canvas.height;\n\t\t\tvar width = canvas && canvas.width;\n\n\t\t\tme.id = helpers.uid();\n\t\t\tme.ctx = context;\n\t\t\tme.canvas = canvas;\n\t\t\tme.config = config;\n\t\t\tme.width = width;\n\t\t\tme.height = height;\n\t\t\tme.aspectRatio = height ? width / height : null;\n\t\t\tme.options = config.options;\n\t\t\tme._bufferedRender = false;\n\n\t\t\t/**\n\t\t\t * Provided for backward compatibility, Chart and Chart.Controller have been merged,\n\t\t\t * the \"instance\" still need to be defined since it might be called from plugins.\n\t\t\t * @prop Chart#chart\n\t\t\t * @deprecated since version 2.6.0\n\t\t\t * @todo remove at version 3\n\t\t\t * @private\n\t\t\t */\n\t\t\tme.chart = me;\n\t\t\tme.controller = me; // chart.chart.controller #inception\n\n\t\t\t// Add the chart instance to the global namespace\n\t\t\tChart.instances[me.id] = me;\n\n\t\t\t// Define alias to the config data: `chart.data === chart.config.data`\n\t\t\tObject.defineProperty(me, 'data', {\n\t\t\t\tget: function() {\n\t\t\t\t\treturn me.config.data;\n\t\t\t\t},\n\t\t\t\tset: function(value) {\n\t\t\t\t\tme.config.data = value;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (!context || !canvas) {\n\t\t\t\t// The given item is not a compatible context2d element, let's return before finalizing\n\t\t\t\t// the chart initialization but after setting basic chart / controller properties that\n\t\t\t\t// can help to figure out that the chart is not valid (e.g chart.canvas !== null);\n\t\t\t\t// https://github.com/chartjs/Chart.js/issues/2807\n\t\t\t\tconsole.error(\"Failed to create chart: can't acquire context from the given item\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tme.initialize();\n\t\t\tme.update();\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tinitialize: function() {\n\t\t\tvar me = this;\n\n\t\t\t// Before init plugin notification\n\t\t\tplugins.notify(me, 'beforeInit');\n\n\t\t\thelpers.retinaScale(me, me.options.devicePixelRatio);\n\n\t\t\tme.bindEvents();\n\n\t\t\tif (me.options.responsive) {\n\t\t\t\t// Initial resize before chart draws (must be silent to preserve initial animations).\n\t\t\t\tme.resize(true);\n\t\t\t}\n\n\t\t\t// Make sure scales have IDs and are built before we build any controllers.\n\t\t\tme.ensureScalesHaveIDs();\n\t\t\tme.buildOrUpdateScales();\n\t\t\tme.initToolTip();\n\n\t\t\t// After init plugin notification\n\t\t\tplugins.notify(me, 'afterInit');\n\n\t\t\treturn me;\n\t\t},\n\n\t\tclear: function() {\n\t\t\thelpers.canvas.clear(this);\n\t\t\treturn this;\n\t\t},\n\n\t\tstop: function() {\n\t\t\t// Stops any current animation loop occurring\n\t\t\tanimations.cancelAnimation(this);\n\t\t\treturn this;\n\t\t},\n\n\t\tresize: function(silent) {\n\t\t\tvar me = this;\n\t\t\tvar options = me.options;\n\t\t\tvar canvas = me.canvas;\n\t\t\tvar aspectRatio = (options.maintainAspectRatio && me.aspectRatio) || null;\n\n\t\t\t// the canvas render width and height will be casted to integers so make sure that\n\t\t\t// the canvas display style uses the same integer values to avoid blurring effect.\n\n\t\t\t// Set to 0 instead of canvas.size because the size defaults to 300x150 if the element is collapsed\n\t\t\tvar newWidth = Math.max(0, Math.floor(helpers.getMaximumWidth(canvas)));\n\t\t\tvar newHeight = Math.max(0, Math.floor(aspectRatio ? newWidth / aspectRatio : helpers.getMaximumHeight(canvas)));\n\n\t\t\tif (me.width === newWidth && me.height === newHeight) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcanvas.width = me.width = newWidth;\n\t\t\tcanvas.height = me.height = newHeight;\n\t\t\tcanvas.style.width = newWidth + 'px';\n\t\t\tcanvas.style.height = newHeight + 'px';\n\n\t\t\thelpers.retinaScale(me, options.devicePixelRatio);\n\n\t\t\tif (!silent) {\n\t\t\t\t// Notify any plugins about the resize\n\t\t\t\tvar newSize = {width: newWidth, height: newHeight};\n\t\t\t\tplugins.notify(me, 'resize', [newSize]);\n\n\t\t\t\t// Notify of resize\n\t\t\t\tif (me.options.onResize) {\n\t\t\t\t\tme.options.onResize(me, newSize);\n\t\t\t\t}\n\n\t\t\t\tme.stop();\n\t\t\t\tme.update({\n\t\t\t\t\tduration: me.options.responsiveAnimationDuration\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\tensureScalesHaveIDs: function() {\n\t\t\tvar options = this.options;\n\t\t\tvar scalesOptions = options.scales || {};\n\t\t\tvar scaleOptions = options.scale;\n\n\t\t\thelpers.each(scalesOptions.xAxes, function(xAxisOptions, index) {\n\t\t\t\txAxisOptions.id = xAxisOptions.id || ('x-axis-' + index);\n\t\t\t});\n\n\t\t\thelpers.each(scalesOptions.yAxes, function(yAxisOptions, index) {\n\t\t\t\tyAxisOptions.id = yAxisOptions.id || ('y-axis-' + index);\n\t\t\t});\n\n\t\t\tif (scaleOptions) {\n\t\t\t\tscaleOptions.id = scaleOptions.id || 'scale';\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Builds a map of scale ID to scale object for future lookup.\n\t\t */\n\t\tbuildOrUpdateScales: function() {\n\t\t\tvar me = this;\n\t\t\tvar options = me.options;\n\t\t\tvar scales = me.scales || {};\n\t\t\tvar items = [];\n\t\t\tvar updated = Object.keys(scales).reduce(function(obj, id) {\n\t\t\t\tobj[id] = false;\n\t\t\t\treturn obj;\n\t\t\t}, {});\n\n\t\t\tif (options.scales) {\n\t\t\t\titems = items.concat(\n\t\t\t\t\t(options.scales.xAxes || []).map(function(xAxisOptions) {\n\t\t\t\t\t\treturn {options: xAxisOptions, dtype: 'category', dposition: 'bottom'};\n\t\t\t\t\t}),\n\t\t\t\t\t(options.scales.yAxes || []).map(function(yAxisOptions) {\n\t\t\t\t\t\treturn {options: yAxisOptions, dtype: 'linear', dposition: 'left'};\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (options.scale) {\n\t\t\t\titems.push({\n\t\t\t\t\toptions: options.scale,\n\t\t\t\t\tdtype: 'radialLinear',\n\t\t\t\t\tisDefault: true,\n\t\t\t\t\tdposition: 'chartArea'\n\t\t\t\t});\n\t\t\t}\n\n\t\t\thelpers.each(items, function(item) {\n\t\t\t\tvar scaleOptions = item.options;\n\t\t\t\tvar id = scaleOptions.id;\n\t\t\t\tvar scaleType = helpers.valueOrDefault(scaleOptions.type, item.dtype);\n\n\t\t\t\tif (positionIsHorizontal(scaleOptions.position) !== positionIsHorizontal(item.dposition)) {\n\t\t\t\t\tscaleOptions.position = item.dposition;\n\t\t\t\t}\n\n\t\t\t\tupdated[id] = true;\n\t\t\t\tvar scale = null;\n\t\t\t\tif (id in scales && scales[id].type === scaleType) {\n\t\t\t\t\tscale = scales[id];\n\t\t\t\t\tscale.options = scaleOptions;\n\t\t\t\t\tscale.ctx = me.ctx;\n\t\t\t\t\tscale.chart = me;\n\t\t\t\t} else {\n\t\t\t\t\tvar scaleClass = scaleService.getScaleConstructor(scaleType);\n\t\t\t\t\tif (!scaleClass) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tscale = new scaleClass({\n\t\t\t\t\t\tid: id,\n\t\t\t\t\t\ttype: scaleType,\n\t\t\t\t\t\toptions: scaleOptions,\n\t\t\t\t\t\tctx: me.ctx,\n\t\t\t\t\t\tchart: me\n\t\t\t\t\t});\n\t\t\t\t\tscales[scale.id] = scale;\n\t\t\t\t}\n\n\t\t\t\tscale.mergeTicksOptions();\n\n\t\t\t\t// TODO(SB): I think we should be able to remove this custom case (options.scale)\n\t\t\t\t// and consider it as a regular scale part of the \"scales\"\" map only! This would\n\t\t\t\t// make the logic easier and remove some useless? custom code.\n\t\t\t\tif (item.isDefault) {\n\t\t\t\t\tme.scale = scale;\n\t\t\t\t}\n\t\t\t});\n\t\t\t// clear up discarded scales\n\t\t\thelpers.each(updated, function(hasUpdated, id) {\n\t\t\t\tif (!hasUpdated) {\n\t\t\t\t\tdelete scales[id];\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tme.scales = scales;\n\n\t\t\tscaleService.addScalesToLayout(this);\n\t\t},\n\n\t\tbuildOrUpdateControllers: function() {\n\t\t\tvar me = this;\n\t\t\tvar types = [];\n\t\t\tvar newControllers = [];\n\n\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\tvar meta = me.getDatasetMeta(datasetIndex);\n\t\t\t\tvar type = dataset.type || me.config.type;\n\n\t\t\t\tif (meta.type && meta.type !== type) {\n\t\t\t\t\tme.destroyDatasetMeta(datasetIndex);\n\t\t\t\t\tmeta = me.getDatasetMeta(datasetIndex);\n\t\t\t\t}\n\t\t\t\tmeta.type = type;\n\n\t\t\t\ttypes.push(meta.type);\n\n\t\t\t\tif (meta.controller) {\n\t\t\t\t\tmeta.controller.updateIndex(datasetIndex);\n\t\t\t\t\tmeta.controller.linkScales();\n\t\t\t\t} else {\n\t\t\t\t\tvar ControllerClass = Chart.controllers[meta.type];\n\t\t\t\t\tif (ControllerClass === undefined) {\n\t\t\t\t\t\tthrow new Error('\"' + meta.type + '\" is not a chart type.');\n\t\t\t\t\t}\n\n\t\t\t\t\tmeta.controller = new ControllerClass(me, datasetIndex);\n\t\t\t\t\tnewControllers.push(meta.controller);\n\t\t\t\t}\n\t\t\t}, me);\n\n\t\t\treturn newControllers;\n\t\t},\n\n\t\t/**\n\t\t * Reset the elements of all datasets\n\t\t * @private\n\t\t */\n\t\tresetElements: function() {\n\t\t\tvar me = this;\n\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\tme.getDatasetMeta(datasetIndex).controller.reset();\n\t\t\t}, me);\n\t\t},\n\n\t\t/**\n\t\t* Resets the chart back to it's state before the initial animation\n\t\t*/\n\t\treset: function() {\n\t\t\tthis.resetElements();\n\t\t\tthis.tooltip.initialize();\n\t\t},\n\n\t\tupdate: function(config) {\n\t\t\tvar me = this;\n\n\t\t\tif (!config || typeof config !== 'object') {\n\t\t\t\t// backwards compatibility\n\t\t\t\tconfig = {\n\t\t\t\t\tduration: config,\n\t\t\t\t\tlazy: arguments[1]\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tupdateConfig(me);\n\n\t\t\t// plugins options references might have change, let's invalidate the cache\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\n\t\t\tplugins._invalidate(me);\n\n\t\t\tif (plugins.notify(me, 'beforeUpdate') === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// In case the entire data object changed\n\t\t\tme.tooltip._data = me.data;\n\n\t\t\t// Make sure dataset controllers are updated and new controllers are reset\n\t\t\tvar newControllers = me.buildOrUpdateControllers();\n\n\t\t\t// Make sure all dataset controllers have correct meta data counts\n\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\tme.getDatasetMeta(datasetIndex).controller.buildOrUpdateElements();\n\t\t\t}, me);\n\n\t\t\tme.updateLayout();\n\n\t\t\t// Can only reset the new controllers after the scales have been updated\n\t\t\tif (me.options.animation && me.options.animation.duration) {\n\t\t\t\thelpers.each(newControllers, function(controller) {\n\t\t\t\t\tcontroller.reset();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tme.updateDatasets();\n\n\t\t\t// Need to reset tooltip in case it is displayed with elements that are removed\n\t\t\t// after update.\n\t\t\tme.tooltip.initialize();\n\n\t\t\t// Last active contains items that were previously in the tooltip.\n\t\t\t// When we reset the tooltip, we need to clear it\n\t\t\tme.lastActive = [];\n\n\t\t\t// Do this before render so that any plugins that need final scale updates can use it\n\t\t\tplugins.notify(me, 'afterUpdate');\n\n\t\t\tif (me._bufferedRender) {\n\t\t\t\tme._bufferedRequest = {\n\t\t\t\t\tduration: config.duration,\n\t\t\t\t\teasing: config.easing,\n\t\t\t\t\tlazy: config.lazy\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tme.render(config);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Updates the chart layout unless a plugin returns `false` to the `beforeLayout`\n\t\t * hook, in which case, plugins will not be called on `afterLayout`.\n\t\t * @private\n\t\t */\n\t\tupdateLayout: function() {\n\t\t\tvar me = this;\n\n\t\t\tif (plugins.notify(me, 'beforeLayout') === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlayouts.update(this, this.width, this.height);\n\n\t\t\t/**\n\t\t\t * Provided for backward compatibility, use `afterLayout` instead.\n\t\t\t * @method IPlugin#afterScaleUpdate\n\t\t\t * @deprecated since version 2.5.0\n\t\t\t * @todo remove at version 3\n\t\t\t * @private\n\t\t\t */\n\t\t\tplugins.notify(me, 'afterScaleUpdate');\n\t\t\tplugins.notify(me, 'afterLayout');\n\t\t},\n\n\t\t/**\n\t\t * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate`\n\t\t * hook, in which case, plugins will not be called on `afterDatasetsUpdate`.\n\t\t * @private\n\t\t */\n\t\tupdateDatasets: function() {\n\t\t\tvar me = this;\n\n\t\t\tif (plugins.notify(me, 'beforeDatasetsUpdate') === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\n\t\t\t\tme.updateDataset(i);\n\t\t\t}\n\n\t\t\tplugins.notify(me, 'afterDatasetsUpdate');\n\t\t},\n\n\t\t/**\n\t\t * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate`\n\t\t * hook, in which case, plugins will not be called on `afterDatasetUpdate`.\n\t\t * @private\n\t\t */\n\t\tupdateDataset: function(index) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getDatasetMeta(index);\n\t\t\tvar args = {\n\t\t\t\tmeta: meta,\n\t\t\t\tindex: index\n\t\t\t};\n\n\t\t\tif (plugins.notify(me, 'beforeDatasetUpdate', [args]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmeta.controller.update();\n\n\t\t\tplugins.notify(me, 'afterDatasetUpdate', [args]);\n\t\t},\n\n\t\trender: function(config) {\n\t\t\tvar me = this;\n\n\t\t\tif (!config || typeof config !== 'object') {\n\t\t\t\t// backwards compatibility\n\t\t\t\tconfig = {\n\t\t\t\t\tduration: config,\n\t\t\t\t\tlazy: arguments[1]\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tvar duration = config.duration;\n\t\t\tvar lazy = config.lazy;\n\n\t\t\tif (plugins.notify(me, 'beforeRender') === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar animationOptions = me.options.animation;\n\t\t\tvar onComplete = function(animation) {\n\t\t\t\tplugins.notify(me, 'afterRender');\n\t\t\t\thelpers.callback(animationOptions && animationOptions.onComplete, [animation], me);\n\t\t\t};\n\n\t\t\tif (animationOptions && ((typeof duration !== 'undefined' && duration !== 0) || (typeof duration === 'undefined' && animationOptions.duration !== 0))) {\n\t\t\t\tvar animation = new Animation({\n\t\t\t\t\tnumSteps: (duration || animationOptions.duration) / 16.66, // 60 fps\n\t\t\t\t\teasing: config.easing || animationOptions.easing,\n\n\t\t\t\t\trender: function(chart, animationObject) {\n\t\t\t\t\t\tvar easingFunction = helpers.easing.effects[animationObject.easing];\n\t\t\t\t\t\tvar currentStep = animationObject.currentStep;\n\t\t\t\t\t\tvar stepDecimal = currentStep / animationObject.numSteps;\n\n\t\t\t\t\t\tchart.draw(easingFunction(stepDecimal), stepDecimal, currentStep);\n\t\t\t\t\t},\n\n\t\t\t\t\tonAnimationProgress: animationOptions.onProgress,\n\t\t\t\t\tonAnimationComplete: onComplete\n\t\t\t\t});\n\n\t\t\t\tanimations.addAnimation(me, animation, duration, lazy);\n\t\t\t} else {\n\t\t\t\tme.draw();\n\n\t\t\t\t// See https://github.com/chartjs/Chart.js/issues/3781\n\t\t\t\tonComplete(new Animation({numSteps: 0, chart: me}));\n\t\t\t}\n\n\t\t\treturn me;\n\t\t},\n\n\t\tdraw: function(easingValue) {\n\t\t\tvar me = this;\n\n\t\t\tme.clear();\n\n\t\t\tif (helpers.isNullOrUndef(easingValue)) {\n\t\t\t\teasingValue = 1;\n\t\t\t}\n\n\t\t\tme.transition(easingValue);\n\n\t\t\tif (me.width <= 0 || me.height <= 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (plugins.notify(me, 'beforeDraw', [easingValue]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Draw all the scales\n\t\t\thelpers.each(me.boxes, function(box) {\n\t\t\t\tbox.draw(me.chartArea);\n\t\t\t}, me);\n\n\t\t\tif (me.scale) {\n\t\t\t\tme.scale.draw();\n\t\t\t}\n\n\t\t\tme.drawDatasets(easingValue);\n\t\t\tme._drawTooltip(easingValue);\n\n\t\t\tplugins.notify(me, 'afterDraw', [easingValue]);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\ttransition: function(easingValue) {\n\t\t\tvar me = this;\n\n\t\t\tfor (var i = 0, ilen = (me.data.datasets || []).length; i < ilen; ++i) {\n\t\t\t\tif (me.isDatasetVisible(i)) {\n\t\t\t\t\tme.getDatasetMeta(i).controller.transition(easingValue);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tme.tooltip.transition(easingValue);\n\t\t},\n\n\t\t/**\n\t\t * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw`\n\t\t * hook, in which case, plugins will not be called on `afterDatasetsDraw`.\n\t\t * @private\n\t\t */\n\t\tdrawDatasets: function(easingValue) {\n\t\t\tvar me = this;\n\n\t\t\tif (plugins.notify(me, 'beforeDatasetsDraw', [easingValue]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Draw datasets reversed to support proper line stacking\n\t\t\tfor (var i = (me.data.datasets || []).length - 1; i >= 0; --i) {\n\t\t\t\tif (me.isDatasetVisible(i)) {\n\t\t\t\t\tme.drawDataset(i, easingValue);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tplugins.notify(me, 'afterDatasetsDraw', [easingValue]);\n\t\t},\n\n\t\t/**\n\t\t * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw`\n\t\t * hook, in which case, plugins will not be called on `afterDatasetDraw`.\n\t\t * @private\n\t\t */\n\t\tdrawDataset: function(index, easingValue) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getDatasetMeta(index);\n\t\t\tvar args = {\n\t\t\t\tmeta: meta,\n\t\t\t\tindex: index,\n\t\t\t\teasingValue: easingValue\n\t\t\t};\n\n\t\t\tif (plugins.notify(me, 'beforeDatasetDraw', [args]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmeta.controller.draw(easingValue);\n\n\t\t\tplugins.notify(me, 'afterDatasetDraw', [args]);\n\t\t},\n\n\t\t/**\n\t\t * Draws tooltip unless a plugin returns `false` to the `beforeTooltipDraw`\n\t\t * hook, in which case, plugins will not be called on `afterTooltipDraw`.\n\t\t * @private\n\t\t */\n\t\t_drawTooltip: function(easingValue) {\n\t\t\tvar me = this;\n\t\t\tvar tooltip = me.tooltip;\n\t\t\tvar args = {\n\t\t\t\ttooltip: tooltip,\n\t\t\t\teasingValue: easingValue\n\t\t\t};\n\n\t\t\tif (plugins.notify(me, 'beforeTooltipDraw', [args]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttooltip.draw();\n\n\t\t\tplugins.notify(me, 'afterTooltipDraw', [args]);\n\t\t},\n\n\t\t// Get the single element that was clicked on\n\t\t// @return : An object containing the dataset index and element index of the matching element. Also contains the rectangle that was draw\n\t\tgetElementAtEvent: function(e) {\n\t\t\treturn Interaction.modes.single(this, e);\n\t\t},\n\n\t\tgetElementsAtEvent: function(e) {\n\t\t\treturn Interaction.modes.label(this, e, {intersect: true});\n\t\t},\n\n\t\tgetElementsAtXAxis: function(e) {\n\t\t\treturn Interaction.modes['x-axis'](this, e, {intersect: true});\n\t\t},\n\n\t\tgetElementsAtEventForMode: function(e, mode, options) {\n\t\t\tvar method = Interaction.modes[mode];\n\t\t\tif (typeof method === 'function') {\n\t\t\t\treturn method(this, e, options);\n\t\t\t}\n\n\t\t\treturn [];\n\t\t},\n\n\t\tgetDatasetAtEvent: function(e) {\n\t\t\treturn Interaction.modes.dataset(this, e, {intersect: true});\n\t\t},\n\n\t\tgetDatasetMeta: function(datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar dataset = me.data.datasets[datasetIndex];\n\t\t\tif (!dataset._meta) {\n\t\t\t\tdataset._meta = {};\n\t\t\t}\n\n\t\t\tvar meta = dataset._meta[me.id];\n\t\t\tif (!meta) {\n\t\t\t\tmeta = dataset._meta[me.id] = {\n\t\t\t\t\ttype: null,\n\t\t\t\t\tdata: [],\n\t\t\t\t\tdataset: null,\n\t\t\t\t\tcontroller: null,\n\t\t\t\t\thidden: null,\t\t\t// See isDatasetVisible() comment\n\t\t\t\t\txAxisID: null,\n\t\t\t\t\tyAxisID: null\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn meta;\n\t\t},\n\n\t\tgetVisibleDatasetCount: function() {\n\t\t\tvar count = 0;\n\t\t\tfor (var i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n\t\t\t\tif (this.isDatasetVisible(i)) {\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn count;\n\t\t},\n\n\t\tisDatasetVisible: function(datasetIndex) {\n\t\t\tvar meta = this.getDatasetMeta(datasetIndex);\n\n\t\t\t// meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false,\n\t\t\t// the dataset.hidden value is ignored, else if null, the dataset hidden state is returned.\n\t\t\treturn typeof meta.hidden === 'boolean' ? !meta.hidden : !this.data.datasets[datasetIndex].hidden;\n\t\t},\n\n\t\tgenerateLegend: function() {\n\t\t\treturn this.options.legendCallback(this);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tdestroyDatasetMeta: function(datasetIndex) {\n\t\t\tvar id = this.id;\n\t\t\tvar dataset = this.data.datasets[datasetIndex];\n\t\t\tvar meta = dataset._meta && dataset._meta[id];\n\n\t\t\tif (meta) {\n\t\t\t\tmeta.controller.destroy();\n\t\t\t\tdelete dataset._meta[id];\n\t\t\t}\n\t\t},\n\n\t\tdestroy: function() {\n\t\t\tvar me = this;\n\t\t\tvar canvas = me.canvas;\n\t\t\tvar i, ilen;\n\n\t\t\tme.stop();\n\n\t\t\t// dataset controllers need to cleanup associated data\n\t\t\tfor (i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\n\t\t\t\tme.destroyDatasetMeta(i);\n\t\t\t}\n\n\t\t\tif (canvas) {\n\t\t\t\tme.unbindEvents();\n\t\t\t\thelpers.canvas.clear(me);\n\t\t\t\tplatform.releaseContext(me.ctx);\n\t\t\t\tme.canvas = null;\n\t\t\t\tme.ctx = null;\n\t\t\t}\n\n\t\t\tplugins.notify(me, 'destroy');\n\n\t\t\tdelete Chart.instances[me.id];\n\t\t},\n\n\t\ttoBase64Image: function() {\n\t\t\treturn this.canvas.toDataURL.apply(this.canvas, arguments);\n\t\t},\n\n\t\tinitToolTip: function() {\n\t\t\tvar me = this;\n\t\t\tme.tooltip = new Tooltip({\n\t\t\t\t_chart: me,\n\t\t\t\t_chartInstance: me, // deprecated, backward compatibility\n\t\t\t\t_data: me.data,\n\t\t\t\t_options: me.options.tooltips\n\t\t\t}, me);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tbindEvents: function() {\n\t\t\tvar me = this;\n\t\t\tvar listeners = me._listeners = {};\n\t\t\tvar listener = function() {\n\t\t\t\tme.eventHandler.apply(me, arguments);\n\t\t\t};\n\n\t\t\thelpers.each(me.options.events, function(type) {\n\t\t\t\tplatform.addEventListener(me, type, listener);\n\t\t\t\tlisteners[type] = listener;\n\t\t\t});\n\n\t\t\t// Elements used to detect size change should not be injected for non responsive charts.\n\t\t\t// See https://github.com/chartjs/Chart.js/issues/2210\n\t\t\tif (me.options.responsive) {\n\t\t\t\tlistener = function() {\n\t\t\t\t\tme.resize();\n\t\t\t\t};\n\n\t\t\t\tplatform.addEventListener(me, 'resize', listener);\n\t\t\t\tlisteners.resize = listener;\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tunbindEvents: function() {\n\t\t\tvar me = this;\n\t\t\tvar listeners = me._listeners;\n\t\t\tif (!listeners) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdelete me._listeners;\n\t\t\thelpers.each(listeners, function(listener, type) {\n\t\t\t\tplatform.removeEventListener(me, type, listener);\n\t\t\t});\n\t\t},\n\n\t\tupdateHoverStyle: function(elements, mode, enabled) {\n\t\t\tvar method = enabled ? 'setHoverStyle' : 'removeHoverStyle';\n\t\t\tvar element, i, ilen;\n\n\t\t\tfor (i = 0, ilen = elements.length; i < ilen; ++i) {\n\t\t\t\telement = elements[i];\n\t\t\t\tif (element) {\n\t\t\t\t\tthis.getDatasetMeta(element._datasetIndex).controller[method](element);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\teventHandler: function(e) {\n\t\t\tvar me = this;\n\t\t\tvar tooltip = me.tooltip;\n\n\t\t\tif (plugins.notify(me, 'beforeEvent', [e]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Buffer any update calls so that renders do not occur\n\t\t\tme._bufferedRender = true;\n\t\t\tme._bufferedRequest = null;\n\n\t\t\tvar changed = me.handleEvent(e);\n\t\t\t// for smooth tooltip animations issue #4989\n\t\t\t// the tooltip should be the source of change\n\t\t\t// Animation check workaround:\n\t\t\t// tooltip._start will be null when tooltip isn't animating\n\t\t\tif (tooltip) {\n\t\t\t\tchanged = tooltip._start\n\t\t\t\t\t? tooltip.handleEvent(e)\n\t\t\t\t\t: changed | tooltip.handleEvent(e);\n\t\t\t}\n\n\t\t\tplugins.notify(me, 'afterEvent', [e]);\n\n\t\t\tvar bufferedRequest = me._bufferedRequest;\n\t\t\tif (bufferedRequest) {\n\t\t\t\t// If we have an update that was triggered, we need to do a normal render\n\t\t\t\tme.render(bufferedRequest);\n\t\t\t} else if (changed && !me.animating) {\n\t\t\t\t// If entering, leaving, or changing elements, animate the change via pivot\n\t\t\t\tme.stop();\n\n\t\t\t\t// We only need to render at this point. Updating will cause scales to be\n\t\t\t\t// recomputed generating flicker & using more memory than necessary.\n\t\t\t\tme.render({\n\t\t\t\t\tduration: me.options.hover.animationDuration,\n\t\t\t\t\tlazy: true\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tme._bufferedRender = false;\n\t\t\tme._bufferedRequest = null;\n\n\t\t\treturn me;\n\t\t},\n\n\t\t/**\n\t\t * Handle an event\n\t\t * @private\n\t\t * @param {IEvent} event the event to handle\n\t\t * @return {Boolean} true if the chart needs to re-render\n\t\t */\n\t\thandleEvent: function(e) {\n\t\t\tvar me = this;\n\t\t\tvar options = me.options || {};\n\t\t\tvar hoverOptions = options.hover;\n\t\t\tvar changed = false;\n\n\t\t\tme.lastActive = me.lastActive || [];\n\n\t\t\t// Find Active Elements for hover and tooltips\n\t\t\tif (e.type === 'mouseout') {\n\t\t\t\tme.active = [];\n\t\t\t} else {\n\t\t\t\tme.active = me.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions);\n\t\t\t}\n\n\t\t\t// Invoke onHover hook\n\t\t\t// Need to call with native event here to not break backwards compatibility\n\t\t\thelpers.callback(options.onHover || options.hover.onHover, [e.native, me.active], me);\n\n\t\t\tif (e.type === 'mouseup' || e.type === 'click') {\n\t\t\t\tif (options.onClick) {\n\t\t\t\t\t// Use e.native here for backwards compatibility\n\t\t\t\t\toptions.onClick.call(me, e.native, me.active);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove styling for last active (even if it may still be active)\n\t\t\tif (me.lastActive.length) {\n\t\t\t\tme.updateHoverStyle(me.lastActive, hoverOptions.mode, false);\n\t\t\t}\n\n\t\t\t// Built in hover styling\n\t\t\tif (me.active.length && hoverOptions.mode) {\n\t\t\t\tme.updateHoverStyle(me.active, hoverOptions.mode, true);\n\t\t\t}\n\n\t\t\tchanged = !helpers.arrayEquals(me.active, me.lastActive);\n\n\t\t\t// Remember Last Actives\n\t\t\tme.lastActive = me.active;\n\n\t\t\treturn changed;\n\t\t}\n\t});\n\n\t/**\n\t * Provided for backward compatibility, use Chart instead.\n\t * @class Chart.Controller\n\t * @deprecated since version 2.6.0\n\t * @todo remove at version 3\n\t * @private\n\t */\n\tChart.Controller = Chart;\n};\n","/* MIT license */\nvar convert = require('color-convert');\nvar string = require('chartjs-color-string');\n\nvar Color = function (obj) {\n\tif (obj instanceof Color) {\n\t\treturn obj;\n\t}\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(obj);\n\t}\n\n\tthis.valid = false;\n\tthis.values = {\n\t\trgb: [0, 0, 0],\n\t\thsl: [0, 0, 0],\n\t\thsv: [0, 0, 0],\n\t\thwb: [0, 0, 0],\n\t\tcmyk: [0, 0, 0, 0],\n\t\talpha: 1\n\t};\n\n\t// parse Color() argument\n\tvar vals;\n\tif (typeof obj === 'string') {\n\t\tvals = string.getRgba(obj);\n\t\tif (vals) {\n\t\t\tthis.setValues('rgb', vals);\n\t\t} else if (vals = string.getHsla(obj)) {\n\t\t\tthis.setValues('hsl', vals);\n\t\t} else if (vals = string.getHwb(obj)) {\n\t\t\tthis.setValues('hwb', vals);\n\t\t}\n\t} else if (typeof obj === 'object') {\n\t\tvals = obj;\n\t\tif (vals.r !== undefined || vals.red !== undefined) {\n\t\t\tthis.setValues('rgb', vals);\n\t\t} else if (vals.l !== undefined || vals.lightness !== undefined) {\n\t\t\tthis.setValues('hsl', vals);\n\t\t} else if (vals.v !== undefined || vals.value !== undefined) {\n\t\t\tthis.setValues('hsv', vals);\n\t\t} else if (vals.w !== undefined || vals.whiteness !== undefined) {\n\t\t\tthis.setValues('hwb', vals);\n\t\t} else if (vals.c !== undefined || vals.cyan !== undefined) {\n\t\t\tthis.setValues('cmyk', vals);\n\t\t}\n\t}\n};\n\nColor.prototype = {\n\tisValid: function () {\n\t\treturn this.valid;\n\t},\n\trgb: function () {\n\t\treturn this.setSpace('rgb', arguments);\n\t},\n\thsl: function () {\n\t\treturn this.setSpace('hsl', arguments);\n\t},\n\thsv: function () {\n\t\treturn this.setSpace('hsv', arguments);\n\t},\n\thwb: function () {\n\t\treturn this.setSpace('hwb', arguments);\n\t},\n\tcmyk: function () {\n\t\treturn this.setSpace('cmyk', arguments);\n\t},\n\n\trgbArray: function () {\n\t\treturn this.values.rgb;\n\t},\n\thslArray: function () {\n\t\treturn this.values.hsl;\n\t},\n\thsvArray: function () {\n\t\treturn this.values.hsv;\n\t},\n\thwbArray: function () {\n\t\tvar values = this.values;\n\t\tif (values.alpha !== 1) {\n\t\t\treturn values.hwb.concat([values.alpha]);\n\t\t}\n\t\treturn values.hwb;\n\t},\n\tcmykArray: function () {\n\t\treturn this.values.cmyk;\n\t},\n\trgbaArray: function () {\n\t\tvar values = this.values;\n\t\treturn values.rgb.concat([values.alpha]);\n\t},\n\thslaArray: function () {\n\t\tvar values = this.values;\n\t\treturn values.hsl.concat([values.alpha]);\n\t},\n\talpha: function (val) {\n\t\tif (val === undefined) {\n\t\t\treturn this.values.alpha;\n\t\t}\n\t\tthis.setValues('alpha', val);\n\t\treturn this;\n\t},\n\n\tred: function (val) {\n\t\treturn this.setChannel('rgb', 0, val);\n\t},\n\tgreen: function (val) {\n\t\treturn this.setChannel('rgb', 1, val);\n\t},\n\tblue: function (val) {\n\t\treturn this.setChannel('rgb', 2, val);\n\t},\n\thue: function (val) {\n\t\tif (val) {\n\t\t\tval %= 360;\n\t\t\tval = val < 0 ? 360 + val : val;\n\t\t}\n\t\treturn this.setChannel('hsl', 0, val);\n\t},\n\tsaturation: function (val) {\n\t\treturn this.setChannel('hsl', 1, val);\n\t},\n\tlightness: function (val) {\n\t\treturn this.setChannel('hsl', 2, val);\n\t},\n\tsaturationv: function (val) {\n\t\treturn this.setChannel('hsv', 1, val);\n\t},\n\twhiteness: function (val) {\n\t\treturn this.setChannel('hwb', 1, val);\n\t},\n\tblackness: function (val) {\n\t\treturn this.setChannel('hwb', 2, val);\n\t},\n\tvalue: function (val) {\n\t\treturn this.setChannel('hsv', 2, val);\n\t},\n\tcyan: function (val) {\n\t\treturn this.setChannel('cmyk', 0, val);\n\t},\n\tmagenta: function (val) {\n\t\treturn this.setChannel('cmyk', 1, val);\n\t},\n\tyellow: function (val) {\n\t\treturn this.setChannel('cmyk', 2, val);\n\t},\n\tblack: function (val) {\n\t\treturn this.setChannel('cmyk', 3, val);\n\t},\n\n\thexString: function () {\n\t\treturn string.hexString(this.values.rgb);\n\t},\n\trgbString: function () {\n\t\treturn string.rgbString(this.values.rgb, this.values.alpha);\n\t},\n\trgbaString: function () {\n\t\treturn string.rgbaString(this.values.rgb, this.values.alpha);\n\t},\n\tpercentString: function () {\n\t\treturn string.percentString(this.values.rgb, this.values.alpha);\n\t},\n\thslString: function () {\n\t\treturn string.hslString(this.values.hsl, this.values.alpha);\n\t},\n\thslaString: function () {\n\t\treturn string.hslaString(this.values.hsl, this.values.alpha);\n\t},\n\thwbString: function () {\n\t\treturn string.hwbString(this.values.hwb, this.values.alpha);\n\t},\n\tkeyword: function () {\n\t\treturn string.keyword(this.values.rgb, this.values.alpha);\n\t},\n\n\trgbNumber: function () {\n\t\tvar rgb = this.values.rgb;\n\t\treturn (rgb[0] << 16) | (rgb[1] << 8) | rgb[2];\n\t},\n\n\tluminosity: function () {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tvar rgb = this.values.rgb;\n\t\tvar lum = [];\n\t\tfor (var i = 0; i < rgb.length; i++) {\n\t\t\tvar chan = rgb[i] / 255;\n\t\t\tlum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4);\n\t\t}\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast: function (color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tvar lum1 = this.luminosity();\n\t\tvar lum2 = color2.luminosity();\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel: function (color2) {\n\t\tvar contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7.1) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tdark: function () {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tvar rgb = this.values.rgb;\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\t\treturn yiq < 128;\n\t},\n\n\tlight: function () {\n\t\treturn !this.dark();\n\t},\n\n\tnegate: function () {\n\t\tvar rgb = [];\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\trgb[i] = 255 - this.values.rgb[i];\n\t\t}\n\t\tthis.setValues('rgb', rgb);\n\t\treturn this;\n\t},\n\n\tlighten: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[2] += hsl[2] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tdarken: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[2] -= hsl[2] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tsaturate: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[1] += hsl[1] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tdesaturate: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[1] -= hsl[1] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\twhiten: function (ratio) {\n\t\tvar hwb = this.values.hwb;\n\t\thwb[1] += hwb[1] * ratio;\n\t\tthis.setValues('hwb', hwb);\n\t\treturn this;\n\t},\n\n\tblacken: function (ratio) {\n\t\tvar hwb = this.values.hwb;\n\t\thwb[2] += hwb[2] * ratio;\n\t\tthis.setValues('hwb', hwb);\n\t\treturn this;\n\t},\n\n\tgreyscale: function () {\n\t\tvar rgb = this.values.rgb;\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\tthis.setValues('rgb', [val, val, val]);\n\t\treturn this;\n\t},\n\n\tclearer: function (ratio) {\n\t\tvar alpha = this.values.alpha;\n\t\tthis.setValues('alpha', alpha - (alpha * ratio));\n\t\treturn this;\n\t},\n\n\topaquer: function (ratio) {\n\t\tvar alpha = this.values.alpha;\n\t\tthis.setValues('alpha', alpha + (alpha * ratio));\n\t\treturn this;\n\t},\n\n\trotate: function (degrees) {\n\t\tvar hsl = this.values.hsl;\n\t\tvar hue = (hsl[0] + degrees) % 360;\n\t\thsl[0] = hue < 0 ? 360 + hue : hue;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\t/**\n\t * Ported from sass implementation in C\n\t * https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t */\n\tmix: function (mixinColor, weight) {\n\t\tvar color1 = this;\n\t\tvar color2 = mixinColor;\n\t\tvar p = weight === undefined ? 0.5 : weight;\n\n\t\tvar w = 2 * p - 1;\n\t\tvar a = color1.alpha() - color2.alpha();\n\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\tvar w2 = 1 - w1;\n\n\t\treturn this\n\t\t\t.rgb(\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue()\n\t\t\t)\n\t\t\t.alpha(color1.alpha() * p + color2.alpha() * (1 - p));\n\t},\n\n\ttoJSON: function () {\n\t\treturn this.rgb();\n\t},\n\n\tclone: function () {\n\t\t// NOTE(SB): using node-clone creates a dependency to Buffer when using browserify,\n\t\t// making the final build way to big to embed in Chart.js. So let's do it manually,\n\t\t// assuming that values to clone are 1 dimension arrays containing only numbers,\n\t\t// except 'alpha' which is a number.\n\t\tvar result = new Color();\n\t\tvar source = this.values;\n\t\tvar target = result.values;\n\t\tvar value, type;\n\n\t\tfor (var prop in source) {\n\t\t\tif (source.hasOwnProperty(prop)) {\n\t\t\t\tvalue = source[prop];\n\t\t\t\ttype = ({}).toString.call(value);\n\t\t\t\tif (type === '[object Array]') {\n\t\t\t\t\ttarget[prop] = value.slice(0);\n\t\t\t\t} else if (type === '[object Number]') {\n\t\t\t\t\ttarget[prop] = value;\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error('unexpected color value:', value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n};\n\nColor.prototype.spaces = {\n\trgb: ['red', 'green', 'blue'],\n\thsl: ['hue', 'saturation', 'lightness'],\n\thsv: ['hue', 'saturation', 'value'],\n\thwb: ['hue', 'whiteness', 'blackness'],\n\tcmyk: ['cyan', 'magenta', 'yellow', 'black']\n};\n\nColor.prototype.maxes = {\n\trgb: [255, 255, 255],\n\thsl: [360, 100, 100],\n\thsv: [360, 100, 100],\n\thwb: [360, 100, 100],\n\tcmyk: [100, 100, 100, 100]\n};\n\nColor.prototype.getValues = function (space) {\n\tvar values = this.values;\n\tvar vals = {};\n\n\tfor (var i = 0; i < space.length; i++) {\n\t\tvals[space.charAt(i)] = values[space][i];\n\t}\n\n\tif (values.alpha !== 1) {\n\t\tvals.a = values.alpha;\n\t}\n\n\t// {r: 255, g: 255, b: 255, a: 0.4}\n\treturn vals;\n};\n\nColor.prototype.setValues = function (space, vals) {\n\tvar values = this.values;\n\tvar spaces = this.spaces;\n\tvar maxes = this.maxes;\n\tvar alpha = 1;\n\tvar i;\n\n\tthis.valid = true;\n\n\tif (space === 'alpha') {\n\t\talpha = vals;\n\t} else if (vals.length) {\n\t\t// [10, 10, 10]\n\t\tvalues[space] = vals.slice(0, space.length);\n\t\talpha = vals[space.length];\n\t} else if (vals[space.charAt(0)] !== undefined) {\n\t\t// {r: 10, g: 10, b: 10}\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tvalues[space][i] = vals[space.charAt(i)];\n\t\t}\n\n\t\talpha = vals.a;\n\t} else if (vals[spaces[space][0]] !== undefined) {\n\t\t// {red: 10, green: 10, blue: 10}\n\t\tvar chans = spaces[space];\n\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tvalues[space][i] = vals[chans[i]];\n\t\t}\n\n\t\talpha = vals.alpha;\n\t}\n\n\tvalues.alpha = Math.max(0, Math.min(1, (alpha === undefined ? values.alpha : alpha)));\n\n\tif (space === 'alpha') {\n\t\treturn false;\n\t}\n\n\tvar capped;\n\n\t// cap values of the space prior converting all values\n\tfor (i = 0; i < space.length; i++) {\n\t\tcapped = Math.max(0, Math.min(maxes[space][i], values[space][i]));\n\t\tvalues[space][i] = Math.round(capped);\n\t}\n\n\t// convert to all the other color spaces\n\tfor (var sname in spaces) {\n\t\tif (sname !== space) {\n\t\t\tvalues[sname] = convert[space][sname](values[space]);\n\t\t}\n\t}\n\n\treturn true;\n};\n\nColor.prototype.setSpace = function (space, args) {\n\tvar vals = args[0];\n\n\tif (vals === undefined) {\n\t\t// color.rgb()\n\t\treturn this.getValues(space);\n\t}\n\n\t// color.rgb(10, 10, 10)\n\tif (typeof vals === 'number') {\n\t\tvals = Array.prototype.slice.call(args);\n\t}\n\n\tthis.setValues(space, vals);\n\treturn this;\n};\n\nColor.prototype.setChannel = function (space, index, val) {\n\tvar svalues = this.values[space];\n\tif (val === undefined) {\n\t\t// color.red()\n\t\treturn svalues[index];\n\t} else if (val === svalues[index]) {\n\t\t// color.red(color.red())\n\t\treturn this;\n\t}\n\n\t// color.red(100)\n\tsvalues[index] = val;\n\tthis.setValues(space, svalues);\n\n\treturn this;\n};\n\nif (typeof window !== 'undefined') {\n\twindow.Color = Color;\n}\n\nmodule.exports = Color;\n","'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.Line = function(context, config) {\n\t\tconfig.type = 'line';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar helpers = require('../helpers/index');\nvar scaleService = require('../core/core.scaleService');\nvar Ticks = require('../core/core.ticks');\n\nmodule.exports = function(Chart) {\n\n\tvar globalDefaults = defaults.global;\n\n\tvar defaultConfig = {\n\t\tdisplay: true,\n\n\t\t// Boolean - Whether to animate scaling the chart from the centre\n\t\tanimate: true,\n\t\tposition: 'chartArea',\n\n\t\tangleLines: {\n\t\t\tdisplay: true,\n\t\t\tcolor: 'rgba(0, 0, 0, 0.1)',\n\t\t\tlineWidth: 1\n\t\t},\n\n\t\tgridLines: {\n\t\t\tcircular: false\n\t\t},\n\n\t\t// label settings\n\t\tticks: {\n\t\t\t// Boolean - Show a backdrop to the scale label\n\t\t\tshowLabelBackdrop: true,\n\n\t\t\t// String - The colour of the label backdrop\n\t\t\tbackdropColor: 'rgba(255,255,255,0.75)',\n\n\t\t\t// Number - The backdrop padding above & below the label in pixels\n\t\t\tbackdropPaddingY: 2,\n\n\t\t\t// Number - The backdrop padding to the side of the label in pixels\n\t\t\tbackdropPaddingX: 2,\n\n\t\t\tcallback: Ticks.formatters.linear\n\t\t},\n\n\t\tpointLabels: {\n\t\t\t// Boolean - if true, show point labels\n\t\t\tdisplay: true,\n\n\t\t\t// Number - Point label font size in pixels\n\t\t\tfontSize: 10,\n\n\t\t\t// Function - Used to convert point labels\n\t\t\tcallback: function(label) {\n\t\t\t\treturn label;\n\t\t\t}\n\t\t}\n\t};\n\n\tfunction getValueCount(scale) {\n\t\tvar opts = scale.options;\n\t\treturn opts.angleLines.display || opts.pointLabels.display ? scale.chart.data.labels.length : 0;\n\t}\n\n\tfunction getPointLabelFontOptions(scale) {\n\t\tvar pointLabelOptions = scale.options.pointLabels;\n\t\tvar fontSize = helpers.valueOrDefault(pointLabelOptions.fontSize, globalDefaults.defaultFontSize);\n\t\tvar fontStyle = helpers.valueOrDefault(pointLabelOptions.fontStyle, globalDefaults.defaultFontStyle);\n\t\tvar fontFamily = helpers.valueOrDefault(pointLabelOptions.fontFamily, globalDefaults.defaultFontFamily);\n\t\tvar font = helpers.fontString(fontSize, fontStyle, fontFamily);\n\n\t\treturn {\n\t\t\tsize: fontSize,\n\t\t\tstyle: fontStyle,\n\t\t\tfamily: fontFamily,\n\t\t\tfont: font\n\t\t};\n\t}\n\n\tfunction measureLabelSize(ctx, fontSize, label) {\n\t\tif (helpers.isArray(label)) {\n\t\t\treturn {\n\t\t\t\tw: helpers.longestText(ctx, ctx.font, label),\n\t\t\t\th: (label.length * fontSize) + ((label.length - 1) * 1.5 * fontSize)\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tw: ctx.measureText(label).width,\n\t\t\th: fontSize\n\t\t};\n\t}\n\n\tfunction determineLimits(angle, pos, size, min, max) {\n\t\tif (angle === min || angle === max) {\n\t\t\treturn {\n\t\t\t\tstart: pos - (size / 2),\n\t\t\t\tend: pos + (size / 2)\n\t\t\t};\n\t\t} else if (angle < min || angle > max) {\n\t\t\treturn {\n\t\t\t\tstart: pos - size - 5,\n\t\t\t\tend: pos\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tstart: pos,\n\t\t\tend: pos + size + 5\n\t\t};\n\t}\n\n\t/**\n\t * Helper function to fit a radial linear scale with point labels\n\t */\n\tfunction fitWithPointLabels(scale) {\n\t\t/*\n\t\t * Right, this is really confusing and there is a lot of maths going on here\n\t\t * The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9\n\t\t *\n\t\t * Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif\n\t\t *\n\t\t * Solution:\n\t\t *\n\t\t * We assume the radius of the polygon is half the size of the canvas at first\n\t\t * at each index we check if the text overlaps.\n\t\t *\n\t\t * Where it does, we store that angle and that index.\n\t\t *\n\t\t * After finding the largest index and angle we calculate how much we need to remove\n\t\t * from the shape radius to move the point inwards by that x.\n\t\t *\n\t\t * We average the left and right distances to get the maximum shape radius that can fit in the box\n\t\t * along with labels.\n\t\t *\n\t\t * Once we have that, we can find the centre point for the chart, by taking the x text protrusion\n\t\t * on each side, removing that from the size, halving it and adding the left x protrusion width.\n\t\t *\n\t\t * This will mean we have a shape fitted to the canvas, as large as it can be with the labels\n\t\t * and position it in the most space efficient manner\n\t\t *\n\t\t * https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif\n\t\t */\n\n\t\tvar plFont = getPointLabelFontOptions(scale);\n\n\t\t// Get maximum radius of the polygon. Either half the height (minus the text width) or half the width.\n\t\t// Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points\n\t\tvar largestPossibleRadius = Math.min(scale.height / 2, scale.width / 2);\n\t\tvar furthestLimits = {\n\t\t\tr: scale.width,\n\t\t\tl: 0,\n\t\t\tt: scale.height,\n\t\t\tb: 0\n\t\t};\n\t\tvar furthestAngles = {};\n\t\tvar i, textSize, pointPosition;\n\n\t\tscale.ctx.font = plFont.font;\n\t\tscale._pointLabelSizes = [];\n\n\t\tvar valueCount = getValueCount(scale);\n\t\tfor (i = 0; i < valueCount; i++) {\n\t\t\tpointPosition = scale.getPointPosition(i, largestPossibleRadius);\n\t\t\ttextSize = measureLabelSize(scale.ctx, plFont.size, scale.pointLabels[i] || '');\n\t\t\tscale._pointLabelSizes[i] = textSize;\n\n\t\t\t// Add quarter circle to make degree 0 mean top of circle\n\t\t\tvar angleRadians = scale.getIndexAngle(i);\n\t\t\tvar angle = helpers.toDegrees(angleRadians) % 360;\n\t\t\tvar hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n\t\t\tvar vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n\n\t\t\tif (hLimits.start < furthestLimits.l) {\n\t\t\t\tfurthestLimits.l = hLimits.start;\n\t\t\t\tfurthestAngles.l = angleRadians;\n\t\t\t}\n\n\t\t\tif (hLimits.end > furthestLimits.r) {\n\t\t\t\tfurthestLimits.r = hLimits.end;\n\t\t\t\tfurthestAngles.r = angleRadians;\n\t\t\t}\n\n\t\t\tif (vLimits.start < furthestLimits.t) {\n\t\t\t\tfurthestLimits.t = vLimits.start;\n\t\t\t\tfurthestAngles.t = angleRadians;\n\t\t\t}\n\n\t\t\tif (vLimits.end > furthestLimits.b) {\n\t\t\t\tfurthestLimits.b = vLimits.end;\n\t\t\t\tfurthestAngles.b = angleRadians;\n\t\t\t}\n\t\t}\n\n\t\tscale.setReductions(largestPossibleRadius, furthestLimits, furthestAngles);\n\t}\n\n\t/**\n\t * Helper function to fit a radial linear scale with no point labels\n\t */\n\tfunction fit(scale) {\n\t\tvar largestPossibleRadius = Math.min(scale.height / 2, scale.width / 2);\n\t\tscale.drawingArea = Math.round(largestPossibleRadius);\n\t\tscale.setCenterPoint(0, 0, 0, 0);\n\t}\n\n\tfunction getTextAlignForAngle(angle) {\n\t\tif (angle === 0 || angle === 180) {\n\t\t\treturn 'center';\n\t\t} else if (angle < 180) {\n\t\t\treturn 'left';\n\t\t}\n\n\t\treturn 'right';\n\t}\n\n\tfunction fillText(ctx, text, position, fontSize) {\n\t\tif (helpers.isArray(text)) {\n\t\t\tvar y = position.y;\n\t\t\tvar spacing = 1.5 * fontSize;\n\n\t\t\tfor (var i = 0; i < text.length; ++i) {\n\t\t\t\tctx.fillText(text[i], position.x, y);\n\t\t\t\ty += spacing;\n\t\t\t}\n\t\t} else {\n\t\t\tctx.fillText(text, position.x, position.y);\n\t\t}\n\t}\n\n\tfunction adjustPointPositionForLabelHeight(angle, textSize, position) {\n\t\tif (angle === 90 || angle === 270) {\n\t\t\tposition.y -= (textSize.h / 2);\n\t\t} else if (angle > 270 || angle < 90) {\n\t\t\tposition.y -= textSize.h;\n\t\t}\n\t}\n\n\tfunction drawPointLabels(scale) {\n\t\tvar ctx = scale.ctx;\n\t\tvar opts = scale.options;\n\t\tvar angleLineOpts = opts.angleLines;\n\t\tvar pointLabelOpts = opts.pointLabels;\n\n\t\tctx.lineWidth = angleLineOpts.lineWidth;\n\t\tctx.strokeStyle = angleLineOpts.color;\n\n\t\tvar outerDistance = scale.getDistanceFromCenterForValue(opts.ticks.reverse ? scale.min : scale.max);\n\n\t\t// Point Label Font\n\t\tvar plFont = getPointLabelFontOptions(scale);\n\n\t\tctx.textBaseline = 'top';\n\n\t\tfor (var i = getValueCount(scale) - 1; i >= 0; i--) {\n\t\t\tif (angleLineOpts.display) {\n\t\t\t\tvar outerPosition = scale.getPointPosition(i, outerDistance);\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.moveTo(scale.xCenter, scale.yCenter);\n\t\t\t\tctx.lineTo(outerPosition.x, outerPosition.y);\n\t\t\t\tctx.stroke();\n\t\t\t\tctx.closePath();\n\t\t\t}\n\n\t\t\tif (pointLabelOpts.display) {\n\t\t\t\t// Extra 3px out for some label spacing\n\t\t\t\tvar pointLabelPosition = scale.getPointPosition(i, outerDistance + 5);\n\n\t\t\t\t// Keep this in loop since we may support array properties here\n\t\t\t\tvar pointLabelFontColor = helpers.valueAtIndexOrDefault(pointLabelOpts.fontColor, i, globalDefaults.defaultFontColor);\n\t\t\t\tctx.font = plFont.font;\n\t\t\t\tctx.fillStyle = pointLabelFontColor;\n\n\t\t\t\tvar angleRadians = scale.getIndexAngle(i);\n\t\t\t\tvar angle = helpers.toDegrees(angleRadians);\n\t\t\t\tctx.textAlign = getTextAlignForAngle(angle);\n\t\t\t\tadjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPosition);\n\t\t\t\tfillText(ctx, scale.pointLabels[i] || '', pointLabelPosition, plFont.size);\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction drawRadiusLine(scale, gridLineOpts, radius, index) {\n\t\tvar ctx = scale.ctx;\n\t\tctx.strokeStyle = helpers.valueAtIndexOrDefault(gridLineOpts.color, index - 1);\n\t\tctx.lineWidth = helpers.valueAtIndexOrDefault(gridLineOpts.lineWidth, index - 1);\n\n\t\tif (scale.options.gridLines.circular) {\n\t\t\t// Draw circular arcs between the points\n\t\t\tctx.beginPath();\n\t\t\tctx.arc(scale.xCenter, scale.yCenter, radius, 0, Math.PI * 2);\n\t\t\tctx.closePath();\n\t\t\tctx.stroke();\n\t\t} else {\n\t\t\t// Draw straight lines connecting each index\n\t\t\tvar valueCount = getValueCount(scale);\n\n\t\t\tif (valueCount === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tctx.beginPath();\n\t\t\tvar pointPosition = scale.getPointPosition(0, radius);\n\t\t\tctx.moveTo(pointPosition.x, pointPosition.y);\n\n\t\t\tfor (var i = 1; i < valueCount; i++) {\n\t\t\t\tpointPosition = scale.getPointPosition(i, radius);\n\t\t\t\tctx.lineTo(pointPosition.x, pointPosition.y);\n\t\t\t}\n\n\t\t\tctx.closePath();\n\t\t\tctx.stroke();\n\t\t}\n\t}\n\n\tfunction numberOrZero(param) {\n\t\treturn helpers.isNumber(param) ? param : 0;\n\t}\n\n\tvar LinearRadialScale = Chart.LinearScaleBase.extend({\n\t\tsetDimensions: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\t\t\t// Set the unconstrained dimension before label rotation\n\t\t\tme.width = me.maxWidth;\n\t\t\tme.height = me.maxHeight;\n\t\t\tme.xCenter = Math.round(me.width / 2);\n\t\t\tme.yCenter = Math.round(me.height / 2);\n\n\t\t\tvar minSize = helpers.min([me.height, me.width]);\n\t\t\tvar tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);\n\t\t\tme.drawingArea = opts.display ? (minSize / 2) - (tickFontSize / 2 + tickOpts.backdropPaddingY) : (minSize / 2);\n\t\t},\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar min = Number.POSITIVE_INFINITY;\n\t\t\tvar max = Number.NEGATIVE_INFINITY;\n\n\t\t\thelpers.each(chart.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\tif (chart.isDatasetVisible(datasetIndex)) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\n\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmin = Math.min(value, min);\n\t\t\t\t\t\tmax = Math.max(value, max);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tme.min = (min === Number.POSITIVE_INFINITY ? 0 : min);\n\t\t\tme.max = (max === Number.NEGATIVE_INFINITY ? 0 : max);\n\n\t\t\t// Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\n\t\t\tme.handleTickRangeOptions();\n\t\t},\n\t\tgetTickLimit: function() {\n\t\t\tvar tickOpts = this.options.ticks;\n\t\t\tvar tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);\n\t\t\treturn Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(this.drawingArea / (1.5 * tickFontSize)));\n\t\t},\n\t\tconvertTicksToLabels: function() {\n\t\t\tvar me = this;\n\n\t\t\tChart.LinearScaleBase.prototype.convertTicksToLabels.call(me);\n\n\t\t\t// Point labels\n\t\t\tme.pointLabels = me.chart.data.labels.map(me.options.pointLabels.callback, me);\n\t\t},\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\n\t\t},\n\t\tfit: function() {\n\t\t\tif (this.options.pointLabels.display) {\n\t\t\t\tfitWithPointLabels(this);\n\t\t\t} else {\n\t\t\t\tfit(this);\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Set radius reductions and determine new radius and center point\n\t\t * @private\n\t\t */\n\t\tsetReductions: function(largestPossibleRadius, furthestLimits, furthestAngles) {\n\t\t\tvar me = this;\n\t\t\tvar radiusReductionLeft = furthestLimits.l / Math.sin(furthestAngles.l);\n\t\t\tvar radiusReductionRight = Math.max(furthestLimits.r - me.width, 0) / Math.sin(furthestAngles.r);\n\t\t\tvar radiusReductionTop = -furthestLimits.t / Math.cos(furthestAngles.t);\n\t\t\tvar radiusReductionBottom = -Math.max(furthestLimits.b - me.height, 0) / Math.cos(furthestAngles.b);\n\n\t\t\tradiusReductionLeft = numberOrZero(radiusReductionLeft);\n\t\t\tradiusReductionRight = numberOrZero(radiusReductionRight);\n\t\t\tradiusReductionTop = numberOrZero(radiusReductionTop);\n\t\t\tradiusReductionBottom = numberOrZero(radiusReductionBottom);\n\n\t\t\tme.drawingArea = Math.min(\n\t\t\t\tMath.round(largestPossibleRadius - (radiusReductionLeft + radiusReductionRight) / 2),\n\t\t\t\tMath.round(largestPossibleRadius - (radiusReductionTop + radiusReductionBottom) / 2));\n\t\t\tme.setCenterPoint(radiusReductionLeft, radiusReductionRight, radiusReductionTop, radiusReductionBottom);\n\t\t},\n\t\tsetCenterPoint: function(leftMovement, rightMovement, topMovement, bottomMovement) {\n\t\t\tvar me = this;\n\t\t\tvar maxRight = me.width - rightMovement - me.drawingArea;\n\t\t\tvar maxLeft = leftMovement + me.drawingArea;\n\t\t\tvar maxTop = topMovement + me.drawingArea;\n\t\t\tvar maxBottom = me.height - bottomMovement - me.drawingArea;\n\n\t\t\tme.xCenter = Math.round(((maxLeft + maxRight) / 2) + me.left);\n\t\t\tme.yCenter = Math.round(((maxTop + maxBottom) / 2) + me.top);\n\t\t},\n\n\t\tgetIndexAngle: function(index) {\n\t\t\tvar angleMultiplier = (Math.PI * 2) / getValueCount(this);\n\t\t\tvar startAngle = this.chart.options && this.chart.options.startAngle ?\n\t\t\t\tthis.chart.options.startAngle :\n\t\t\t\t0;\n\n\t\t\tvar startAngleRadians = startAngle * Math.PI * 2 / 360;\n\n\t\t\t// Start from the top instead of right, so remove a quarter of the circle\n\t\t\treturn index * angleMultiplier + startAngleRadians;\n\t\t},\n\t\tgetDistanceFromCenterForValue: function(value) {\n\t\t\tvar me = this;\n\n\t\t\tif (value === null) {\n\t\t\t\treturn 0; // null always in center\n\t\t\t}\n\n\t\t\t// Take into account half font size + the yPadding of the top value\n\t\t\tvar scalingFactor = me.drawingArea / (me.max - me.min);\n\t\t\tif (me.options.ticks.reverse) {\n\t\t\t\treturn (me.max - value) * scalingFactor;\n\t\t\t}\n\t\t\treturn (value - me.min) * scalingFactor;\n\t\t},\n\t\tgetPointPosition: function(index, distanceFromCenter) {\n\t\t\tvar me = this;\n\t\t\tvar thisAngle = me.getIndexAngle(index) - (Math.PI / 2);\n\t\t\treturn {\n\t\t\t\tx: Math.round(Math.cos(thisAngle) * distanceFromCenter) + me.xCenter,\n\t\t\t\ty: Math.round(Math.sin(thisAngle) * distanceFromCenter) + me.yCenter\n\t\t\t};\n\t\t},\n\t\tgetPointPositionForValue: function(index, value) {\n\t\t\treturn this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n\t\t},\n\n\t\tgetBasePosition: function() {\n\t\t\tvar me = this;\n\t\t\tvar min = me.min;\n\t\t\tvar max = me.max;\n\n\t\t\treturn me.getPointPositionForValue(0,\n\t\t\t\tme.beginAtZero ? 0 :\n\t\t\t\tmin < 0 && max < 0 ? max :\n\t\t\t\tmin > 0 && max > 0 ? min :\n\t\t\t\t0);\n\t\t},\n\n\t\tdraw: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar gridLineOpts = opts.gridLines;\n\t\t\tvar tickOpts = opts.ticks;\n\t\t\tvar valueOrDefault = helpers.valueOrDefault;\n\n\t\t\tif (opts.display) {\n\t\t\t\tvar ctx = me.ctx;\n\t\t\t\tvar startAngle = this.getIndexAngle(0);\n\n\t\t\t\t// Tick Font\n\t\t\t\tvar tickFontSize = valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);\n\t\t\t\tvar tickFontStyle = valueOrDefault(tickOpts.fontStyle, globalDefaults.defaultFontStyle);\n\t\t\t\tvar tickFontFamily = valueOrDefault(tickOpts.fontFamily, globalDefaults.defaultFontFamily);\n\t\t\t\tvar tickLabelFont = helpers.fontString(tickFontSize, tickFontStyle, tickFontFamily);\n\n\t\t\t\thelpers.each(me.ticks, function(label, index) {\n\t\t\t\t\t// Don't draw a centre value (if it is minimum)\n\t\t\t\t\tif (index > 0 || tickOpts.reverse) {\n\t\t\t\t\t\tvar yCenterOffset = me.getDistanceFromCenterForValue(me.ticksAsNumbers[index]);\n\n\t\t\t\t\t\t// Draw circular lines around the scale\n\t\t\t\t\t\tif (gridLineOpts.display && index !== 0) {\n\t\t\t\t\t\t\tdrawRadiusLine(me, gridLineOpts, yCenterOffset, index);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (tickOpts.display) {\n\t\t\t\t\t\t\tvar tickFontColor = valueOrDefault(tickOpts.fontColor, globalDefaults.defaultFontColor);\n\t\t\t\t\t\t\tctx.font = tickLabelFont;\n\n\t\t\t\t\t\t\tctx.save();\n\t\t\t\t\t\t\tctx.translate(me.xCenter, me.yCenter);\n\t\t\t\t\t\t\tctx.rotate(startAngle);\n\n\t\t\t\t\t\t\tif (tickOpts.showLabelBackdrop) {\n\t\t\t\t\t\t\t\tvar labelWidth = ctx.measureText(label).width;\n\t\t\t\t\t\t\t\tctx.fillStyle = tickOpts.backdropColor;\n\t\t\t\t\t\t\t\tctx.fillRect(\n\t\t\t\t\t\t\t\t\t-labelWidth / 2 - tickOpts.backdropPaddingX,\n\t\t\t\t\t\t\t\t\t-yCenterOffset - tickFontSize / 2 - tickOpts.backdropPaddingY,\n\t\t\t\t\t\t\t\t\tlabelWidth + tickOpts.backdropPaddingX * 2,\n\t\t\t\t\t\t\t\t\ttickFontSize + tickOpts.backdropPaddingY * 2\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tctx.textAlign = 'center';\n\t\t\t\t\t\t\tctx.textBaseline = 'middle';\n\t\t\t\t\t\t\tctx.fillStyle = tickFontColor;\n\t\t\t\t\t\t\tctx.fillText(label, 0, -yCenterOffset);\n\t\t\t\t\t\t\tctx.restore();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (opts.angleLines.display || opts.pointLabels.display) {\n\t\t\t\t\tdrawPointLabels(me);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\tscaleService.registerScaleType('radialLinear', LinearRadialScale, defaultConfig);\n};\n","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.14.7\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nvar longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nvar timeoutDuration = 0;\nfor (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n timeoutDuration = 1;\n break;\n }\n}\n\nfunction microtaskDebounce(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\n }\n called = true;\n window.Promise.resolve().then(function () {\n called = false;\n fn();\n });\n };\n}\n\nfunction taskDebounce(fn) {\n var scheduled = false;\n return function () {\n if (!scheduled) {\n scheduled = true;\n setTimeout(function () {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nfunction isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n var window = element.ownerDocument.defaultView;\n var css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nfunction getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body;\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body;\n case '#document':\n return element.body;\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n\n var _getStyleComputedProp = getStyleComputedProperty(element),\n overflow = _getStyleComputedProp.overflow,\n overflowX = _getStyleComputedProp.overflowX,\n overflowY = _getStyleComputedProp.overflowY;\n\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nfunction isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nfunction getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n var noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n var offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n var nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY') {\n return false;\n }\n return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nfunction findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n var start = order ? element1 : element2;\n var end = order ? element2 : element1;\n\n // Get common ancestor container\n var range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n var commonAncestorContainer = range.commonAncestorContainer;\n\n // Both nodes are inside #document\n\n if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n var element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nfunction getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\n var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n var html = element.ownerDocument.documentElement;\n var scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nfunction includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n var modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nfunction getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return parseFloat(styles['border' + sideA + 'Width'], 10) + parseFloat(styles['border' + sideB + 'Width'], 10);\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n}\n\nfunction getWindowSizes(document) {\n var body = document.body;\n var html = document.documentElement;\n var computedStyle = isIE(10) && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nfunction getClientRect(offsets) {\n return _extends({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n });\n}\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nfunction getBoundingClientRect(element) {\n var rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } else {\n rect = element.getBoundingClientRect();\n }\n } catch (e) {}\n\n var result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n\n // subtract scrollbar size from sizes\n var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n var width = sizes.width || element.clientWidth || result.right - result.left;\n var height = sizes.height || element.clientHeight || result.bottom - result.top;\n\n var horizScrollbar = element.offsetWidth - width;\n var vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n var styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var isIE10 = isIE(10);\n var isHTML = parent.nodeName === 'HTML';\n var childrenRect = getBoundingClientRect(children);\n var parentRect = getBoundingClientRect(parent);\n var scrollParent = getScrollParent(children);\n\n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = parseFloat(styles.borderTopWidth, 10);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n var offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n var marginTop = parseFloat(styles.marginTop, 10);\n var marginLeft = parseFloat(styles.marginLeft, 10);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var html = element.ownerDocument.documentElement;\n var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n var width = Math.max(html.clientWidth, window.innerWidth || 0);\n var height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n var scrollTop = !excludeScroll ? getScroll(html) : 0;\n var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n var offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width: width,\n height: height\n };\n\n return getClientRect(offset);\n}\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nfunction isFixed(element) {\n var nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n var parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\n\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nfunction getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n var el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n}\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n // NOTE: 1 DOM access here\n\n var boundaries = { top: 0, left: 0 };\n var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n } else {\n // Handle other cases based on DOM element used as boundaries\n var boundariesNode = void 0;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n height = _getWindowSizes.height,\n width = _getWindowSizes.width;\n\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n padding = padding || 0;\n var isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n\n return boundaries;\n}\n\nfunction getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n\n var rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height\n }\n };\n\n var sortedAreas = Object.keys(rects).map(function (key) {\n return _extends({\n key: key\n }, rects[key], {\n area: getArea(rects[key])\n });\n }).sort(function (a, b) {\n return b.area - a.area;\n });\n\n var filteredAreas = sortedAreas.filter(function (_ref2) {\n var width = _ref2.width,\n height = _ref2.height;\n return width >= popper.clientWidth && height >= popper.clientHeight;\n });\n\n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n var variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? '-' + variation : '');\n}\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nfunction getReferenceOffsets(state, popper, reference) {\n var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nfunction getOuterSizes(element) {\n var window = element.ownerDocument.defaultView;\n var styles = window.getComputedStyle(element);\n var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n var result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x\n };\n return result;\n}\n\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nfunction getOppositePlacement(placement) {\n var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n var popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n var popperOffsets = {\n width: popperRect.width,\n height: popperRect.height\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n var mainSide = isHoriz ? 'top' : 'left';\n var secondarySide = isHoriz ? 'left' : 'top';\n var measurement = isHoriz ? 'height' : 'width';\n var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(function (cur) {\n return cur[prop] === value;\n });\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n var match = find(arr, function (obj) {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n}\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nfunction runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(function (modifier) {\n if (modifier['function']) {\n // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nfunction update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n var data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {}\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n\n data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nfunction isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(function (_ref) {\n var name = _ref.name,\n enabled = _ref.enabled;\n return enabled && name === modifierName;\n });\n}\n\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nfunction getSupportedPropertyName(property) {\n var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (var i = 0; i < prefixes.length; i++) {\n var prefix = prefixes[i];\n var toCheck = prefix ? '' + prefix + upperProp : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nfunction destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicity asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nfunction getWindow(element) {\n var ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n var isBody = scrollParent.nodeName === 'BODY';\n var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n var scrollElement = getScrollParent(reference);\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nfunction enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(function (target) {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nfunction disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setStyles(element, styles) {\n Object.keys(styles).forEach(function (prop) {\n var unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function (prop) {\n var value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nfunction applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n // compute reference element offsets\n var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\n\n/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nfunction getRoundedOffsets(data, shouldRound) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var round = Math.round,\n floor = Math.floor;\n\n var noRound = function noRound(v) {\n return v;\n };\n\n var referenceWidth = round(reference.width);\n var popperWidth = round(popper.width);\n\n var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n var isVariation = data.placement.indexOf('-') !== -1;\n var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n var verticalToInteger = !shouldRound ? noRound : round;\n\n return {\n left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right)\n };\n}\n\nvar isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeStyle(data, options) {\n var x = options.x,\n y = options.y;\n var popper = data.offsets.popper;\n\n // Remove this legacy support in Popper.js v2\n\n var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'applyStyle';\n }).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n }\n var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n var styles = {\n position: popper.position\n };\n\n var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n\n var sideA = x === 'bottom' ? 'top' : 'bottom';\n var sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n var prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n var left = void 0,\n top = void 0;\n if (sideA === 'bottom') {\n // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n var invertTop = sideA === 'bottom' ? -1 : 1;\n var invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = sideA + ', ' + sideB;\n }\n\n // Attributes\n var attributes = {\n 'x-placement': data.placement\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n return data;\n}\n\n/**\n * Helper used to know if the given modifier depends from another one.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\n\n var isRequired = !!requesting && modifiers.some(function (modifier) {\n return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n });\n\n if (!isRequired) {\n var _requesting = '`' + requestingName + '`';\n var requested = '`' + requestedName + '`';\n console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n }\n return isRequired;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction arrow(data, options) {\n var _data$offsets$arrow;\n\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n var arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn('WARNING: `arrow.element` must be child of its popper element!');\n return data;\n }\n }\n\n var placement = data.placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n var len = isVertical ? 'height' : 'width';\n var sideCapitalized = isVertical ? 'Top' : 'Left';\n var side = sideCapitalized.toLowerCase();\n var altSide = isVertical ? 'left' : 'top';\n var opSide = isVertical ? 'bottom' : 'right';\n var arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n var css = getStyleComputedProperty(data.instance.popper);\n var popperMarginSide = parseFloat(css['margin' + sideCapitalized], 10);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width'], 10);\n var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n\n return data;\n}\n\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nfunction getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n\n/**\n * List of accepted placements to use as values of the `placement` option.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nfunction clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var index = validPlacements.indexOf(placement);\n var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise'\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n\n var flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach(function (step, index) {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n var popperOffsets = data.offsets.popper;\n var refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n var floor = Math.floor;\n var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n\n var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n // flip the variation if required\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var flippedVariation = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var placement = data.placement.split('-')[0];\n var floor = Math.floor;\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var side = isVertical ? 'right' : 'bottom';\n var opSide = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n var value = +split[1];\n var unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n var element = void 0;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n var rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n var size = void 0;\n if (unit === 'vh') {\n size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n } else {\n size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n var offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n return frag.trim();\n });\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n var divider = fragments.indexOf(find(fragments, function (frag) {\n return frag.search(/,|\\s/) !== -1;\n }));\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n var splitRegex = /\\s*,\\s*|\\s+/;\n var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map(function (op, index) {\n // Most of the units rely on the orientation of the popper\n var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n var mergeWithPrevious = false;\n return op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce(function (a, b) {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(function (str) {\n return toValue(str, measurement, popperOffsets, referenceOffsets);\n });\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach(function (op, index) {\n op.forEach(function (frag, index2) {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nfunction offset(data, _ref) {\n var offset = _ref.offset;\n var placement = data.placement,\n _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var basePlacement = placement.split('-')[0];\n\n var offsets = void 0;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction preventOverflow(data, options) {\n var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n var transformProp = getSupportedPropertyName('transform');\n var popperStyles = data.instance.popper.style; // assignment to help minification\n var top = popperStyles.top,\n left = popperStyles.left,\n transform = popperStyles[transformProp];\n\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n var order = options.priority;\n var popper = data.offsets.popper;\n\n var check = {\n primary: function primary(placement) {\n var value = popper[placement];\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return defineProperty({}, placement, value);\n },\n secondary: function secondary(placement) {\n var mainSide = placement === 'right' ? 'left' : 'top';\n var value = popper[mainSide];\n if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n return defineProperty({}, mainSide, value);\n }\n };\n\n order.forEach(function (placement) {\n var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = _extends({}, popper, check[side](placement));\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction shift(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n var _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n\n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n var shiftOffsets = {\n start: defineProperty({}, side, reference[side]),\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n var refRect = data.offsets.reference;\n var bound = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'preventOverflow';\n }).boundaries;\n\n if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction inner(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nvar modifiers = {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.<br />\n * It will read the variation of the `placement` property.<br />\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.<br />\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.<br />\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.<br />\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.<br />\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent'\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]'\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport'\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right'\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined\n }\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overridden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nvar Defaults = {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: function onCreate() {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: function onUpdate() {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers: modifiers\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\nvar Popper = function () {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {HTMLElement|referenceObject} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n function Popper(reference, popper) {\n var _this = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, Popper);\n\n this.scheduleUpdate = function () {\n return requestAnimationFrame(_this.update);\n };\n\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = _extends({}, Popper.Defaults, options);\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: []\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n return _extends({\n name: name\n }, _this.options.modifiers[name]);\n })\n // sort the modifiers by order\n .sort(function (a, b) {\n return a.order - b.order;\n });\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(function (modifierOptions) {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n var eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n\n\n createClass(Popper, [{\n key: 'update',\n value: function update$$1() {\n return update.call(this);\n }\n }, {\n key: 'destroy',\n value: function destroy$$1() {\n return destroy.call(this);\n }\n }, {\n key: 'enableEventListeners',\n value: function enableEventListeners$$1() {\n return enableEventListeners.call(this);\n }\n }, {\n key: 'disableEventListeners',\n value: function disableEventListeners$$1() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n\n }]);\n return Popper;\n}();\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.<br />\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\n\nexport default Popper;\n//# sourceMappingURL=popper.js.map\n","'use strict';\n\nvar Scale = require('../core/core.scale');\nvar scaleService = require('../core/core.scaleService');\n\nmodule.exports = function() {\n\n\t// Default config for a category scale\n\tvar defaultConfig = {\n\t\tposition: 'bottom'\n\t};\n\n\tvar DatasetScale = Scale.extend({\n\t\t/**\n\t\t* Internal function to get the correct labels. If data.xLabels or data.yLabels are defined, use those\n\t\t* else fall back to data.labels\n\t\t* @private\n\t\t*/\n\t\tgetLabels: function() {\n\t\t\tvar data = this.chart.data;\n\t\t\treturn this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels;\n\t\t},\n\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar labels = me.getLabels();\n\t\t\tme.minIndex = 0;\n\t\t\tme.maxIndex = labels.length - 1;\n\t\t\tvar findIndex;\n\n\t\t\tif (me.options.ticks.min !== undefined) {\n\t\t\t\t// user specified min value\n\t\t\t\tfindIndex = labels.indexOf(me.options.ticks.min);\n\t\t\t\tme.minIndex = findIndex !== -1 ? findIndex : me.minIndex;\n\t\t\t}\n\n\t\t\tif (me.options.ticks.max !== undefined) {\n\t\t\t\t// user specified max value\n\t\t\t\tfindIndex = labels.indexOf(me.options.ticks.max);\n\t\t\t\tme.maxIndex = findIndex !== -1 ? findIndex : me.maxIndex;\n\t\t\t}\n\n\t\t\tme.min = labels[me.minIndex];\n\t\t\tme.max = labels[me.maxIndex];\n\t\t},\n\n\t\tbuildTicks: function() {\n\t\t\tvar me = this;\n\t\t\tvar labels = me.getLabels();\n\t\t\t// If we are viewing some subset of labels, slice the original array\n\t\t\tme.ticks = (me.minIndex === 0 && me.maxIndex === labels.length - 1) ? labels : labels.slice(me.minIndex, me.maxIndex + 1);\n\t\t},\n\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar data = me.chart.data;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\n\t\t\tif (data.yLabels && !isHorizontal) {\n\t\t\t\treturn me.getRightValue(data.datasets[datasetIndex].data[index]);\n\t\t\t}\n\t\t\treturn me.ticks[index - me.minIndex];\n\t\t},\n\n\t\t// Used to get data value locations. Value can either be an index or a numerical value\n\t\tgetPixelForValue: function(value, index) {\n\t\t\tvar me = this;\n\t\t\tvar offset = me.options.offset;\n\t\t\t// 1 is added because we need the length but we have the indexes\n\t\t\tvar offsetAmt = Math.max((me.maxIndex + 1 - me.minIndex - (offset ? 0 : 1)), 1);\n\n\t\t\t// If value is a data object, then index is the index in the data array,\n\t\t\t// not the index of the scale. We need to change that.\n\t\t\tvar valueCategory;\n\t\t\tif (value !== undefined && value !== null) {\n\t\t\t\tvalueCategory = me.isHorizontal() ? value.x : value.y;\n\t\t\t}\n\t\t\tif (valueCategory !== undefined || (value !== undefined && isNaN(index))) {\n\t\t\t\tvar labels = me.getLabels();\n\t\t\t\tvalue = valueCategory || value;\n\t\t\t\tvar idx = labels.indexOf(value);\n\t\t\t\tindex = idx !== -1 ? idx : index;\n\t\t\t}\n\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tvar valueWidth = me.width / offsetAmt;\n\t\t\t\tvar widthOffset = (valueWidth * (index - me.minIndex));\n\n\t\t\t\tif (offset) {\n\t\t\t\t\twidthOffset += (valueWidth / 2);\n\t\t\t\t}\n\n\t\t\t\treturn me.left + Math.round(widthOffset);\n\t\t\t}\n\t\t\tvar valueHeight = me.height / offsetAmt;\n\t\t\tvar heightOffset = (valueHeight * (index - me.minIndex));\n\n\t\t\tif (offset) {\n\t\t\t\theightOffset += (valueHeight / 2);\n\t\t\t}\n\n\t\t\treturn me.top + Math.round(heightOffset);\n\t\t},\n\t\tgetPixelForTick: function(index) {\n\t\t\treturn this.getPixelForValue(this.ticks[index], index + this.minIndex, null);\n\t\t},\n\t\tgetValueForPixel: function(pixel) {\n\t\t\tvar me = this;\n\t\t\tvar offset = me.options.offset;\n\t\t\tvar value;\n\t\t\tvar offsetAmt = Math.max((me._ticks.length - (offset ? 0 : 1)), 1);\n\t\t\tvar horz = me.isHorizontal();\n\t\t\tvar valueDimension = (horz ? me.width : me.height) / offsetAmt;\n\n\t\t\tpixel -= horz ? me.left : me.top;\n\n\t\t\tif (offset) {\n\t\t\t\tpixel -= (valueDimension / 2);\n\t\t\t}\n\n\t\t\tif (pixel <= 0) {\n\t\t\t\tvalue = 0;\n\t\t\t} else {\n\t\t\t\tvalue = Math.round(pixel / valueDimension);\n\t\t\t}\n\n\t\t\treturn value + me.minIndex;\n\t\t},\n\t\tgetBasePixel: function() {\n\t\t\treturn this.bottom;\n\t\t}\n\t});\n\n\tscaleService.registerScaleType('category', DatasetScale, defaultConfig);\n};\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar Element = require('./core.element');\n\nvar exports = module.exports = Element.extend({\n\tchart: null, // the animation associated chart instance\n\tcurrentStep: 0, // the current animation step\n\tnumSteps: 60, // default number of steps\n\teasing: '', // the easing to use for this animation\n\trender: null, // render function used by the animation service\n\n\tonAnimationProgress: null, // user specified callback to fire on each step of the animation\n\tonAnimationComplete: null, // user specified callback to fire when the animation finishes\n});\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.Animation instead\n * @prop Chart.Animation#animationObject\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n */\nObject.defineProperty(exports.prototype, 'animationObject', {\n\tget: function() {\n\t\treturn this;\n\t}\n});\n\n/**\n * Provided for backward compatibility, use Chart.Animation#chart instead\n * @prop Chart.Animation#chartInstance\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n */\nObject.defineProperty(exports.prototype, 'chartInstance', {\n\tget: function() {\n\t\treturn this.chart;\n\t},\n\tset: function(value) {\n\t\tthis.chart = value;\n\t}\n});\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('layout',[_c('section',{staticClass:\"main-content\"},[_c('div',{staticClass:\"card mb-4\"},[_c('div',{staticClass:\"card-header\"},[_vm._v(\"Throughput - \"+_vm._s(_vm.slug))]),_vm._v(\" \"),_c('div',{staticClass:\"card-body\"},[_c('loader',{attrs:{\"yes\":_vm.loading}}),_vm._v(\" \"),(!_vm.loading && !_vm.rawData.length)?_c('p',{staticClass:\"text-center m-0 p-5\"},[_vm._v(\"\\n Not Enough Data\\n \")]):_vm._e(),_vm._v(\" \"),(!_vm.loading && _vm.rawData.length)?_c('line-chart',{attrs:{\"data\":_vm.metric.throughPutChart}}):_vm._e()],1)]),_vm._v(\" \"),_c('div',{staticClass:\"card\"},[_c('div',{staticClass:\"card-header\"},[_vm._v(\"Runtime - \"+_vm._s(_vm.slug))]),_vm._v(\" \"),_c('div',{staticClass:\"card-body\"},[_c('loader',{attrs:{\"yes\":_vm.loading}}),_vm._v(\" \"),(!_vm.loading && !_vm.rawData.length)?_c('p',{staticClass:\"text-center m-0 p-5\"},[_vm._v(\"\\n Not Enough Data\\n \")]):_vm._e(),_vm._v(\" \"),(!_vm.loading && _vm.rawData.length)?_c('line-chart',{attrs:{\"data\":_vm.metric.runTimeChart}}):_vm._e()],1)])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--4-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LineChart.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--4-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LineChart.vue?vue&type=script&lang=js&\"","<script type=\"text/ecmascript-6\">\n import Chart from 'chart.js';\n\n export default {\n props: ['data'],\n\n data(){\n return {\n context: null,\n chart:null\n }\n },\n\n mounted(){\n this.context = this.$refs.canvas.getContext('2d');\n\n this.chart = new Chart(this.context, {\n type: 'line',\n options: {\n legend: {\n display: false,\n },\n scales: {\n yAxes: [\n {\n ticks: {\n beginAtZero: true\n },\n gridLines: {\n display: true\n },\n beforeBuildTicks: function (scale) {\n var max = _.max(scale.chart.data.datasets[0].data);\n\n scale.max = parseFloat(max) + parseFloat(max * 0.25);\n },\n }\n ],\n xAxes: [\n {\n gridLines: {\n display: true\n },\n afterTickToLabelConversion: function (data) {\n var xLabels = data.ticks;\n\n xLabels.forEach(function (labels, i) {\n if (i % 6 != 0 && (i + 1) != xLabels.length) {\n xLabels[i] = '';\n }\n });\n }\n },\n ]\n }\n },\n data: this.data\n });\n },\n }\n</script>\n\n<template>\n <div style=\"position: relative;\">\n <canvas ref=\"canvas\" height=\"70\"></canvas>\n </div>\n</template>\n","import { render, staticRenderFns } from \"./LineChart.vue?vue&type=template&id=70bcd947&\"\nimport script from \"./LineChart.vue?vue&type=script&lang=js&\"\nexport * from \"./LineChart.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"position\":\"relative\"}},[_c('canvas',{ref:\"canvas\",attrs:{\"height\":\"70\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--4-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Metric.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--4-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Metric.vue?vue&type=script&lang=js&\"","<script type=\"text/ecmascript-6\">\n import _ from 'lodash';\n import moment from 'moment';\n import Layout from '../../layouts/MainLayout.vue';\n import LineChart from '../../components/Charts/LineChart.vue';\n\n export default {\n props: ['type', 'slug'],\n\n\n components: {Layout, LineChart},\n\n\n /**\n * The component's data.\n */\n data() {\n return {\n loading: true,\n rawData: {},\n metric: {}\n };\n },\n\n\n /**\n * Prepare the component.\n */\n mounted() {\n this.loadMetric();\n },\n\n\n methods: {\n /**\n * Load the metric.\n */\n loadMetric() {\n this.loading = true;\n\n this.$http.get('/horizon/api/metrics/' + this.type + '/' + encodeURIComponent(this.slug))\n .then(response => {\n let data = this.prepareData(response.data);\n\n this.rawData = response.data;\n\n this.metric.throughPutChart = this.buildChartData(data, 'throughput', 'Times');\n\n this.metric.runTimeChart = this.buildChartData(data, 'runtime', 'Seconds');\n\n this.loading = false;\n });\n },\n\n\n /**\n * Prepare the response data for charts.\n */\n prepareData(data){\n return _.chain(data)\n .map(value => {\n value.time = this.formatDate(value.time).format(\"hh:mmA\");\n\n return value;\n })\n .groupBy(value => value.time)\n .map(value => {\n return _.reduce(value, (sum, value) => {\n return {\n runtime: parseFloat(sum.runtime) + parseFloat(value.runtime),\n throughput: parseInt(sum.throughput) + parseInt(value.throughput),\n time: value.time\n };\n })\n })\n .value();\n },\n\n\n /**\n * Build the given chart data.\n */\n buildChartData(data, attribute, label){\n return {\n labels: _.map(data, 'time'),\n datasets: [\n {\n label: label,\n data: _.map(data, attribute),\n lineTension: 0,\n backgroundColor: 'rgba(235, 243, 249, 0.4)',\n pointBackgroundColor: '#3981B4',\n borderColor: '#3981B4',\n borderWidth: 4,\n },\n ],\n };\n },\n }\n };\n</script>\n\n<template>\n <layout>\n <section class=\"main-content\">\n <div class=\"card mb-4\">\n <div class=\"card-header\">Throughput - {{slug}}</div>\n <div class=\"card-body\">\n <loader :yes=\"loading\"/>\n\n <p class=\"text-center m-0 p-5\" v-if=\"!loading && !rawData.length\">\n Not Enough Data\n </p>\n\n <line-chart v-if=\"!loading && rawData.length\" :data=\"metric.throughPutChart\"/>\n </div>\n </div>\n\n <div class=\"card\">\n <div class=\"card-header\">Runtime - {{slug}}</div>\n <div class=\"card-body\">\n <loader :yes=\"loading\"/>\n\n <p class=\"text-center m-0 p-5\" v-if=\"!loading && !rawData.length\">\n Not Enough Data\n </p>\n\n <line-chart v-if=\"!loading && rawData.length\" :data=\"metric.runTimeChart\"/>\n </div>\n </div>\n </section>\n </layout>\n</template>\n","import { render, staticRenderFns } from \"./Metric.vue?vue&type=template&id=a9ba5a40&\"\nimport script from \"./Metric.vue?vue&type=script&lang=js&\"\nexport * from \"./Metric.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('layout',[_c('section',{staticClass:\"main-content\"},[_c('div',{staticClass:\"card\"},[_c('div',{staticClass:\"card-header d-flex align-items-center\"},[_c('span',{staticClass:\"mr-auto\"},[_vm._v(\"Monitoring\")]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-primary btn-md\",on:{\"click\":_vm.openTagModal}},[_vm._v(\"Monitor Tag\")])]),_vm._v(\" \"),_c('div',{staticClass:\"table-responsive\"},[_c('loader',{attrs:{\"yes\":_vm.loadingTags}}),_vm._v(\" \"),(!_vm.loadingTags && !_vm.tags.length)?_c('p',{staticClass:\"text-center m-0 p-5\"},[_vm._v(\"\\n You're not monitoring any tags.\\n \")]):_vm._e(),_vm._v(\" \"),(!_vm.loadingTags && _vm.tags.length)?_c('table',{staticClass:\"table card-table table-hover\"},[_c('thead',[_c('tr',[_c('th',[_vm._v(\"Tag Name\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Jobs\")]),_vm._v(\" \"),_c('th')])]),_vm._v(\" \"),_c('tbody',_vm._l((_vm.tags),function(tag){return _c('tr',[_c('td',[_c('router-link',{staticClass:\"fw7\",attrs:{\"to\":{ name: 'monitoring.detail.index', params: { tag:tag.tag }},\"href\":\"#\"}},[_vm._v(_vm._s(tag.tag)+\"\\n \")])],1),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(tag.count))]),_vm._v(\" \"),_c('td',{staticClass:\"text-right\"},[_c('button',{staticClass:\"btn btn-secondary\",on:{\"click\":function($event){_vm.stopMonitoring(tag.tag)}}},[_vm._v(\"Stop Monitoring\")])])])}),0)]):_vm._e()],1)])]),_vm._v(\" \"),(_vm.addTagModalOpened)?_c('add-tag-modal'):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--4-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddTagModal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--4-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddTagModal.vue?vue&type=script&lang=js&\"","<script type=\"text/ecmascript-6\">\n import $ from 'jquery'\n\n export default {\n components: {},\n\n\n /**\n * The component's data.\n */\n data() {\n return {\n name: '',\n saving: false\n };\n },\n\n\n /**\n * Watch these properties for changes.\n */\n mounted() {\n $('#addTagModal').modal();\n\n $('#addTagModal').on('hidden.bs.modal', e => {\n Bus.$emit('addTagModalClosed');\n });\n\n this.name = '';\n\n this.$nextTick(_ => {\n this.$refs.tag.focus();\n })\n },\n\n\n methods: {\n /**\n * Save the tag and hide the modal.\n */\n saveTag() {\n if (!this.name) {\n this.$refs.tag.focus();\n return;\n }\n\n this.saving = true;\n\n this.$http.post('/horizon/api/monitoring', {'tag': this.name})\n .then(response => {\n $('#addTagModal').modal('hide');\n\n Bus.$emit('tagAdded', {tag: this.name});\n\n this.saving = false;\n })\n }\n }\n }\n</script>\n\n<template>\n <div class=\"modal\" tabindex=\"-1\" role=\"dialog\" id=\"addTagModal\">\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Monitor Tag</h5>\n </div>\n <div class=\"modal-body\">\n <div class=\"form-group row\">\n <label class=\"col-sm-3 col-form-label\">Tag Name</label>\n <div class=\"col-sm-9\">\n <input v-on:keyup.enter=\"saveTag\" type=\"text\" class=\"form-control\" v-model=\"name\" ref=\"tag\">\n </div>\n </div>\n\n <div class=\"form-group row\">\n <div class=\"col-sm-9 offset-md-3\">\n <button @click=\"saveTag\" type=\"button\" class=\"btn btn-primary\" :disabled=\"saving\">Monitor</button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n","import { render, staticRenderFns } from \"./AddTagModal.vue?vue&type=template&id=344af4a2&\"\nimport script from \"./AddTagModal.vue?vue&type=script&lang=js&\"\nexport * from \"./AddTagModal.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"modal\",attrs:{\"tabindex\":\"-1\",\"role\":\"dialog\",\"id\":\"addTagModal\"}},[_c('div',{staticClass:\"modal-dialog\",attrs:{\"role\":\"document\"}},[_c('div',{staticClass:\"modal-content\"},[_vm._m(0),_vm._v(\" \"),_c('div',{staticClass:\"modal-body\"},[_c('div',{staticClass:\"form-group row\"},[_c('label',{staticClass:\"col-sm-3 col-form-label\"},[_vm._v(\"Tag Name\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-sm-9\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.name),expression:\"name\"}],ref:\"tag\",staticClass:\"form-control\",attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.name)},on:{\"keyup\":function($event){if(!('button' in $event)&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.saveTag($event)},\"input\":function($event){if($event.target.composing){ return; }_vm.name=$event.target.value}}})])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group row\"},[_c('div',{staticClass:\"col-sm-9 offset-md-3\"},[_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"button\",\"disabled\":_vm.saving},on:{\"click\":_vm.saveTag}},[_vm._v(\"Monitor\")])])])])])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"modal-header\"},[_c('h5',{staticClass:\"modal-title\"},[_vm._v(\"Monitor Tag\")])])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--4-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--4-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=js&\"","<script type=\"text/ecmascript-6\">\n import Layout from '../../layouts/MainLayout.vue'\n import AddTagModal from './AddTagModal.vue'\n\n export default {\n components: {Layout, AddTagModal},\n\n\n /**\n * The component's data.\n */\n data() {\n return {\n loadingTags: true,\n addTagModalOpened: false,\n tags: []\n };\n },\n\n\n /**\n * Prepare the component.\n */\n mounted() {\n document.title = \"Horizon - Monitoring\";\n\n this.loadTags();\n\n Bus.$on('tagAdded', data => {\n this.addTagModalOpened = false;\n\n this.tags.push({tag: data.tag, count: 0});\n });\n\n Bus.$on('addTagModalClosed', data => {\n this.addTagModalOpened = false;\n });\n },\n\n\n methods: {\n /**\n * Load the monitored tags.\n */\n loadTags() {\n this.loadingTags = true;\n\n this.$http.get('/horizon/api/monitoring')\n .then(response => {\n this.tags = response.data;\n\n this.loadingTags = false;\n });\n },\n\n\n /**\n * Open the modal for adding a new tag.\n */\n openTagModal() {\n this.addTagModalOpened = true;\n },\n\n /**\n * Stop monitoring the given tag.\n */\n stopMonitoring(tag) {\n this.$http.delete('/horizon/api/monitoring/' + encodeURIComponent(tag))\n .then(() => {\n this.tags = _.reject(this.tags, existing => existing.tag == tag)\n })\n }\n }\n }\n</script>\n\n<template>\n <layout>\n <section class=\"main-content\">\n <div class=\"card\">\n <div class=\"card-header d-flex align-items-center\">\n <span class=\"mr-auto\">Monitoring</span>\n <button @click=\"openTagModal\" class=\"btn btn-primary btn-md\">Monitor Tag</button>\n </div>\n\n <div class=\"table-responsive\">\n <loader :yes=\"loadingTags\"/>\n\n <p class=\"text-center m-0 p-5\" v-if=\"!loadingTags && !tags.length\">\n You're not monitoring any tags.\n </p>\n\n <table v-if=\"!loadingTags && tags.length\" class=\"table card-table table-hover\">\n <thead>\n <tr>\n <th>Tag Name</th>\n <th>Jobs</th>\n <th></th>\n </tr>\n </thead>\n\n <tbody>\n <tr v-for=\"tag in tags\">\n <td>\n <router-link :to=\"{ name: 'monitoring.detail.index', params: { tag:tag.tag }}\"\n href=\"#\" class=\"fw7\">{{ tag.tag }}\n </router-link>\n </td>\n <td>{{ tag.count }}</td>\n <td class=\"text-right\">\n <button @click=\"stopMonitoring(tag.tag)\" class=\"btn btn-secondary\">Stop Monitoring</button>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n </section>\n\n <add-tag-modal v-if=\"addTagModalOpened\"/>\n </layout>\n</template>\n","import { render, staticRenderFns } from \"./Index.vue?vue&type=template&id=021d0bf8&\"\nimport script from \"./Index.vue?vue&type=script&lang=js&\"\nexport * from \"./Index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar Element = require('../core/core.element');\nvar helpers = require('../helpers/index');\nvar layouts = require('../core/core.layouts');\n\nvar noop = helpers.noop;\n\ndefaults._set('global', {\n\tlegend: {\n\t\tdisplay: true,\n\t\tposition: 'top',\n\t\tfullWidth: true,\n\t\treverse: false,\n\t\tweight: 1000,\n\n\t\t// a callback that will handle\n\t\tonClick: function(e, legendItem) {\n\t\t\tvar index = legendItem.datasetIndex;\n\t\t\tvar ci = this.chart;\n\t\t\tvar meta = ci.getDatasetMeta(index);\n\n\t\t\t// See controller.isDatasetVisible comment\n\t\t\tmeta.hidden = meta.hidden === null ? !ci.data.datasets[index].hidden : null;\n\n\t\t\t// We hid a dataset ... rerender the chart\n\t\t\tci.update();\n\t\t},\n\n\t\tonHover: null,\n\n\t\tlabels: {\n\t\t\tboxWidth: 40,\n\t\t\tpadding: 10,\n\t\t\t// Generates labels shown in the legend\n\t\t\t// Valid properties to return:\n\t\t\t// text : text to display\n\t\t\t// fillStyle : fill of coloured box\n\t\t\t// strokeStyle: stroke of coloured box\n\t\t\t// hidden : if this legend item refers to a hidden item\n\t\t\t// lineCap : cap style for line\n\t\t\t// lineDash\n\t\t\t// lineDashOffset :\n\t\t\t// lineJoin :\n\t\t\t// lineWidth :\n\t\t\tgenerateLabels: function(chart) {\n\t\t\t\tvar data = chart.data;\n\t\t\t\treturn helpers.isArray(data.datasets) ? data.datasets.map(function(dataset, i) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttext: dataset.label,\n\t\t\t\t\t\tfillStyle: (!helpers.isArray(dataset.backgroundColor) ? dataset.backgroundColor : dataset.backgroundColor[0]),\n\t\t\t\t\t\thidden: !chart.isDatasetVisible(i),\n\t\t\t\t\t\tlineCap: dataset.borderCapStyle,\n\t\t\t\t\t\tlineDash: dataset.borderDash,\n\t\t\t\t\t\tlineDashOffset: dataset.borderDashOffset,\n\t\t\t\t\t\tlineJoin: dataset.borderJoinStyle,\n\t\t\t\t\t\tlineWidth: dataset.borderWidth,\n\t\t\t\t\t\tstrokeStyle: dataset.borderColor,\n\t\t\t\t\t\tpointStyle: dataset.pointStyle,\n\n\t\t\t\t\t\t// Below is extra data used for toggling the datasets\n\t\t\t\t\t\tdatasetIndex: i\n\t\t\t\t\t};\n\t\t\t\t}, this) : [];\n\t\t\t}\n\t\t}\n\t},\n\n\tlegendCallback: function(chart) {\n\t\tvar text = [];\n\t\ttext.push('<ul class=\"' + chart.id + '-legend\">');\n\t\tfor (var i = 0; i < chart.data.datasets.length; i++) {\n\t\t\ttext.push('<li><span style=\"background-color:' + chart.data.datasets[i].backgroundColor + '\"></span>');\n\t\t\tif (chart.data.datasets[i].label) {\n\t\t\t\ttext.push(chart.data.datasets[i].label);\n\t\t\t}\n\t\t\ttext.push('</li>');\n\t\t}\n\t\ttext.push('</ul>');\n\t\treturn text.join('');\n\t}\n});\n\n/**\n * Helper function to get the box width based on the usePointStyle option\n * @param labelopts {Object} the label options on the legend\n * @param fontSize {Number} the label font size\n * @return {Number} width of the color box area\n */\nfunction getBoxWidth(labelOpts, fontSize) {\n\treturn labelOpts.usePointStyle ?\n\t\tfontSize * Math.SQRT2 :\n\t\tlabelOpts.boxWidth;\n}\n\n/**\n * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required!\n */\nvar Legend = Element.extend({\n\n\tinitialize: function(config) {\n\t\thelpers.extend(this, config);\n\n\t\t// Contains hit boxes for each dataset (in dataset order)\n\t\tthis.legendHitBoxes = [];\n\n\t\t// Are we in doughnut mode which has a different data type\n\t\tthis.doughnutMode = false;\n\t},\n\n\t// These methods are ordered by lifecycle. Utilities then follow.\n\t// Any function defined here is inherited by all legend types.\n\t// Any function can be extended by the legend type\n\n\tbeforeUpdate: noop,\n\tupdate: function(maxWidth, maxHeight, margins) {\n\t\tvar me = this;\n\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n\t\tme.beforeUpdate();\n\n\t\t// Absorb the master measurements\n\t\tme.maxWidth = maxWidth;\n\t\tme.maxHeight = maxHeight;\n\t\tme.margins = margins;\n\n\t\t// Dimensions\n\t\tme.beforeSetDimensions();\n\t\tme.setDimensions();\n\t\tme.afterSetDimensions();\n\t\t// Labels\n\t\tme.beforeBuildLabels();\n\t\tme.buildLabels();\n\t\tme.afterBuildLabels();\n\n\t\t// Fit\n\t\tme.beforeFit();\n\t\tme.fit();\n\t\tme.afterFit();\n\t\t//\n\t\tme.afterUpdate();\n\n\t\treturn me.minSize;\n\t},\n\tafterUpdate: noop,\n\n\t//\n\n\tbeforeSetDimensions: noop,\n\tsetDimensions: function() {\n\t\tvar me = this;\n\t\t// Set the unconstrained dimension before label rotation\n\t\tif (me.isHorizontal()) {\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.width = me.maxWidth;\n\t\t\tme.left = 0;\n\t\t\tme.right = me.width;\n\t\t} else {\n\t\t\tme.height = me.maxHeight;\n\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.top = 0;\n\t\t\tme.bottom = me.height;\n\t\t}\n\n\t\t// Reset padding\n\t\tme.paddingLeft = 0;\n\t\tme.paddingTop = 0;\n\t\tme.paddingRight = 0;\n\t\tme.paddingBottom = 0;\n\n\t\t// Reset minSize\n\t\tme.minSize = {\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t};\n\t},\n\tafterSetDimensions: noop,\n\n\t//\n\n\tbeforeBuildLabels: noop,\n\tbuildLabels: function() {\n\t\tvar me = this;\n\t\tvar labelOpts = me.options.labels || {};\n\t\tvar legendItems = helpers.callback(labelOpts.generateLabels, [me.chart], me) || [];\n\n\t\tif (labelOpts.filter) {\n\t\t\tlegendItems = legendItems.filter(function(item) {\n\t\t\t\treturn labelOpts.filter(item, me.chart.data);\n\t\t\t});\n\t\t}\n\n\t\tif (me.options.reverse) {\n\t\t\tlegendItems.reverse();\n\t\t}\n\n\t\tme.legendItems = legendItems;\n\t},\n\tafterBuildLabels: noop,\n\n\t//\n\n\tbeforeFit: noop,\n\tfit: function() {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar labelOpts = opts.labels;\n\t\tvar display = opts.display;\n\n\t\tvar ctx = me.ctx;\n\n\t\tvar globalDefault = defaults.global;\n\t\tvar valueOrDefault = helpers.valueOrDefault;\n\t\tvar fontSize = valueOrDefault(labelOpts.fontSize, globalDefault.defaultFontSize);\n\t\tvar fontStyle = valueOrDefault(labelOpts.fontStyle, globalDefault.defaultFontStyle);\n\t\tvar fontFamily = valueOrDefault(labelOpts.fontFamily, globalDefault.defaultFontFamily);\n\t\tvar labelFont = helpers.fontString(fontSize, fontStyle, fontFamily);\n\n\t\t// Reset hit boxes\n\t\tvar hitboxes = me.legendHitBoxes = [];\n\n\t\tvar minSize = me.minSize;\n\t\tvar isHorizontal = me.isHorizontal();\n\n\t\tif (isHorizontal) {\n\t\t\tminSize.width = me.maxWidth; // fill all the width\n\t\t\tminSize.height = display ? 10 : 0;\n\t\t} else {\n\t\t\tminSize.width = display ? 10 : 0;\n\t\t\tminSize.height = me.maxHeight; // fill all the height\n\t\t}\n\n\t\t// Increase sizes here\n\t\tif (display) {\n\t\t\tctx.font = labelFont;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\t// Labels\n\n\t\t\t\t// Width of each line of legend boxes. Labels wrap onto multiple lines when there are too many to fit on one\n\t\t\t\tvar lineWidths = me.lineWidths = [0];\n\t\t\t\tvar totalHeight = me.legendItems.length ? fontSize + (labelOpts.padding) : 0;\n\n\t\t\t\tctx.textAlign = 'left';\n\t\t\t\tctx.textBaseline = 'top';\n\n\t\t\t\thelpers.each(me.legendItems, function(legendItem, i) {\n\t\t\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\n\t\t\t\t\tvar width = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n\n\t\t\t\t\tif (lineWidths[lineWidths.length - 1] + width + labelOpts.padding >= me.width) {\n\t\t\t\t\t\ttotalHeight += fontSize + (labelOpts.padding);\n\t\t\t\t\t\tlineWidths[lineWidths.length] = me.left;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Store the hitbox width and height here. Final position will be updated in `draw`\n\t\t\t\t\thitboxes[i] = {\n\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\twidth: width,\n\t\t\t\t\t\theight: fontSize\n\t\t\t\t\t};\n\n\t\t\t\t\tlineWidths[lineWidths.length - 1] += width + labelOpts.padding;\n\t\t\t\t});\n\n\t\t\t\tminSize.height += totalHeight;\n\n\t\t\t} else {\n\t\t\t\tvar vPadding = labelOpts.padding;\n\t\t\t\tvar columnWidths = me.columnWidths = [];\n\t\t\t\tvar totalWidth = labelOpts.padding;\n\t\t\t\tvar currentColWidth = 0;\n\t\t\t\tvar currentColHeight = 0;\n\t\t\t\tvar itemHeight = fontSize + vPadding;\n\n\t\t\t\thelpers.each(me.legendItems, function(legendItem, i) {\n\t\t\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\n\t\t\t\t\tvar itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n\n\t\t\t\t\t// If too tall, go to new column\n\t\t\t\t\tif (currentColHeight + itemHeight > minSize.height) {\n\t\t\t\t\t\ttotalWidth += currentColWidth + labelOpts.padding;\n\t\t\t\t\t\tcolumnWidths.push(currentColWidth); // previous column width\n\n\t\t\t\t\t\tcurrentColWidth = 0;\n\t\t\t\t\t\tcurrentColHeight = 0;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Get max width\n\t\t\t\t\tcurrentColWidth = Math.max(currentColWidth, itemWidth);\n\t\t\t\t\tcurrentColHeight += itemHeight;\n\n\t\t\t\t\t// Store the hitbox width and height here. Final position will be updated in `draw`\n\t\t\t\t\thitboxes[i] = {\n\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\twidth: itemWidth,\n\t\t\t\t\t\theight: fontSize\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\t\ttotalWidth += currentColWidth;\n\t\t\t\tcolumnWidths.push(currentColWidth);\n\t\t\t\tminSize.width += totalWidth;\n\t\t\t}\n\t\t}\n\n\t\tme.width = minSize.width;\n\t\tme.height = minSize.height;\n\t},\n\tafterFit: noop,\n\n\t// Shared Methods\n\tisHorizontal: function() {\n\t\treturn this.options.position === 'top' || this.options.position === 'bottom';\n\t},\n\n\t// Actually draw the legend on the canvas\n\tdraw: function() {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar labelOpts = opts.labels;\n\t\tvar globalDefault = defaults.global;\n\t\tvar lineDefault = globalDefault.elements.line;\n\t\tvar legendWidth = me.width;\n\t\tvar lineWidths = me.lineWidths;\n\n\t\tif (opts.display) {\n\t\t\tvar ctx = me.ctx;\n\t\t\tvar valueOrDefault = helpers.valueOrDefault;\n\t\t\tvar fontColor = valueOrDefault(labelOpts.fontColor, globalDefault.defaultFontColor);\n\t\t\tvar fontSize = valueOrDefault(labelOpts.fontSize, globalDefault.defaultFontSize);\n\t\t\tvar fontStyle = valueOrDefault(labelOpts.fontStyle, globalDefault.defaultFontStyle);\n\t\t\tvar fontFamily = valueOrDefault(labelOpts.fontFamily, globalDefault.defaultFontFamily);\n\t\t\tvar labelFont = helpers.fontString(fontSize, fontStyle, fontFamily);\n\t\t\tvar cursor;\n\n\t\t\t// Canvas setup\n\t\t\tctx.textAlign = 'left';\n\t\t\tctx.textBaseline = 'middle';\n\t\t\tctx.lineWidth = 0.5;\n\t\t\tctx.strokeStyle = fontColor; // for strikethrough effect\n\t\t\tctx.fillStyle = fontColor; // render in correct colour\n\t\t\tctx.font = labelFont;\n\n\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\n\t\t\tvar hitboxes = me.legendHitBoxes;\n\n\t\t\t// current position\n\t\t\tvar drawLegendBox = function(x, y, legendItem) {\n\t\t\t\tif (isNaN(boxWidth) || boxWidth <= 0) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Set the ctx for the box\n\t\t\t\tctx.save();\n\n\t\t\t\tctx.fillStyle = valueOrDefault(legendItem.fillStyle, globalDefault.defaultColor);\n\t\t\t\tctx.lineCap = valueOrDefault(legendItem.lineCap, lineDefault.borderCapStyle);\n\t\t\t\tctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, lineDefault.borderDashOffset);\n\t\t\t\tctx.lineJoin = valueOrDefault(legendItem.lineJoin, lineDefault.borderJoinStyle);\n\t\t\t\tctx.lineWidth = valueOrDefault(legendItem.lineWidth, lineDefault.borderWidth);\n\t\t\t\tctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, globalDefault.defaultColor);\n\t\t\t\tvar isLineWidthZero = (valueOrDefault(legendItem.lineWidth, lineDefault.borderWidth) === 0);\n\n\t\t\t\tif (ctx.setLineDash) {\n\t\t\t\t\t// IE 9 and 10 do not support line dash\n\t\t\t\t\tctx.setLineDash(valueOrDefault(legendItem.lineDash, lineDefault.borderDash));\n\t\t\t\t}\n\n\t\t\t\tif (opts.labels && opts.labels.usePointStyle) {\n\t\t\t\t\t// Recalculate x and y for drawPoint() because its expecting\n\t\t\t\t\t// x and y to be center of figure (instead of top left)\n\t\t\t\t\tvar radius = fontSize * Math.SQRT2 / 2;\n\t\t\t\t\tvar offSet = radius / Math.SQRT2;\n\t\t\t\t\tvar centerX = x + offSet;\n\t\t\t\t\tvar centerY = y + offSet;\n\n\t\t\t\t\t// Draw pointStyle as legend symbol\n\t\t\t\t\thelpers.canvas.drawPoint(ctx, legendItem.pointStyle, radius, centerX, centerY);\n\t\t\t\t} else {\n\t\t\t\t\t// Draw box as legend symbol\n\t\t\t\t\tif (!isLineWidthZero) {\n\t\t\t\t\t\tctx.strokeRect(x, y, boxWidth, fontSize);\n\t\t\t\t\t}\n\t\t\t\t\tctx.fillRect(x, y, boxWidth, fontSize);\n\t\t\t\t}\n\n\t\t\t\tctx.restore();\n\t\t\t};\n\t\t\tvar fillText = function(x, y, legendItem, textWidth) {\n\t\t\t\tvar halfFontSize = fontSize / 2;\n\t\t\t\tvar xLeft = boxWidth + halfFontSize + x;\n\t\t\t\tvar yMiddle = y + halfFontSize;\n\n\t\t\t\tctx.fillText(legendItem.text, xLeft, yMiddle);\n\n\t\t\t\tif (legendItem.hidden) {\n\t\t\t\t\t// Strikethrough the text if hidden\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tctx.lineWidth = 2;\n\t\t\t\t\tctx.moveTo(xLeft, yMiddle);\n\t\t\t\t\tctx.lineTo(xLeft + textWidth, yMiddle);\n\t\t\t\t\tctx.stroke();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// Horizontal\n\t\t\tvar isHorizontal = me.isHorizontal();\n\t\t\tif (isHorizontal) {\n\t\t\t\tcursor = {\n\t\t\t\t\tx: me.left + ((legendWidth - lineWidths[0]) / 2),\n\t\t\t\t\ty: me.top + labelOpts.padding,\n\t\t\t\t\tline: 0\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tcursor = {\n\t\t\t\t\tx: me.left + labelOpts.padding,\n\t\t\t\t\ty: me.top + labelOpts.padding,\n\t\t\t\t\tline: 0\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tvar itemHeight = fontSize + labelOpts.padding;\n\t\t\thelpers.each(me.legendItems, function(legendItem, i) {\n\t\t\t\tvar textWidth = ctx.measureText(legendItem.text).width;\n\t\t\t\tvar width = boxWidth + (fontSize / 2) + textWidth;\n\t\t\t\tvar x = cursor.x;\n\t\t\t\tvar y = cursor.y;\n\n\t\t\t\tif (isHorizontal) {\n\t\t\t\t\tif (x + width >= legendWidth) {\n\t\t\t\t\t\ty = cursor.y += itemHeight;\n\t\t\t\t\t\tcursor.line++;\n\t\t\t\t\t\tx = cursor.x = me.left + ((legendWidth - lineWidths[cursor.line]) / 2);\n\t\t\t\t\t}\n\t\t\t\t} else if (y + itemHeight > me.bottom) {\n\t\t\t\t\tx = cursor.x = x + me.columnWidths[cursor.line] + labelOpts.padding;\n\t\t\t\t\ty = cursor.y = me.top + labelOpts.padding;\n\t\t\t\t\tcursor.line++;\n\t\t\t\t}\n\n\t\t\t\tdrawLegendBox(x, y, legendItem);\n\n\t\t\t\thitboxes[i].left = x;\n\t\t\t\thitboxes[i].top = y;\n\n\t\t\t\t// Fill the actual label\n\t\t\t\tfillText(x, y, legendItem, textWidth);\n\n\t\t\t\tif (isHorizontal) {\n\t\t\t\t\tcursor.x += width + (labelOpts.padding);\n\t\t\t\t} else {\n\t\t\t\t\tcursor.y += itemHeight;\n\t\t\t\t}\n\n\t\t\t});\n\t\t}\n\t},\n\n\t/**\n\t * Handle an event\n\t * @private\n\t * @param {IEvent} event - The event to handle\n\t * @return {Boolean} true if a change occured\n\t */\n\thandleEvent: function(e) {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar type = e.type === 'mouseup' ? 'click' : e.type;\n\t\tvar changed = false;\n\n\t\tif (type === 'mousemove') {\n\t\t\tif (!opts.onHover) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else if (type === 'click') {\n\t\t\tif (!opts.onClick) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\n\t\t// Chart event already has relative position in it\n\t\tvar x = e.x;\n\t\tvar y = e.y;\n\n\t\tif (x >= me.left && x <= me.right && y >= me.top && y <= me.bottom) {\n\t\t\t// See if we are touching one of the dataset boxes\n\t\t\tvar lh = me.legendHitBoxes;\n\t\t\tfor (var i = 0; i < lh.length; ++i) {\n\t\t\t\tvar hitBox = lh[i];\n\n\t\t\t\tif (x >= hitBox.left && x <= hitBox.left + hitBox.width && y >= hitBox.top && y <= hitBox.top + hitBox.height) {\n\t\t\t\t\t// Touching an element\n\t\t\t\t\tif (type === 'click') {\n\t\t\t\t\t\t// use e.native for backwards compatibility\n\t\t\t\t\t\topts.onClick.call(me, e.native, me.legendItems[i]);\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} else if (type === 'mousemove') {\n\t\t\t\t\t\t// use e.native for backwards compatibility\n\t\t\t\t\t\topts.onHover.call(me, e.native, me.legendItems[i]);\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn changed;\n\t}\n});\n\nfunction createNewLegendAndAttach(chart, legendOpts) {\n\tvar legend = new Legend({\n\t\tctx: chart.ctx,\n\t\toptions: legendOpts,\n\t\tchart: chart\n\t});\n\n\tlayouts.configure(chart, legend, legendOpts);\n\tlayouts.addBox(chart, legend);\n\tchart.legend = legend;\n}\n\nmodule.exports = {\n\tid: 'legend',\n\n\t/**\n\t * Backward compatibility: since 2.1.5, the legend is registered as a plugin, making\n\t * Chart.Legend obsolete. To avoid a breaking change, we export the Legend as part of\n\t * the plugin, which one will be re-exposed in the chart.js file.\n\t * https://github.com/chartjs/Chart.js/pull/2640\n\t * @private\n\t */\n\t_element: Legend,\n\n\tbeforeInit: function(chart) {\n\t\tvar legendOpts = chart.options.legend;\n\n\t\tif (legendOpts) {\n\t\t\tcreateNewLegendAndAttach(chart, legendOpts);\n\t\t}\n\t},\n\n\tbeforeUpdate: function(chart) {\n\t\tvar legendOpts = chart.options.legend;\n\t\tvar legend = chart.legend;\n\n\t\tif (legendOpts) {\n\t\t\thelpers.mergeIf(legendOpts, defaults.global.legend);\n\n\t\t\tif (legend) {\n\t\t\t\tlayouts.configure(chart, legend, legendOpts);\n\t\t\t\tlegend.options = legendOpts;\n\t\t\t} else {\n\t\t\t\tcreateNewLegendAndAttach(chart, legendOpts);\n\t\t\t}\n\t\t} else if (legend) {\n\t\t\tlayouts.removeBox(chart, legend);\n\t\t\tdelete chart.legend;\n\t\t}\n\t},\n\n\tafterEvent: function(chart, e) {\n\t\tvar legend = chart.legend;\n\t\tif (legend) {\n\t\t\tlegend.handleEvent(e);\n\t\t}\n\t}\n};\n","'use strict';\n\nvar helpers = require('./helpers.core');\n\n/**\n * @alias Chart.helpers.options\n * @namespace\n */\nmodule.exports = {\n\t/**\n\t * Converts the given line height `value` in pixels for a specific font `size`.\n\t * @param {Number|String} value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\n\t * @param {Number} size - The font size (in pixels) used to resolve relative `value`.\n\t * @returns {Number} The effective line height in pixels (size * 1.2 if value is invalid).\n\t * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\n\t * @since 2.7.0\n\t */\n\ttoLineHeight: function(value, size) {\n\t\tvar matches = ('' + value).match(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\n\t\tif (!matches || matches[1] === 'normal') {\n\t\t\treturn size * 1.2;\n\t\t}\n\n\t\tvalue = +matches[2];\n\n\t\tswitch (matches[3]) {\n\t\tcase 'px':\n\t\t\treturn value;\n\t\tcase '%':\n\t\t\tvalue /= 100;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t\t}\n\n\t\treturn size * value;\n\t},\n\n\t/**\n\t * Converts the given value into a padding object with pre-computed width/height.\n\t * @param {Number|Object} value - If a number, set the value to all TRBL component,\n\t * else, if and object, use defined properties and sets undefined ones to 0.\n\t * @returns {Object} The padding values (top, right, bottom, left, width, height)\n\t * @since 2.7.0\n\t */\n\ttoPadding: function(value) {\n\t\tvar t, r, b, l;\n\n\t\tif (helpers.isObject(value)) {\n\t\t\tt = +value.top || 0;\n\t\t\tr = +value.right || 0;\n\t\t\tb = +value.bottom || 0;\n\t\t\tl = +value.left || 0;\n\t\t} else {\n\t\t\tt = r = b = l = +value || 0;\n\t\t}\n\n\t\treturn {\n\t\t\ttop: t,\n\t\t\tright: r,\n\t\t\tbottom: b,\n\t\t\tleft: l,\n\t\t\theight: t + b,\n\t\t\twidth: l + r\n\t\t};\n\t},\n\n\t/**\n\t * Evaluates the given `inputs` sequentially and returns the first defined value.\n\t * @param {Array[]} inputs - An array of values, falling back to the last value.\n\t * @param {Object} [context] - If defined and the current value is a function, the value\n\t * is called with `context` as first argument and the result becomes the new input.\n\t * @param {Number} [index] - If defined and the current value is an array, the value\n\t * at `index` become the new input.\n\t * @since 2.7.0\n\t */\n\tresolve: function(inputs, context, index) {\n\t\tvar i, ilen, value;\n\n\t\tfor (i = 0, ilen = inputs.length; i < ilen; ++i) {\n\t\t\tvalue = inputs[i];\n\t\t\tif (value === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (context !== undefined && typeof value === 'function') {\n\t\t\t\tvalue = value(context);\n\t\t\t}\n\t\t\tif (index !== undefined && helpers.isArray(value)) {\n\t\t\t\tvalue = value[index];\n\t\t\t}\n\t\t\tif (value !== undefined) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t}\n};\n","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('layout',[_c('section',{staticClass:\"main-content\"},[_c('div',{staticClass:\"card\"},[_c('div',{staticClass:\"card-header\"},[_vm._v(\"\\n Recent Jobs for \\\"\"+_vm._s(_vm.$route.params.tag)+\"\\\"\\n \")]),_vm._v(\" \"),_c('ul',{staticClass:\"nav nav-tabs card-tabs\"},[_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"to\":{ name: 'monitoring.detail.index', params: { tag: _vm.$route.params.tag }},\"exact\":\"\",\"active-class\":\"active\"}},[_vm._v(\"All\")])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"to\":{ name: 'monitoring.detail.failed', params: { tag: _vm.$route.params.tag }},\"active-class\":\"active\"}},[_vm._v(\"Failed\")])],1)]),_vm._v(\" \"),_c('router-view')],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--4-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tag.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--4-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tag.vue?vue&type=script&lang=js&\"","<script type=\"text/ecmascript-6\">\n import Layout from '../../layouts/MainLayout.vue'\n\n export default {\n components: {Layout}\n }\n</script>\n\n<template>\n <layout>\n <section class=\"main-content\">\n <div class=\"card\">\n <div class=\"card-header\">\n Recent Jobs for \"{{ $route.params.tag }}\"\n </div>\n\n <ul class=\"nav nav-tabs card-tabs\">\n <li class=\"nav-item\">\n <router-link :to=\"{ name: 'monitoring.detail.index', params: { tag: $route.params.tag }}\" exact active-class=\"active\" class=\"nav-link\">All</router-link>\n </li>\n <li class=\"nav-item\">\n <router-link :to=\"{ name: 'monitoring.detail.failed', params: { tag: $route.params.tag }}\" active-class=\"active\" class=\"nav-link\">Failed</router-link>\n </li>\n </ul>\n\n <router-view/>\n </div>\n </section>\n </layout>\n</template>\n","import { render, staticRenderFns } from \"./Tag.vue?vue&type=template&id=75901969&\"\nimport script from \"./Tag.vue?vue&type=script&lang=js&\"\nexport * from \"./Tag.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","'use strict';\n\nvar helpers = require('../helpers/index');\n\nmodule.exports = {\n\t/**\n\t * @private\n\t */\n\t_set: function(scope, values) {\n\t\treturn helpers.merge(this[scope] || (this[scope] = {}), values);\n\t}\n};\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('layout',[_c('section',{staticClass:\"main-content\"},[_c('div',{staticClass:\"card\"},[_c('div',{staticClass:\"card-header d-flex align-items-center\"},[_c('span',{staticClass:\"mr-auto\"},[_vm._v(\"Failed Jobs\")]),_vm._v(\" \"),_c('div',{staticClass:\"search\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.tagSearchPhrase),expression:\"tagSearchPhrase\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"placeholder\":\"Search Tags\"},domProps:{\"value\":(_vm.tagSearchPhrase)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.tagSearchPhrase=$event.target.value}}})])]),_vm._v(\" \"),_c('div',{staticClass:\"table-responsive\"},[_c('loader',{attrs:{\"yes\":_vm.loadingJobs}}),_vm._v(\" \"),(!_vm.loadingJobs && !_vm.jobs.length)?_c('p',{staticClass:\"text-center m-0 p-5\"},[_vm._v(\"\\n There aren't any recent failed jobs.\\n \")]):_vm._e(),_vm._v(\" \"),(! _vm.loadingJobs && _vm.jobs.length)?_c('table',{staticClass:\"table card-table table-hover\"},[_c('thead',[_c('tr',[_c('th',[_vm._v(\"Job\")]),_vm._v(\" \"),_c('th',[_vm._v(\"On\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Tags\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Runtime\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Failed At\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Retry\")])])]),_vm._v(\" \"),_c('tbody',_vm._l((_vm.jobs),function(job){return _c('tr',[_c('td',[_c('router-link',{attrs:{\"to\":{ name: 'failed.detail', params: { jobId: job.id }},\"data-toggle\":\"tooltip\",\"title\":job.name}},[_vm._v(\"\\n \"+_vm._s(_vm.jobBaseName(job.name))+\"\\n \")])],1),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(job.queue))]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm.displayableTagsList(job.payload.tags)))]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(job.failed_at ? String((job.failed_at - job.reserved_at).toFixed(3))+'s' : '-'))]),_vm._v(\" \"),_c('td',{staticClass:\"text-nowrap\"},[_vm._v(_vm._s(_vm.readableTimestamp(job.failed_at)))]),_vm._v(\" \"),_c('td',[(!_vm.hasCompleted(job))?_c('span',{on:{\"click\":function($event){_vm.retry(job.id)}}},[_c('i',{staticClass:\"icon\"},[_c('svg',{staticClass:\"fill-primary\",class:{spin: _vm.isRetrying(job.id)}},[_c('use',{attrs:{\"xmlns:xlink\":\"http://www.w3.org/1999/xlink\",\"xlink:href\":\"#zondicon-refresh\"}})])])]):_vm._e()])])}),0)]):_vm._e(),_vm._v(\" \"),(! _vm.loadingJobs && _vm.jobs.length)?_c('div',{staticClass:\"p-3 mt-3 d-flex justify-content-between\"},[_c('button',{staticClass:\"btn btn-primary btn-md\",attrs:{\"disabled\":_vm.page==1},on:{\"click\":_vm.previous}},[_vm._v(\"Previous\")]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-primary btn-md\",attrs:{\"disabled\":_vm.page>=_vm.totalPages},on:{\"click\":_vm.next}},[_vm._v(\"Next\")])]):_vm._e()],1)])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--4-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--4-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=js&\"","<script type=\"text/ecmascript-6\">\n import moment from 'moment';\n import Layout from '../../layouts/MainLayout.vue'\n\n export default {\n components: {Layout},\n\n\n /**\n * The component's data.\n */\n data() {\n return {\n tagSearchPhrase: '',\n searchTimeout: null,\n page: 1,\n perPage: 50,\n totalPages: 1,\n loadingJobs: true,\n retryingJobs: [],\n jobs: []\n };\n },\n\n\n /**\n * Watch these properties for changes.\n */\n watch: {\n tagSearchPhrase() {\n clearTimeout(this.searchTimeout);\n\n this.searchTimeout = setTimeout(() => {\n this.loadJobs();\n }, 500);\n }\n },\n\n\n /**\n * Prepare the component.\n */\n created() {\n document.title = \"Horizon - Failed Jobs\";\n\n this.loadJobs();\n\n this.refreshJobsPeriodically();\n },\n\n\n /**\n * Clean after the component is destroyed.\n */\n destroyed(){\n clearInterval(this.interval);\n },\n\n\n methods: {\n /**\n * Load the failed jobs.\n */\n loadJobs(starting = -1, preload = true) {\n if (preload) {\n this.loadingJobs = true;\n }\n\n var tagQuery = this.tagSearchPhrase ? 'tag=' + this.tagSearchPhrase + '&' : '';\n\n this.$http.get('/horizon/api/jobs/failed?' + tagQuery + 'starting_at=' + starting)\n .then(response => {\n this.jobs = response.data.jobs;\n\n this.totalPages = Math.ceil(response.data.total / this.perPage);\n\n this.loadingJobs = false;\n });\n },\n\n\n /**\n * Retry the given failed job.\n */\n retry(id) {\n if (this.isRetrying(id)) {\n return;\n }\n\n this.retryingJobs.push(id);\n\n this.$http.post('/horizon/api/jobs/retry/' + id)\n .then(() => {\n setTimeout(() => {\n this.retryingJobs = _.reject(this.retryingJobs, job => job == id);\n }, 3000);\n });\n },\n\n\n /**\n * Determine if the given job is currently retrying.\n */\n isRetrying(id) {\n return _.includes(this.retryingJobs, id);\n },\n\n\n /**\n * Determine if the given job has completed.\n */\n hasCompleted(job){\n return _.find(job.retried_by, retry => retry.status == 'completed');\n },\n\n\n /**\n * Refresh the jobs every period of time.\n */\n refreshJobsPeriodically() {\n this.interval = setInterval(() => {\n if (this.page != 1) {\n return;\n }\n\n this.loadJobs(-1, false);\n }, 3000);\n },\n\n\n /**\n * Load the jobs for the previous page.\n */\n previous() {\n this.loadJobs(((this.page - 2) * this.perPage) - 1);\n\n this.page -= 1;\n },\n\n\n /**\n * Load the jobs for the next page.\n */\n next() {\n this.loadJobs((this.page * this.perPage) - 1);\n\n this.page += 1;\n }\n }\n }\n</script>\n\n<template>\n <layout>\n <section class=\"main-content\">\n <div class=\"card\">\n <div class=\"card-header d-flex align-items-center\">\n <span class=\"mr-auto\">Failed Jobs</span>\n <div class=\"search\">\n <input type=\"text\" class=\"form-control\" v-model=\"tagSearchPhrase\" placeholder=\"Search Tags\">\n </div>\n </div>\n\n <div class=\"table-responsive\">\n <loader :yes=\"loadingJobs\"/>\n\n <p class=\"text-center m-0 p-5\" v-if=\"!loadingJobs && !jobs.length\">\n There aren't any recent failed jobs.\n </p>\n\n <table v-if=\"! loadingJobs && jobs.length\" class=\"table card-table table-hover\">\n <thead>\n <tr>\n <th>Job</th>\n <th>On</th>\n <th>Tags</th>\n <th>Runtime</th>\n <th>Failed At</th>\n <th>Retry</th>\n </tr>\n </thead>\n <tbody>\n <tr v-for=\"job in jobs\">\n <td>\n <router-link :to=\"{ name: 'failed.detail', params: { jobId: job.id }}\" data-toggle=\"tooltip\" :title=\"job.name\">\n {{ jobBaseName(job.name) }}\n </router-link>\n </td>\n <td>{{ job.queue }}</td>\n <td>{{ displayableTagsList(job.payload.tags) }}</td>\n <td>{{ job.failed_at ? String((job.failed_at - job.reserved_at).toFixed(3))+'s' : '-' }}</td>\n <td class=\"text-nowrap\">{{ readableTimestamp(job.failed_at) }}</td>\n <td>\n <span @click=\"retry(job.id)\" v-if=\"!hasCompleted(job)\">\n <i class=\"icon\">\n <svg class=\"fill-primary\" :class=\"{spin: isRetrying(job.id)}\">\n <use xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#zondicon-refresh\"></use>\n </svg>\n </i>\n </span>\n </td>\n </tr>\n </tbody>\n </table>\n\n <div v-if=\"! loadingJobs && jobs.length\" class=\"p-3 mt-3 d-flex justify-content-between\">\n <button @click=\"previous\" class=\"btn btn-primary btn-md\" :disabled=\"page==1\">Previous</button>\n <button @click=\"next\" class=\"btn btn-primary btn-md\" :disabled=\"page>=totalPages\">Next</button>\n </div>\n </div>\n </div>\n </section>\n </layout>\n</template>\n","import { render, staticRenderFns } from \"./Index.vue?vue&type=template&id=598d1ce2&\"\nimport script from \"./Index.vue?vue&type=script&lang=js&\"\nexport * from \"./Index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","'use strict';\n\nvar defaults = require('./../defaults');\nvar utils = require('./../utils');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = utils.merge({\n url: arguments[0]\n }, arguments[1]);\n }\n\n config = utils.merge(defaults, {method: 'get'}, this.defaults, config);\n config.method = config.method.toLowerCase();\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"table-responsive\"},[_c('loader',{attrs:{\"yes\":_vm.loadState[_vm.type]}}),_vm._v(\" \"),(!_vm.loadState[_vm.type] && !_vm.jobs[_vm.type].length)?_c('p',{staticClass:\"text-center m-0 p-5\"},[_vm._v(\"\\n There aren't any recent jobs for this tag.\\n \")]):_vm._e(),_vm._v(\" \"),(!_vm.loadState[_vm.type] && _vm.jobs[_vm.type].length)?_c('table',{staticClass:\"table card-table table-hover\"},[_c('thead',[_c('tr',[_c('th',[_vm._v(\"Job\")]),_vm._v(\" \"),_c('th',[_vm._v(\"On\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Tags\")]),_vm._v(\" \"),(_vm.type == 'index')?_c('th',[_vm._v(\"Queued At\")]):_vm._e(),_vm._v(\" \"),_c('th',[_vm._v(\"Runtime\")]),_vm._v(\" \"),(_vm.type == 'index')?_c('th',[_vm._v(\"Status\")]):_vm._e(),_vm._v(\" \"),(_vm.type != 'index')?_c('th',[_vm._v(\"Failed At\")]):_vm._e()])]),_vm._v(\" \"),_c('tbody',_vm._l((_vm.jobs[_vm.type]),function(job){return _c('tr',[_c('td',[(job.status == 'failed')?_c('a',{attrs:{\"href\":'/horizon/failed/'+job.id}},[_vm._v(_vm._s(job.name))]):_c('span',[_vm._v(_vm._s(job.name))])]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(job.queue))]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(job.payload.tags && job.payload.tags.length ? job.payload.tags.join(', ') : ''))]),_vm._v(\" \"),(_vm.type == 'index')?_c('td',[_vm._v(\"\\n \"+_vm._s(_vm.readableTimestamp(job.payload.pushedAt))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('td',[(job.status == 'failed')?_c('span',[_vm._v(_vm._s(job.failed_at ? (job.failed_at - job.reserved_at).toFixed(3)+'s' : '-'))]):_c('span',[_vm._v(_vm._s(job.completed_at ? (job.completed_at - job.reserved_at).toFixed(3)+'s' : '-'))])]),_vm._v(\" \"),(_vm.type == 'index')?_c('td',[_c('status',{staticClass:\"mr1\",attrs:{\"active\":job.status == 'completed',\"pending\":job.status == 'reserved' || job.status == 'pending'}})],1):_vm._e(),_vm._v(\" \"),(_vm.type != 'index')?_c('td',[_vm._v(\"\\n \"+_vm._s(_vm.readableTimestamp(job.failed_at))+\"\\n \")]):_vm._e()])}),0)]):_vm._e(),_vm._v(\" \"),(!_vm.loadState[_vm.type] && _vm.jobs[_vm.type].length)?_c('div',{staticClass:\"p-3 mt-3 d-flex justify-content-between\"},[_c('button',{staticClass:\"btn btn-primary btn-md\",attrs:{\"disabled\":_vm.page==1},on:{\"click\":_vm.previous}},[_vm._v(\"Previous\")]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-primary btn-md\",attrs:{\"disabled\":_vm.page>=_vm.totalPages},on:{\"click\":_vm.next}},[_vm._v(\"Next\")])]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--4-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Jobs.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--4-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Jobs.vue?vue&type=script&lang=js&\"","<script type=\"text/ecmascript-6\">\n import Status from '../../components/Status/Status.vue'\n\n export default {\n props: ['type'],\n\n components: {Status},\n\n /**\n * The component's data.\n */\n data() {\n return {\n page: 1,\n perPage: 50,\n totalPages: 1,\n loadState: {\n index: true, failed: true\n },\n jobs: {\n index: [], failed: []\n }\n };\n },\n\n\n /**\n * Prepare the component.\n */\n mounted() {\n this.loadJobs(this.$route.params.tag);\n\n this.refreshJobsPeriodically();\n },\n\n /**\n * Clean after the component is destroyed.\n */\n destroyed(){\n clearInterval(this.interval);\n },\n\n\n /**\n * Watch these properties for changes.\n */\n watch: {\n '$route'() {\n this.page = 1;\n\n this.loadJobs(this.$route.params.tag);\n }\n },\n\n\n methods: {\n /**\n * Load the jobs of the given tag.\n */\n loadJobs(tag, starting = 0, preload = true) {\n if (preload) {\n this.loadState[this.type] = true;\n }\n\n tag = this.type == 'failed' ? 'failed:' + tag : tag;\n\n return this.$http.get('/horizon/api/monitoring/' + encodeURIComponent(tag) + '?starting_at=' + starting + '&limit=' + this.perPage)\n .then(response => {\n this.jobs[this.type] = response.data.jobs;\n\n this.totalPages = Math.ceil(response.data.total / this.perPage);\n\n this.loadState[this.type] = false;\n\n return response.data.jobs;\n });\n },\n\n\n /**\n * Refresh the jobs every period of time.\n */\n refreshJobsPeriodically() {\n this.interval = setInterval(() => {\n if (this.page != 1) {\n return;\n }\n\n this.loadJobs(this.$route.params.tag, 0, false);\n }, 3000);\n },\n\n\n /**\n * Load the jobs for the previous page.\n */\n previous() {\n this.loadJobs(this.$route.params.tag,\n (this.page - 2) * this.perPage\n );\n\n this.page -= 1;\n },\n\n\n /**\n * Load the jobs for the next page.\n */\n next() {\n this.loadJobs(this.$route.params.tag,\n this.page * this.perPage\n );\n\n this.page += 1;\n }\n }\n }\n</script>\n<template>\n <div class=\"table-responsive\">\n <loader :yes=\"loadState[type]\"/>\n\n <p class=\"text-center m-0 p-5\" v-if=\"!loadState[type] && !jobs[type].length\">\n There aren't any recent jobs for this tag.\n </p>\n\n <table v-if=\"!loadState[type] && jobs[type].length\" class=\"table card-table table-hover\">\n <thead>\n <tr>\n <th>Job</th>\n <th>On</th>\n <th>Tags</th>\n <th v-if=\"type == 'index'\">Queued At</th>\n <th>Runtime</th>\n <th v-if=\"type == 'index'\">Status</th>\n <th v-if=\"type != 'index'\">Failed At</th>\n </tr>\n </thead>\n <tbody>\n <tr v-for=\"job in jobs[type]\">\n <td>\n <a v-if=\"job.status == 'failed'\" :href=\"'/horizon/failed/'+job.id\">{{ job.name }}</a>\n <span v-else>{{ job.name }}</span>\n </td>\n <td>{{ job.queue }}</td>\n <td>{{ job.payload.tags && job.payload.tags.length ? job.payload.tags.join(', ') : '' }}</td>\n <td v-if=\"type == 'index'\">\n {{ readableTimestamp(job.payload.pushedAt) }}\n </td>\n <td>\n <span v-if=\"job.status == 'failed'\">{{ job.failed_at ? (job.failed_at - job.reserved_at).toFixed(3)+'s' : '-' }}</span>\n <span v-else=\"\">{{ job.completed_at ? (job.completed_at - job.reserved_at).toFixed(3)+'s' : '-' }}</span>\n </td>\n <td v-if=\"type == 'index'\">\n <status :active=\"job.status == 'completed'\" :pending=\"job.status == 'reserved' || job.status == 'pending'\" class=\"mr1\"/>\n </td>\n <td v-if=\"type != 'index'\">\n {{ readableTimestamp(job.failed_at) }}\n </td>\n </tr>\n </tbody>\n </table>\n\n <div v-if=\"!loadState[type] && jobs[type].length\" class=\"p-3 mt-3 d-flex justify-content-between\">\n <button @click=\"previous\" class=\"btn btn-primary btn-md\" :disabled=\"page==1\">Previous</button>\n <button @click=\"next\" class=\"btn btn-primary btn-md\" :disabled=\"page>=totalPages\">Next</button>\n </div>\n </div>\n</template>\n","import { render, staticRenderFns } from \"./Jobs.vue?vue&type=template&id=8f6ed904&\"\nimport script from \"./Jobs.vue?vue&type=script&lang=js&\"\nexport * from \"./Jobs.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/*!\n * jQuery JavaScript Library v3.3.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2018-01-20T17:24Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar document = window.document;\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar concat = arr.concat;\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n // Support: Chrome <=57, Firefox <=52\n // In some browsers, typeof returns \"function\" for HTML <object> elements\n // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n // We don't want to classify *any* DOM node as a function.\n return typeof obj === \"function\" && typeof obj.nodeType !== \"number\";\n };\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, doc, node ) {\n\t\tdoc = doc || document;\n\n\t\tvar i,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\t\t\t\tif ( node[ i ] ) {\n\t\t\t\t\tscript[ i ] = node[ i ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.3.1\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android <=4.0 only\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && Array.isArray( src ) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject( src ) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\n\t\t/* eslint-disable no-unused-vars */\n\t\t// See https://github.com/eslint/eslint/issues/6125\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a global context\n\tglobalEval: function( code ) {\n\t\tDOMEval( code );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android <=4.0 only\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\nfunction( i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.3\n * https://sizzlejs.com/\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2016-08-08\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\0-\\\\xa0])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*?)\" + whitespace + \"*\\\\]\", \"g\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tdisabledAncestor = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && (\"form\" in elem || \"label\" in elem);\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\n\t\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\t\tsetDocument( context );\n\t\t}\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( (m = match[1]) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( (elem = context.getElementById( m )) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && (elem = newContext.getElementById( m )) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[2] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!compilerCache[ selector + \" \" ] &&\n\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\n\n\t\t\t\tif ( nodeType !== 1 ) {\n\t\t\t\t\tnewContext = context;\n\t\t\t\t\tnewSelector = selector;\n\n\t\t\t\t// qSA looks outside Element context, which is not what we want\n\t\t\t\t// Thanks to Andrew Dupont for this workaround technique\n\t\t\t\t// Support: IE <=8\n\t\t\t\t// Exclude object elements\n\t\t\t\t} else if ( context.nodeName.toLowerCase() !== \"object\" ) {\n\n\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\tif ( (nid = context.getAttribute( \"id\" )) ) {\n\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", (nid = expando) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = \"#\" + nid + \" \" + toSelector( groups[i] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\t\t\t\t}\n\n\t\t\t\tif ( newSelector ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + \" \" ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement(\"fieldset\");\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tdisabledAncestor( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9-11, Edge\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\tif ( preferredDoc !== document &&\n\t\t(subWindow = document.defaultView) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert(function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( el ) {\n\t\tel.appendChild( document.createComment(\"\") );\n\t\treturn !el.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t});\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( (elem = elems[i++]) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( document.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( el ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\"<select id='\" + expando + \"-\\r\\\\' msallowcapture=''>\" +\n\t\t\t\t\"<option selected=''></option></select>\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( el ) {\n\t\t\tel.innerHTML = \"<a href='' disabled='disabled'></a>\" +\n\t\t\t\t\"<select disabled='disabled'><option/></select>\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll(\":enabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll(\":disabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( el ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === document ? -1 :\n\t\t\t\tb === document ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\t// Make sure that attribute selectors are quoted\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!compilerCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn (sel + \"\").replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( (oldCache = uniqueCache[ key ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context === document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\tif ( !context && elem.ownerDocument !== document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( el ) {\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement(\"fieldset\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( el ) {\n\tel.innerHTML = \"<a href='#'></a>\";\n\treturn el.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( el ) {\n\tel.innerHTML = \"<input/>\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( el ) {\n\treturn el.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n};\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n if ( nodeName( elem, \"iframe\" ) ) {\n return elem.contentDocument;\n }\n\n // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n // Treat the template element as a regular one in browsers that\n // don't support it.\n if ( nodeName( elem, \"template\" ) ) {\n elem = elem.content || elem;\n }\n\n return jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the master Deferred\n\t\t\tmaster = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tmaster.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( master.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn master.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), master.reject );\n\t\t}\n\n\t\treturn master.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\tvalue :\n\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tjQuery.contains( elem.ownerDocument, elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\nvar swap = function( elem, options, callback, args ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.apply( elem, args || [] );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = ( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]+)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// Support: IE <=9 only\n\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\n// Support: IE <=9 only\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, contains, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( contains ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n} )();\nvar documentElement = document.documentElement;\n\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 only\n// See #13393 for more info\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tvar event = jQuery.event.fix( nativeEvent );\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\t\t\thandlers = ( dataPriv.get( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// Triggered event must either 1) have no namespace, or 2) have namespace(s)\n\t\t\t\t// a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG <use> instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tfocus: {\n\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\n\t\t\t\t\tthis.focus();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\t\tclick: {\n\n\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this.type === \"checkbox\" && this.click && nodeName( this, \"input\" ) ) {\n\t\t\t\t\tthis.click();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\n\t\t\t_default: function( event ) {\n\t\t\t\treturn nodeName( event.target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\n\twhich: function( event ) {\n\t\tvar button = event.button;\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && rkeyEvent.test( event.type ) ) {\n\t\t\treturn event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\tif ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {\n\t\t\tif ( button & 1 ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tif ( button & 2 ) {\n\t\t\t\treturn 3;\n\t\t\t}\n\n\t\t\tif ( button & 4 ) {\n\t\t\t\treturn 2;\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn event.which;\n\t}\n}, jQuery.event.addProp );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t/* eslint-disable max-len */\n\n\t// See https://github.com/eslint/eslint/issues/3229\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,\n\n\t/* eslint-enable */\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.access( src );\n\t\tpdataCur = dataPriv.set( dest, pdataOld );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdelete pdataCur.handle;\n\t\t\tpdataCur.events = {};\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = concat.apply( [], args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), doc, node );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && jQuery.contains( node.ownerDocument, node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html.replace( rxhtmlTag, \"<$1></$2>\" );\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = div.offsetWidth === 36 || \"absolute\";\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, #12537)\n\t// .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t},\n\n\tcssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style;\n\n// Return a css property mapped to a potentially vendor prefixed property\nfunction vendorPropName( name ) {\n\n\t// Shortcut for names that are not vendor prefixed\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a property mapped along what jQuery.cssProps suggests or to\n// a vendor prefixed property.\nfunction finalPropName( name ) {\n\tvar ret = jQuery.cssProps[ name ];\n\tif ( !ret ) {\n\t\tret = jQuery.cssProps[ name ] = vendorPropName( name ) || name;\n\t}\n\treturn ret;\n}\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\t\t) );\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\t\tval = curCSS( elem, dimension, styles ),\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox;\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\t// Check for style in case a browser which returns unreliable values\n\t// for getComputedStyle silently falls back to the reliable elem.style\n\tvalueIsBorderBox = valueIsBorderBox &&\n\t\t( support.boxSizingReliable() || val === elem.style[ dimension ] );\n\n\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t// This happens for inline elements with no explicit setting (gh-3571)\n\t// Support: Android <=4.1 - 4.3 only\n\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\tif ( val === \"auto\" ||\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) {\n\n\t\tval = elem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ];\n\n\t\t// offsetWidth/offsetHeight provide border-box values\n\t\tvalueIsBorderBox = true;\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\tif ( type === \"number\" ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t\t} ) :\n\t\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\t\t\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra && boxModelAdjustment(\n\t\t\t\t\telem,\n\t\t\t\t\tdimension,\n\t\t\t\t\textra,\n\t\t\t\t\tisBorderBox,\n\t\t\t\t\tstyles\n\t\t\t\t);\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && support.scrollboxSize() === styles.position ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 &&\n\t\t\t\t( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null ||\n\t\t\t\t\tjQuery.cssHooks[ tween.prop ] ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\t\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || {} )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = Date.now();\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {\n\t\txml = undefined;\n\t}\n\n\tif ( !xml || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\tjQuery.error( \"Invalid XML: \" + data );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} )\n\t\t.filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} )\n\t\t.map( function( i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\toriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce++ ) + uncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\n\njQuery._evalUrl = function( url ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\t\t\"throws\": true\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"<script>\" ).prop( {\n\t\t\t\t\tcharset: s.scriptCharset,\n\t\t\t\t\tsrc: s.url\n\t\t\t\t} ).on(\n\t\t\t\t\t\"load error\",\n\t\t\t\t\tcallback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\n\t// offset() relates an element's border box to the document origin\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\t// Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\t\trect = elem.getBoundingClientRect();\n\t\twin = elem.ownerDocument.defaultView;\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset,\n\t\t\tleft: rect.left + win.pageXOffset\n\t\t};\n\t},\n\n\t// position() relates an element's margin box to its offset parent's padding box\n\t// This corresponds to the behavior of CSS absolute positioning\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset, doc,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// position:fixed elements are offset from the viewport, which itself always has zero offset\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume position:fixed implies availability of getBoundingClientRect\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\toffset = this.offset();\n\n\t\t\t// Account for the *real* offset parent, which can be the document or its root element\n\t\t\t// when a statically positioned element is identified\n\t\t\tdoc = elem.ownerDocument;\n\t\t\toffsetParent = elem.offsetParent || doc.documentElement;\n\t\t\twhile ( offsetParent &&\n\t\t\t\t( offsetParent === doc.body || offsetParent === doc.documentElement ) &&\n\t\t\t\tjQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\n\t\t\t\toffsetParent = offsetParent.parentNode;\n\t\t\t}\n\t\t\tif ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {\n\n\t\t\t\t// Incorporate borders into its offset, since they are outside its content origin\n\t\t\t\tparentOffset = jQuery( offsetParent ).offset();\n\t\t\t\tparentOffset.top += jQuery.css( offsetParent, \"borderTopWidth\", true );\n\t\t\t\tparentOffset.left += jQuery.css( offsetParent, \"borderLeftWidth\", true );\n\t\t\t}\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t// documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( { padding: \"inner\" + name, content: type, \"\": \"outer\" + name },\n\t\tfunction( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.each( ( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.on( name, null, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n} );\n\njQuery.fn.extend( {\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n} );\n\n\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t}\n} );\n\n// Bind a function to a context, optionally partially applying any\n// arguments.\n// jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n// However, it is not slated for removal any time soon\njQuery.proxy = function( fn, context ) {\n\tvar tmp, args, proxy;\n\n\tif ( typeof context === \"string\" ) {\n\t\ttmp = fn[ context ];\n\t\tcontext = fn;\n\t\tfn = tmp;\n\t}\n\n\t// Quick check to determine if target is callable, in the spec\n\t// this throws a TypeError, but we will just return undefined.\n\tif ( !isFunction( fn ) ) {\n\t\treturn undefined;\n\t}\n\n\t// Simulated bind\n\targs = slice.call( arguments, 2 );\n\tproxy = function() {\n\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t};\n\n\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\treturn proxy;\n};\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\njQuery.isFunction = isFunction;\njQuery.isWindow = isWindow;\njQuery.camelCase = camelCase;\njQuery.type = toType;\n\njQuery.now = Date.now;\n\njQuery.isNumeric = function( obj ) {\n\n\t// As of jQuery 3.0, isNumeric is limited to\n\t// strings and numbers (primitives or objects)\n\t// that can be coerced to finite numbers (gh-2662)\n\tvar type = jQuery.type( obj );\n\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t!isNaN( obj - parseFloat( obj ) );\n};\n\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (#13566)\nif ( !noGlobal ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar elements = require('../elements/index');\nvar helpers = require('../helpers/index');\n\ndefaults._set('line', {\n\tshowLines: true,\n\tspanGaps: false,\n\n\thover: {\n\t\tmode: 'label'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'category',\n\t\t\tid: 'x-axis-0'\n\t\t}],\n\t\tyAxes: [{\n\t\t\ttype: 'linear',\n\t\t\tid: 'y-axis-0'\n\t\t}]\n\t}\n});\n\nmodule.exports = function(Chart) {\n\n\tfunction lineEnabled(dataset, options) {\n\t\treturn helpers.valueOrDefault(dataset.showLine, options.showLines);\n\t}\n\n\tChart.controllers.line = Chart.DatasetController.extend({\n\n\t\tdatasetElementType: elements.Line,\n\n\t\tdataElementType: elements.Point,\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar line = meta.dataset;\n\t\t\tvar points = meta.data || [];\n\t\t\tvar options = me.chart.options;\n\t\t\tvar lineElementOptions = options.elements.line;\n\t\t\tvar scale = me.getScaleForId(meta.yAxisID);\n\t\t\tvar i, ilen, custom;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar showLine = lineEnabled(dataset, options);\n\n\t\t\t// Update Line\n\t\t\tif (showLine) {\n\t\t\t\tcustom = line.custom || {};\n\n\t\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\t\tif ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) {\n\t\t\t\t\tdataset.lineTension = dataset.tension;\n\t\t\t\t}\n\n\t\t\t\t// Utility\n\t\t\t\tline._scale = scale;\n\t\t\t\tline._datasetIndex = me.index;\n\t\t\t\t// Data\n\t\t\t\tline._children = points;\n\t\t\t\t// Model\n\t\t\t\tline._model = {\n\t\t\t\t\t// Appearance\n\t\t\t\t\t// The default behavior of lines is to break at null values, according\n\t\t\t\t\t// to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158\n\t\t\t\t\t// This option gives lines the ability to span gaps\n\t\t\t\t\tspanGaps: dataset.spanGaps ? dataset.spanGaps : options.spanGaps,\n\t\t\t\t\ttension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, lineElementOptions.tension),\n\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor),\n\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth),\n\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor),\n\t\t\t\t\tborderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle),\n\t\t\t\t\tborderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash),\n\t\t\t\t\tborderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset),\n\t\t\t\t\tborderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle),\n\t\t\t\t\tfill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill),\n\t\t\t\t\tsteppedLine: custom.steppedLine ? custom.steppedLine : helpers.valueOrDefault(dataset.steppedLine, lineElementOptions.stepped),\n\t\t\t\t\tcubicInterpolationMode: custom.cubicInterpolationMode ? custom.cubicInterpolationMode : helpers.valueOrDefault(dataset.cubicInterpolationMode, lineElementOptions.cubicInterpolationMode),\n\t\t\t\t};\n\n\t\t\t\tline.pivot();\n\t\t\t}\n\n\t\t\t// Update Points\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\tme.updateElement(points[i], i, reset);\n\t\t\t}\n\n\t\t\tif (showLine && line._model.tension !== 0) {\n\t\t\t\tme.updateBezierControlPoints();\n\t\t\t}\n\n\t\t\t// Now pivot the point for animation\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\tpoints[i].pivot();\n\t\t\t}\n\t\t},\n\n\t\tgetPointBackgroundColor: function(point, index) {\n\t\t\tvar backgroundColor = this.chart.options.elements.point.backgroundColor;\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar custom = point.custom || {};\n\n\t\t\tif (custom.backgroundColor) {\n\t\t\t\tbackgroundColor = custom.backgroundColor;\n\t\t\t} else if (dataset.pointBackgroundColor) {\n\t\t\t\tbackgroundColor = helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, backgroundColor);\n\t\t\t} else if (dataset.backgroundColor) {\n\t\t\t\tbackgroundColor = dataset.backgroundColor;\n\t\t\t}\n\n\t\t\treturn backgroundColor;\n\t\t},\n\n\t\tgetPointBorderColor: function(point, index) {\n\t\t\tvar borderColor = this.chart.options.elements.point.borderColor;\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar custom = point.custom || {};\n\n\t\t\tif (custom.borderColor) {\n\t\t\t\tborderColor = custom.borderColor;\n\t\t\t} else if (dataset.pointBorderColor) {\n\t\t\t\tborderColor = helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, borderColor);\n\t\t\t} else if (dataset.borderColor) {\n\t\t\t\tborderColor = dataset.borderColor;\n\t\t\t}\n\n\t\t\treturn borderColor;\n\t\t},\n\n\t\tgetPointBorderWidth: function(point, index) {\n\t\t\tvar borderWidth = this.chart.options.elements.point.borderWidth;\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar custom = point.custom || {};\n\n\t\t\tif (!isNaN(custom.borderWidth)) {\n\t\t\t\tborderWidth = custom.borderWidth;\n\t\t\t} else if (!isNaN(dataset.pointBorderWidth) || helpers.isArray(dataset.pointBorderWidth)) {\n\t\t\t\tborderWidth = helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, borderWidth);\n\t\t\t} else if (!isNaN(dataset.borderWidth)) {\n\t\t\t\tborderWidth = dataset.borderWidth;\n\t\t\t}\n\n\t\t\treturn borderWidth;\n\t\t},\n\n\t\tgetPointRotation: function(point, index) {\n\t\t\tvar pointRotation = this.chart.options.elements.point.rotation;\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar custom = point.custom || {};\n\n\t\t\tif (!isNaN(custom.rotation)) {\n\t\t\t\tpointRotation = custom.rotation;\n\t\t\t} else if (!isNaN(dataset.pointRotation) || helpers.isArray(dataset.pointRotation)) {\n\t\t\t\tpointRotation = helpers.valueAtIndexOrDefault(dataset.pointRotation, index, pointRotation);\n\t\t\t}\n\t\t\treturn pointRotation;\n\t\t},\n\n\t\tupdateElement: function(point, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar datasetIndex = me.index;\n\t\t\tvar value = dataset.data[index];\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\t\tvar xScale = me.getScaleForId(meta.xAxisID);\n\t\t\tvar pointOptions = me.chart.options.elements.point;\n\t\t\tvar x, y;\n\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\tif ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) {\n\t\t\t\tdataset.pointRadius = dataset.radius;\n\t\t\t}\n\t\t\tif ((dataset.hitRadius !== undefined) && (dataset.pointHitRadius === undefined)) {\n\t\t\t\tdataset.pointHitRadius = dataset.hitRadius;\n\t\t\t}\n\n\t\t\tx = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex);\n\t\t\ty = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex);\n\n\t\t\t// Utility\n\t\t\tpoint._xScale = xScale;\n\t\t\tpoint._yScale = yScale;\n\t\t\tpoint._datasetIndex = datasetIndex;\n\t\t\tpoint._index = index;\n\n\t\t\t// Desired view properties\n\t\t\tpoint._model = {\n\t\t\t\tx: x,\n\t\t\t\ty: y,\n\t\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\n\t\t\t\t// Appearance\n\t\t\t\tradius: custom.radius || helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointOptions.radius),\n\t\t\t\tpointStyle: custom.pointStyle || helpers.valueAtIndexOrDefault(dataset.pointStyle, index, pointOptions.pointStyle),\n\t\t\t\trotation: me.getPointRotation(point, index),\n\t\t\t\tbackgroundColor: me.getPointBackgroundColor(point, index),\n\t\t\t\tborderColor: me.getPointBorderColor(point, index),\n\t\t\t\tborderWidth: me.getPointBorderWidth(point, index),\n\t\t\t\ttension: meta.dataset._model ? meta.dataset._model.tension : 0,\n\t\t\t\tsteppedLine: meta.dataset._model ? meta.dataset._model.steppedLine : false,\n\t\t\t\t// Tooltip\n\t\t\t\thitRadius: custom.hitRadius || helpers.valueAtIndexOrDefault(dataset.pointHitRadius, index, pointOptions.hitRadius)\n\t\t\t};\n\t\t},\n\n\t\tcalculatePointY: function(value, index, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\t\tvar sumPos = 0;\n\t\t\tvar sumNeg = 0;\n\t\t\tvar i, ds, dsMeta;\n\n\t\t\tif (yScale.options.stacked) {\n\t\t\t\tfor (i = 0; i < datasetIndex; i++) {\n\t\t\t\t\tds = chart.data.datasets[i];\n\t\t\t\t\tdsMeta = chart.getDatasetMeta(i);\n\t\t\t\t\tif (dsMeta.type === 'line' && dsMeta.yAxisID === yScale.id && chart.isDatasetVisible(i)) {\n\t\t\t\t\t\tvar stackedRightValue = Number(yScale.getRightValue(ds.data[index]));\n\t\t\t\t\t\tif (stackedRightValue < 0) {\n\t\t\t\t\t\t\tsumNeg += stackedRightValue || 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsumPos += stackedRightValue || 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar rightValue = Number(yScale.getRightValue(value));\n\t\t\t\tif (rightValue < 0) {\n\t\t\t\t\treturn yScale.getPixelForValue(sumNeg + rightValue);\n\t\t\t\t}\n\t\t\t\treturn yScale.getPixelForValue(sumPos + rightValue);\n\t\t\t}\n\n\t\t\treturn yScale.getPixelForValue(value);\n\t\t},\n\n\t\tupdateBezierControlPoints: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar area = me.chart.chartArea;\n\t\t\tvar points = (meta.data || []);\n\t\t\tvar i, ilen, point, model, controlPoints;\n\n\t\t\t// Only consider points that are drawn in case the spanGaps option is used\n\t\t\tif (meta.dataset._model.spanGaps) {\n\t\t\t\tpoints = points.filter(function(pt) {\n\t\t\t\t\treturn !pt._model.skip;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tfunction capControlPoint(pt, min, max) {\n\t\t\t\treturn Math.max(Math.min(pt, max), min);\n\t\t\t}\n\n\t\t\tif (meta.dataset._model.cubicInterpolationMode === 'monotone') {\n\t\t\t\thelpers.splineCurveMonotone(points);\n\t\t\t} else {\n\t\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\t\tpoint = points[i];\n\t\t\t\t\tmodel = point._model;\n\t\t\t\t\tcontrolPoints = helpers.splineCurve(\n\t\t\t\t\t\thelpers.previousItem(points, i)._model,\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\thelpers.nextItem(points, i)._model,\n\t\t\t\t\t\tmeta.dataset._model.tension\n\t\t\t\t\t);\n\t\t\t\t\tmodel.controlPointPreviousX = controlPoints.previous.x;\n\t\t\t\t\tmodel.controlPointPreviousY = controlPoints.previous.y;\n\t\t\t\t\tmodel.controlPointNextX = controlPoints.next.x;\n\t\t\t\t\tmodel.controlPointNextY = controlPoints.next.y;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (me.chart.options.elements.line.capBezierPoints) {\n\t\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\t\tmodel = points[i]._model;\n\t\t\t\t\tmodel.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right);\n\t\t\t\t\tmodel.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom);\n\t\t\t\t\tmodel.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right);\n\t\t\t\t\tmodel.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tdraw: function() {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar points = meta.data || [];\n\t\t\tvar area = chart.chartArea;\n\t\t\tvar ilen = points.length;\n\t\t\tvar halfBorderWidth;\n\t\t\tvar i = 0;\n\n\t\t\tif (lineEnabled(me.getDataset(), chart.options)) {\n\t\t\t\thalfBorderWidth = (meta.dataset._model.borderWidth || 0) / 2;\n\n\t\t\t\thelpers.canvas.clipArea(chart.ctx, {\n\t\t\t\t\tleft: area.left,\n\t\t\t\t\tright: area.right,\n\t\t\t\t\ttop: area.top - halfBorderWidth,\n\t\t\t\t\tbottom: area.bottom + halfBorderWidth\n\t\t\t\t});\n\n\t\t\t\tmeta.dataset.draw();\n\n\t\t\t\thelpers.canvas.unclipArea(chart.ctx);\n\t\t\t}\n\n\t\t\t// Draw the points\n\t\t\tfor (; i < ilen; ++i) {\n\t\t\t\tpoints[i].draw(area);\n\t\t\t}\n\t\t},\n\n\t\tsetHoverStyle: function(element) {\n\t\t\t// Point\n\t\t\tvar dataset = this.chart.data.datasets[element._datasetIndex];\n\t\t\tvar index = element._index;\n\t\t\tvar custom = element.custom || {};\n\t\t\tvar model = element._model;\n\n\t\t\telement.$previousStyle = {\n\t\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\t\tborderColor: model.borderColor,\n\t\t\t\tborderWidth: model.borderWidth,\n\t\t\t\tradius: model.radius\n\t\t\t};\n\n\t\t\tmodel.backgroundColor = custom.hoverBackgroundColor || helpers.valueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor));\n\t\t\tmodel.borderColor = custom.hoverBorderColor || helpers.valueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor));\n\t\t\tmodel.borderWidth = custom.hoverBorderWidth || helpers.valueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth);\n\t\t\tmodel.radius = custom.hoverRadius || helpers.valueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius);\n\t\t},\n\t});\n};\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","/**\n * Platform fallback implementation (minimal).\n * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939\n */\n\nmodule.exports = {\n\tacquireContext: function(item) {\n\t\tif (item && item.canvas) {\n\t\t\t// Support for any object associated to a canvas (including a context2d)\n\t\t\titem = item.canvas;\n\t\t}\n\n\t\treturn item && item.getContext('2d') || null;\n\t}\n};\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.yes)?_c('div',{staticClass:\"d-flex justify-content-center p-4\"},[_c('i',{staticClass:\"icon mr-2\"},[_c('svg',{staticClass:\"fill-primary spin\"},[_c('use',{attrs:{\"xmlns:xlink\":\"http://www.w3.org/1999/xlink\",\"xlink:href\":\"#zondicon-refresh\"}})])]),_vm._v(\" \"),_c('span',[_vm._v(\"Loading...\")])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--4-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Loader.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--4-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Loader.vue?vue&type=script&lang=js&\"","<script type=\"text/ecmascript-6\">\n export default {\n props: ['yes'],\n }\n</script>\n\n<template>\n <div v-if=\"yes\" class=\"d-flex justify-content-center p-4\">\n <i class=\"icon mr-2\">\n <svg class=\"fill-primary spin\">\n <use xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#zondicon-refresh\"></use>\n </svg>\n </i>\n <span>Loading...</span>\n </div>\n</template>\n","import { render, staticRenderFns } from \"./Loader.vue?vue&type=template&id=7f1999f3&\"\nimport script from \"./Loader.vue?vue&type=script&lang=js&\"\nexport * from \"./Loader.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nvar color = require('chartjs-color');\nvar helpers = require('../helpers/index');\n\nfunction interpolate(start, view, model, ease) {\n\tvar keys = Object.keys(model);\n\tvar i, ilen, key, actual, origin, target, type, c0, c1;\n\n\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\n\t\tkey = keys[i];\n\n\t\ttarget = model[key];\n\n\t\t// if a value is added to the model after pivot() has been called, the view\n\t\t// doesn't contain it, so let's initialize the view to the target value.\n\t\tif (!view.hasOwnProperty(key)) {\n\t\t\tview[key] = target;\n\t\t}\n\n\t\tactual = view[key];\n\n\t\tif (actual === target || key[0] === '_') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!start.hasOwnProperty(key)) {\n\t\t\tstart[key] = actual;\n\t\t}\n\n\t\torigin = start[key];\n\n\t\ttype = typeof target;\n\n\t\tif (type === typeof origin) {\n\t\t\tif (type === 'string') {\n\t\t\t\tc0 = color(origin);\n\t\t\t\tif (c0.valid) {\n\t\t\t\t\tc1 = color(target);\n\t\t\t\t\tif (c1.valid) {\n\t\t\t\t\t\tview[key] = c1.mix(c0, ease).rgbString();\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (type === 'number' && isFinite(origin) && isFinite(target)) {\n\t\t\t\tview[key] = origin + (target - origin) * ease;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\tview[key] = target;\n\t}\n}\n\nvar Element = function(configuration) {\n\thelpers.extend(this, configuration);\n\tthis.initialize.apply(this, arguments);\n};\n\nhelpers.extend(Element.prototype, {\n\n\tinitialize: function() {\n\t\tthis.hidden = false;\n\t},\n\n\tpivot: function() {\n\t\tvar me = this;\n\t\tif (!me._view) {\n\t\t\tme._view = helpers.clone(me._model);\n\t\t}\n\t\tme._start = {};\n\t\treturn me;\n\t},\n\n\ttransition: function(ease) {\n\t\tvar me = this;\n\t\tvar model = me._model;\n\t\tvar start = me._start;\n\t\tvar view = me._view;\n\n\t\t// No animation -> No Transition\n\t\tif (!model || ease === 1) {\n\t\t\tme._view = model;\n\t\t\tme._start = null;\n\t\t\treturn me;\n\t\t}\n\n\t\tif (!view) {\n\t\t\tview = me._view = {};\n\t\t}\n\n\t\tif (!start) {\n\t\t\tstart = me._start = {};\n\t\t}\n\n\t\tinterpolate(start, view, model, ease);\n\n\t\treturn me;\n\t},\n\n\ttooltipPosition: function() {\n\t\treturn {\n\t\t\tx: this._model.x,\n\t\t\ty: this._model.y\n\t\t};\n\t},\n\n\thasValue: function() {\n\t\treturn helpers.isNumber(this._model.x) && helpers.isNumber(this._model.y);\n\t}\n});\n\nElement.extend = helpers.inherits;\n\nmodule.exports = Element;\n","'use strict';\n\nvar helpers = require('../helpers/index');\n\nmodule.exports = function(Chart) {\n\n\tvar arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\n\n\t/**\n\t * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice',\n\t * 'unshift') and notify the listener AFTER the array has been altered. Listeners are\n\t * called on the 'onData*' callbacks (e.g. onDataPush, etc.) with same arguments.\n\t */\n\tfunction listenArrayEvents(array, listener) {\n\t\tif (array._chartjs) {\n\t\t\tarray._chartjs.listeners.push(listener);\n\t\t\treturn;\n\t\t}\n\n\t\tObject.defineProperty(array, '_chartjs', {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: {\n\t\t\t\tlisteners: [listener]\n\t\t\t}\n\t\t});\n\n\t\tarrayEvents.forEach(function(key) {\n\t\t\tvar method = 'onData' + key.charAt(0).toUpperCase() + key.slice(1);\n\t\t\tvar base = array[key];\n\n\t\t\tObject.defineProperty(array, key, {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: false,\n\t\t\t\tvalue: function() {\n\t\t\t\t\tvar args = Array.prototype.slice.call(arguments);\n\t\t\t\t\tvar res = base.apply(this, args);\n\n\t\t\t\t\thelpers.each(array._chartjs.listeners, function(object) {\n\t\t\t\t\t\tif (typeof object[method] === 'function') {\n\t\t\t\t\t\t\tobject[method].apply(object, args);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\treturn res;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Removes the given array event listener and cleanup extra attached properties (such as\n\t * the _chartjs stub and overridden methods) if array doesn't have any more listeners.\n\t */\n\tfunction unlistenArrayEvents(array, listener) {\n\t\tvar stub = array._chartjs;\n\t\tif (!stub) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar listeners = stub.listeners;\n\t\tvar index = listeners.indexOf(listener);\n\t\tif (index !== -1) {\n\t\t\tlisteners.splice(index, 1);\n\t\t}\n\n\t\tif (listeners.length > 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tarrayEvents.forEach(function(key) {\n\t\t\tdelete array[key];\n\t\t});\n\n\t\tdelete array._chartjs;\n\t}\n\n\t// Base class for all dataset controllers (line, bar, etc)\n\tChart.DatasetController = function(chart, datasetIndex) {\n\t\tthis.initialize(chart, datasetIndex);\n\t};\n\n\thelpers.extend(Chart.DatasetController.prototype, {\n\n\t\t/**\n\t\t * Element type used to generate a meta dataset (e.g. Chart.element.Line).\n\t\t * @type {Chart.core.element}\n\t\t */\n\t\tdatasetElementType: null,\n\n\t\t/**\n\t\t * Element type used to generate a meta data (e.g. Chart.element.Point).\n\t\t * @type {Chart.core.element}\n\t\t */\n\t\tdataElementType: null,\n\n\t\tinitialize: function(chart, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tme.chart = chart;\n\t\t\tme.index = datasetIndex;\n\t\t\tme.linkScales();\n\t\t\tme.addElements();\n\t\t},\n\n\t\tupdateIndex: function(datasetIndex) {\n\t\t\tthis.index = datasetIndex;\n\t\t},\n\n\t\tlinkScales: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar dataset = me.getDataset();\n\n\t\t\tif (meta.xAxisID === null || !(meta.xAxisID in me.chart.scales)) {\n\t\t\t\tmeta.xAxisID = dataset.xAxisID || me.chart.options.scales.xAxes[0].id;\n\t\t\t}\n\t\t\tif (meta.yAxisID === null || !(meta.yAxisID in me.chart.scales)) {\n\t\t\t\tmeta.yAxisID = dataset.yAxisID || me.chart.options.scales.yAxes[0].id;\n\t\t\t}\n\t\t},\n\n\t\tgetDataset: function() {\n\t\t\treturn this.chart.data.datasets[this.index];\n\t\t},\n\n\t\tgetMeta: function() {\n\t\t\treturn this.chart.getDatasetMeta(this.index);\n\t\t},\n\n\t\tgetScaleForId: function(scaleID) {\n\t\t\treturn this.chart.scales[scaleID];\n\t\t},\n\n\t\treset: function() {\n\t\t\tthis.update(true);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tdestroy: function() {\n\t\t\tif (this._data) {\n\t\t\t\tunlistenArrayEvents(this._data, this);\n\t\t\t}\n\t\t},\n\n\t\tcreateMetaDataset: function() {\n\t\t\tvar me = this;\n\t\t\tvar type = me.datasetElementType;\n\t\t\treturn type && new type({\n\t\t\t\t_chart: me.chart,\n\t\t\t\t_datasetIndex: me.index\n\t\t\t});\n\t\t},\n\n\t\tcreateMetaData: function(index) {\n\t\t\tvar me = this;\n\t\t\tvar type = me.dataElementType;\n\t\t\treturn type && new type({\n\t\t\t\t_chart: me.chart,\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_index: index\n\t\t\t});\n\t\t},\n\n\t\taddElements: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar data = me.getDataset().data || [];\n\t\t\tvar metaData = meta.data;\n\t\t\tvar i, ilen;\n\n\t\t\tfor (i = 0, ilen = data.length; i < ilen; ++i) {\n\t\t\t\tmetaData[i] = metaData[i] || me.createMetaData(i);\n\t\t\t}\n\n\t\t\tmeta.dataset = meta.dataset || me.createMetaDataset();\n\t\t},\n\n\t\taddElementAndReset: function(index) {\n\t\t\tvar element = this.createMetaData(index);\n\t\t\tthis.getMeta().data.splice(index, 0, element);\n\t\t\tthis.updateElement(element, index, true);\n\t\t},\n\n\t\tbuildOrUpdateElements: function() {\n\t\t\tvar me = this;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar data = dataset.data || (dataset.data = []);\n\n\t\t\t// In order to correctly handle data addition/deletion animation (an thus simulate\n\t\t\t// real-time charts), we need to monitor these data modifications and synchronize\n\t\t\t// the internal meta data accordingly.\n\t\t\tif (me._data !== data) {\n\t\t\t\tif (me._data) {\n\t\t\t\t\t// This case happens when the user replaced the data array instance.\n\t\t\t\t\tunlistenArrayEvents(me._data, me);\n\t\t\t\t}\n\n\t\t\t\tlistenArrayEvents(data, me);\n\t\t\t\tme._data = data;\n\t\t\t}\n\n\t\t\t// Re-sync meta data in case the user replaced the data array or if we missed\n\t\t\t// any updates and so make sure that we handle number of datapoints changing.\n\t\t\tme.resyncElements();\n\t\t},\n\n\t\tupdate: helpers.noop,\n\n\t\ttransition: function(easingValue) {\n\t\t\tvar meta = this.getMeta();\n\t\t\tvar elements = meta.data || [];\n\t\t\tvar ilen = elements.length;\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < ilen; ++i) {\n\t\t\t\telements[i].transition(easingValue);\n\t\t\t}\n\n\t\t\tif (meta.dataset) {\n\t\t\t\tmeta.dataset.transition(easingValue);\n\t\t\t}\n\t\t},\n\n\t\tdraw: function() {\n\t\t\tvar meta = this.getMeta();\n\t\t\tvar elements = meta.data || [];\n\t\t\tvar ilen = elements.length;\n\t\t\tvar i = 0;\n\n\t\t\tif (meta.dataset) {\n\t\t\t\tmeta.dataset.draw();\n\t\t\t}\n\n\t\t\tfor (; i < ilen; ++i) {\n\t\t\t\telements[i].draw();\n\t\t\t}\n\t\t},\n\n\t\tremoveHoverStyle: function(element) {\n\t\t\thelpers.merge(element._model, element.$previousStyle || {});\n\t\t\tdelete element.$previousStyle;\n\t\t},\n\n\t\tsetHoverStyle: function(element) {\n\t\t\tvar dataset = this.chart.data.datasets[element._datasetIndex];\n\t\t\tvar index = element._index;\n\t\t\tvar custom = element.custom || {};\n\t\t\tvar valueOrDefault = helpers.valueAtIndexOrDefault;\n\t\t\tvar getHoverColor = helpers.getHoverColor;\n\t\t\tvar model = element._model;\n\n\t\t\telement.$previousStyle = {\n\t\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\t\tborderColor: model.borderColor,\n\t\t\t\tborderWidth: model.borderWidth\n\t\t\t};\n\n\t\t\tmodel.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : valueOrDefault(dataset.hoverBackgroundColor, index, getHoverColor(model.backgroundColor));\n\t\t\tmodel.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : valueOrDefault(dataset.hoverBorderColor, index, getHoverColor(model.borderColor));\n\t\t\tmodel.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : valueOrDefault(dataset.hoverBorderWidth, index, model.borderWidth);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tresyncElements: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar data = me.getDataset().data;\n\t\t\tvar numMeta = meta.data.length;\n\t\t\tvar numData = data.length;\n\n\t\t\tif (numData < numMeta) {\n\t\t\t\tmeta.data.splice(numData, numMeta - numData);\n\t\t\t} else if (numData > numMeta) {\n\t\t\t\tme.insertElements(numMeta, numData - numMeta);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tinsertElements: function(start, count) {\n\t\t\tfor (var i = 0; i < count; ++i) {\n\t\t\t\tthis.addElementAndReset(start + i);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tonDataPush: function() {\n\t\t\tthis.insertElements(this.getDataset().data.length - 1, arguments.length);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tonDataPop: function() {\n\t\t\tthis.getMeta().data.pop();\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tonDataShift: function() {\n\t\t\tthis.getMeta().data.shift();\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tonDataSplice: function(start, count) {\n\t\t\tthis.getMeta().data.splice(start, count);\n\t\t\tthis.insertElements(start, arguments.length - 2);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tonDataUnshift: function() {\n\t\t\tthis.insertElements(0, arguments.length);\n\t\t}\n\t});\n\n\tChart.DatasetController.extend = helpers.inherits;\n};\n","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","/*!\n * Vue.js v2.5.22\n * (c) 2014-2019 Evan You\n * Released under the MIT License.\n */\n/* */\n\nvar emptyObject = Object.freeze({});\n\n// These helpers produce better VM code in JS engines due to their\n// explicitness and function inlining.\nfunction isUndef (v) {\n return v === undefined || v === null\n}\n\nfunction isDef (v) {\n return v !== undefined && v !== null\n}\n\nfunction isTrue (v) {\n return v === true\n}\n\nfunction isFalse (v) {\n return v === false\n}\n\n/**\n * Check if value is primitive.\n */\nfunction isPrimitive (value) {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n // $flow-disable-line\n typeof value === 'symbol' ||\n typeof value === 'boolean'\n )\n}\n\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\n/**\n * Get the raw type string of a value, e.g., [object Object].\n */\nvar _toString = Object.prototype.toString;\n\nfunction toRawType (value) {\n return _toString.call(value).slice(8, -1)\n}\n\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject (obj) {\n return _toString.call(obj) === '[object Object]'\n}\n\nfunction isRegExp (v) {\n return _toString.call(v) === '[object RegExp]'\n}\n\n/**\n * Check if val is a valid array index.\n */\nfunction isValidArrayIndex (val) {\n var n = parseFloat(String(val));\n return n >= 0 && Math.floor(n) === n && isFinite(val)\n}\n\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString (val) {\n return val == null\n ? ''\n : typeof val === 'object'\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n\n/**\n * Convert an input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber (val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n\n}\n\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap (\n str,\n expectsLowerCase\n) {\n var map = Object.create(null);\n var list = str.split(',');\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase\n ? function (val) { return map[val.toLowerCase()]; }\n : function (val) { return map[val]; }\n}\n\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n\n/**\n * Check if an attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n\n/**\n * Remove an item from an array.\n */\nfunction remove (arr, item) {\n if (arr.length) {\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1)\n }\n }\n}\n\n/**\n * Check whether an object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n return hasOwnProperty.call(obj, key)\n}\n\n/**\n * Create a cached version of a pure function.\n */\nfunction cached (fn) {\n var cache = Object.create(null);\n return (function cachedFn (str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str))\n })\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })\n});\n\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n});\n\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '-$1').toLowerCase()\n});\n\n/**\n * Simple bind polyfill for environments that do not support it,\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\n * since native bind is now performant enough in most browsers.\n * But removing it would mean breaking code that was able to run in\n * PhantomJS 1.x, so this must be kept for backward compatibility.\n */\n\n/* istanbul ignore next */\nfunction polyfillBind (fn, ctx) {\n function boundFn (a) {\n var l = arguments.length;\n return l\n ? l > 1\n ? fn.apply(ctx, arguments)\n : fn.call(ctx, a)\n : fn.call(ctx)\n }\n\n boundFn._length = fn.length;\n return boundFn\n}\n\nfunction nativeBind (fn, ctx) {\n return fn.bind(ctx)\n}\n\nvar bind = Function.prototype.bind\n ? nativeBind\n : polyfillBind;\n\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray (list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret\n}\n\n/**\n * Mix properties into target object.\n */\nfunction extend (to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n return to\n}\n\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject (arr) {\n var res = {};\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n return res\n}\n\n/* eslint-disable no-unused-vars */\n\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\n */\nfunction noop (a, b, c) {}\n\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n\n/* eslint-enable no-unused-vars */\n\n/**\n * Return the same value.\n */\nvar identity = function (_) { return _; };\n\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual (a, b) {\n if (a === b) { return true }\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n if (isArrayA && isArrayB) {\n return a.length === b.length && a.every(function (e, i) {\n return looseEqual(e, b[i])\n })\n } else if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime()\n } else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return keysA.length === keysB.length && keysA.every(function (key) {\n return looseEqual(a[key], b[key])\n })\n } else {\n /* istanbul ignore next */\n return false\n }\n } catch (e) {\n /* istanbul ignore next */\n return false\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b)\n } else {\n return false\n }\n}\n\n/**\n * Return the first index at which a loosely equal value can be\n * found in the array (if value is a plain object, the array must\n * contain an object of the same shape), or -1 if it is not present.\n */\nfunction looseIndexOf (arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val)) { return i }\n }\n return -1\n}\n\n/**\n * Ensure a function is called only once.\n */\nfunction once (fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n }\n}\n\nvar SSR_ATTR = 'data-server-rendered';\n\nvar ASSET_TYPES = [\n 'component',\n 'directive',\n 'filter'\n];\n\nvar LIFECYCLE_HOOKS = [\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeDestroy',\n 'destroyed',\n 'activated',\n 'deactivated',\n 'errorCaptured'\n];\n\n/* */\n\n\n\nvar config = ({\n /**\n * Option merge strategies (used in core/util/options)\n */\n // $flow-disable-line\n optionMergeStrategies: Object.create(null),\n\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n\n /**\n * Show production mode tip message on boot?\n */\n productionTip: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to enable devtools\n */\n devtools: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to record perf\n */\n performance: false,\n\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n\n /**\n * Warn handler for watcher warns\n */\n warnHandler: null,\n\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n\n /**\n * Custom user key aliases for v-on\n */\n // $flow-disable-line\n keyCodes: Object.create(null),\n\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n\n /**\n * Perform updates asynchronously. Intended to be used by Vue Test Utils\n * This will significantly reduce performance if set to false.\n */\n async: true,\n\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n});\n\n/* */\n\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved (str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5F\n}\n\n/**\n * Define a property.\n */\nfunction def (obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n}\n\n/**\n * Parse simple path.\n */\nvar bailRE = /[^\\w.$]/;\nfunction parsePath (path) {\n if (bailRE.test(path)) {\n return\n }\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj) { return }\n obj = obj[segments[i]];\n }\n return obj\n }\n}\n\n/* */\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;\nvar weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nvar isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');\nvar isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');\nvar isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\n\n// Firefox has a \"watch\" function on Object.prototype...\nvar nativeWatch = ({}).watch;\n\nvar supportsPassive = false;\nif (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', ({\n get: function get () {\n /* istanbul ignore next */\n supportsPassive = true;\n }\n })); // https://github.com/facebook/flow/issues/285\n window.addEventListener('test-passive', null, opts);\n } catch (e) {}\n}\n\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && !inWeex && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer = global['process'] && global['process'].env.VUE_ENV === 'server';\n } else {\n _isServer = false;\n }\n }\n return _isServer\n};\n\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n/* istanbul ignore next */\nfunction isNative (Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString())\n}\n\nvar hasSymbol =\n typeof Symbol !== 'undefined' && isNative(Symbol) &&\n typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\nvar _Set;\n/* istanbul ignore if */ // $flow-disable-line\nif (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n} else {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = /*@__PURE__*/(function () {\n function Set () {\n this.set = Object.create(null);\n }\n Set.prototype.has = function has (key) {\n return this.set[key] === true\n };\n Set.prototype.add = function add (key) {\n this.set[key] = true;\n };\n Set.prototype.clear = function clear () {\n this.set = Object.create(null);\n };\n\n return Set;\n }());\n}\n\n/* */\n\nvar warn = noop;\nvar tip = noop;\nvar generateComponentTrace = (noop); // work around flow check\nvar formatComponentName = (noop);\n\nif (process.env.NODE_ENV !== 'production') {\n var hasConsole = typeof console !== 'undefined';\n var classifyRE = /(?:^|[-_])(\\w)/g;\n var classify = function (str) { return str\n .replace(classifyRE, function (c) { return c.toUpperCase(); })\n .replace(/[-_]/g, ''); };\n\n warn = function (msg, vm) {\n var trace = vm ? generateComponentTrace(vm) : '';\n\n if (config.warnHandler) {\n config.warnHandler.call(null, msg, vm, trace);\n } else if (hasConsole && (!config.silent)) {\n console.error((\"[Vue warn]: \" + msg + trace));\n }\n };\n\n tip = function (msg, vm) {\n if (hasConsole && (!config.silent)) {\n console.warn(\"[Vue tip]: \" + msg + (\n vm ? generateComponentTrace(vm) : ''\n ));\n }\n };\n\n formatComponentName = function (vm, includeFile) {\n if (vm.$root === vm) {\n return '<Root>'\n }\n var options = typeof vm === 'function' && vm.cid != null\n ? vm.options\n : vm._isVue\n ? vm.$options || vm.constructor.options\n : vm;\n var name = options.name || options._componentTag;\n var file = options.__file;\n if (!name && file) {\n var match = file.match(/([^/\\\\]+)\\.vue$/);\n name = match && match[1];\n }\n\n return (\n (name ? (\"<\" + (classify(name)) + \">\") : \"<Anonymous>\") +\n (file && includeFile !== false ? (\" at \" + file) : '')\n )\n };\n\n var repeat = function (str, n) {\n var res = '';\n while (n) {\n if (n % 2 === 1) { res += str; }\n if (n > 1) { str += str; }\n n >>= 1;\n }\n return res\n };\n\n generateComponentTrace = function (vm) {\n if (vm._isVue && vm.$parent) {\n var tree = [];\n var currentRecursiveSequence = 0;\n while (vm) {\n if (tree.length > 0) {\n var last = tree[tree.length - 1];\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence++;\n vm = vm.$parent;\n continue\n } else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence];\n currentRecursiveSequence = 0;\n }\n }\n tree.push(vm);\n vm = vm.$parent;\n }\n return '\\n\\nfound in\\n\\n' + tree\n .map(function (vm, i) { return (\"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)\n ? ((formatComponentName(vm[0])) + \"... (\" + (vm[1]) + \" recursive calls)\")\n : formatComponentName(vm))); })\n .join('\\n')\n } else {\n return (\"\\n\\n(found in \" + (formatComponentName(vm)) + \")\")\n }\n };\n}\n\n/* */\n\nvar uid = 0;\n\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\nvar Dep = function Dep () {\n this.id = uid++;\n this.subs = [];\n};\n\nDep.prototype.addSub = function addSub (sub) {\n this.subs.push(sub);\n};\n\nDep.prototype.removeSub = function removeSub (sub) {\n remove(this.subs, sub);\n};\n\nDep.prototype.depend = function depend () {\n if (Dep.target) {\n Dep.target.addDep(this);\n }\n};\n\nDep.prototype.notify = function notify () {\n // stabilize the subscriber list first\n var subs = this.subs.slice();\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n // subs aren't sorted in scheduler if not running async\n // we need to sort them now to make sure they fire in correct\n // order\n subs.sort(function (a, b) { return a.id - b.id; });\n }\n for (var i = 0, l = subs.length; i < l; i++) {\n subs[i].update();\n }\n};\n\n// The current target watcher being evaluated.\n// This is globally unique because only one watcher\n// can be evaluated at a time.\nDep.target = null;\nvar targetStack = [];\n\nfunction pushTarget (target) {\n targetStack.push(target);\n Dep.target = target;\n}\n\nfunction popTarget () {\n targetStack.pop();\n Dep.target = targetStack[targetStack.length - 1];\n}\n\n/* */\n\nvar VNode = function VNode (\n tag,\n data,\n children,\n text,\n elm,\n context,\n componentOptions,\n asyncFactory\n) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = undefined;\n this.context = context;\n this.fnContext = undefined;\n this.fnOptions = undefined;\n this.fnScopeId = undefined;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.componentInstance = undefined;\n this.parent = undefined;\n this.raw = false;\n this.isStatic = false;\n this.isRootInsert = true;\n this.isComment = false;\n this.isCloned = false;\n this.isOnce = false;\n this.asyncFactory = asyncFactory;\n this.asyncMeta = undefined;\n this.isAsyncPlaceholder = false;\n};\n\nvar prototypeAccessors = { child: { configurable: true } };\n\n// DEPRECATED: alias for componentInstance for backwards compat.\n/* istanbul ignore next */\nprototypeAccessors.child.get = function () {\n return this.componentInstance\n};\n\nObject.defineProperties( VNode.prototype, prototypeAccessors );\n\nvar createEmptyVNode = function (text) {\n if ( text === void 0 ) text = '';\n\n var node = new VNode();\n node.text = text;\n node.isComment = true;\n return node\n};\n\nfunction createTextVNode (val) {\n return new VNode(undefined, undefined, undefined, String(val))\n}\n\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode (vnode) {\n var cloned = new VNode(\n vnode.tag,\n vnode.data,\n // #7975\n // clone children array to avoid mutating original in case of cloning\n // a child.\n vnode.children && vnode.children.slice(),\n vnode.text,\n vnode.elm,\n vnode.context,\n vnode.componentOptions,\n vnode.asyncFactory\n );\n cloned.ns = vnode.ns;\n cloned.isStatic = vnode.isStatic;\n cloned.key = vnode.key;\n cloned.isComment = vnode.isComment;\n cloned.fnContext = vnode.fnContext;\n cloned.fnOptions = vnode.fnOptions;\n cloned.fnScopeId = vnode.fnScopeId;\n cloned.asyncMeta = vnode.asyncMeta;\n cloned.isCloned = true;\n return cloned\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\n\nvar methodsToPatch = [\n 'push',\n 'pop',\n 'shift',\n 'unshift',\n 'splice',\n 'sort',\n 'reverse'\n];\n\n/**\n * Intercept mutating methods and emit events\n */\nmethodsToPatch.forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n switch (method) {\n case 'push':\n case 'unshift':\n inserted = args;\n break\n case 'splice':\n inserted = args.slice(2);\n break\n }\n if (inserted) { ob.observeArray(inserted); }\n // notify change\n ob.dep.notify();\n return result\n });\n});\n\n/* */\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\nvar shouldObserve = true;\n\nfunction toggleObserving (value) {\n shouldObserve = value;\n}\n\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\nvar Observer = function Observer (value) {\n this.value = value;\n this.dep = new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n if (Array.isArray(value)) {\n if (hasProto) {\n protoAugment(value, arrayMethods);\n } else {\n copyAugment(value, arrayMethods, arrayKeys);\n }\n this.observeArray(value);\n } else {\n this.walk(value);\n }\n};\n\n/**\n * Walk through all properties and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\nObserver.prototype.walk = function walk (obj) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n defineReactive$$1(obj, keys[i]);\n }\n};\n\n/**\n * Observe a list of Array items.\n */\nObserver.prototype.observeArray = function observeArray (items) {\n for (var i = 0, l = items.length; i < l; i++) {\n observe(items[i]);\n }\n};\n\n// helpers\n\n/**\n * Augment a target Object or Array by intercepting\n * the prototype chain using __proto__\n */\nfunction protoAugment (target, src) {\n /* eslint-disable no-proto */\n target.__proto__ = src;\n /* eslint-enable no-proto */\n}\n\n/**\n * Augment a target Object or Array by defining\n * hidden properties.\n */\n/* istanbul ignore next */\nfunction copyAugment (target, src, keys) {\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n def(target, key, src[key]);\n }\n}\n\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe (value, asRootData) {\n if (!isObject(value) || value instanceof VNode) {\n return\n }\n var ob;\n if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n ob = value.__ob__;\n } else if (\n shouldObserve &&\n !isServerRendering() &&\n (Array.isArray(value) || isPlainObject(value)) &&\n Object.isExtensible(value) &&\n !value._isVue\n ) {\n ob = new Observer(value);\n }\n if (asRootData && ob) {\n ob.vmCount++;\n }\n return ob\n}\n\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive$$1 (\n obj,\n key,\n val,\n customSetter,\n shallow\n) {\n var dep = new Dep();\n\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return\n }\n\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n var setter = property && property.set;\n if ((!getter || setter) && arguments.length === 2) {\n val = obj[key];\n }\n\n var childOb = !shallow && observe(val);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter () {\n var value = getter ? getter.call(obj) : val;\n if (Dep.target) {\n dep.depend();\n if (childOb) {\n childOb.dep.depend();\n if (Array.isArray(value)) {\n dependArray(value);\n }\n }\n }\n return value\n },\n set: function reactiveSetter (newVal) {\n var value = getter ? getter.call(obj) : val;\n /* eslint-disable no-self-compare */\n if (newVal === value || (newVal !== newVal && value !== value)) {\n return\n }\n /* eslint-enable no-self-compare */\n if (process.env.NODE_ENV !== 'production' && customSetter) {\n customSetter();\n }\n // #7981: for accessor properties without setter\n if (getter && !setter) { return }\n if (setter) {\n setter.call(obj, newVal);\n } else {\n val = newVal;\n }\n childOb = !shallow && observe(newVal);\n dep.notify();\n }\n });\n}\n\n/**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\nfunction set (target, key, val) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot set reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.length = Math.max(target.length, key);\n target.splice(key, 1, val);\n return val\n }\n if (key in target && !(key in Object.prototype)) {\n target[key] = val;\n return val\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid adding reactive properties to a Vue instance or its root $data ' +\n 'at runtime - declare it upfront in the data option.'\n );\n return val\n }\n if (!ob) {\n target[key] = val;\n return val\n }\n defineReactive$$1(ob.value, key, val);\n ob.dep.notify();\n return val\n}\n\n/**\n * Delete a property and trigger change if necessary.\n */\nfunction del (target, key) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot delete reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.splice(key, 1);\n return\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid deleting properties on a Vue instance or its root $data ' +\n '- just set it to null.'\n );\n return\n }\n if (!hasOwn(target, key)) {\n return\n }\n delete target[key];\n if (!ob) {\n return\n }\n ob.dep.notify();\n}\n\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray (value) {\n for (var e = (void 0), i = 0, l = value.length; i < l; i++) {\n e = value[i];\n e && e.__ob__ && e.__ob__.dep.depend();\n if (Array.isArray(e)) {\n dependArray(e);\n }\n }\n}\n\n/* */\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\nvar strats = config.optionMergeStrategies;\n\n/**\n * Options with restrictions\n */\nif (process.env.NODE_ENV !== 'production') {\n strats.el = strats.propsData = function (parent, child, vm, key) {\n if (!vm) {\n warn(\n \"option \\\"\" + key + \"\\\" can only be used during instance \" +\n 'creation with the `new` keyword.'\n );\n }\n return defaultStrat(parent, child)\n };\n}\n\n/**\n * Helper that recursively merges two data objects together.\n */\nfunction mergeData (to, from) {\n if (!from) { return to }\n var key, toVal, fromVal;\n var keys = Object.keys(from);\n for (var i = 0; i < keys.length; i++) {\n key = keys[i];\n toVal = to[key];\n fromVal = from[key];\n if (!hasOwn(to, key)) {\n set(to, key, fromVal);\n } else if (\n toVal !== fromVal &&\n isPlainObject(toVal) &&\n isPlainObject(fromVal)\n ) {\n mergeData(toVal, fromVal);\n }\n }\n return to\n}\n\n/**\n * Data\n */\nfunction mergeDataOrFn (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n // in a Vue.extend merge, both should be functions\n if (!childVal) {\n return parentVal\n }\n if (!parentVal) {\n return childVal\n }\n // when parentVal & childVal are both present,\n // we need to return a function that returns the\n // merged result of both functions... no need to\n // check if parentVal is a function here because\n // it has to be a function to pass previous merges.\n return function mergedDataFn () {\n return mergeData(\n typeof childVal === 'function' ? childVal.call(this, this) : childVal,\n typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal\n )\n }\n } else {\n return function mergedInstanceDataFn () {\n // instance merge\n var instanceData = typeof childVal === 'function'\n ? childVal.call(vm, vm)\n : childVal;\n var defaultData = typeof parentVal === 'function'\n ? parentVal.call(vm, vm)\n : parentVal;\n if (instanceData) {\n return mergeData(instanceData, defaultData)\n } else {\n return defaultData\n }\n }\n }\n}\n\nstrats.data = function (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n if (childVal && typeof childVal !== 'function') {\n process.env.NODE_ENV !== 'production' && warn(\n 'The \"data\" option should be a function ' +\n 'that returns a per-instance value in component ' +\n 'definitions.',\n vm\n );\n\n return parentVal\n }\n return mergeDataOrFn(parentVal, childVal)\n }\n\n return mergeDataOrFn(parentVal, childVal, vm)\n};\n\n/**\n * Hooks and props are merged as arrays.\n */\nfunction mergeHook (\n parentVal,\n childVal\n) {\n var res = childVal\n ? parentVal\n ? parentVal.concat(childVal)\n : Array.isArray(childVal)\n ? childVal\n : [childVal]\n : parentVal;\n return res\n ? dedupeHooks(res)\n : res\n}\n\nfunction dedupeHooks (hooks) {\n var res = [];\n for (var i = 0; i < hooks.length; i++) {\n if (res.indexOf(hooks[i]) === -1) {\n res.push(hooks[i]);\n }\n }\n return res\n}\n\nLIFECYCLE_HOOKS.forEach(function (hook) {\n strats[hook] = mergeHook;\n});\n\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\nfunction mergeAssets (\n parentVal,\n childVal,\n vm,\n key\n) {\n var res = Object.create(parentVal || null);\n if (childVal) {\n process.env.NODE_ENV !== 'production' && assertObjectType(key, childVal, vm);\n return extend(res, childVal)\n } else {\n return res\n }\n}\n\nASSET_TYPES.forEach(function (type) {\n strats[type + 's'] = mergeAssets;\n});\n\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\nstrats.watch = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n // work around Firefox's Object.prototype.watch...\n if (parentVal === nativeWatch) { parentVal = undefined; }\n if (childVal === nativeWatch) { childVal = undefined; }\n /* istanbul ignore if */\n if (!childVal) { return Object.create(parentVal || null) }\n if (process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = {};\n extend(ret, parentVal);\n for (var key$1 in childVal) {\n var parent = ret[key$1];\n var child = childVal[key$1];\n if (parent && !Array.isArray(parent)) {\n parent = [parent];\n }\n ret[key$1] = parent\n ? parent.concat(child)\n : Array.isArray(child) ? child : [child];\n }\n return ret\n};\n\n/**\n * Other object hashes.\n */\nstrats.props =\nstrats.methods =\nstrats.inject =\nstrats.computed = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n if (childVal && process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = Object.create(null);\n extend(ret, parentVal);\n if (childVal) { extend(ret, childVal); }\n return ret\n};\nstrats.provide = mergeDataOrFn;\n\n/**\n * Default strategy.\n */\nvar defaultStrat = function (parentVal, childVal) {\n return childVal === undefined\n ? parentVal\n : childVal\n};\n\n/**\n * Validate component names\n */\nfunction checkComponents (options) {\n for (var key in options.components) {\n validateComponentName(key);\n }\n}\n\nfunction validateComponentName (name) {\n if (!/^[a-zA-Z][\\w-]*$/.test(name)) {\n warn(\n 'Invalid component name: \"' + name + '\". Component names ' +\n 'can only contain alphanumeric characters and the hyphen, ' +\n 'and must start with a letter.'\n );\n }\n if (isBuiltInTag(name) || config.isReservedTag(name)) {\n warn(\n 'Do not use built-in or reserved HTML elements as component ' +\n 'id: ' + name\n );\n }\n}\n\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\nfunction normalizeProps (options, vm) {\n var props = options.props;\n if (!props) { return }\n var res = {};\n var i, val, name;\n if (Array.isArray(props)) {\n i = props.length;\n while (i--) {\n val = props[i];\n if (typeof val === 'string') {\n name = camelize(val);\n res[name] = { type: null };\n } else if (process.env.NODE_ENV !== 'production') {\n warn('props must be strings when using array syntax.');\n }\n }\n } else if (isPlainObject(props)) {\n for (var key in props) {\n val = props[key];\n name = camelize(key);\n res[name] = isPlainObject(val)\n ? val\n : { type: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"props\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(props)) + \".\",\n vm\n );\n }\n options.props = res;\n}\n\n/**\n * Normalize all injections into Object-based format\n */\nfunction normalizeInject (options, vm) {\n var inject = options.inject;\n if (!inject) { return }\n var normalized = options.inject = {};\n if (Array.isArray(inject)) {\n for (var i = 0; i < inject.length; i++) {\n normalized[inject[i]] = { from: inject[i] };\n }\n } else if (isPlainObject(inject)) {\n for (var key in inject) {\n var val = inject[key];\n normalized[key] = isPlainObject(val)\n ? extend({ from: key }, val)\n : { from: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(inject)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Normalize raw function directives into object format.\n */\nfunction normalizeDirectives (options) {\n var dirs = options.directives;\n if (dirs) {\n for (var key in dirs) {\n var def = dirs[key];\n if (typeof def === 'function') {\n dirs[key] = { bind: def, update: def };\n }\n }\n }\n}\n\nfunction assertObjectType (name, value, vm) {\n if (!isPlainObject(value)) {\n warn(\n \"Invalid value for option \\\"\" + name + \"\\\": expected an Object, \" +\n \"but got \" + (toRawType(value)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\nfunction mergeOptions (\n parent,\n child,\n vm\n) {\n if (process.env.NODE_ENV !== 'production') {\n checkComponents(child);\n }\n\n if (typeof child === 'function') {\n child = child.options;\n }\n\n normalizeProps(child, vm);\n normalizeInject(child, vm);\n normalizeDirectives(child);\n\n // Apply extends and mixins on the child options,\n // but only if it is a raw options object that isn't\n // the result of another mergeOptions call.\n // Only merged options has the _base property.\n if (!child._base) {\n if (child.extends) {\n parent = mergeOptions(parent, child.extends, vm);\n }\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n }\n\n var options = {};\n var key;\n for (key in parent) {\n mergeField(key);\n }\n for (key in child) {\n if (!hasOwn(parent, key)) {\n mergeField(key);\n }\n }\n function mergeField (key) {\n var strat = strats[key] || defaultStrat;\n options[key] = strat(parent[key], child[key], vm, key);\n }\n return options\n}\n\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\nfunction resolveAsset (\n options,\n type,\n id,\n warnMissing\n) {\n /* istanbul ignore if */\n if (typeof id !== 'string') {\n return\n }\n var assets = options[type];\n // check local registration variations first\n if (hasOwn(assets, id)) { return assets[id] }\n var camelizedId = camelize(id);\n if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }\n var PascalCaseId = capitalize(camelizedId);\n if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }\n // fallback to prototype chain\n var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {\n warn(\n 'Failed to resolve ' + type.slice(0, -1) + ': ' + id,\n options\n );\n }\n return res\n}\n\n/* */\n\n\n\nfunction validateProp (\n key,\n propOptions,\n propsData,\n vm\n) {\n var prop = propOptions[key];\n var absent = !hasOwn(propsData, key);\n var value = propsData[key];\n // boolean casting\n var booleanIndex = getTypeIndex(Boolean, prop.type);\n if (booleanIndex > -1) {\n if (absent && !hasOwn(prop, 'default')) {\n value = false;\n } else if (value === '' || value === hyphenate(key)) {\n // only cast empty string / same name to boolean if\n // boolean has higher priority\n var stringIndex = getTypeIndex(String, prop.type);\n if (stringIndex < 0 || booleanIndex < stringIndex) {\n value = true;\n }\n }\n }\n // check default value\n if (value === undefined) {\n value = getPropDefaultValue(vm, prop, key);\n // since the default value is a fresh copy,\n // make sure to observe it.\n var prevShouldObserve = shouldObserve;\n toggleObserving(true);\n observe(value);\n toggleObserving(prevShouldObserve);\n }\n if (\n process.env.NODE_ENV !== 'production' &&\n // skip validation for weex recycle-list child component props\n !(false)\n ) {\n assertProp(prop, key, value, vm, absent);\n }\n return value\n}\n\n/**\n * Get the default value of a prop.\n */\nfunction getPropDefaultValue (vm, prop, key) {\n // no default, return undefined\n if (!hasOwn(prop, 'default')) {\n return undefined\n }\n var def = prop.default;\n // warn against non-factory defaults for Object & Array\n if (process.env.NODE_ENV !== 'production' && isObject(def)) {\n warn(\n 'Invalid default value for prop \"' + key + '\": ' +\n 'Props with type Object/Array must use a factory function ' +\n 'to return the default value.',\n vm\n );\n }\n // the raw prop value was also undefined from previous render,\n // return previous default value to avoid unnecessary watcher trigger\n if (vm && vm.$options.propsData &&\n vm.$options.propsData[key] === undefined &&\n vm._props[key] !== undefined\n ) {\n return vm._props[key]\n }\n // call factory function for non-Function types\n // a value is Function if its prototype is function even across different execution context\n return typeof def === 'function' && getType(prop.type) !== 'Function'\n ? def.call(vm)\n : def\n}\n\n/**\n * Assert whether a prop is valid.\n */\nfunction assertProp (\n prop,\n name,\n value,\n vm,\n absent\n) {\n if (prop.required && absent) {\n warn(\n 'Missing required prop: \"' + name + '\"',\n vm\n );\n return\n }\n if (value == null && !prop.required) {\n return\n }\n var type = prop.type;\n var valid = !type || type === true;\n var expectedTypes = [];\n if (type) {\n if (!Array.isArray(type)) {\n type = [type];\n }\n for (var i = 0; i < type.length && !valid; i++) {\n var assertedType = assertType(value, type[i]);\n expectedTypes.push(assertedType.expectedType || '');\n valid = assertedType.valid;\n }\n }\n\n if (!valid) {\n warn(\n getInvalidTypeMessage(name, value, expectedTypes),\n vm\n );\n return\n }\n var validator = prop.validator;\n if (validator) {\n if (!validator(value)) {\n warn(\n 'Invalid prop: custom validator check failed for prop \"' + name + '\".',\n vm\n );\n }\n }\n}\n\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;\n\nfunction assertType (value, type) {\n var valid;\n var expectedType = getType(type);\n if (simpleCheckRE.test(expectedType)) {\n var t = typeof value;\n valid = t === expectedType.toLowerCase();\n // for primitive wrapper objects\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n } else if (expectedType === 'Object') {\n valid = isPlainObject(value);\n } else if (expectedType === 'Array') {\n valid = Array.isArray(value);\n } else {\n valid = value instanceof type;\n }\n return {\n valid: valid,\n expectedType: expectedType\n }\n}\n\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\nfunction getType (fn) {\n var match = fn && fn.toString().match(/^\\s*function (\\w+)/);\n return match ? match[1] : ''\n}\n\nfunction isSameType (a, b) {\n return getType(a) === getType(b)\n}\n\nfunction getTypeIndex (type, expectedTypes) {\n if (!Array.isArray(expectedTypes)) {\n return isSameType(expectedTypes, type) ? 0 : -1\n }\n for (var i = 0, len = expectedTypes.length; i < len; i++) {\n if (isSameType(expectedTypes[i], type)) {\n return i\n }\n }\n return -1\n}\n\nfunction getInvalidTypeMessage (name, value, expectedTypes) {\n var message = \"Invalid prop: type check failed for prop \\\"\" + name + \"\\\".\" +\n \" Expected \" + (expectedTypes.map(capitalize).join(', '));\n var expectedType = expectedTypes[0];\n var receivedType = toRawType(value);\n var expectedValue = styleValue(value, expectedType);\n var receivedValue = styleValue(value, receivedType);\n // check if we need to specify expected value\n if (expectedTypes.length === 1 &&\n isExplicable(expectedType) &&\n !isBoolean(expectedType, receivedType)) {\n message += \" with value \" + expectedValue;\n }\n message += \", got \" + receivedType + \" \";\n // check if we need to specify received value\n if (isExplicable(receivedType)) {\n message += \"with value \" + receivedValue + \".\";\n }\n return message\n}\n\nfunction styleValue (value, type) {\n if (type === 'String') {\n return (\"\\\"\" + value + \"\\\"\")\n } else if (type === 'Number') {\n return (\"\" + (Number(value)))\n } else {\n return (\"\" + value)\n }\n}\n\nfunction isExplicable (value) {\n var explicitTypes = ['string', 'number', 'boolean'];\n return explicitTypes.some(function (elem) { return value.toLowerCase() === elem; })\n}\n\nfunction isBoolean () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; })\n}\n\n/* */\n\nfunction handleError (err, vm, info) {\n if (vm) {\n var cur = vm;\n while ((cur = cur.$parent)) {\n var hooks = cur.$options.errorCaptured;\n if (hooks) {\n for (var i = 0; i < hooks.length; i++) {\n try {\n var capture = hooks[i].call(cur, err, vm, info) === false;\n if (capture) { return }\n } catch (e) {\n globalHandleError(e, cur, 'errorCaptured hook');\n }\n }\n }\n }\n }\n globalHandleError(err, vm, info);\n}\n\nfunction globalHandleError (err, vm, info) {\n if (config.errorHandler) {\n try {\n return config.errorHandler.call(null, err, vm, info)\n } catch (e) {\n logError(e, null, 'config.errorHandler');\n }\n }\n logError(err, vm, info);\n}\n\nfunction logError (err, vm, info) {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n }\n /* istanbul ignore else */\n if ((inBrowser || inWeex) && typeof console !== 'undefined') {\n console.error(err);\n } else {\n throw err\n }\n}\n\n/* */\n\nvar callbacks = [];\nvar pending = false;\n\nfunction flushCallbacks () {\n pending = false;\n var copies = callbacks.slice(0);\n callbacks.length = 0;\n for (var i = 0; i < copies.length; i++) {\n copies[i]();\n }\n}\n\n// Here we have async deferring wrappers using both microtasks and (macro) tasks.\n// In < 2.4 we used microtasks everywhere, but there are some scenarios where\n// microtasks have too high a priority and fire in between supposedly\n// sequential events (e.g. #4521, #6690) or even between bubbling of the same\n// event (#6566). However, using (macro) tasks everywhere also has subtle problems\n// when state is changed right before repaint (e.g. #6813, out-in transitions).\n// Here we use microtask by default, but expose a way to force (macro) task when\n// needed (e.g. in event handlers attached by v-on).\nvar microTimerFunc;\nvar macroTimerFunc;\nvar useMacroTask = false;\n\n// Determine (macro) task defer implementation.\n// Technically setImmediate should be the ideal choice, but it's only available\n// in IE. The only polyfill that consistently queues the callback after all DOM\n// events triggered in the same loop is by using MessageChannel.\n/* istanbul ignore if */\nif (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n macroTimerFunc = function () {\n setImmediate(flushCallbacks);\n };\n} else if (typeof MessageChannel !== 'undefined' && (\n isNative(MessageChannel) ||\n // PhantomJS\n MessageChannel.toString() === '[object MessageChannelConstructor]'\n)) {\n var channel = new MessageChannel();\n var port = channel.port2;\n channel.port1.onmessage = flushCallbacks;\n macroTimerFunc = function () {\n port.postMessage(1);\n };\n} else {\n /* istanbul ignore next */\n macroTimerFunc = function () {\n setTimeout(flushCallbacks, 0);\n };\n}\n\n// Determine microtask defer implementation.\n/* istanbul ignore next, $flow-disable-line */\nif (typeof Promise !== 'undefined' && isNative(Promise)) {\n var p = Promise.resolve();\n microTimerFunc = function () {\n p.then(flushCallbacks);\n // in problematic UIWebViews, Promise.then doesn't completely break, but\n // it can get stuck in a weird state where callbacks are pushed into the\n // microtask queue but the queue isn't being flushed, until the browser\n // needs to do some other work, e.g. handle a timer. Therefore we can\n // \"force\" the microtask queue to be flushed by adding an empty timer.\n if (isIOS) { setTimeout(noop); }\n };\n} else {\n // fallback to macro\n microTimerFunc = macroTimerFunc;\n}\n\n/**\n * Wrap a function so that if any code inside triggers state change,\n * the changes are queued using a (macro) task instead of a microtask.\n */\nfunction withMacroTask (fn) {\n return fn._withTask || (fn._withTask = function () {\n useMacroTask = true;\n try {\n return fn.apply(null, arguments)\n } finally {\n useMacroTask = false; \n }\n })\n}\n\nfunction nextTick (cb, ctx) {\n var _resolve;\n callbacks.push(function () {\n if (cb) {\n try {\n cb.call(ctx);\n } catch (e) {\n handleError(e, ctx, 'nextTick');\n }\n } else if (_resolve) {\n _resolve(ctx);\n }\n });\n if (!pending) {\n pending = true;\n if (useMacroTask) {\n macroTimerFunc();\n } else {\n microTimerFunc();\n }\n }\n // $flow-disable-line\n if (!cb && typeof Promise !== 'undefined') {\n return new Promise(function (resolve) {\n _resolve = resolve;\n })\n }\n}\n\n/* */\n\n/* not type checking this file because flow doesn't play well with Proxy */\n\nvar initProxy;\n\nif (process.env.NODE_ENV !== 'production') {\n var allowedGlobals = makeMap(\n 'Infinity,undefined,NaN,isFinite,isNaN,' +\n 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +\n 'require' // for Webpack/Browserify\n );\n\n var warnNonPresent = function (target, key) {\n warn(\n \"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" +\n 'referenced during render. Make sure that this property is reactive, ' +\n 'either in the data option, or for class-based components, by ' +\n 'initializing the property. ' +\n 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',\n target\n );\n };\n\n var warnReservedPrefix = function (target, key) {\n warn(\n \"Property \\\"\" + key + \"\\\" must be accessed with \\\"$data.\" + key + \"\\\" because \" +\n 'properties starting with \"$\" or \"_\" are not proxied in the Vue instance to ' +\n 'prevent conflicts with Vue internals' +\n 'See: https://vuejs.org/v2/api/#data',\n target\n );\n };\n\n var hasProxy =\n typeof Proxy !== 'undefined' && isNative(Proxy);\n\n if (hasProxy) {\n var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n config.keyCodes = new Proxy(config.keyCodes, {\n set: function set (target, key, value) {\n if (isBuiltInModifier(key)) {\n warn((\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key));\n return false\n } else {\n target[key] = value;\n return true\n }\n }\n });\n }\n\n var hasHandler = {\n has: function has (target, key) {\n var has = key in target;\n var isAllowed = allowedGlobals(key) ||\n (typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data));\n if (!has && !isAllowed) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return has || !isAllowed\n }\n };\n\n var getHandler = {\n get: function get (target, key) {\n if (typeof key === 'string' && !(key in target)) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return target[key]\n }\n };\n\n initProxy = function initProxy (vm) {\n if (hasProxy) {\n // determine which proxy handler to use\n var options = vm.$options;\n var handlers = options.render && options.render._withStripped\n ? getHandler\n : hasHandler;\n vm._renderProxy = new Proxy(vm, handlers);\n } else {\n vm._renderProxy = vm;\n }\n };\n}\n\n/* */\n\nvar seenObjects = new _Set();\n\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\nfunction traverse (val) {\n _traverse(val, seenObjects);\n seenObjects.clear();\n}\n\nfunction _traverse (val, seen) {\n var i, keys;\n var isA = Array.isArray(val);\n if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) {\n return\n }\n if (val.__ob__) {\n var depId = val.__ob__.dep.id;\n if (seen.has(depId)) {\n return\n }\n seen.add(depId);\n }\n if (isA) {\n i = val.length;\n while (i--) { _traverse(val[i], seen); }\n } else {\n keys = Object.keys(val);\n i = keys.length;\n while (i--) { _traverse(val[keys[i]], seen); }\n }\n}\n\nvar mark;\nvar measure;\n\nif (process.env.NODE_ENV !== 'production') {\n var perf = inBrowser && window.performance;\n /* istanbul ignore if */\n if (\n perf &&\n perf.mark &&\n perf.measure &&\n perf.clearMarks &&\n perf.clearMeasures\n ) {\n mark = function (tag) { return perf.mark(tag); };\n measure = function (name, startTag, endTag) {\n perf.measure(name, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n perf.clearMeasures(name);\n };\n }\n}\n\n/* */\n\nvar normalizeEvent = cached(function (name) {\n var passive = name.charAt(0) === '&';\n name = passive ? name.slice(1) : name;\n var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n name = once$$1 ? name.slice(1) : name;\n var capture = name.charAt(0) === '!';\n name = capture ? name.slice(1) : name;\n return {\n name: name,\n once: once$$1,\n capture: capture,\n passive: passive\n }\n});\n\nfunction createFnInvoker (fns) {\n function invoker () {\n var arguments$1 = arguments;\n\n var fns = invoker.fns;\n if (Array.isArray(fns)) {\n var cloned = fns.slice();\n for (var i = 0; i < cloned.length; i++) {\n cloned[i].apply(null, arguments$1);\n }\n } else {\n // return handler return value for single handlers\n return fns.apply(null, arguments)\n }\n }\n invoker.fns = fns;\n return invoker\n}\n\nfunction updateListeners (\n on,\n oldOn,\n add,\n remove$$1,\n createOnceHandler,\n vm\n) {\n var name, def$$1, cur, old, event;\n for (name in on) {\n def$$1 = cur = on[name];\n old = oldOn[name];\n event = normalizeEvent(name);\n if (isUndef(cur)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Invalid handler for event \\\"\" + (event.name) + \"\\\": got \" + String(cur),\n vm\n );\n } else if (isUndef(old)) {\n if (isUndef(cur.fns)) {\n cur = on[name] = createFnInvoker(cur);\n }\n if (isTrue(event.once)) {\n cur = on[name] = createOnceHandler(event.name, cur, event.capture);\n }\n add(event.name, cur, event.capture, event.passive, event.params);\n } else if (cur !== old) {\n old.fns = cur;\n on[name] = old;\n }\n }\n for (name in oldOn) {\n if (isUndef(on[name])) {\n event = normalizeEvent(name);\n remove$$1(event.name, oldOn[name], event.capture);\n }\n }\n}\n\n/* */\n\nfunction mergeVNodeHook (def, hookKey, hook) {\n if (def instanceof VNode) {\n def = def.data.hook || (def.data.hook = {});\n }\n var invoker;\n var oldHook = def[hookKey];\n\n function wrappedHook () {\n hook.apply(this, arguments);\n // important: remove merged hook to ensure it's called only once\n // and prevent memory leak\n remove(invoker.fns, wrappedHook);\n }\n\n if (isUndef(oldHook)) {\n // no existing hook\n invoker = createFnInvoker([wrappedHook]);\n } else {\n /* istanbul ignore if */\n if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n // already a merged invoker\n invoker = oldHook;\n invoker.fns.push(wrappedHook);\n } else {\n // existing plain hook\n invoker = createFnInvoker([oldHook, wrappedHook]);\n }\n }\n\n invoker.merged = true;\n def[hookKey] = invoker;\n}\n\n/* */\n\nfunction extractPropsFromVNodeData (\n data,\n Ctor,\n tag\n) {\n // we are only extracting raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n if (isUndef(propOptions)) {\n return\n }\n var res = {};\n var attrs = data.attrs;\n var props = data.props;\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n if (process.env.NODE_ENV !== 'production') {\n var keyInLowerCase = key.toLowerCase();\n if (\n key !== keyInLowerCase &&\n attrs && hasOwn(attrs, keyInLowerCase)\n ) {\n tip(\n \"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" +\n (formatComponentName(tag || Ctor)) + \", but the declared prop name is\" +\n \" \\\"\" + key + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and camelCased \" +\n \"props need to use their kebab-case equivalents when using in-DOM \" +\n \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\"\n );\n }\n }\n checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n }\n }\n return res\n}\n\nfunction checkProp (\n res,\n hash,\n key,\n altKey,\n preserve\n) {\n if (isDef(hash)) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n if (!preserve) {\n delete hash[key];\n }\n return true\n } else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n if (!preserve) {\n delete hash[altKey];\n }\n return true\n }\n }\n return false\n}\n\n/* */\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array<VNode>. There are\n// two cases where extra normalization is needed:\n\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren (children) {\n for (var i = 0; i < children.length; i++) {\n if (Array.isArray(children[i])) {\n return Array.prototype.concat.apply([], children)\n }\n }\n return children\n}\n\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g. <template>, <slot>, v-for, or when the children is provided by user\n// with hand-written render functions / JSX. In such cases a full normalization\n// is needed to cater to all possible types of children values.\nfunction normalizeChildren (children) {\n return isPrimitive(children)\n ? [createTextVNode(children)]\n : Array.isArray(children)\n ? normalizeArrayChildren(children)\n : undefined\n}\n\nfunction isTextNode (node) {\n return isDef(node) && isDef(node.text) && isFalse(node.isComment)\n}\n\nfunction normalizeArrayChildren (children, nestedIndex) {\n var res = [];\n var i, c, lastIndex, last;\n for (i = 0; i < children.length; i++) {\n c = children[i];\n if (isUndef(c) || typeof c === 'boolean') { continue }\n lastIndex = res.length - 1;\n last = res[lastIndex];\n // nested\n if (Array.isArray(c)) {\n if (c.length > 0) {\n c = normalizeArrayChildren(c, ((nestedIndex || '') + \"_\" + i));\n // merge adjacent text nodes\n if (isTextNode(c[0]) && isTextNode(last)) {\n res[lastIndex] = createTextVNode(last.text + (c[0]).text);\n c.shift();\n }\n res.push.apply(res, c);\n }\n } else if (isPrimitive(c)) {\n if (isTextNode(last)) {\n // merge adjacent text nodes\n // this is necessary for SSR hydration because text nodes are\n // essentially merged when rendered to HTML strings\n res[lastIndex] = createTextVNode(last.text + c);\n } else if (c !== '') {\n // convert primitive to vnode\n res.push(createTextVNode(c));\n }\n } else {\n if (isTextNode(c) && isTextNode(last)) {\n // merge adjacent text nodes\n res[lastIndex] = createTextVNode(last.text + c.text);\n } else {\n // default key for nested array children (likely generated by v-for)\n if (isTrue(children._isVList) &&\n isDef(c.tag) &&\n isUndef(c.key) &&\n isDef(nestedIndex)) {\n c.key = \"__vlist\" + nestedIndex + \"_\" + i + \"__\";\n }\n res.push(c);\n }\n }\n }\n return res\n}\n\n/* */\n\nfunction ensureCtor (comp, base) {\n if (\n comp.__esModule ||\n (hasSymbol && comp[Symbol.toStringTag] === 'Module')\n ) {\n comp = comp.default;\n }\n return isObject(comp)\n ? base.extend(comp)\n : comp\n}\n\nfunction createAsyncPlaceholder (\n factory,\n data,\n context,\n children,\n tag\n) {\n var node = createEmptyVNode();\n node.asyncFactory = factory;\n node.asyncMeta = { data: data, context: context, children: children, tag: tag };\n return node\n}\n\nfunction resolveAsyncComponent (\n factory,\n baseCtor,\n context\n) {\n if (isTrue(factory.error) && isDef(factory.errorComp)) {\n return factory.errorComp\n }\n\n if (isDef(factory.resolved)) {\n return factory.resolved\n }\n\n if (isTrue(factory.loading) && isDef(factory.loadingComp)) {\n return factory.loadingComp\n }\n\n if (isDef(factory.contexts)) {\n // already pending\n factory.contexts.push(context);\n } else {\n var contexts = factory.contexts = [context];\n var sync = true;\n\n var forceRender = function (renderCompleted) {\n for (var i = 0, l = contexts.length; i < l; i++) {\n contexts[i].$forceUpdate();\n }\n\n if (renderCompleted) {\n contexts.length = 0;\n }\n };\n\n var resolve = once(function (res) {\n // cache resolved\n factory.resolved = ensureCtor(res, baseCtor);\n // invoke callbacks only if this is not a synchronous resolve\n // (async resolves are shimmed as synchronous during SSR)\n if (!sync) {\n forceRender(true);\n } else {\n contexts.length = 0;\n }\n });\n\n var reject = once(function (reason) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Failed to resolve async component: \" + (String(factory)) +\n (reason ? (\"\\nReason: \" + reason) : '')\n );\n if (isDef(factory.errorComp)) {\n factory.error = true;\n forceRender(true);\n }\n });\n\n var res = factory(resolve, reject);\n\n if (isObject(res)) {\n if (typeof res.then === 'function') {\n // () => Promise\n if (isUndef(factory.resolved)) {\n res.then(resolve, reject);\n }\n } else if (isDef(res.component) && typeof res.component.then === 'function') {\n res.component.then(resolve, reject);\n\n if (isDef(res.error)) {\n factory.errorComp = ensureCtor(res.error, baseCtor);\n }\n\n if (isDef(res.loading)) {\n factory.loadingComp = ensureCtor(res.loading, baseCtor);\n if (res.delay === 0) {\n factory.loading = true;\n } else {\n setTimeout(function () {\n if (isUndef(factory.resolved) && isUndef(factory.error)) {\n factory.loading = true;\n forceRender(false);\n }\n }, res.delay || 200);\n }\n }\n\n if (isDef(res.timeout)) {\n setTimeout(function () {\n if (isUndef(factory.resolved)) {\n reject(\n process.env.NODE_ENV !== 'production'\n ? (\"timeout (\" + (res.timeout) + \"ms)\")\n : null\n );\n }\n }, res.timeout);\n }\n }\n }\n\n sync = false;\n // return in case resolved synchronously\n return factory.loading\n ? factory.loadingComp\n : factory.resolved\n }\n}\n\n/* */\n\nfunction isAsyncPlaceholder (node) {\n return node.isComment && node.asyncFactory\n}\n\n/* */\n\nfunction getFirstComponentChild (children) {\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n var c = children[i];\n if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) {\n return c\n }\n }\n }\n}\n\n/* */\n\n/* */\n\nfunction initEvents (vm) {\n vm._events = Object.create(null);\n vm._hasHookEvent = false;\n // init parent attached events\n var listeners = vm.$options._parentListeners;\n if (listeners) {\n updateComponentListeners(vm, listeners);\n }\n}\n\nvar target;\n\nfunction add (event, fn) {\n target.$on(event, fn);\n}\n\nfunction remove$1 (event, fn) {\n target.$off(event, fn);\n}\n\nfunction createOnceHandler (event, fn) {\n var _target = target;\n return function onceHandler () {\n var res = fn.apply(null, arguments);\n if (res !== null) {\n _target.$off(event, onceHandler);\n }\n }\n}\n\nfunction updateComponentListeners (\n vm,\n listeners,\n oldListeners\n) {\n target = vm;\n updateListeners(listeners, oldListeners || {}, add, remove$1, createOnceHandler, vm);\n target = undefined;\n}\n\nfunction eventsMixin (Vue) {\n var hookRE = /^hook:/;\n Vue.prototype.$on = function (event, fn) {\n var vm = this;\n if (Array.isArray(event)) {\n for (var i = 0, l = event.length; i < l; i++) {\n vm.$on(event[i], fn);\n }\n } else {\n (vm._events[event] || (vm._events[event] = [])).push(fn);\n // optimize hook:event cost by using a boolean flag marked at registration\n // instead of a hash lookup\n if (hookRE.test(event)) {\n vm._hasHookEvent = true;\n }\n }\n return vm\n };\n\n Vue.prototype.$once = function (event, fn) {\n var vm = this;\n function on () {\n vm.$off(event, on);\n fn.apply(vm, arguments);\n }\n on.fn = fn;\n vm.$on(event, on);\n return vm\n };\n\n Vue.prototype.$off = function (event, fn) {\n var vm = this;\n // all\n if (!arguments.length) {\n vm._events = Object.create(null);\n return vm\n }\n // array of events\n if (Array.isArray(event)) {\n for (var i$1 = 0, l = event.length; i$1 < l; i$1++) {\n vm.$off(event[i$1], fn);\n }\n return vm\n }\n // specific event\n var cbs = vm._events[event];\n if (!cbs) {\n return vm\n }\n if (!fn) {\n vm._events[event] = null;\n return vm\n }\n // specific handler\n var cb;\n var i = cbs.length;\n while (i--) {\n cb = cbs[i];\n if (cb === fn || cb.fn === fn) {\n cbs.splice(i, 1);\n break\n }\n }\n return vm\n };\n\n Vue.prototype.$emit = function (event) {\n var vm = this;\n if (process.env.NODE_ENV !== 'production') {\n var lowerCaseEvent = event.toLowerCase();\n if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) {\n tip(\n \"Event \\\"\" + lowerCaseEvent + \"\\\" is emitted in component \" +\n (formatComponentName(vm)) + \" but the handler is registered for \\\"\" + event + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and you cannot use \" +\n \"v-on to listen to camelCase events when using in-DOM templates. \" +\n \"You should probably use \\\"\" + (hyphenate(event)) + \"\\\" instead of \\\"\" + event + \"\\\".\"\n );\n }\n }\n var cbs = vm._events[event];\n if (cbs) {\n cbs = cbs.length > 1 ? toArray(cbs) : cbs;\n var args = toArray(arguments, 1);\n for (var i = 0, l = cbs.length; i < l; i++) {\n try {\n cbs[i].apply(vm, args);\n } catch (e) {\n handleError(e, vm, (\"event handler for \\\"\" + event + \"\\\"\"));\n }\n }\n }\n return vm\n };\n}\n\n/* */\n\n\n\n/**\n * Runtime helper for resolving raw children VNodes into a slot object.\n */\nfunction resolveSlots (\n children,\n context\n) {\n var slots = {};\n if (!children) {\n return slots\n }\n for (var i = 0, l = children.length; i < l; i++) {\n var child = children[i];\n var data = child.data;\n // remove slot attribute if the node is resolved as a Vue slot node\n if (data && data.attrs && data.attrs.slot) {\n delete data.attrs.slot;\n }\n // named slots should only be respected if the vnode was rendered in the\n // same context.\n if ((child.context === context || child.fnContext === context) &&\n data && data.slot != null\n ) {\n var name = data.slot;\n var slot = (slots[name] || (slots[name] = []));\n if (child.tag === 'template') {\n slot.push.apply(slot, child.children || []);\n } else {\n slot.push(child);\n }\n } else {\n (slots.default || (slots.default = [])).push(child);\n }\n }\n // ignore slots that contains only whitespace\n for (var name$1 in slots) {\n if (slots[name$1].every(isWhitespace)) {\n delete slots[name$1];\n }\n }\n return slots\n}\n\nfunction isWhitespace (node) {\n return (node.isComment && !node.asyncFactory) || node.text === ' '\n}\n\nfunction resolveScopedSlots (\n fns, // see flow/vnode\n res\n) {\n res = res || {};\n for (var i = 0; i < fns.length; i++) {\n if (Array.isArray(fns[i])) {\n resolveScopedSlots(fns[i], res);\n } else {\n res[fns[i].key] = fns[i].fn;\n }\n }\n return res\n}\n\n/* */\n\nvar activeInstance = null;\nvar isUpdatingChildComponent = false;\n\nfunction setActiveInstance(vm) {\n var prevActiveInstance = activeInstance;\n activeInstance = vm;\n return function () {\n activeInstance = prevActiveInstance;\n }\n}\n\nfunction initLifecycle (vm) {\n var options = vm.$options;\n\n // locate first non-abstract parent\n var parent = options.parent;\n if (parent && !options.abstract) {\n while (parent.$options.abstract && parent.$parent) {\n parent = parent.$parent;\n }\n parent.$children.push(vm);\n }\n\n vm.$parent = parent;\n vm.$root = parent ? parent.$root : vm;\n\n vm.$children = [];\n vm.$refs = {};\n\n vm._watcher = null;\n vm._inactive = null;\n vm._directInactive = false;\n vm._isMounted = false;\n vm._isDestroyed = false;\n vm._isBeingDestroyed = false;\n}\n\nfunction lifecycleMixin (Vue) {\n Vue.prototype._update = function (vnode, hydrating) {\n var vm = this;\n var prevEl = vm.$el;\n var prevVnode = vm._vnode;\n var restoreActiveInstance = setActiveInstance(vm);\n vm._vnode = vnode;\n // Vue.prototype.__patch__ is injected in entry points\n // based on the rendering backend used.\n if (!prevVnode) {\n // initial render\n vm.$el = vm.__patch__(vm.$el, vnode, hydrating, false /* removeOnly */);\n } else {\n // updates\n vm.$el = vm.__patch__(prevVnode, vnode);\n }\n restoreActiveInstance();\n // update __vue__ reference\n if (prevEl) {\n prevEl.__vue__ = null;\n }\n if (vm.$el) {\n vm.$el.__vue__ = vm;\n }\n // if parent is an HOC, update its $el as well\n if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) {\n vm.$parent.$el = vm.$el;\n }\n // updated hook is called by the scheduler to ensure that children are\n // updated in a parent's updated hook.\n };\n\n Vue.prototype.$forceUpdate = function () {\n var vm = this;\n if (vm._watcher) {\n vm._watcher.update();\n }\n };\n\n Vue.prototype.$destroy = function () {\n var vm = this;\n if (vm._isBeingDestroyed) {\n return\n }\n callHook(vm, 'beforeDestroy');\n vm._isBeingDestroyed = true;\n // remove self from parent\n var parent = vm.$parent;\n if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {\n remove(parent.$children, vm);\n }\n // teardown watchers\n if (vm._watcher) {\n vm._watcher.teardown();\n }\n var i = vm._watchers.length;\n while (i--) {\n vm._watchers[i].teardown();\n }\n // remove reference from data ob\n // frozen object may not have observer.\n if (vm._data.__ob__) {\n vm._data.__ob__.vmCount--;\n }\n // call the last hook...\n vm._isDestroyed = true;\n // invoke destroy hooks on current rendered tree\n vm.__patch__(vm._vnode, null);\n // fire destroyed hook\n callHook(vm, 'destroyed');\n // turn off all instance listeners.\n vm.$off();\n // remove __vue__ reference\n if (vm.$el) {\n vm.$el.__vue__ = null;\n }\n // release circular reference (#6759)\n if (vm.$vnode) {\n vm.$vnode.parent = null;\n }\n };\n}\n\nfunction mountComponent (\n vm,\n el,\n hydrating\n) {\n vm.$el = el;\n if (!vm.$options.render) {\n vm.$options.render = createEmptyVNode;\n if (process.env.NODE_ENV !== 'production') {\n /* istanbul ignore if */\n if ((vm.$options.template && vm.$options.template.charAt(0) !== '#') ||\n vm.$options.el || el) {\n warn(\n 'You are using the runtime-only build of Vue where the template ' +\n 'compiler is not available. Either pre-compile the templates into ' +\n 'render functions, or use the compiler-included build.',\n vm\n );\n } else {\n warn(\n 'Failed to mount component: template or render function not defined.',\n vm\n );\n }\n }\n }\n callHook(vm, 'beforeMount');\n\n var updateComponent;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n updateComponent = function () {\n var name = vm._name;\n var id = vm._uid;\n var startTag = \"vue-perf-start:\" + id;\n var endTag = \"vue-perf-end:\" + id;\n\n mark(startTag);\n var vnode = vm._render();\n mark(endTag);\n measure((\"vue \" + name + \" render\"), startTag, endTag);\n\n mark(startTag);\n vm._update(vnode, hydrating);\n mark(endTag);\n measure((\"vue \" + name + \" patch\"), startTag, endTag);\n };\n } else {\n updateComponent = function () {\n vm._update(vm._render(), hydrating);\n };\n }\n\n // we set this to vm._watcher inside the watcher's constructor\n // since the watcher's initial patch may call $forceUpdate (e.g. inside child\n // component's mounted hook), which relies on vm._watcher being already defined\n new Watcher(vm, updateComponent, noop, {\n before: function before () {\n if (vm._isMounted && !vm._isDestroyed) {\n callHook(vm, 'beforeUpdate');\n }\n }\n }, true /* isRenderWatcher */);\n hydrating = false;\n\n // manually mounted instance, call mounted on self\n // mounted is called for render-created child components in its inserted hook\n if (vm.$vnode == null) {\n vm._isMounted = true;\n callHook(vm, 'mounted');\n }\n return vm\n}\n\nfunction updateChildComponent (\n vm,\n propsData,\n listeners,\n parentVnode,\n renderChildren\n) {\n if (process.env.NODE_ENV !== 'production') {\n isUpdatingChildComponent = true;\n }\n\n // determine whether component has slot children\n // we need to do this before overwriting $options._renderChildren\n var hasChildren = !!(\n renderChildren || // has new static slots\n vm.$options._renderChildren || // has old static slots\n parentVnode.data.scopedSlots || // has new scoped slots\n vm.$scopedSlots !== emptyObject // has old scoped slots\n );\n\n vm.$options._parentVnode = parentVnode;\n vm.$vnode = parentVnode; // update vm's placeholder node without re-render\n\n if (vm._vnode) { // update child tree's parent\n vm._vnode.parent = parentVnode;\n }\n vm.$options._renderChildren = renderChildren;\n\n // update $attrs and $listeners hash\n // these are also reactive so they may trigger child update if the child\n // used them during render\n vm.$attrs = parentVnode.data.attrs || emptyObject;\n vm.$listeners = listeners || emptyObject;\n\n // update props\n if (propsData && vm.$options.props) {\n toggleObserving(false);\n var props = vm._props;\n var propKeys = vm.$options._propKeys || [];\n for (var i = 0; i < propKeys.length; i++) {\n var key = propKeys[i];\n var propOptions = vm.$options.props; // wtf flow?\n props[key] = validateProp(key, propOptions, propsData, vm);\n }\n toggleObserving(true);\n // keep a copy of raw propsData\n vm.$options.propsData = propsData;\n }\n\n // update listeners\n listeners = listeners || emptyObject;\n var oldListeners = vm.$options._parentListeners;\n vm.$options._parentListeners = listeners;\n updateComponentListeners(vm, listeners, oldListeners);\n\n // resolve slots + force update if has children\n if (hasChildren) {\n vm.$slots = resolveSlots(renderChildren, parentVnode.context);\n vm.$forceUpdate();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n isUpdatingChildComponent = false;\n }\n}\n\nfunction isInInactiveTree (vm) {\n while (vm && (vm = vm.$parent)) {\n if (vm._inactive) { return true }\n }\n return false\n}\n\nfunction activateChildComponent (vm, direct) {\n if (direct) {\n vm._directInactive = false;\n if (isInInactiveTree(vm)) {\n return\n }\n } else if (vm._directInactive) {\n return\n }\n if (vm._inactive || vm._inactive === null) {\n vm._inactive = false;\n for (var i = 0; i < vm.$children.length; i++) {\n activateChildComponent(vm.$children[i]);\n }\n callHook(vm, 'activated');\n }\n}\n\nfunction deactivateChildComponent (vm, direct) {\n if (direct) {\n vm._directInactive = true;\n if (isInInactiveTree(vm)) {\n return\n }\n }\n if (!vm._inactive) {\n vm._inactive = true;\n for (var i = 0; i < vm.$children.length; i++) {\n deactivateChildComponent(vm.$children[i]);\n }\n callHook(vm, 'deactivated');\n }\n}\n\nfunction callHook (vm, hook) {\n // #7573 disable dep collection when invoking lifecycle hooks\n pushTarget();\n var handlers = vm.$options[hook];\n if (handlers) {\n for (var i = 0, j = handlers.length; i < j; i++) {\n try {\n handlers[i].call(vm);\n } catch (e) {\n handleError(e, vm, (hook + \" hook\"));\n }\n }\n }\n if (vm._hasHookEvent) {\n vm.$emit('hook:' + hook);\n }\n popTarget();\n}\n\n/* */\n\nvar MAX_UPDATE_COUNT = 100;\n\nvar queue = [];\nvar activatedChildren = [];\nvar has = {};\nvar circular = {};\nvar waiting = false;\nvar flushing = false;\nvar index = 0;\n\n/**\n * Reset the scheduler's state.\n */\nfunction resetSchedulerState () {\n index = queue.length = activatedChildren.length = 0;\n has = {};\n if (process.env.NODE_ENV !== 'production') {\n circular = {};\n }\n waiting = flushing = false;\n}\n\n/**\n * Flush both queues and run the watchers.\n */\nfunction flushSchedulerQueue () {\n flushing = true;\n var watcher, id;\n\n // Sort queue before flush.\n // This ensures that:\n // 1. Components are updated from parent to child. (because parent is always\n // created before the child)\n // 2. A component's user watchers are run before its render watcher (because\n // user watchers are created before the render watcher)\n // 3. If a component is destroyed during a parent component's watcher run,\n // its watchers can be skipped.\n queue.sort(function (a, b) { return a.id - b.id; });\n\n // do not cache length because more watchers might be pushed\n // as we run existing watchers\n for (index = 0; index < queue.length; index++) {\n watcher = queue[index];\n if (watcher.before) {\n watcher.before();\n }\n id = watcher.id;\n has[id] = null;\n watcher.run();\n // in dev build, check and stop circular updates.\n if (process.env.NODE_ENV !== 'production' && has[id] != null) {\n circular[id] = (circular[id] || 0) + 1;\n if (circular[id] > MAX_UPDATE_COUNT) {\n warn(\n 'You may have an infinite update loop ' + (\n watcher.user\n ? (\"in watcher with expression \\\"\" + (watcher.expression) + \"\\\"\")\n : \"in a component render function.\"\n ),\n watcher.vm\n );\n break\n }\n }\n }\n\n // keep copies of post queues before resetting state\n var activatedQueue = activatedChildren.slice();\n var updatedQueue = queue.slice();\n\n resetSchedulerState();\n\n // call component updated and activated hooks\n callActivatedHooks(activatedQueue);\n callUpdatedHooks(updatedQueue);\n\n // devtool hook\n /* istanbul ignore if */\n if (devtools && config.devtools) {\n devtools.emit('flush');\n }\n}\n\nfunction callUpdatedHooks (queue) {\n var i = queue.length;\n while (i--) {\n var watcher = queue[i];\n var vm = watcher.vm;\n if (vm._watcher === watcher && vm._isMounted && !vm._isDestroyed) {\n callHook(vm, 'updated');\n }\n }\n}\n\n/**\n * Queue a kept-alive component that was activated during patch.\n * The queue will be processed after the entire tree has been patched.\n */\nfunction queueActivatedComponent (vm) {\n // setting _inactive to false here so that a render function can\n // rely on checking whether it's in an inactive tree (e.g. router-view)\n vm._inactive = false;\n activatedChildren.push(vm);\n}\n\nfunction callActivatedHooks (queue) {\n for (var i = 0; i < queue.length; i++) {\n queue[i]._inactive = true;\n activateChildComponent(queue[i], true /* true */);\n }\n}\n\n/**\n * Push a watcher into the watcher queue.\n * Jobs with duplicate IDs will be skipped unless it's\n * pushed when the queue is being flushed.\n */\nfunction queueWatcher (watcher) {\n var id = watcher.id;\n if (has[id] == null) {\n has[id] = true;\n if (!flushing) {\n queue.push(watcher);\n } else {\n // if already flushing, splice the watcher based on its id\n // if already past its id, it will be run next immediately.\n var i = queue.length - 1;\n while (i > index && queue[i].id > watcher.id) {\n i--;\n }\n queue.splice(i + 1, 0, watcher);\n }\n // queue the flush\n if (!waiting) {\n waiting = true;\n\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n flushSchedulerQueue();\n return\n }\n nextTick(flushSchedulerQueue);\n }\n }\n}\n\n/* */\n\n\n\nvar uid$1 = 0;\n\n/**\n * A watcher parses an expression, collects dependencies,\n * and fires callback when the expression value changes.\n * This is used for both the $watch() api and directives.\n */\nvar Watcher = function Watcher (\n vm,\n expOrFn,\n cb,\n options,\n isRenderWatcher\n) {\n this.vm = vm;\n if (isRenderWatcher) {\n vm._watcher = this;\n }\n vm._watchers.push(this);\n // options\n if (options) {\n this.deep = !!options.deep;\n this.user = !!options.user;\n this.lazy = !!options.lazy;\n this.sync = !!options.sync;\n this.before = options.before;\n } else {\n this.deep = this.user = this.lazy = this.sync = false;\n }\n this.cb = cb;\n this.id = ++uid$1; // uid for batching\n this.active = true;\n this.dirty = this.lazy; // for lazy watchers\n this.deps = [];\n this.newDeps = [];\n this.depIds = new _Set();\n this.newDepIds = new _Set();\n this.expression = process.env.NODE_ENV !== 'production'\n ? expOrFn.toString()\n : '';\n // parse expression for getter\n if (typeof expOrFn === 'function') {\n this.getter = expOrFn;\n } else {\n this.getter = parsePath(expOrFn);\n if (!this.getter) {\n this.getter = noop;\n process.env.NODE_ENV !== 'production' && warn(\n \"Failed watching path: \\\"\" + expOrFn + \"\\\" \" +\n 'Watcher only accepts simple dot-delimited paths. ' +\n 'For full control, use a function instead.',\n vm\n );\n }\n }\n this.value = this.lazy\n ? undefined\n : this.get();\n};\n\n/**\n * Evaluate the getter, and re-collect dependencies.\n */\nWatcher.prototype.get = function get () {\n pushTarget(this);\n var value;\n var vm = this.vm;\n try {\n value = this.getter.call(vm, vm);\n } catch (e) {\n if (this.user) {\n handleError(e, vm, (\"getter for watcher \\\"\" + (this.expression) + \"\\\"\"));\n } else {\n throw e\n }\n } finally {\n // \"touch\" every property so they are all tracked as\n // dependencies for deep watching\n if (this.deep) {\n traverse(value);\n }\n popTarget();\n this.cleanupDeps();\n }\n return value\n};\n\n/**\n * Add a dependency to this directive.\n */\nWatcher.prototype.addDep = function addDep (dep) {\n var id = dep.id;\n if (!this.newDepIds.has(id)) {\n this.newDepIds.add(id);\n this.newDeps.push(dep);\n if (!this.depIds.has(id)) {\n dep.addSub(this);\n }\n }\n};\n\n/**\n * Clean up for dependency collection.\n */\nWatcher.prototype.cleanupDeps = function cleanupDeps () {\n var i = this.deps.length;\n while (i--) {\n var dep = this.deps[i];\n if (!this.newDepIds.has(dep.id)) {\n dep.removeSub(this);\n }\n }\n var tmp = this.depIds;\n this.depIds = this.newDepIds;\n this.newDepIds = tmp;\n this.newDepIds.clear();\n tmp = this.deps;\n this.deps = this.newDeps;\n this.newDeps = tmp;\n this.newDeps.length = 0;\n};\n\n/**\n * Subscriber interface.\n * Will be called when a dependency changes.\n */\nWatcher.prototype.update = function update () {\n /* istanbul ignore else */\n if (this.lazy) {\n this.dirty = true;\n } else if (this.sync) {\n this.run();\n } else {\n queueWatcher(this);\n }\n};\n\n/**\n * Scheduler job interface.\n * Will be called by the scheduler.\n */\nWatcher.prototype.run = function run () {\n if (this.active) {\n var value = this.get();\n if (\n value !== this.value ||\n // Deep watchers and watchers on Object/Arrays should fire even\n // when the value is the same, because the value may\n // have mutated.\n isObject(value) ||\n this.deep\n ) {\n // set new value\n var oldValue = this.value;\n this.value = value;\n if (this.user) {\n try {\n this.cb.call(this.vm, value, oldValue);\n } catch (e) {\n handleError(e, this.vm, (\"callback for watcher \\\"\" + (this.expression) + \"\\\"\"));\n }\n } else {\n this.cb.call(this.vm, value, oldValue);\n }\n }\n }\n};\n\n/**\n * Evaluate the value of the watcher.\n * This only gets called for lazy watchers.\n */\nWatcher.prototype.evaluate = function evaluate () {\n this.value = this.get();\n this.dirty = false;\n};\n\n/**\n * Depend on all deps collected by this watcher.\n */\nWatcher.prototype.depend = function depend () {\n var i = this.deps.length;\n while (i--) {\n this.deps[i].depend();\n }\n};\n\n/**\n * Remove self from all dependencies' subscriber list.\n */\nWatcher.prototype.teardown = function teardown () {\n if (this.active) {\n // remove self from vm's watcher list\n // this is a somewhat expensive operation so we skip it\n // if the vm is being destroyed.\n if (!this.vm._isBeingDestroyed) {\n remove(this.vm._watchers, this);\n }\n var i = this.deps.length;\n while (i--) {\n this.deps[i].removeSub(this);\n }\n this.active = false;\n }\n};\n\n/* */\n\nvar sharedPropertyDefinition = {\n enumerable: true,\n configurable: true,\n get: noop,\n set: noop\n};\n\nfunction proxy (target, sourceKey, key) {\n sharedPropertyDefinition.get = function proxyGetter () {\n return this[sourceKey][key]\n };\n sharedPropertyDefinition.set = function proxySetter (val) {\n this[sourceKey][key] = val;\n };\n Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction initState (vm) {\n vm._watchers = [];\n var opts = vm.$options;\n if (opts.props) { initProps(vm, opts.props); }\n if (opts.methods) { initMethods(vm, opts.methods); }\n if (opts.data) {\n initData(vm);\n } else {\n observe(vm._data = {}, true /* asRootData */);\n }\n if (opts.computed) { initComputed(vm, opts.computed); }\n if (opts.watch && opts.watch !== nativeWatch) {\n initWatch(vm, opts.watch);\n }\n}\n\nfunction initProps (vm, propsOptions) {\n var propsData = vm.$options.propsData || {};\n var props = vm._props = {};\n // cache prop keys so that future props updates can iterate using Array\n // instead of dynamic object key enumeration.\n var keys = vm.$options._propKeys = [];\n var isRoot = !vm.$parent;\n // root instance props should be converted\n if (!isRoot) {\n toggleObserving(false);\n }\n var loop = function ( key ) {\n keys.push(key);\n var value = validateProp(key, propsOptions, propsData, vm);\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n var hyphenatedKey = hyphenate(key);\n if (isReservedAttribute(hyphenatedKey) ||\n config.isReservedAttr(hyphenatedKey)) {\n warn(\n (\"\\\"\" + hyphenatedKey + \"\\\" is a reserved attribute and cannot be used as component prop.\"),\n vm\n );\n }\n defineReactive$$1(props, key, value, function () {\n if (!isRoot && !isUpdatingChildComponent) {\n warn(\n \"Avoid mutating a prop directly since the value will be \" +\n \"overwritten whenever the parent component re-renders. \" +\n \"Instead, use a data or computed property based on the prop's \" +\n \"value. Prop being mutated: \\\"\" + key + \"\\\"\",\n vm\n );\n }\n });\n } else {\n defineReactive$$1(props, key, value);\n }\n // static props are already proxied on the component's prototype\n // during Vue.extend(). We only need to proxy props defined at\n // instantiation here.\n if (!(key in vm)) {\n proxy(vm, \"_props\", key);\n }\n };\n\n for (var key in propsOptions) loop( key );\n toggleObserving(true);\n}\n\nfunction initData (vm) {\n var data = vm.$options.data;\n data = vm._data = typeof data === 'function'\n ? getData(data, vm)\n : data || {};\n if (!isPlainObject(data)) {\n data = {};\n process.env.NODE_ENV !== 'production' && warn(\n 'data functions should return an object:\\n' +\n 'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function',\n vm\n );\n }\n // proxy data on instance\n var keys = Object.keys(data);\n var props = vm.$options.props;\n var methods = vm.$options.methods;\n var i = keys.length;\n while (i--) {\n var key = keys[i];\n if (process.env.NODE_ENV !== 'production') {\n if (methods && hasOwn(methods, key)) {\n warn(\n (\"Method \\\"\" + key + \"\\\" has already been defined as a data property.\"),\n vm\n );\n }\n }\n if (props && hasOwn(props, key)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"The data property \\\"\" + key + \"\\\" is already declared as a prop. \" +\n \"Use prop default value instead.\",\n vm\n );\n } else if (!isReserved(key)) {\n proxy(vm, \"_data\", key);\n }\n }\n // observe data\n observe(data, true /* asRootData */);\n}\n\nfunction getData (data, vm) {\n // #7573 disable dep collection when invoking data getters\n pushTarget();\n try {\n return data.call(vm, vm)\n } catch (e) {\n handleError(e, vm, \"data()\");\n return {}\n } finally {\n popTarget();\n }\n}\n\nvar computedWatcherOptions = { lazy: true };\n\nfunction initComputed (vm, computed) {\n // $flow-disable-line\n var watchers = vm._computedWatchers = Object.create(null);\n // computed properties are just getters during SSR\n var isSSR = isServerRendering();\n\n for (var key in computed) {\n var userDef = computed[key];\n var getter = typeof userDef === 'function' ? userDef : userDef.get;\n if (process.env.NODE_ENV !== 'production' && getter == null) {\n warn(\n (\"Getter is missing for computed property \\\"\" + key + \"\\\".\"),\n vm\n );\n }\n\n if (!isSSR) {\n // create internal watcher for the computed property.\n watchers[key] = new Watcher(\n vm,\n getter || noop,\n noop,\n computedWatcherOptions\n );\n }\n\n // component-defined computed properties are already defined on the\n // component prototype. We only need to define computed properties defined\n // at instantiation here.\n if (!(key in vm)) {\n defineComputed(vm, key, userDef);\n } else if (process.env.NODE_ENV !== 'production') {\n if (key in vm.$data) {\n warn((\"The computed property \\\"\" + key + \"\\\" is already defined in data.\"), vm);\n } else if (vm.$options.props && key in vm.$options.props) {\n warn((\"The computed property \\\"\" + key + \"\\\" is already defined as a prop.\"), vm);\n }\n }\n }\n}\n\nfunction defineComputed (\n target,\n key,\n userDef\n) {\n var shouldCache = !isServerRendering();\n if (typeof userDef === 'function') {\n sharedPropertyDefinition.get = shouldCache\n ? createComputedGetter(key)\n : createGetterInvoker(userDef);\n sharedPropertyDefinition.set = noop;\n } else {\n sharedPropertyDefinition.get = userDef.get\n ? shouldCache && userDef.cache !== false\n ? createComputedGetter(key)\n : createGetterInvoker(userDef.get)\n : noop;\n sharedPropertyDefinition.set = userDef.set || noop;\n }\n if (process.env.NODE_ENV !== 'production' &&\n sharedPropertyDefinition.set === noop) {\n sharedPropertyDefinition.set = function () {\n warn(\n (\"Computed property \\\"\" + key + \"\\\" was assigned to but it has no setter.\"),\n this\n );\n };\n }\n Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction createComputedGetter (key) {\n return function computedGetter () {\n var watcher = this._computedWatchers && this._computedWatchers[key];\n if (watcher) {\n if (watcher.dirty) {\n watcher.evaluate();\n }\n if (Dep.target) {\n watcher.depend();\n }\n return watcher.value\n }\n }\n}\n\nfunction createGetterInvoker(fn) {\n return function computedGetter () {\n return fn.call(this, this)\n }\n}\n\nfunction initMethods (vm, methods) {\n var props = vm.$options.props;\n for (var key in methods) {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof methods[key] !== 'function') {\n warn(\n \"Method \\\"\" + key + \"\\\" has type \\\"\" + (typeof methods[key]) + \"\\\" in the component definition. \" +\n \"Did you reference the function correctly?\",\n vm\n );\n }\n if (props && hasOwn(props, key)) {\n warn(\n (\"Method \\\"\" + key + \"\\\" has already been defined as a prop.\"),\n vm\n );\n }\n if ((key in vm) && isReserved(key)) {\n warn(\n \"Method \\\"\" + key + \"\\\" conflicts with an existing Vue instance method. \" +\n \"Avoid defining component methods that start with _ or $.\"\n );\n }\n }\n vm[key] = typeof methods[key] !== 'function' ? noop : bind(methods[key], vm);\n }\n}\n\nfunction initWatch (vm, watch) {\n for (var key in watch) {\n var handler = watch[key];\n if (Array.isArray(handler)) {\n for (var i = 0; i < handler.length; i++) {\n createWatcher(vm, key, handler[i]);\n }\n } else {\n createWatcher(vm, key, handler);\n }\n }\n}\n\nfunction createWatcher (\n vm,\n expOrFn,\n handler,\n options\n) {\n if (isPlainObject(handler)) {\n options = handler;\n handler = handler.handler;\n }\n if (typeof handler === 'string') {\n handler = vm[handler];\n }\n return vm.$watch(expOrFn, handler, options)\n}\n\nfunction stateMixin (Vue) {\n // flow somehow has problems with directly declared definition object\n // when using Object.defineProperty, so we have to procedurally build up\n // the object here.\n var dataDef = {};\n dataDef.get = function () { return this._data };\n var propsDef = {};\n propsDef.get = function () { return this._props };\n if (process.env.NODE_ENV !== 'production') {\n dataDef.set = function () {\n warn(\n 'Avoid replacing instance root $data. ' +\n 'Use nested data properties instead.',\n this\n );\n };\n propsDef.set = function () {\n warn(\"$props is readonly.\", this);\n };\n }\n Object.defineProperty(Vue.prototype, '$data', dataDef);\n Object.defineProperty(Vue.prototype, '$props', propsDef);\n\n Vue.prototype.$set = set;\n Vue.prototype.$delete = del;\n\n Vue.prototype.$watch = function (\n expOrFn,\n cb,\n options\n ) {\n var vm = this;\n if (isPlainObject(cb)) {\n return createWatcher(vm, expOrFn, cb, options)\n }\n options = options || {};\n options.user = true;\n var watcher = new Watcher(vm, expOrFn, cb, options);\n if (options.immediate) {\n try {\n cb.call(vm, watcher.value);\n } catch (error) {\n handleError(error, vm, (\"callback for immediate watcher \\\"\" + (watcher.expression) + \"\\\"\"));\n }\n }\n return function unwatchFn () {\n watcher.teardown();\n }\n };\n}\n\n/* */\n\nfunction initProvide (vm) {\n var provide = vm.$options.provide;\n if (provide) {\n vm._provided = typeof provide === 'function'\n ? provide.call(vm)\n : provide;\n }\n}\n\nfunction initInjections (vm) {\n var result = resolveInject(vm.$options.inject, vm);\n if (result) {\n toggleObserving(false);\n Object.keys(result).forEach(function (key) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n defineReactive$$1(vm, key, result[key], function () {\n warn(\n \"Avoid mutating an injected value directly since the changes will be \" +\n \"overwritten whenever the provided component re-renders. \" +\n \"injection being mutated: \\\"\" + key + \"\\\"\",\n vm\n );\n });\n } else {\n defineReactive$$1(vm, key, result[key]);\n }\n });\n toggleObserving(true);\n }\n}\n\nfunction resolveInject (inject, vm) {\n if (inject) {\n // inject is :any because flow is not smart enough to figure out cached\n var result = Object.create(null);\n var keys = hasSymbol\n ? Reflect.ownKeys(inject).filter(function (key) {\n /* istanbul ignore next */\n return Object.getOwnPropertyDescriptor(inject, key).enumerable\n })\n : Object.keys(inject);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var provideKey = inject[key].from;\n var source = vm;\n while (source) {\n if (source._provided && hasOwn(source._provided, provideKey)) {\n result[key] = source._provided[provideKey];\n break\n }\n source = source.$parent;\n }\n if (!source) {\n if ('default' in inject[key]) {\n var provideDefault = inject[key].default;\n result[key] = typeof provideDefault === 'function'\n ? provideDefault.call(vm)\n : provideDefault;\n } else if (process.env.NODE_ENV !== 'production') {\n warn((\"Injection \\\"\" + key + \"\\\" not found\"), vm);\n }\n }\n }\n return result\n }\n}\n\n/* */\n\n/**\n * Runtime helper for rendering v-for lists.\n */\nfunction renderList (\n val,\n render\n) {\n var ret, i, l, keys, key;\n if (Array.isArray(val) || typeof val === 'string') {\n ret = new Array(val.length);\n for (i = 0, l = val.length; i < l; i++) {\n ret[i] = render(val[i], i);\n }\n } else if (typeof val === 'number') {\n ret = new Array(val);\n for (i = 0; i < val; i++) {\n ret[i] = render(i + 1, i);\n }\n } else if (isObject(val)) {\n keys = Object.keys(val);\n ret = new Array(keys.length);\n for (i = 0, l = keys.length; i < l; i++) {\n key = keys[i];\n ret[i] = render(val[key], key, i);\n }\n }\n if (!isDef(ret)) {\n ret = [];\n }\n (ret)._isVList = true;\n return ret\n}\n\n/* */\n\n/**\n * Runtime helper for rendering <slot>\n */\nfunction renderSlot (\n name,\n fallback,\n props,\n bindObject\n) {\n var scopedSlotFn = this.$scopedSlots[name];\n var nodes;\n if (scopedSlotFn) { // scoped slot\n props = props || {};\n if (bindObject) {\n if (process.env.NODE_ENV !== 'production' && !isObject(bindObject)) {\n warn(\n 'slot v-bind without argument expects an Object',\n this\n );\n }\n props = extend(extend({}, bindObject), props);\n }\n nodes = scopedSlotFn(props) || fallback;\n } else {\n nodes = this.$slots[name] || fallback;\n }\n\n var target = props && props.slot;\n if (target) {\n return this.$createElement('template', { slot: target }, nodes)\n } else {\n return nodes\n }\n}\n\n/* */\n\n/**\n * Runtime helper for resolving filters\n */\nfunction resolveFilter (id) {\n return resolveAsset(this.$options, 'filters', id, true) || identity\n}\n\n/* */\n\nfunction isKeyNotMatch (expect, actual) {\n if (Array.isArray(expect)) {\n return expect.indexOf(actual) === -1\n } else {\n return expect !== actual\n }\n}\n\n/**\n * Runtime helper for checking keyCodes from config.\n * exposed as Vue.prototype._k\n * passing in eventKeyName as last argument separately for backwards compat\n */\nfunction checkKeyCodes (\n eventKeyCode,\n key,\n builtInKeyCode,\n eventKeyName,\n builtInKeyName\n) {\n var mappedKeyCode = config.keyCodes[key] || builtInKeyCode;\n if (builtInKeyName && eventKeyName && !config.keyCodes[key]) {\n return isKeyNotMatch(builtInKeyName, eventKeyName)\n } else if (mappedKeyCode) {\n return isKeyNotMatch(mappedKeyCode, eventKeyCode)\n } else if (eventKeyName) {\n return hyphenate(eventKeyName) !== key\n }\n}\n\n/* */\n\n/**\n * Runtime helper for merging v-bind=\"object\" into a VNode's data.\n */\nfunction bindObjectProps (\n data,\n tag,\n value,\n asProp,\n isSync\n) {\n if (value) {\n if (!isObject(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'v-bind without argument expects an Object or Array value',\n this\n );\n } else {\n if (Array.isArray(value)) {\n value = toObject(value);\n }\n var hash;\n var loop = function ( key ) {\n if (\n key === 'class' ||\n key === 'style' ||\n isReservedAttribute(key)\n ) {\n hash = data;\n } else {\n var type = data.attrs && data.attrs.type;\n hash = asProp || config.mustUseProp(tag, type, key)\n ? data.domProps || (data.domProps = {})\n : data.attrs || (data.attrs = {});\n }\n var camelizedKey = camelize(key);\n if (!(key in hash) && !(camelizedKey in hash)) {\n hash[key] = value[key];\n\n if (isSync) {\n var on = data.on || (data.on = {});\n on[(\"update:\" + camelizedKey)] = function ($event) {\n value[key] = $event;\n };\n }\n }\n };\n\n for (var key in value) loop( key );\n }\n }\n return data\n}\n\n/* */\n\n/**\n * Runtime helper for rendering static trees.\n */\nfunction renderStatic (\n index,\n isInFor\n) {\n var cached = this._staticTrees || (this._staticTrees = []);\n var tree = cached[index];\n // if has already-rendered static tree and not inside v-for,\n // we can reuse the same tree.\n if (tree && !isInFor) {\n return tree\n }\n // otherwise, render a fresh tree.\n tree = cached[index] = this.$options.staticRenderFns[index].call(\n this._renderProxy,\n null,\n this // for render fns generated for functional component templates\n );\n markStatic(tree, (\"__static__\" + index), false);\n return tree\n}\n\n/**\n * Runtime helper for v-once.\n * Effectively it means marking the node as static with a unique key.\n */\nfunction markOnce (\n tree,\n index,\n key\n) {\n markStatic(tree, (\"__once__\" + index + (key ? (\"_\" + key) : \"\")), true);\n return tree\n}\n\nfunction markStatic (\n tree,\n key,\n isOnce\n) {\n if (Array.isArray(tree)) {\n for (var i = 0; i < tree.length; i++) {\n if (tree[i] && typeof tree[i] !== 'string') {\n markStaticNode(tree[i], (key + \"_\" + i), isOnce);\n }\n }\n } else {\n markStaticNode(tree, key, isOnce);\n }\n}\n\nfunction markStaticNode (node, key, isOnce) {\n node.isStatic = true;\n node.key = key;\n node.isOnce = isOnce;\n}\n\n/* */\n\nfunction bindObjectListeners (data, value) {\n if (value) {\n if (!isPlainObject(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'v-on without argument expects an Object value',\n this\n );\n } else {\n var on = data.on = data.on ? extend({}, data.on) : {};\n for (var key in value) {\n var existing = on[key];\n var ours = value[key];\n on[key] = existing ? [].concat(existing, ours) : ours;\n }\n }\n }\n return data\n}\n\n/* */\n\nfunction installRenderHelpers (target) {\n target._o = markOnce;\n target._n = toNumber;\n target._s = toString;\n target._l = renderList;\n target._t = renderSlot;\n target._q = looseEqual;\n target._i = looseIndexOf;\n target._m = renderStatic;\n target._f = resolveFilter;\n target._k = checkKeyCodes;\n target._b = bindObjectProps;\n target._v = createTextVNode;\n target._e = createEmptyVNode;\n target._u = resolveScopedSlots;\n target._g = bindObjectListeners;\n}\n\n/* */\n\nfunction FunctionalRenderContext (\n data,\n props,\n children,\n parent,\n Ctor\n) {\n var options = Ctor.options;\n // ensure the createElement function in functional components\n // gets a unique context - this is necessary for correct named slot check\n var contextVm;\n if (hasOwn(parent, '_uid')) {\n contextVm = Object.create(parent);\n // $flow-disable-line\n contextVm._original = parent;\n } else {\n // the context vm passed in is a functional context as well.\n // in this case we want to make sure we are able to get a hold to the\n // real context instance.\n contextVm = parent;\n // $flow-disable-line\n parent = parent._original;\n }\n var isCompiled = isTrue(options._compiled);\n var needNormalization = !isCompiled;\n\n this.data = data;\n this.props = props;\n this.children = children;\n this.parent = parent;\n this.listeners = data.on || emptyObject;\n this.injections = resolveInject(options.inject, parent);\n this.slots = function () { return resolveSlots(children, parent); };\n\n // support for compiled functional template\n if (isCompiled) {\n // exposing $options for renderStatic()\n this.$options = options;\n // pre-resolve slots for renderSlot()\n this.$slots = this.slots();\n this.$scopedSlots = data.scopedSlots || emptyObject;\n }\n\n if (options._scopeId) {\n this._c = function (a, b, c, d) {\n var vnode = createElement(contextVm, a, b, c, d, needNormalization);\n if (vnode && !Array.isArray(vnode)) {\n vnode.fnScopeId = options._scopeId;\n vnode.fnContext = parent;\n }\n return vnode\n };\n } else {\n this._c = function (a, b, c, d) { return createElement(contextVm, a, b, c, d, needNormalization); };\n }\n}\n\ninstallRenderHelpers(FunctionalRenderContext.prototype);\n\nfunction createFunctionalComponent (\n Ctor,\n propsData,\n data,\n contextVm,\n children\n) {\n var options = Ctor.options;\n var props = {};\n var propOptions = options.props;\n if (isDef(propOptions)) {\n for (var key in propOptions) {\n props[key] = validateProp(key, propOptions, propsData || emptyObject);\n }\n } else {\n if (isDef(data.attrs)) { mergeProps(props, data.attrs); }\n if (isDef(data.props)) { mergeProps(props, data.props); }\n }\n\n var renderContext = new FunctionalRenderContext(\n data,\n props,\n children,\n contextVm,\n Ctor\n );\n\n var vnode = options.render.call(null, renderContext._c, renderContext);\n\n if (vnode instanceof VNode) {\n return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options, renderContext)\n } else if (Array.isArray(vnode)) {\n var vnodes = normalizeChildren(vnode) || [];\n var res = new Array(vnodes.length);\n for (var i = 0; i < vnodes.length; i++) {\n res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options, renderContext);\n }\n return res\n }\n}\n\nfunction cloneAndMarkFunctionalResult (vnode, data, contextVm, options, renderContext) {\n // #7817 clone node before setting fnContext, otherwise if the node is reused\n // (e.g. it was from a cached normal slot) the fnContext causes named slots\n // that should not be matched to match.\n var clone = cloneVNode(vnode);\n clone.fnContext = contextVm;\n clone.fnOptions = options;\n if (process.env.NODE_ENV !== 'production') {\n (clone.devtoolsMeta = clone.devtoolsMeta || {}).renderContext = renderContext;\n }\n if (data.slot) {\n (clone.data || (clone.data = {})).slot = data.slot;\n }\n return clone\n}\n\nfunction mergeProps (to, from) {\n for (var key in from) {\n to[camelize(key)] = from[key];\n }\n}\n\n/* */\n\n/* */\n\n/* */\n\n/* */\n\n// inline hooks to be invoked on component VNodes during patch\nvar componentVNodeHooks = {\n init: function init (vnode, hydrating) {\n if (\n vnode.componentInstance &&\n !vnode.componentInstance._isDestroyed &&\n vnode.data.keepAlive\n ) {\n // kept-alive components, treat as a patch\n var mountedNode = vnode; // work around flow\n componentVNodeHooks.prepatch(mountedNode, mountedNode);\n } else {\n var child = vnode.componentInstance = createComponentInstanceForVnode(\n vnode,\n activeInstance\n );\n child.$mount(hydrating ? vnode.elm : undefined, hydrating);\n }\n },\n\n prepatch: function prepatch (oldVnode, vnode) {\n var options = vnode.componentOptions;\n var child = vnode.componentInstance = oldVnode.componentInstance;\n updateChildComponent(\n child,\n options.propsData, // updated props\n options.listeners, // updated listeners\n vnode, // new parent vnode\n options.children // new children\n );\n },\n\n insert: function insert (vnode) {\n var context = vnode.context;\n var componentInstance = vnode.componentInstance;\n if (!componentInstance._isMounted) {\n componentInstance._isMounted = true;\n callHook(componentInstance, 'mounted');\n }\n if (vnode.data.keepAlive) {\n if (context._isMounted) {\n // vue-router#1212\n // During updates, a kept-alive component's child components may\n // change, so directly walking the tree here may call activated hooks\n // on incorrect children. Instead we push them into a queue which will\n // be processed after the whole patch process ended.\n queueActivatedComponent(componentInstance);\n } else {\n activateChildComponent(componentInstance, true /* direct */);\n }\n }\n },\n\n destroy: function destroy (vnode) {\n var componentInstance = vnode.componentInstance;\n if (!componentInstance._isDestroyed) {\n if (!vnode.data.keepAlive) {\n componentInstance.$destroy();\n } else {\n deactivateChildComponent(componentInstance, true /* direct */);\n }\n }\n }\n};\n\nvar hooksToMerge = Object.keys(componentVNodeHooks);\n\nfunction createComponent (\n Ctor,\n data,\n context,\n children,\n tag\n) {\n if (isUndef(Ctor)) {\n return\n }\n\n var baseCtor = context.$options._base;\n\n // plain options object: turn it into a constructor\n if (isObject(Ctor)) {\n Ctor = baseCtor.extend(Ctor);\n }\n\n // if at this stage it's not a constructor or an async component factory,\n // reject.\n if (typeof Ctor !== 'function') {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Invalid Component definition: \" + (String(Ctor))), context);\n }\n return\n }\n\n // async component\n var asyncFactory;\n if (isUndef(Ctor.cid)) {\n asyncFactory = Ctor;\n Ctor = resolveAsyncComponent(asyncFactory, baseCtor, context);\n if (Ctor === undefined) {\n // return a placeholder node for async component, which is rendered\n // as a comment node but preserves all the raw information for the node.\n // the information will be used for async server-rendering and hydration.\n return createAsyncPlaceholder(\n asyncFactory,\n data,\n context,\n children,\n tag\n )\n }\n }\n\n data = data || {};\n\n // resolve constructor options in case global mixins are applied after\n // component constructor creation\n resolveConstructorOptions(Ctor);\n\n // transform component v-model data into props & events\n if (isDef(data.model)) {\n transformModel(Ctor.options, data);\n }\n\n // extract props\n var propsData = extractPropsFromVNodeData(data, Ctor, tag);\n\n // functional component\n if (isTrue(Ctor.options.functional)) {\n return createFunctionalComponent(Ctor, propsData, data, context, children)\n }\n\n // extract listeners, since these needs to be treated as\n // child component listeners instead of DOM listeners\n var listeners = data.on;\n // replace with listeners with .native modifier\n // so it gets processed during parent component patch.\n data.on = data.nativeOn;\n\n if (isTrue(Ctor.options.abstract)) {\n // abstract components do not keep anything\n // other than props & listeners & slot\n\n // work around flow\n var slot = data.slot;\n data = {};\n if (slot) {\n data.slot = slot;\n }\n }\n\n // install component management hooks onto the placeholder node\n installComponentHooks(data);\n\n // return a placeholder vnode\n var name = Ctor.options.name || tag;\n var vnode = new VNode(\n (\"vue-component-\" + (Ctor.cid) + (name ? (\"-\" + name) : '')),\n data, undefined, undefined, undefined, context,\n { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children },\n asyncFactory\n );\n\n return vnode\n}\n\nfunction createComponentInstanceForVnode (\n vnode, // we know it's MountedComponentVNode but flow doesn't\n parent // activeInstance in lifecycle state\n) {\n var options = {\n _isComponent: true,\n _parentVnode: vnode,\n parent: parent\n };\n // check inline-template render functions\n var inlineTemplate = vnode.data.inlineTemplate;\n if (isDef(inlineTemplate)) {\n options.render = inlineTemplate.render;\n options.staticRenderFns = inlineTemplate.staticRenderFns;\n }\n return new vnode.componentOptions.Ctor(options)\n}\n\nfunction installComponentHooks (data) {\n var hooks = data.hook || (data.hook = {});\n for (var i = 0; i < hooksToMerge.length; i++) {\n var key = hooksToMerge[i];\n var existing = hooks[key];\n var toMerge = componentVNodeHooks[key];\n if (existing !== toMerge && !(existing && existing._merged)) {\n hooks[key] = existing ? mergeHook$1(toMerge, existing) : toMerge;\n }\n }\n}\n\nfunction mergeHook$1 (f1, f2) {\n var merged = function (a, b) {\n // flow complains about extra args which is why we use any\n f1(a, b);\n f2(a, b);\n };\n merged._merged = true;\n return merged\n}\n\n// transform component v-model info (value and callback) into\n// prop and event handler respectively.\nfunction transformModel (options, data) {\n var prop = (options.model && options.model.prop) || 'value';\n var event = (options.model && options.model.event) || 'input'\n ;(data.props || (data.props = {}))[prop] = data.model.value;\n var on = data.on || (data.on = {});\n var existing = on[event];\n var callback = data.model.callback;\n if (isDef(existing)) {\n if (\n Array.isArray(existing)\n ? existing.indexOf(callback) === -1\n : existing !== callback\n ) {\n on[event] = [callback].concat(existing);\n }\n } else {\n on[event] = callback;\n }\n}\n\n/* */\n\nvar SIMPLE_NORMALIZE = 1;\nvar ALWAYS_NORMALIZE = 2;\n\n// wrapper function for providing a more flexible interface\n// without getting yelled at by flow\nfunction createElement (\n context,\n tag,\n data,\n children,\n normalizationType,\n alwaysNormalize\n) {\n if (Array.isArray(data) || isPrimitive(data)) {\n normalizationType = children;\n children = data;\n data = undefined;\n }\n if (isTrue(alwaysNormalize)) {\n normalizationType = ALWAYS_NORMALIZE;\n }\n return _createElement(context, tag, data, children, normalizationType)\n}\n\nfunction _createElement (\n context,\n tag,\n data,\n children,\n normalizationType\n) {\n if (isDef(data) && isDef((data).__ob__)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Avoid using observed data object as vnode data: \" + (JSON.stringify(data)) + \"\\n\" +\n 'Always create fresh vnode data objects in each render!',\n context\n );\n return createEmptyVNode()\n }\n // object syntax in v-bind\n if (isDef(data) && isDef(data.is)) {\n tag = data.is;\n }\n if (!tag) {\n // in case of component :is set to falsy value\n return createEmptyVNode()\n }\n // warn against non-primitive key\n if (process.env.NODE_ENV !== 'production' &&\n isDef(data) && isDef(data.key) && !isPrimitive(data.key)\n ) {\n {\n warn(\n 'Avoid using non-primitive value as key, ' +\n 'use string/number value instead.',\n context\n );\n }\n }\n // support single function children as default scoped slot\n if (Array.isArray(children) &&\n typeof children[0] === 'function'\n ) {\n data = data || {};\n data.scopedSlots = { default: children[0] };\n children.length = 0;\n }\n if (normalizationType === ALWAYS_NORMALIZE) {\n children = normalizeChildren(children);\n } else if (normalizationType === SIMPLE_NORMALIZE) {\n children = simpleNormalizeChildren(children);\n }\n var vnode, ns;\n if (typeof tag === 'string') {\n var Ctor;\n ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag);\n if (config.isReservedTag(tag)) {\n // platform built-in elements\n vnode = new VNode(\n config.parsePlatformTagName(tag), data, children,\n undefined, undefined, context\n );\n } else if ((!data || !data.pre) && isDef(Ctor = resolveAsset(context.$options, 'components', tag))) {\n // component\n vnode = createComponent(Ctor, data, context, children, tag);\n } else {\n // unknown or unlisted namespaced elements\n // check at runtime because it may get assigned a namespace when its\n // parent normalizes children\n vnode = new VNode(\n tag, data, children,\n undefined, undefined, context\n );\n }\n } else {\n // direct component options / constructor\n vnode = createComponent(tag, data, context, children);\n }\n if (Array.isArray(vnode)) {\n return vnode\n } else if (isDef(vnode)) {\n if (isDef(ns)) { applyNS(vnode, ns); }\n if (isDef(data)) { registerDeepBindings(data); }\n return vnode\n } else {\n return createEmptyVNode()\n }\n}\n\nfunction applyNS (vnode, ns, force) {\n vnode.ns = ns;\n if (vnode.tag === 'foreignObject') {\n // use default namespace inside foreignObject\n ns = undefined;\n force = true;\n }\n if (isDef(vnode.children)) {\n for (var i = 0, l = vnode.children.length; i < l; i++) {\n var child = vnode.children[i];\n if (isDef(child.tag) && (\n isUndef(child.ns) || (isTrue(force) && child.tag !== 'svg'))) {\n applyNS(child, ns, force);\n }\n }\n }\n}\n\n// ref #5318\n// necessary to ensure parent re-render when deep bindings like :style and\n// :class are used on slot nodes\nfunction registerDeepBindings (data) {\n if (isObject(data.style)) {\n traverse(data.style);\n }\n if (isObject(data.class)) {\n traverse(data.class);\n }\n}\n\n/* */\n\nfunction initRender (vm) {\n vm._vnode = null; // the root of the child tree\n vm._staticTrees = null; // v-once cached trees\n var options = vm.$options;\n var parentVnode = vm.$vnode = options._parentVnode; // the placeholder node in parent tree\n var renderContext = parentVnode && parentVnode.context;\n vm.$slots = resolveSlots(options._renderChildren, renderContext);\n vm.$scopedSlots = emptyObject;\n // bind the createElement fn to this instance\n // so that we get proper render context inside it.\n // args order: tag, data, children, normalizationType, alwaysNormalize\n // internal version is used by render functions compiled from templates\n vm._c = function (a, b, c, d) { return createElement(vm, a, b, c, d, false); };\n // normalization is always applied for the public version, used in\n // user-written render functions.\n vm.$createElement = function (a, b, c, d) { return createElement(vm, a, b, c, d, true); };\n\n // $attrs & $listeners are exposed for easier HOC creation.\n // they need to be reactive so that HOCs using them are always updated\n var parentData = parentVnode && parentVnode.data;\n\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, function () {\n !isUpdatingChildComponent && warn(\"$attrs is readonly.\", vm);\n }, true);\n defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, function () {\n !isUpdatingChildComponent && warn(\"$listeners is readonly.\", vm);\n }, true);\n } else {\n defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, null, true);\n defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, null, true);\n }\n}\n\nfunction renderMixin (Vue) {\n // install runtime convenience helpers\n installRenderHelpers(Vue.prototype);\n\n Vue.prototype.$nextTick = function (fn) {\n return nextTick(fn, this)\n };\n\n Vue.prototype._render = function () {\n var vm = this;\n var ref = vm.$options;\n var render = ref.render;\n var _parentVnode = ref._parentVnode;\n\n if (_parentVnode) {\n vm.$scopedSlots = _parentVnode.data.scopedSlots || emptyObject;\n }\n\n // set parent vnode. this allows render functions to have access\n // to the data on the placeholder node.\n vm.$vnode = _parentVnode;\n // render self\n var vnode;\n try {\n vnode = render.call(vm._renderProxy, vm.$createElement);\n } catch (e) {\n handleError(e, vm, \"render\");\n // return error render result,\n // or previous vnode to prevent render error causing blank component\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production' && vm.$options.renderError) {\n try {\n vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e);\n } catch (e) {\n handleError(e, vm, \"renderError\");\n vnode = vm._vnode;\n }\n } else {\n vnode = vm._vnode;\n }\n }\n // return empty vnode in case the render function errored out\n if (!(vnode instanceof VNode)) {\n if (process.env.NODE_ENV !== 'production' && Array.isArray(vnode)) {\n warn(\n 'Multiple root nodes returned from render function. Render function ' +\n 'should return a single root node.',\n vm\n );\n }\n vnode = createEmptyVNode();\n }\n // set parent\n vnode.parent = _parentVnode;\n return vnode\n };\n}\n\n/* */\n\nvar uid$3 = 0;\n\nfunction initMixin (Vue) {\n Vue.prototype._init = function (options) {\n var vm = this;\n // a uid\n vm._uid = uid$3++;\n\n var startTag, endTag;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n startTag = \"vue-perf-start:\" + (vm._uid);\n endTag = \"vue-perf-end:\" + (vm._uid);\n mark(startTag);\n }\n\n // a flag to avoid this being observed\n vm._isVue = true;\n // merge options\n if (options && options._isComponent) {\n // optimize internal component instantiation\n // since dynamic options merging is pretty slow, and none of the\n // internal component options needs special treatment.\n initInternalComponent(vm, options);\n } else {\n vm.$options = mergeOptions(\n resolveConstructorOptions(vm.constructor),\n options || {},\n vm\n );\n }\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n initProxy(vm);\n } else {\n vm._renderProxy = vm;\n }\n // expose real self\n vm._self = vm;\n initLifecycle(vm);\n initEvents(vm);\n initRender(vm);\n callHook(vm, 'beforeCreate');\n initInjections(vm); // resolve injections before data/props\n initState(vm);\n initProvide(vm); // resolve provide after data/props\n callHook(vm, 'created');\n\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n vm._name = formatComponentName(vm, false);\n mark(endTag);\n measure((\"vue \" + (vm._name) + \" init\"), startTag, endTag);\n }\n\n if (vm.$options.el) {\n vm.$mount(vm.$options.el);\n }\n };\n}\n\nfunction initInternalComponent (vm, options) {\n var opts = vm.$options = Object.create(vm.constructor.options);\n // doing this because it's faster than dynamic enumeration.\n var parentVnode = options._parentVnode;\n opts.parent = options.parent;\n opts._parentVnode = parentVnode;\n\n var vnodeComponentOptions = parentVnode.componentOptions;\n opts.propsData = vnodeComponentOptions.propsData;\n opts._parentListeners = vnodeComponentOptions.listeners;\n opts._renderChildren = vnodeComponentOptions.children;\n opts._componentTag = vnodeComponentOptions.tag;\n\n if (options.render) {\n opts.render = options.render;\n opts.staticRenderFns = options.staticRenderFns;\n }\n}\n\nfunction resolveConstructorOptions (Ctor) {\n var options = Ctor.options;\n if (Ctor.super) {\n var superOptions = resolveConstructorOptions(Ctor.super);\n var cachedSuperOptions = Ctor.superOptions;\n if (superOptions !== cachedSuperOptions) {\n // super option changed,\n // need to resolve new options.\n Ctor.superOptions = superOptions;\n // check if there are any late-modified/attached options (#4976)\n var modifiedOptions = resolveModifiedOptions(Ctor);\n // update base extend options\n if (modifiedOptions) {\n extend(Ctor.extendOptions, modifiedOptions);\n }\n options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);\n if (options.name) {\n options.components[options.name] = Ctor;\n }\n }\n }\n return options\n}\n\nfunction resolveModifiedOptions (Ctor) {\n var modified;\n var latest = Ctor.options;\n var sealed = Ctor.sealedOptions;\n for (var key in latest) {\n if (latest[key] !== sealed[key]) {\n if (!modified) { modified = {}; }\n modified[key] = latest[key];\n }\n }\n return modified\n}\n\nfunction Vue (options) {\n if (process.env.NODE_ENV !== 'production' &&\n !(this instanceof Vue)\n ) {\n warn('Vue is a constructor and should be called with the `new` keyword');\n }\n this._init(options);\n}\n\ninitMixin(Vue);\nstateMixin(Vue);\neventsMixin(Vue);\nlifecycleMixin(Vue);\nrenderMixin(Vue);\n\n/* */\n\nfunction initUse (Vue) {\n Vue.use = function (plugin) {\n var installedPlugins = (this._installedPlugins || (this._installedPlugins = []));\n if (installedPlugins.indexOf(plugin) > -1) {\n return this\n }\n\n // additional parameters\n var args = toArray(arguments, 1);\n args.unshift(this);\n if (typeof plugin.install === 'function') {\n plugin.install.apply(plugin, args);\n } else if (typeof plugin === 'function') {\n plugin.apply(null, args);\n }\n installedPlugins.push(plugin);\n return this\n };\n}\n\n/* */\n\nfunction initMixin$1 (Vue) {\n Vue.mixin = function (mixin) {\n this.options = mergeOptions(this.options, mixin);\n return this\n };\n}\n\n/* */\n\nfunction initExtend (Vue) {\n /**\n * Each instance constructor, including Vue, has a unique\n * cid. This enables us to create wrapped \"child\n * constructors\" for prototypal inheritance and cache them.\n */\n Vue.cid = 0;\n var cid = 1;\n\n /**\n * Class inheritance\n */\n Vue.extend = function (extendOptions) {\n extendOptions = extendOptions || {};\n var Super = this;\n var SuperId = Super.cid;\n var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {});\n if (cachedCtors[SuperId]) {\n return cachedCtors[SuperId]\n }\n\n var name = extendOptions.name || Super.options.name;\n if (process.env.NODE_ENV !== 'production' && name) {\n validateComponentName(name);\n }\n\n var Sub = function VueComponent (options) {\n this._init(options);\n };\n Sub.prototype = Object.create(Super.prototype);\n Sub.prototype.constructor = Sub;\n Sub.cid = cid++;\n Sub.options = mergeOptions(\n Super.options,\n extendOptions\n );\n Sub['super'] = Super;\n\n // For props and computed properties, we define the proxy getters on\n // the Vue instances at extension time, on the extended prototype. This\n // avoids Object.defineProperty calls for each instance created.\n if (Sub.options.props) {\n initProps$1(Sub);\n }\n if (Sub.options.computed) {\n initComputed$1(Sub);\n }\n\n // allow further extension/mixin/plugin usage\n Sub.extend = Super.extend;\n Sub.mixin = Super.mixin;\n Sub.use = Super.use;\n\n // create asset registers, so extended classes\n // can have their private assets too.\n ASSET_TYPES.forEach(function (type) {\n Sub[type] = Super[type];\n });\n // enable recursive self-lookup\n if (name) {\n Sub.options.components[name] = Sub;\n }\n\n // keep a reference to the super options at extension time.\n // later at instantiation we can check if Super's options have\n // been updated.\n Sub.superOptions = Super.options;\n Sub.extendOptions = extendOptions;\n Sub.sealedOptions = extend({}, Sub.options);\n\n // cache constructor\n cachedCtors[SuperId] = Sub;\n return Sub\n };\n}\n\nfunction initProps$1 (Comp) {\n var props = Comp.options.props;\n for (var key in props) {\n proxy(Comp.prototype, \"_props\", key);\n }\n}\n\nfunction initComputed$1 (Comp) {\n var computed = Comp.options.computed;\n for (var key in computed) {\n defineComputed(Comp.prototype, key, computed[key]);\n }\n}\n\n/* */\n\nfunction initAssetRegisters (Vue) {\n /**\n * Create asset registration methods.\n */\n ASSET_TYPES.forEach(function (type) {\n Vue[type] = function (\n id,\n definition\n ) {\n if (!definition) {\n return this.options[type + 's'][id]\n } else {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && type === 'component') {\n validateComponentName(id);\n }\n if (type === 'component' && isPlainObject(definition)) {\n definition.name = definition.name || id;\n definition = this.options._base.extend(definition);\n }\n if (type === 'directive' && typeof definition === 'function') {\n definition = { bind: definition, update: definition };\n }\n this.options[type + 's'][id] = definition;\n return definition\n }\n };\n });\n}\n\n/* */\n\n\n\nfunction getComponentName (opts) {\n return opts && (opts.Ctor.options.name || opts.tag)\n}\n\nfunction matches (pattern, name) {\n if (Array.isArray(pattern)) {\n return pattern.indexOf(name) > -1\n } else if (typeof pattern === 'string') {\n return pattern.split(',').indexOf(name) > -1\n } else if (isRegExp(pattern)) {\n return pattern.test(name)\n }\n /* istanbul ignore next */\n return false\n}\n\nfunction pruneCache (keepAliveInstance, filter) {\n var cache = keepAliveInstance.cache;\n var keys = keepAliveInstance.keys;\n var _vnode = keepAliveInstance._vnode;\n for (var key in cache) {\n var cachedNode = cache[key];\n if (cachedNode) {\n var name = getComponentName(cachedNode.componentOptions);\n if (name && !filter(name)) {\n pruneCacheEntry(cache, key, keys, _vnode);\n }\n }\n }\n}\n\nfunction pruneCacheEntry (\n cache,\n key,\n keys,\n current\n) {\n var cached$$1 = cache[key];\n if (cached$$1 && (!current || cached$$1.tag !== current.tag)) {\n cached$$1.componentInstance.$destroy();\n }\n cache[key] = null;\n remove(keys, key);\n}\n\nvar patternTypes = [String, RegExp, Array];\n\nvar KeepAlive = {\n name: 'keep-alive',\n abstract: true,\n\n props: {\n include: patternTypes,\n exclude: patternTypes,\n max: [String, Number]\n },\n\n created: function created () {\n this.cache = Object.create(null);\n this.keys = [];\n },\n\n destroyed: function destroyed () {\n for (var key in this.cache) {\n pruneCacheEntry(this.cache, key, this.keys);\n }\n },\n\n mounted: function mounted () {\n var this$1 = this;\n\n this.$watch('include', function (val) {\n pruneCache(this$1, function (name) { return matches(val, name); });\n });\n this.$watch('exclude', function (val) {\n pruneCache(this$1, function (name) { return !matches(val, name); });\n });\n },\n\n render: function render () {\n var slot = this.$slots.default;\n var vnode = getFirstComponentChild(slot);\n var componentOptions = vnode && vnode.componentOptions;\n if (componentOptions) {\n // check pattern\n var name = getComponentName(componentOptions);\n var ref = this;\n var include = ref.include;\n var exclude = ref.exclude;\n if (\n // not included\n (include && (!name || !matches(include, name))) ||\n // excluded\n (exclude && name && matches(exclude, name))\n ) {\n return vnode\n }\n\n var ref$1 = this;\n var cache = ref$1.cache;\n var keys = ref$1.keys;\n var key = vnode.key == null\n // same constructor may get registered as different local components\n // so cid alone is not enough (#3269)\n ? componentOptions.Ctor.cid + (componentOptions.tag ? (\"::\" + (componentOptions.tag)) : '')\n : vnode.key;\n if (cache[key]) {\n vnode.componentInstance = cache[key].componentInstance;\n // make current key freshest\n remove(keys, key);\n keys.push(key);\n } else {\n cache[key] = vnode;\n keys.push(key);\n // prune oldest entry\n if (this.max && keys.length > parseInt(this.max)) {\n pruneCacheEntry(cache, keys[0], keys, this._vnode);\n }\n }\n\n vnode.data.keepAlive = true;\n }\n return vnode || (slot && slot[0])\n }\n};\n\nvar builtInComponents = {\n KeepAlive: KeepAlive\n};\n\n/* */\n\nfunction initGlobalAPI (Vue) {\n // config\n var configDef = {};\n configDef.get = function () { return config; };\n if (process.env.NODE_ENV !== 'production') {\n configDef.set = function () {\n warn(\n 'Do not replace the Vue.config object, set individual fields instead.'\n );\n };\n }\n Object.defineProperty(Vue, 'config', configDef);\n\n // exposed util methods.\n // NOTE: these are not considered part of the public API - avoid relying on\n // them unless you are aware of the risk.\n Vue.util = {\n warn: warn,\n extend: extend,\n mergeOptions: mergeOptions,\n defineReactive: defineReactive$$1\n };\n\n Vue.set = set;\n Vue.delete = del;\n Vue.nextTick = nextTick;\n\n Vue.options = Object.create(null);\n ASSET_TYPES.forEach(function (type) {\n Vue.options[type + 's'] = Object.create(null);\n });\n\n // this is used to identify the \"base\" constructor to extend all plain-object\n // components with in Weex's multi-instance scenarios.\n Vue.options._base = Vue;\n\n extend(Vue.options.components, builtInComponents);\n\n initUse(Vue);\n initMixin$1(Vue);\n initExtend(Vue);\n initAssetRegisters(Vue);\n}\n\ninitGlobalAPI(Vue);\n\nObject.defineProperty(Vue.prototype, '$isServer', {\n get: isServerRendering\n});\n\nObject.defineProperty(Vue.prototype, '$ssrContext', {\n get: function get () {\n /* istanbul ignore next */\n return this.$vnode && this.$vnode.ssrContext\n }\n});\n\n// expose FunctionalRenderContext for ssr runtime helper installation\nObject.defineProperty(Vue, 'FunctionalRenderContext', {\n value: FunctionalRenderContext\n});\n\nVue.version = '2.5.22';\n\n/* */\n\n// these are reserved for web because they are directly compiled away\n// during template compilation\nvar isReservedAttr = makeMap('style,class');\n\n// attributes that should be using props for binding\nvar acceptValue = makeMap('input,textarea,option,select,progress');\nvar mustUseProp = function (tag, type, attr) {\n return (\n (attr === 'value' && acceptValue(tag)) && type !== 'button' ||\n (attr === 'selected' && tag === 'option') ||\n (attr === 'checked' && tag === 'input') ||\n (attr === 'muted' && tag === 'video')\n )\n};\n\nvar isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck');\n\nvar isBooleanAttr = makeMap(\n 'allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' +\n 'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' +\n 'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' +\n 'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' +\n 'required,reversed,scoped,seamless,selected,sortable,translate,' +\n 'truespeed,typemustmatch,visible'\n);\n\nvar xlinkNS = 'http://www.w3.org/1999/xlink';\n\nvar isXlink = function (name) {\n return name.charAt(5) === ':' && name.slice(0, 5) === 'xlink'\n};\n\nvar getXlinkProp = function (name) {\n return isXlink(name) ? name.slice(6, name.length) : ''\n};\n\nvar isFalsyAttrValue = function (val) {\n return val == null || val === false\n};\n\n/* */\n\nfunction genClassForVnode (vnode) {\n var data = vnode.data;\n var parentNode = vnode;\n var childNode = vnode;\n while (isDef(childNode.componentInstance)) {\n childNode = childNode.componentInstance._vnode;\n if (childNode && childNode.data) {\n data = mergeClassData(childNode.data, data);\n }\n }\n while (isDef(parentNode = parentNode.parent)) {\n if (parentNode && parentNode.data) {\n data = mergeClassData(data, parentNode.data);\n }\n }\n return renderClass(data.staticClass, data.class)\n}\n\nfunction mergeClassData (child, parent) {\n return {\n staticClass: concat(child.staticClass, parent.staticClass),\n class: isDef(child.class)\n ? [child.class, parent.class]\n : parent.class\n }\n}\n\nfunction renderClass (\n staticClass,\n dynamicClass\n) {\n if (isDef(staticClass) || isDef(dynamicClass)) {\n return concat(staticClass, stringifyClass(dynamicClass))\n }\n /* istanbul ignore next */\n return ''\n}\n\nfunction concat (a, b) {\n return a ? b ? (a + ' ' + b) : a : (b || '')\n}\n\nfunction stringifyClass (value) {\n if (Array.isArray(value)) {\n return stringifyArray(value)\n }\n if (isObject(value)) {\n return stringifyObject(value)\n }\n if (typeof value === 'string') {\n return value\n }\n /* istanbul ignore next */\n return ''\n}\n\nfunction stringifyArray (value) {\n var res = '';\n var stringified;\n for (var i = 0, l = value.length; i < l; i++) {\n if (isDef(stringified = stringifyClass(value[i])) && stringified !== '') {\n if (res) { res += ' '; }\n res += stringified;\n }\n }\n return res\n}\n\nfunction stringifyObject (value) {\n var res = '';\n for (var key in value) {\n if (value[key]) {\n if (res) { res += ' '; }\n res += key;\n }\n }\n return res\n}\n\n/* */\n\nvar namespaceMap = {\n svg: 'http://www.w3.org/2000/svg',\n math: 'http://www.w3.org/1998/Math/MathML'\n};\n\nvar isHTMLTag = makeMap(\n 'html,body,base,head,link,meta,style,title,' +\n 'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' +\n 'div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,' +\n 'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' +\n 's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' +\n 'embed,object,param,source,canvas,script,noscript,del,ins,' +\n 'caption,col,colgroup,table,thead,tbody,td,th,tr,' +\n 'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' +\n 'output,progress,select,textarea,' +\n 'details,dialog,menu,menuitem,summary,' +\n 'content,element,shadow,template,blockquote,iframe,tfoot'\n);\n\n// this map is intentionally selective, only covering SVG elements that may\n// contain child elements.\nvar isSVG = makeMap(\n 'svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' +\n 'foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' +\n 'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view',\n true\n);\n\nvar isReservedTag = function (tag) {\n return isHTMLTag(tag) || isSVG(tag)\n};\n\nfunction getTagNamespace (tag) {\n if (isSVG(tag)) {\n return 'svg'\n }\n // basic support for MathML\n // note it doesn't support other MathML elements being component roots\n if (tag === 'math') {\n return 'math'\n }\n}\n\nvar unknownElementCache = Object.create(null);\nfunction isUnknownElement (tag) {\n /* istanbul ignore if */\n if (!inBrowser) {\n return true\n }\n if (isReservedTag(tag)) {\n return false\n }\n tag = tag.toLowerCase();\n /* istanbul ignore if */\n if (unknownElementCache[tag] != null) {\n return unknownElementCache[tag]\n }\n var el = document.createElement(tag);\n if (tag.indexOf('-') > -1) {\n // http://stackoverflow.com/a/28210364/1070244\n return (unknownElementCache[tag] = (\n el.constructor === window.HTMLUnknownElement ||\n el.constructor === window.HTMLElement\n ))\n } else {\n return (unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString()))\n }\n}\n\nvar isTextInputType = makeMap('text,number,password,search,email,tel,url');\n\n/* */\n\n/**\n * Query an element selector if it's not an element already.\n */\nfunction query (el) {\n if (typeof el === 'string') {\n var selected = document.querySelector(el);\n if (!selected) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Cannot find element: ' + el\n );\n return document.createElement('div')\n }\n return selected\n } else {\n return el\n }\n}\n\n/* */\n\nfunction createElement$1 (tagName, vnode) {\n var elm = document.createElement(tagName);\n if (tagName !== 'select') {\n return elm\n }\n // false or null will remove the attribute but undefined will not\n if (vnode.data && vnode.data.attrs && vnode.data.attrs.multiple !== undefined) {\n elm.setAttribute('multiple', 'multiple');\n }\n return elm\n}\n\nfunction createElementNS (namespace, tagName) {\n return document.createElementNS(namespaceMap[namespace], tagName)\n}\n\nfunction createTextNode (text) {\n return document.createTextNode(text)\n}\n\nfunction createComment (text) {\n return document.createComment(text)\n}\n\nfunction insertBefore (parentNode, newNode, referenceNode) {\n parentNode.insertBefore(newNode, referenceNode);\n}\n\nfunction removeChild (node, child) {\n node.removeChild(child);\n}\n\nfunction appendChild (node, child) {\n node.appendChild(child);\n}\n\nfunction parentNode (node) {\n return node.parentNode\n}\n\nfunction nextSibling (node) {\n return node.nextSibling\n}\n\nfunction tagName (node) {\n return node.tagName\n}\n\nfunction setTextContent (node, text) {\n node.textContent = text;\n}\n\nfunction setStyleScope (node, scopeId) {\n node.setAttribute(scopeId, '');\n}\n\nvar nodeOps = /*#__PURE__*/Object.freeze({\n createElement: createElement$1,\n createElementNS: createElementNS,\n createTextNode: createTextNode,\n createComment: createComment,\n insertBefore: insertBefore,\n removeChild: removeChild,\n appendChild: appendChild,\n parentNode: parentNode,\n nextSibling: nextSibling,\n tagName: tagName,\n setTextContent: setTextContent,\n setStyleScope: setStyleScope\n});\n\n/* */\n\nvar ref = {\n create: function create (_, vnode) {\n registerRef(vnode);\n },\n update: function update (oldVnode, vnode) {\n if (oldVnode.data.ref !== vnode.data.ref) {\n registerRef(oldVnode, true);\n registerRef(vnode);\n }\n },\n destroy: function destroy (vnode) {\n registerRef(vnode, true);\n }\n};\n\nfunction registerRef (vnode, isRemoval) {\n var key = vnode.data.ref;\n if (!isDef(key)) { return }\n\n var vm = vnode.context;\n var ref = vnode.componentInstance || vnode.elm;\n var refs = vm.$refs;\n if (isRemoval) {\n if (Array.isArray(refs[key])) {\n remove(refs[key], ref);\n } else if (refs[key] === ref) {\n refs[key] = undefined;\n }\n } else {\n if (vnode.data.refInFor) {\n if (!Array.isArray(refs[key])) {\n refs[key] = [ref];\n } else if (refs[key].indexOf(ref) < 0) {\n // $flow-disable-line\n refs[key].push(ref);\n }\n } else {\n refs[key] = ref;\n }\n }\n}\n\n/**\n * Virtual DOM patching algorithm based on Snabbdom by\n * Simon Friis Vindum (@paldepind)\n * Licensed under the MIT License\n * https://github.com/paldepind/snabbdom/blob/master/LICENSE\n *\n * modified by Evan You (@yyx990803)\n *\n * Not type-checking this because this file is perf-critical and the cost\n * of making flow understand it is not worth it.\n */\n\nvar emptyNode = new VNode('', {}, []);\n\nvar hooks = ['create', 'activate', 'update', 'remove', 'destroy'];\n\nfunction sameVnode (a, b) {\n return (\n a.key === b.key && (\n (\n a.tag === b.tag &&\n a.isComment === b.isComment &&\n isDef(a.data) === isDef(b.data) &&\n sameInputType(a, b)\n ) || (\n isTrue(a.isAsyncPlaceholder) &&\n a.asyncFactory === b.asyncFactory &&\n isUndef(b.asyncFactory.error)\n )\n )\n )\n}\n\nfunction sameInputType (a, b) {\n if (a.tag !== 'input') { return true }\n var i;\n var typeA = isDef(i = a.data) && isDef(i = i.attrs) && i.type;\n var typeB = isDef(i = b.data) && isDef(i = i.attrs) && i.type;\n return typeA === typeB || isTextInputType(typeA) && isTextInputType(typeB)\n}\n\nfunction createKeyToOldIdx (children, beginIdx, endIdx) {\n var i, key;\n var map = {};\n for (i = beginIdx; i <= endIdx; ++i) {\n key = children[i].key;\n if (isDef(key)) { map[key] = i; }\n }\n return map\n}\n\nfunction createPatchFunction (backend) {\n var i, j;\n var cbs = {};\n\n var modules = backend.modules;\n var nodeOps = backend.nodeOps;\n\n for (i = 0; i < hooks.length; ++i) {\n cbs[hooks[i]] = [];\n for (j = 0; j < modules.length; ++j) {\n if (isDef(modules[j][hooks[i]])) {\n cbs[hooks[i]].push(modules[j][hooks[i]]);\n }\n }\n }\n\n function emptyNodeAt (elm) {\n return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm)\n }\n\n function createRmCb (childElm, listeners) {\n function remove$$1 () {\n if (--remove$$1.listeners === 0) {\n removeNode(childElm);\n }\n }\n remove$$1.listeners = listeners;\n return remove$$1\n }\n\n function removeNode (el) {\n var parent = nodeOps.parentNode(el);\n // element may have already been removed due to v-html / v-text\n if (isDef(parent)) {\n nodeOps.removeChild(parent, el);\n }\n }\n\n function isUnknownElement$$1 (vnode, inVPre) {\n return (\n !inVPre &&\n !vnode.ns &&\n !(\n config.ignoredElements.length &&\n config.ignoredElements.some(function (ignore) {\n return isRegExp(ignore)\n ? ignore.test(vnode.tag)\n : ignore === vnode.tag\n })\n ) &&\n config.isUnknownElement(vnode.tag)\n )\n }\n\n var creatingElmInVPre = 0;\n\n function createElm (\n vnode,\n insertedVnodeQueue,\n parentElm,\n refElm,\n nested,\n ownerArray,\n index\n ) {\n if (isDef(vnode.elm) && isDef(ownerArray)) {\n // This vnode was used in a previous render!\n // now it's used as a new node, overwriting its elm would cause\n // potential patch errors down the road when it's used as an insertion\n // reference node. Instead, we clone the node on-demand before creating\n // associated DOM element for it.\n vnode = ownerArray[index] = cloneVNode(vnode);\n }\n\n vnode.isRootInsert = !nested; // for transition enter check\n if (createComponent(vnode, insertedVnodeQueue, parentElm, refElm)) {\n return\n }\n\n var data = vnode.data;\n var children = vnode.children;\n var tag = vnode.tag;\n if (isDef(tag)) {\n if (process.env.NODE_ENV !== 'production') {\n if (data && data.pre) {\n creatingElmInVPre++;\n }\n if (isUnknownElement$$1(vnode, creatingElmInVPre)) {\n warn(\n 'Unknown custom element: <' + tag + '> - did you ' +\n 'register the component correctly? For recursive components, ' +\n 'make sure to provide the \"name\" option.',\n vnode.context\n );\n }\n }\n\n vnode.elm = vnode.ns\n ? nodeOps.createElementNS(vnode.ns, tag)\n : nodeOps.createElement(tag, vnode);\n setScope(vnode);\n\n /* istanbul ignore if */\n {\n createChildren(vnode, children, insertedVnodeQueue);\n if (isDef(data)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n }\n insert(parentElm, vnode.elm, refElm);\n }\n\n if (process.env.NODE_ENV !== 'production' && data && data.pre) {\n creatingElmInVPre--;\n }\n } else if (isTrue(vnode.isComment)) {\n vnode.elm = nodeOps.createComment(vnode.text);\n insert(parentElm, vnode.elm, refElm);\n } else {\n vnode.elm = nodeOps.createTextNode(vnode.text);\n insert(parentElm, vnode.elm, refElm);\n }\n }\n\n function createComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n var i = vnode.data;\n if (isDef(i)) {\n var isReactivated = isDef(vnode.componentInstance) && i.keepAlive;\n if (isDef(i = i.hook) && isDef(i = i.init)) {\n i(vnode, false /* hydrating */);\n }\n // after calling the init hook, if the vnode is a child component\n // it should've created a child instance and mounted it. the child\n // component also has set the placeholder vnode's elm.\n // in that case we can just return the element and be done.\n if (isDef(vnode.componentInstance)) {\n initComponent(vnode, insertedVnodeQueue);\n insert(parentElm, vnode.elm, refElm);\n if (isTrue(isReactivated)) {\n reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm);\n }\n return true\n }\n }\n }\n\n function initComponent (vnode, insertedVnodeQueue) {\n if (isDef(vnode.data.pendingInsert)) {\n insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert);\n vnode.data.pendingInsert = null;\n }\n vnode.elm = vnode.componentInstance.$el;\n if (isPatchable(vnode)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n setScope(vnode);\n } else {\n // empty component root.\n // skip all element-related modules except for ref (#3455)\n registerRef(vnode);\n // make sure to invoke the insert hook\n insertedVnodeQueue.push(vnode);\n }\n }\n\n function reactivateComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n var i;\n // hack for #4339: a reactivated component with inner transition\n // does not trigger because the inner node's created hooks are not called\n // again. It's not ideal to involve module-specific logic in here but\n // there doesn't seem to be a better way to do it.\n var innerNode = vnode;\n while (innerNode.componentInstance) {\n innerNode = innerNode.componentInstance._vnode;\n if (isDef(i = innerNode.data) && isDef(i = i.transition)) {\n for (i = 0; i < cbs.activate.length; ++i) {\n cbs.activate[i](emptyNode, innerNode);\n }\n insertedVnodeQueue.push(innerNode);\n break\n }\n }\n // unlike a newly created component,\n // a reactivated keep-alive component doesn't insert itself\n insert(parentElm, vnode.elm, refElm);\n }\n\n function insert (parent, elm, ref$$1) {\n if (isDef(parent)) {\n if (isDef(ref$$1)) {\n if (nodeOps.parentNode(ref$$1) === parent) {\n nodeOps.insertBefore(parent, elm, ref$$1);\n }\n } else {\n nodeOps.appendChild(parent, elm);\n }\n }\n }\n\n function createChildren (vnode, children, insertedVnodeQueue) {\n if (Array.isArray(children)) {\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(children);\n }\n for (var i = 0; i < children.length; ++i) {\n createElm(children[i], insertedVnodeQueue, vnode.elm, null, true, children, i);\n }\n } else if (isPrimitive(vnode.text)) {\n nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(String(vnode.text)));\n }\n }\n\n function isPatchable (vnode) {\n while (vnode.componentInstance) {\n vnode = vnode.componentInstance._vnode;\n }\n return isDef(vnode.tag)\n }\n\n function invokeCreateHooks (vnode, insertedVnodeQueue) {\n for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n cbs.create[i$1](emptyNode, vnode);\n }\n i = vnode.data.hook; // Reuse variable\n if (isDef(i)) {\n if (isDef(i.create)) { i.create(emptyNode, vnode); }\n if (isDef(i.insert)) { insertedVnodeQueue.push(vnode); }\n }\n }\n\n // set scope id attribute for scoped CSS.\n // this is implemented as a special case to avoid the overhead\n // of going through the normal attribute patching process.\n function setScope (vnode) {\n var i;\n if (isDef(i = vnode.fnScopeId)) {\n nodeOps.setStyleScope(vnode.elm, i);\n } else {\n var ancestor = vnode;\n while (ancestor) {\n if (isDef(i = ancestor.context) && isDef(i = i.$options._scopeId)) {\n nodeOps.setStyleScope(vnode.elm, i);\n }\n ancestor = ancestor.parent;\n }\n }\n // for slot content they should also get the scopeId from the host instance.\n if (isDef(i = activeInstance) &&\n i !== vnode.context &&\n i !== vnode.fnContext &&\n isDef(i = i.$options._scopeId)\n ) {\n nodeOps.setStyleScope(vnode.elm, i);\n }\n }\n\n function addVnodes (parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) {\n for (; startIdx <= endIdx; ++startIdx) {\n createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm, false, vnodes, startIdx);\n }\n }\n\n function invokeDestroyHook (vnode) {\n var i, j;\n var data = vnode.data;\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.destroy)) { i(vnode); }\n for (i = 0; i < cbs.destroy.length; ++i) { cbs.destroy[i](vnode); }\n }\n if (isDef(i = vnode.children)) {\n for (j = 0; j < vnode.children.length; ++j) {\n invokeDestroyHook(vnode.children[j]);\n }\n }\n }\n\n function removeVnodes (parentElm, vnodes, startIdx, endIdx) {\n for (; startIdx <= endIdx; ++startIdx) {\n var ch = vnodes[startIdx];\n if (isDef(ch)) {\n if (isDef(ch.tag)) {\n removeAndInvokeRemoveHook(ch);\n invokeDestroyHook(ch);\n } else { // Text node\n removeNode(ch.elm);\n }\n }\n }\n }\n\n function removeAndInvokeRemoveHook (vnode, rm) {\n if (isDef(rm) || isDef(vnode.data)) {\n var i;\n var listeners = cbs.remove.length + 1;\n if (isDef(rm)) {\n // we have a recursively passed down rm callback\n // increase the listeners count\n rm.listeners += listeners;\n } else {\n // directly removing\n rm = createRmCb(vnode.elm, listeners);\n }\n // recursively invoke hooks on child component root node\n if (isDef(i = vnode.componentInstance) && isDef(i = i._vnode) && isDef(i.data)) {\n removeAndInvokeRemoveHook(i, rm);\n }\n for (i = 0; i < cbs.remove.length; ++i) {\n cbs.remove[i](vnode, rm);\n }\n if (isDef(i = vnode.data.hook) && isDef(i = i.remove)) {\n i(vnode, rm);\n } else {\n rm();\n }\n } else {\n removeNode(vnode.elm);\n }\n }\n\n function updateChildren (parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) {\n var oldStartIdx = 0;\n var newStartIdx = 0;\n var oldEndIdx = oldCh.length - 1;\n var oldStartVnode = oldCh[0];\n var oldEndVnode = oldCh[oldEndIdx];\n var newEndIdx = newCh.length - 1;\n var newStartVnode = newCh[0];\n var newEndVnode = newCh[newEndIdx];\n var oldKeyToIdx, idxInOld, vnodeToMove, refElm;\n\n // removeOnly is a special flag used only by <transition-group>\n // to ensure removed elements stay in correct relative positions\n // during leaving transitions\n var canMove = !removeOnly;\n\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(newCh);\n }\n\n while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n if (isUndef(oldStartVnode)) {\n oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left\n } else if (isUndef(oldEndVnode)) {\n oldEndVnode = oldCh[--oldEndIdx];\n } else if (sameVnode(oldStartVnode, newStartVnode)) {\n patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n oldStartVnode = oldCh[++oldStartIdx];\n newStartVnode = newCh[++newStartIdx];\n } else if (sameVnode(oldEndVnode, newEndVnode)) {\n patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);\n oldEndVnode = oldCh[--oldEndIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldStartVnode, newEndVnode)) { // Vnode moved right\n patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);\n canMove && nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm));\n oldStartVnode = oldCh[++oldStartIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldEndVnode, newStartVnode)) { // Vnode moved left\n patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n canMove && nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);\n oldEndVnode = oldCh[--oldEndIdx];\n newStartVnode = newCh[++newStartIdx];\n } else {\n if (isUndef(oldKeyToIdx)) { oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx); }\n idxInOld = isDef(newStartVnode.key)\n ? oldKeyToIdx[newStartVnode.key]\n : findIdxInOld(newStartVnode, oldCh, oldStartIdx, oldEndIdx);\n if (isUndef(idxInOld)) { // New element\n createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n } else {\n vnodeToMove = oldCh[idxInOld];\n if (sameVnode(vnodeToMove, newStartVnode)) {\n patchVnode(vnodeToMove, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n oldCh[idxInOld] = undefined;\n canMove && nodeOps.insertBefore(parentElm, vnodeToMove.elm, oldStartVnode.elm);\n } else {\n // same key but different element. treat as new element\n createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n }\n }\n newStartVnode = newCh[++newStartIdx];\n }\n }\n if (oldStartIdx > oldEndIdx) {\n refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm;\n addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);\n } else if (newStartIdx > newEndIdx) {\n removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx);\n }\n }\n\n function checkDuplicateKeys (children) {\n var seenKeys = {};\n for (var i = 0; i < children.length; i++) {\n var vnode = children[i];\n var key = vnode.key;\n if (isDef(key)) {\n if (seenKeys[key]) {\n warn(\n (\"Duplicate keys detected: '\" + key + \"'. This may cause an update error.\"),\n vnode.context\n );\n } else {\n seenKeys[key] = true;\n }\n }\n }\n }\n\n function findIdxInOld (node, oldCh, start, end) {\n for (var i = start; i < end; i++) {\n var c = oldCh[i];\n if (isDef(c) && sameVnode(node, c)) { return i }\n }\n }\n\n function patchVnode (\n oldVnode,\n vnode,\n insertedVnodeQueue,\n ownerArray,\n index,\n removeOnly\n ) {\n if (oldVnode === vnode) {\n return\n }\n\n if (isDef(vnode.elm) && isDef(ownerArray)) {\n // clone reused vnode\n vnode = ownerArray[index] = cloneVNode(vnode);\n }\n\n var elm = vnode.elm = oldVnode.elm;\n\n if (isTrue(oldVnode.isAsyncPlaceholder)) {\n if (isDef(vnode.asyncFactory.resolved)) {\n hydrate(oldVnode.elm, vnode, insertedVnodeQueue);\n } else {\n vnode.isAsyncPlaceholder = true;\n }\n return\n }\n\n // reuse element for static trees.\n // note we only do this if the vnode is cloned -\n // if the new node is not cloned it means the render functions have been\n // reset by the hot-reload-api and we need to do a proper re-render.\n if (isTrue(vnode.isStatic) &&\n isTrue(oldVnode.isStatic) &&\n vnode.key === oldVnode.key &&\n (isTrue(vnode.isCloned) || isTrue(vnode.isOnce))\n ) {\n vnode.componentInstance = oldVnode.componentInstance;\n return\n }\n\n var i;\n var data = vnode.data;\n if (isDef(data) && isDef(i = data.hook) && isDef(i = i.prepatch)) {\n i(oldVnode, vnode);\n }\n\n var oldCh = oldVnode.children;\n var ch = vnode.children;\n if (isDef(data) && isPatchable(vnode)) {\n for (i = 0; i < cbs.update.length; ++i) { cbs.update[i](oldVnode, vnode); }\n if (isDef(i = data.hook) && isDef(i = i.update)) { i(oldVnode, vnode); }\n }\n if (isUndef(vnode.text)) {\n if (isDef(oldCh) && isDef(ch)) {\n if (oldCh !== ch) { updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly); }\n } else if (isDef(ch)) {\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(ch);\n }\n if (isDef(oldVnode.text)) { nodeOps.setTextContent(elm, ''); }\n addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);\n } else if (isDef(oldCh)) {\n removeVnodes(elm, oldCh, 0, oldCh.length - 1);\n } else if (isDef(oldVnode.text)) {\n nodeOps.setTextContent(elm, '');\n }\n } else if (oldVnode.text !== vnode.text) {\n nodeOps.setTextContent(elm, vnode.text);\n }\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.postpatch)) { i(oldVnode, vnode); }\n }\n }\n\n function invokeInsertHook (vnode, queue, initial) {\n // delay insert hooks for component root nodes, invoke them after the\n // element is really inserted\n if (isTrue(initial) && isDef(vnode.parent)) {\n vnode.parent.data.pendingInsert = queue;\n } else {\n for (var i = 0; i < queue.length; ++i) {\n queue[i].data.hook.insert(queue[i]);\n }\n }\n }\n\n var hydrationBailed = false;\n // list of modules that can skip create hook during hydration because they\n // are already rendered on the client or has no need for initialization\n // Note: style is excluded because it relies on initial clone for future\n // deep updates (#7063).\n var isRenderedModule = makeMap('attrs,class,staticClass,staticStyle,key');\n\n // Note: this is a browser-only function so we can assume elms are DOM nodes.\n function hydrate (elm, vnode, insertedVnodeQueue, inVPre) {\n var i;\n var tag = vnode.tag;\n var data = vnode.data;\n var children = vnode.children;\n inVPre = inVPre || (data && data.pre);\n vnode.elm = elm;\n\n if (isTrue(vnode.isComment) && isDef(vnode.asyncFactory)) {\n vnode.isAsyncPlaceholder = true;\n return true\n }\n // assert node match\n if (process.env.NODE_ENV !== 'production') {\n if (!assertNodeMatch(elm, vnode, inVPre)) {\n return false\n }\n }\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.init)) { i(vnode, true /* hydrating */); }\n if (isDef(i = vnode.componentInstance)) {\n // child component. it should have hydrated its own tree.\n initComponent(vnode, insertedVnodeQueue);\n return true\n }\n }\n if (isDef(tag)) {\n if (isDef(children)) {\n // empty element, allow client to pick up and populate children\n if (!elm.hasChildNodes()) {\n createChildren(vnode, children, insertedVnodeQueue);\n } else {\n // v-html and domProps: innerHTML\n if (isDef(i = data) && isDef(i = i.domProps) && isDef(i = i.innerHTML)) {\n if (i !== elm.innerHTML) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' &&\n typeof console !== 'undefined' &&\n !hydrationBailed\n ) {\n hydrationBailed = true;\n console.warn('Parent: ', elm);\n console.warn('server innerHTML: ', i);\n console.warn('client innerHTML: ', elm.innerHTML);\n }\n return false\n }\n } else {\n // iterate and compare children lists\n var childrenMatch = true;\n var childNode = elm.firstChild;\n for (var i$1 = 0; i$1 < children.length; i$1++) {\n if (!childNode || !hydrate(childNode, children[i$1], insertedVnodeQueue, inVPre)) {\n childrenMatch = false;\n break\n }\n childNode = childNode.nextSibling;\n }\n // if childNode is not null, it means the actual childNodes list is\n // longer than the virtual children list.\n if (!childrenMatch || childNode) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' &&\n typeof console !== 'undefined' &&\n !hydrationBailed\n ) {\n hydrationBailed = true;\n console.warn('Parent: ', elm);\n console.warn('Mismatching childNodes vs. VNodes: ', elm.childNodes, children);\n }\n return false\n }\n }\n }\n }\n if (isDef(data)) {\n var fullInvoke = false;\n for (var key in data) {\n if (!isRenderedModule(key)) {\n fullInvoke = true;\n invokeCreateHooks(vnode, insertedVnodeQueue);\n break\n }\n }\n if (!fullInvoke && data['class']) {\n // ensure collecting deps for deep class bindings for future updates\n traverse(data['class']);\n }\n }\n } else if (elm.data !== vnode.text) {\n elm.data = vnode.text;\n }\n return true\n }\n\n function assertNodeMatch (node, vnode, inVPre) {\n if (isDef(vnode.tag)) {\n return vnode.tag.indexOf('vue-component') === 0 || (\n !isUnknownElement$$1(vnode, inVPre) &&\n vnode.tag.toLowerCase() === (node.tagName && node.tagName.toLowerCase())\n )\n } else {\n return node.nodeType === (vnode.isComment ? 8 : 3)\n }\n }\n\n return function patch (oldVnode, vnode, hydrating, removeOnly) {\n if (isUndef(vnode)) {\n if (isDef(oldVnode)) { invokeDestroyHook(oldVnode); }\n return\n }\n\n var isInitialPatch = false;\n var insertedVnodeQueue = [];\n\n if (isUndef(oldVnode)) {\n // empty mount (likely as component), create new root element\n isInitialPatch = true;\n createElm(vnode, insertedVnodeQueue);\n } else {\n var isRealElement = isDef(oldVnode.nodeType);\n if (!isRealElement && sameVnode(oldVnode, vnode)) {\n // patch existing root node\n patchVnode(oldVnode, vnode, insertedVnodeQueue, null, null, removeOnly);\n } else {\n if (isRealElement) {\n // mounting to a real element\n // check if this is server-rendered content and if we can perform\n // a successful hydration.\n if (oldVnode.nodeType === 1 && oldVnode.hasAttribute(SSR_ATTR)) {\n oldVnode.removeAttribute(SSR_ATTR);\n hydrating = true;\n }\n if (isTrue(hydrating)) {\n if (hydrate(oldVnode, vnode, insertedVnodeQueue)) {\n invokeInsertHook(vnode, insertedVnodeQueue, true);\n return oldVnode\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n 'The client-side rendered virtual DOM tree is not matching ' +\n 'server-rendered content. This is likely caused by incorrect ' +\n 'HTML markup, for example nesting block-level elements inside ' +\n '<p>, or missing <tbody>. Bailing hydration and performing ' +\n 'full client-side render.'\n );\n }\n }\n // either not server-rendered, or hydration failed.\n // create an empty node and replace it\n oldVnode = emptyNodeAt(oldVnode);\n }\n\n // replacing existing element\n var oldElm = oldVnode.elm;\n var parentElm = nodeOps.parentNode(oldElm);\n\n // create new node\n createElm(\n vnode,\n insertedVnodeQueue,\n // extremely rare edge case: do not insert if old element is in a\n // leaving transition. Only happens when combining transition +\n // keep-alive + HOCs. (#4590)\n oldElm._leaveCb ? null : parentElm,\n nodeOps.nextSibling(oldElm)\n );\n\n // update parent placeholder node element, recursively\n if (isDef(vnode.parent)) {\n var ancestor = vnode.parent;\n var patchable = isPatchable(vnode);\n while (ancestor) {\n for (var i = 0; i < cbs.destroy.length; ++i) {\n cbs.destroy[i](ancestor);\n }\n ancestor.elm = vnode.elm;\n if (patchable) {\n for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n cbs.create[i$1](emptyNode, ancestor);\n }\n // #6513\n // invoke insert hooks that may have been merged by create hooks.\n // e.g. for directives that uses the \"inserted\" hook.\n var insert = ancestor.data.hook.insert;\n if (insert.merged) {\n // start at index 1 to avoid re-invoking component mounted hook\n for (var i$2 = 1; i$2 < insert.fns.length; i$2++) {\n insert.fns[i$2]();\n }\n }\n } else {\n registerRef(ancestor);\n }\n ancestor = ancestor.parent;\n }\n }\n\n // destroy old node\n if (isDef(parentElm)) {\n removeVnodes(parentElm, [oldVnode], 0, 0);\n } else if (isDef(oldVnode.tag)) {\n invokeDestroyHook(oldVnode);\n }\n }\n }\n\n invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch);\n return vnode.elm\n }\n}\n\n/* */\n\nvar directives = {\n create: updateDirectives,\n update: updateDirectives,\n destroy: function unbindDirectives (vnode) {\n updateDirectives(vnode, emptyNode);\n }\n};\n\nfunction updateDirectives (oldVnode, vnode) {\n if (oldVnode.data.directives || vnode.data.directives) {\n _update(oldVnode, vnode);\n }\n}\n\nfunction _update (oldVnode, vnode) {\n var isCreate = oldVnode === emptyNode;\n var isDestroy = vnode === emptyNode;\n var oldDirs = normalizeDirectives$1(oldVnode.data.directives, oldVnode.context);\n var newDirs = normalizeDirectives$1(vnode.data.directives, vnode.context);\n\n var dirsWithInsert = [];\n var dirsWithPostpatch = [];\n\n var key, oldDir, dir;\n for (key in newDirs) {\n oldDir = oldDirs[key];\n dir = newDirs[key];\n if (!oldDir) {\n // new directive, bind\n callHook$1(dir, 'bind', vnode, oldVnode);\n if (dir.def && dir.def.inserted) {\n dirsWithInsert.push(dir);\n }\n } else {\n // existing directive, update\n dir.oldValue = oldDir.value;\n callHook$1(dir, 'update', vnode, oldVnode);\n if (dir.def && dir.def.componentUpdated) {\n dirsWithPostpatch.push(dir);\n }\n }\n }\n\n if (dirsWithInsert.length) {\n var callInsert = function () {\n for (var i = 0; i < dirsWithInsert.length; i++) {\n callHook$1(dirsWithInsert[i], 'inserted', vnode, oldVnode);\n }\n };\n if (isCreate) {\n mergeVNodeHook(vnode, 'insert', callInsert);\n } else {\n callInsert();\n }\n }\n\n if (dirsWithPostpatch.length) {\n mergeVNodeHook(vnode, 'postpatch', function () {\n for (var i = 0; i < dirsWithPostpatch.length; i++) {\n callHook$1(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode);\n }\n });\n }\n\n if (!isCreate) {\n for (key in oldDirs) {\n if (!newDirs[key]) {\n // no longer present, unbind\n callHook$1(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy);\n }\n }\n }\n}\n\nvar emptyModifiers = Object.create(null);\n\nfunction normalizeDirectives$1 (\n dirs,\n vm\n) {\n var res = Object.create(null);\n if (!dirs) {\n // $flow-disable-line\n return res\n }\n var i, dir;\n for (i = 0; i < dirs.length; i++) {\n dir = dirs[i];\n if (!dir.modifiers) {\n // $flow-disable-line\n dir.modifiers = emptyModifiers;\n }\n res[getRawDirName(dir)] = dir;\n dir.def = resolveAsset(vm.$options, 'directives', dir.name, true);\n }\n // $flow-disable-line\n return res\n}\n\nfunction getRawDirName (dir) {\n return dir.rawName || ((dir.name) + \".\" + (Object.keys(dir.modifiers || {}).join('.')))\n}\n\nfunction callHook$1 (dir, hook, vnode, oldVnode, isDestroy) {\n var fn = dir.def && dir.def[hook];\n if (fn) {\n try {\n fn(vnode.elm, dir, vnode, oldVnode, isDestroy);\n } catch (e) {\n handleError(e, vnode.context, (\"directive \" + (dir.name) + \" \" + hook + \" hook\"));\n }\n }\n}\n\nvar baseModules = [\n ref,\n directives\n];\n\n/* */\n\nfunction updateAttrs (oldVnode, vnode) {\n var opts = vnode.componentOptions;\n if (isDef(opts) && opts.Ctor.options.inheritAttrs === false) {\n return\n }\n if (isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs)) {\n return\n }\n var key, cur, old;\n var elm = vnode.elm;\n var oldAttrs = oldVnode.data.attrs || {};\n var attrs = vnode.data.attrs || {};\n // clone observed objects, as the user probably wants to mutate it\n if (isDef(attrs.__ob__)) {\n attrs = vnode.data.attrs = extend({}, attrs);\n }\n\n for (key in attrs) {\n cur = attrs[key];\n old = oldAttrs[key];\n if (old !== cur) {\n setAttr(elm, key, cur);\n }\n }\n // #4391: in IE9, setting type can reset value for input[type=radio]\n // #6666: IE/Edge forces progress value down to 1 before setting a max\n /* istanbul ignore if */\n if ((isIE || isEdge) && attrs.value !== oldAttrs.value) {\n setAttr(elm, 'value', attrs.value);\n }\n for (key in oldAttrs) {\n if (isUndef(attrs[key])) {\n if (isXlink(key)) {\n elm.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else if (!isEnumeratedAttr(key)) {\n elm.removeAttribute(key);\n }\n }\n }\n}\n\nfunction setAttr (el, key, value) {\n if (el.tagName.indexOf('-') > -1) {\n baseSetAttr(el, key, value);\n } else if (isBooleanAttr(key)) {\n // set attribute for blank value\n // e.g. <option disabled>Select one</option>\n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n // technically allowfullscreen is a boolean attribute for <iframe>,\n // but Flash expects a value of \"true\" when used on <embed> tag\n value = key === 'allowfullscreen' && el.tagName === 'EMBED'\n ? 'true'\n : key;\n el.setAttribute(key, value);\n }\n } else if (isEnumeratedAttr(key)) {\n el.setAttribute(key, isFalsyAttrValue(value) || value === 'false' ? 'false' : 'true');\n } else if (isXlink(key)) {\n if (isFalsyAttrValue(value)) {\n el.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else {\n el.setAttributeNS(xlinkNS, key, value);\n }\n } else {\n baseSetAttr(el, key, value);\n }\n}\n\nfunction baseSetAttr (el, key, value) {\n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n // #7138: IE10 & 11 fires input event when setting placeholder on\n // <textarea>... block the first input event and remove the blocker\n // immediately.\n /* istanbul ignore if */\n if (\n isIE && !isIE9 &&\n (el.tagName === 'TEXTAREA' || el.tagName === 'INPUT') &&\n key === 'placeholder' && !el.__ieph\n ) {\n var blocker = function (e) {\n e.stopImmediatePropagation();\n el.removeEventListener('input', blocker);\n };\n el.addEventListener('input', blocker);\n // $flow-disable-line\n el.__ieph = true; /* IE placeholder patched */\n }\n el.setAttribute(key, value);\n }\n}\n\nvar attrs = {\n create: updateAttrs,\n update: updateAttrs\n};\n\n/* */\n\nfunction updateClass (oldVnode, vnode) {\n var el = vnode.elm;\n var data = vnode.data;\n var oldData = oldVnode.data;\n if (\n isUndef(data.staticClass) &&\n isUndef(data.class) && (\n isUndef(oldData) || (\n isUndef(oldData.staticClass) &&\n isUndef(oldData.class)\n )\n )\n ) {\n return\n }\n\n var cls = genClassForVnode(vnode);\n\n // handle transition classes\n var transitionClass = el._transitionClasses;\n if (isDef(transitionClass)) {\n cls = concat(cls, stringifyClass(transitionClass));\n }\n\n // set the class\n if (cls !== el._prevClass) {\n el.setAttribute('class', cls);\n el._prevClass = cls;\n }\n}\n\nvar klass = {\n create: updateClass,\n update: updateClass\n};\n\n/* */\n\n/* */\n\n/* */\n\n/* */\n\n// in some cases, the event used has to be determined at runtime\n// so we used some reserved tokens during compile.\nvar RANGE_TOKEN = '__r';\nvar CHECKBOX_RADIO_TOKEN = '__c';\n\n/* */\n\n// normalize v-model event tokens that can only be determined at runtime.\n// it's important to place the event as the first in the array because\n// the whole point is ensuring the v-model callback gets called before\n// user-attached handlers.\nfunction normalizeEvents (on) {\n /* istanbul ignore if */\n if (isDef(on[RANGE_TOKEN])) {\n // IE input[type=range] only supports `change` event\n var event = isIE ? 'change' : 'input';\n on[event] = [].concat(on[RANGE_TOKEN], on[event] || []);\n delete on[RANGE_TOKEN];\n }\n // This was originally intended to fix #4521 but no longer necessary\n // after 2.5. Keeping it for backwards compat with generated code from < 2.4\n /* istanbul ignore if */\n if (isDef(on[CHECKBOX_RADIO_TOKEN])) {\n on.change = [].concat(on[CHECKBOX_RADIO_TOKEN], on.change || []);\n delete on[CHECKBOX_RADIO_TOKEN];\n }\n}\n\nvar target$1;\n\nfunction createOnceHandler$1 (event, handler, capture) {\n var _target = target$1; // save current target element in closure\n return function onceHandler () {\n var res = handler.apply(null, arguments);\n if (res !== null) {\n remove$2(event, onceHandler, capture, _target);\n }\n }\n}\n\nfunction add$1 (\n event,\n handler,\n capture,\n passive\n) {\n handler = withMacroTask(handler);\n target$1.addEventListener(\n event,\n handler,\n supportsPassive\n ? { capture: capture, passive: passive }\n : capture\n );\n}\n\nfunction remove$2 (\n event,\n handler,\n capture,\n _target\n) {\n (_target || target$1).removeEventListener(\n event,\n handler._withTask || handler,\n capture\n );\n}\n\nfunction updateDOMListeners (oldVnode, vnode) {\n if (isUndef(oldVnode.data.on) && isUndef(vnode.data.on)) {\n return\n }\n var on = vnode.data.on || {};\n var oldOn = oldVnode.data.on || {};\n target$1 = vnode.elm;\n normalizeEvents(on);\n updateListeners(on, oldOn, add$1, remove$2, createOnceHandler$1, vnode.context);\n target$1 = undefined;\n}\n\nvar events = {\n create: updateDOMListeners,\n update: updateDOMListeners\n};\n\n/* */\n\nfunction updateDOMProps (oldVnode, vnode) {\n if (isUndef(oldVnode.data.domProps) && isUndef(vnode.data.domProps)) {\n return\n }\n var key, cur;\n var elm = vnode.elm;\n var oldProps = oldVnode.data.domProps || {};\n var props = vnode.data.domProps || {};\n // clone observed objects, as the user probably wants to mutate it\n if (isDef(props.__ob__)) {\n props = vnode.data.domProps = extend({}, props);\n }\n\n for (key in oldProps) {\n if (isUndef(props[key])) {\n elm[key] = '';\n }\n }\n for (key in props) {\n cur = props[key];\n // ignore children if the node has textContent or innerHTML,\n // as these will throw away existing DOM nodes and cause removal errors\n // on subsequent patches (#3360)\n if (key === 'textContent' || key === 'innerHTML') {\n if (vnode.children) { vnode.children.length = 0; }\n if (cur === oldProps[key]) { continue }\n // #6601 work around Chrome version <= 55 bug where single textNode\n // replaced by innerHTML/textContent retains its parentNode property\n if (elm.childNodes.length === 1) {\n elm.removeChild(elm.childNodes[0]);\n }\n }\n\n if (key === 'value') {\n // store value as _value as well since\n // non-string values will be stringified\n elm._value = cur;\n // avoid resetting cursor position when value is the same\n var strCur = isUndef(cur) ? '' : String(cur);\n if (shouldUpdateValue(elm, strCur)) {\n elm.value = strCur;\n }\n } else {\n elm[key] = cur;\n }\n }\n}\n\n// check platforms/web/util/attrs.js acceptValue\n\n\nfunction shouldUpdateValue (elm, checkVal) {\n return (!elm.composing && (\n elm.tagName === 'OPTION' ||\n isNotInFocusAndDirty(elm, checkVal) ||\n isDirtyWithModifiers(elm, checkVal)\n ))\n}\n\nfunction isNotInFocusAndDirty (elm, checkVal) {\n // return true when textbox (.number and .trim) loses focus and its value is\n // not equal to the updated value\n var notInFocus = true;\n // #6157\n // work around IE bug when accessing document.activeElement in an iframe\n try { notInFocus = document.activeElement !== elm; } catch (e) {}\n return notInFocus && elm.value !== checkVal\n}\n\nfunction isDirtyWithModifiers (elm, newVal) {\n var value = elm.value;\n var modifiers = elm._vModifiers; // injected by v-model runtime\n if (isDef(modifiers)) {\n if (modifiers.lazy) {\n // inputs with lazy should only be updated when not in focus\n return false\n }\n if (modifiers.number) {\n return toNumber(value) !== toNumber(newVal)\n }\n if (modifiers.trim) {\n return value.trim() !== newVal.trim()\n }\n }\n return value !== newVal\n}\n\nvar domProps = {\n create: updateDOMProps,\n update: updateDOMProps\n};\n\n/* */\n\nvar parseStyleText = cached(function (cssText) {\n var res = {};\n var listDelimiter = /;(?![^(]*\\))/g;\n var propertyDelimiter = /:(.+)/;\n cssText.split(listDelimiter).forEach(function (item) {\n if (item) {\n var tmp = item.split(propertyDelimiter);\n tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return res\n});\n\n// merge static and dynamic style data on the same vnode\nfunction normalizeStyleData (data) {\n var style = normalizeStyleBinding(data.style);\n // static style is pre-processed into an object during compilation\n // and is always a fresh object, so it's safe to merge into it\n return data.staticStyle\n ? extend(data.staticStyle, style)\n : style\n}\n\n// normalize possible array / string values into Object\nfunction normalizeStyleBinding (bindingStyle) {\n if (Array.isArray(bindingStyle)) {\n return toObject(bindingStyle)\n }\n if (typeof bindingStyle === 'string') {\n return parseStyleText(bindingStyle)\n }\n return bindingStyle\n}\n\n/**\n * parent component style should be after child's\n * so that parent component's style could override it\n */\nfunction getStyle (vnode, checkChild) {\n var res = {};\n var styleData;\n\n if (checkChild) {\n var childNode = vnode;\n while (childNode.componentInstance) {\n childNode = childNode.componentInstance._vnode;\n if (\n childNode && childNode.data &&\n (styleData = normalizeStyleData(childNode.data))\n ) {\n extend(res, styleData);\n }\n }\n }\n\n if ((styleData = normalizeStyleData(vnode.data))) {\n extend(res, styleData);\n }\n\n var parentNode = vnode;\n while ((parentNode = parentNode.parent)) {\n if (parentNode.data && (styleData = normalizeStyleData(parentNode.data))) {\n extend(res, styleData);\n }\n }\n return res\n}\n\n/* */\n\nvar cssVarRE = /^--/;\nvar importantRE = /\\s*!important$/;\nvar setProp = function (el, name, val) {\n /* istanbul ignore if */\n if (cssVarRE.test(name)) {\n el.style.setProperty(name, val);\n } else if (importantRE.test(val)) {\n el.style.setProperty(name, val.replace(importantRE, ''), 'important');\n } else {\n var normalizedName = normalize(name);\n if (Array.isArray(val)) {\n // Support values array created by autoprefixer, e.g.\n // {display: [\"-webkit-box\", \"-ms-flexbox\", \"flex\"]}\n // Set them one by one, and the browser will only set those it can recognize\n for (var i = 0, len = val.length; i < len; i++) {\n el.style[normalizedName] = val[i];\n }\n } else {\n el.style[normalizedName] = val;\n }\n }\n};\n\nvar vendorNames = ['Webkit', 'Moz', 'ms'];\n\nvar emptyStyle;\nvar normalize = cached(function (prop) {\n emptyStyle = emptyStyle || document.createElement('div').style;\n prop = camelize(prop);\n if (prop !== 'filter' && (prop in emptyStyle)) {\n return prop\n }\n var capName = prop.charAt(0).toUpperCase() + prop.slice(1);\n for (var i = 0; i < vendorNames.length; i++) {\n var name = vendorNames[i] + capName;\n if (name in emptyStyle) {\n return name\n }\n }\n});\n\nfunction updateStyle (oldVnode, vnode) {\n var data = vnode.data;\n var oldData = oldVnode.data;\n\n if (isUndef(data.staticStyle) && isUndef(data.style) &&\n isUndef(oldData.staticStyle) && isUndef(oldData.style)\n ) {\n return\n }\n\n var cur, name;\n var el = vnode.elm;\n var oldStaticStyle = oldData.staticStyle;\n var oldStyleBinding = oldData.normalizedStyle || oldData.style || {};\n\n // if static style exists, stylebinding already merged into it when doing normalizeStyleData\n var oldStyle = oldStaticStyle || oldStyleBinding;\n\n var style = normalizeStyleBinding(vnode.data.style) || {};\n\n // store normalized style under a different key for next diff\n // make sure to clone it if it's reactive, since the user likely wants\n // to mutate it.\n vnode.data.normalizedStyle = isDef(style.__ob__)\n ? extend({}, style)\n : style;\n\n var newStyle = getStyle(vnode, true);\n\n for (name in oldStyle) {\n if (isUndef(newStyle[name])) {\n setProp(el, name, '');\n }\n }\n for (name in newStyle) {\n cur = newStyle[name];\n if (cur !== oldStyle[name]) {\n // ie9 setting to null has no effect, must use empty string\n setProp(el, name, cur == null ? '' : cur);\n }\n }\n}\n\nvar style = {\n create: updateStyle,\n update: updateStyle\n};\n\n/* */\n\nvar whitespaceRE = /\\s+/;\n\n/**\n * Add class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction addClass (el, cls) {\n /* istanbul ignore if */\n if (!cls || !(cls = cls.trim())) {\n return\n }\n\n /* istanbul ignore else */\n if (el.classList) {\n if (cls.indexOf(' ') > -1) {\n cls.split(whitespaceRE).forEach(function (c) { return el.classList.add(c); });\n } else {\n el.classList.add(cls);\n }\n } else {\n var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n if (cur.indexOf(' ' + cls + ' ') < 0) {\n el.setAttribute('class', (cur + cls).trim());\n }\n }\n}\n\n/**\n * Remove class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction removeClass (el, cls) {\n /* istanbul ignore if */\n if (!cls || !(cls = cls.trim())) {\n return\n }\n\n /* istanbul ignore else */\n if (el.classList) {\n if (cls.indexOf(' ') > -1) {\n cls.split(whitespaceRE).forEach(function (c) { return el.classList.remove(c); });\n } else {\n el.classList.remove(cls);\n }\n if (!el.classList.length) {\n el.removeAttribute('class');\n }\n } else {\n var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n var tar = ' ' + cls + ' ';\n while (cur.indexOf(tar) >= 0) {\n cur = cur.replace(tar, ' ');\n }\n cur = cur.trim();\n if (cur) {\n el.setAttribute('class', cur);\n } else {\n el.removeAttribute('class');\n }\n }\n}\n\n/* */\n\nfunction resolveTransition (def$$1) {\n if (!def$$1) {\n return\n }\n /* istanbul ignore else */\n if (typeof def$$1 === 'object') {\n var res = {};\n if (def$$1.css !== false) {\n extend(res, autoCssTransition(def$$1.name || 'v'));\n }\n extend(res, def$$1);\n return res\n } else if (typeof def$$1 === 'string') {\n return autoCssTransition(def$$1)\n }\n}\n\nvar autoCssTransition = cached(function (name) {\n return {\n enterClass: (name + \"-enter\"),\n enterToClass: (name + \"-enter-to\"),\n enterActiveClass: (name + \"-enter-active\"),\n leaveClass: (name + \"-leave\"),\n leaveToClass: (name + \"-leave-to\"),\n leaveActiveClass: (name + \"-leave-active\")\n }\n});\n\nvar hasTransition = inBrowser && !isIE9;\nvar TRANSITION = 'transition';\nvar ANIMATION = 'animation';\n\n// Transition property/event sniffing\nvar transitionProp = 'transition';\nvar transitionEndEvent = 'transitionend';\nvar animationProp = 'animation';\nvar animationEndEvent = 'animationend';\nif (hasTransition) {\n /* istanbul ignore if */\n if (window.ontransitionend === undefined &&\n window.onwebkittransitionend !== undefined\n ) {\n transitionProp = 'WebkitTransition';\n transitionEndEvent = 'webkitTransitionEnd';\n }\n if (window.onanimationend === undefined &&\n window.onwebkitanimationend !== undefined\n ) {\n animationProp = 'WebkitAnimation';\n animationEndEvent = 'webkitAnimationEnd';\n }\n}\n\n// binding to window is necessary to make hot reload work in IE in strict mode\nvar raf = inBrowser\n ? window.requestAnimationFrame\n ? window.requestAnimationFrame.bind(window)\n : setTimeout\n : /* istanbul ignore next */ function (fn) { return fn(); };\n\nfunction nextFrame (fn) {\n raf(function () {\n raf(fn);\n });\n}\n\nfunction addTransitionClass (el, cls) {\n var transitionClasses = el._transitionClasses || (el._transitionClasses = []);\n if (transitionClasses.indexOf(cls) < 0) {\n transitionClasses.push(cls);\n addClass(el, cls);\n }\n}\n\nfunction removeTransitionClass (el, cls) {\n if (el._transitionClasses) {\n remove(el._transitionClasses, cls);\n }\n removeClass(el, cls);\n}\n\nfunction whenTransitionEnds (\n el,\n expectedType,\n cb\n) {\n var ref = getTransitionInfo(el, expectedType);\n var type = ref.type;\n var timeout = ref.timeout;\n var propCount = ref.propCount;\n if (!type) { return cb() }\n var event = type === TRANSITION ? transitionEndEvent : animationEndEvent;\n var ended = 0;\n var end = function () {\n el.removeEventListener(event, onEnd);\n cb();\n };\n var onEnd = function (e) {\n if (e.target === el) {\n if (++ended >= propCount) {\n end();\n }\n }\n };\n setTimeout(function () {\n if (ended < propCount) {\n end();\n }\n }, timeout + 1);\n el.addEventListener(event, onEnd);\n}\n\nvar transformRE = /\\b(transform|all)(,|$)/;\n\nfunction getTransitionInfo (el, expectedType) {\n var styles = window.getComputedStyle(el);\n // JSDOM may return undefined for transition properties\n var transitionDelays = (styles[transitionProp + 'Delay'] || '').split(', ');\n var transitionDurations = (styles[transitionProp + 'Duration'] || '').split(', ');\n var transitionTimeout = getTimeout(transitionDelays, transitionDurations);\n var animationDelays = (styles[animationProp + 'Delay'] || '').split(', ');\n var animationDurations = (styles[animationProp + 'Duration'] || '').split(', ');\n var animationTimeout = getTimeout(animationDelays, animationDurations);\n\n var type;\n var timeout = 0;\n var propCount = 0;\n /* istanbul ignore if */\n if (expectedType === TRANSITION) {\n if (transitionTimeout > 0) {\n type = TRANSITION;\n timeout = transitionTimeout;\n propCount = transitionDurations.length;\n }\n } else if (expectedType === ANIMATION) {\n if (animationTimeout > 0) {\n type = ANIMATION;\n timeout = animationTimeout;\n propCount = animationDurations.length;\n }\n } else {\n timeout = Math.max(transitionTimeout, animationTimeout);\n type = timeout > 0\n ? transitionTimeout > animationTimeout\n ? TRANSITION\n : ANIMATION\n : null;\n propCount = type\n ? type === TRANSITION\n ? transitionDurations.length\n : animationDurations.length\n : 0;\n }\n var hasTransform =\n type === TRANSITION &&\n transformRE.test(styles[transitionProp + 'Property']);\n return {\n type: type,\n timeout: timeout,\n propCount: propCount,\n hasTransform: hasTransform\n }\n}\n\nfunction getTimeout (delays, durations) {\n /* istanbul ignore next */\n while (delays.length < durations.length) {\n delays = delays.concat(delays);\n }\n\n return Math.max.apply(null, durations.map(function (d, i) {\n return toMs(d) + toMs(delays[i])\n }))\n}\n\n// Old versions of Chromium (below 61.0.3163.100) formats floating pointer numbers\n// in a locale-dependent way, using a comma instead of a dot.\n// If comma is not replaced with a dot, the input will be rounded down (i.e. acting\n// as a floor function) causing unexpected behaviors\nfunction toMs (s) {\n return Number(s.slice(0, -1).replace(',', '.')) * 1000\n}\n\n/* */\n\nfunction enter (vnode, toggleDisplay) {\n var el = vnode.elm;\n\n // call leave callback now\n if (isDef(el._leaveCb)) {\n el._leaveCb.cancelled = true;\n el._leaveCb();\n }\n\n var data = resolveTransition(vnode.data.transition);\n if (isUndef(data)) {\n return\n }\n\n /* istanbul ignore if */\n if (isDef(el._enterCb) || el.nodeType !== 1) {\n return\n }\n\n var css = data.css;\n var type = data.type;\n var enterClass = data.enterClass;\n var enterToClass = data.enterToClass;\n var enterActiveClass = data.enterActiveClass;\n var appearClass = data.appearClass;\n var appearToClass = data.appearToClass;\n var appearActiveClass = data.appearActiveClass;\n var beforeEnter = data.beforeEnter;\n var enter = data.enter;\n var afterEnter = data.afterEnter;\n var enterCancelled = data.enterCancelled;\n var beforeAppear = data.beforeAppear;\n var appear = data.appear;\n var afterAppear = data.afterAppear;\n var appearCancelled = data.appearCancelled;\n var duration = data.duration;\n\n // activeInstance will always be the <transition> component managing this\n // transition. One edge case to check is when the <transition> is placed\n // as the root node of a child component. In that case we need to check\n // <transition>'s parent for appear check.\n var context = activeInstance;\n var transitionNode = activeInstance.$vnode;\n while (transitionNode && transitionNode.parent) {\n transitionNode = transitionNode.parent;\n context = transitionNode.context;\n }\n\n var isAppear = !context._isMounted || !vnode.isRootInsert;\n\n if (isAppear && !appear && appear !== '') {\n return\n }\n\n var startClass = isAppear && appearClass\n ? appearClass\n : enterClass;\n var activeClass = isAppear && appearActiveClass\n ? appearActiveClass\n : enterActiveClass;\n var toClass = isAppear && appearToClass\n ? appearToClass\n : enterToClass;\n\n var beforeEnterHook = isAppear\n ? (beforeAppear || beforeEnter)\n : beforeEnter;\n var enterHook = isAppear\n ? (typeof appear === 'function' ? appear : enter)\n : enter;\n var afterEnterHook = isAppear\n ? (afterAppear || afterEnter)\n : afterEnter;\n var enterCancelledHook = isAppear\n ? (appearCancelled || enterCancelled)\n : enterCancelled;\n\n var explicitEnterDuration = toNumber(\n isObject(duration)\n ? duration.enter\n : duration\n );\n\n if (process.env.NODE_ENV !== 'production' && explicitEnterDuration != null) {\n checkDuration(explicitEnterDuration, 'enter', vnode);\n }\n\n var expectsCSS = css !== false && !isIE9;\n var userWantsControl = getHookArgumentsLength(enterHook);\n\n var cb = el._enterCb = once(function () {\n if (expectsCSS) {\n removeTransitionClass(el, toClass);\n removeTransitionClass(el, activeClass);\n }\n if (cb.cancelled) {\n if (expectsCSS) {\n removeTransitionClass(el, startClass);\n }\n enterCancelledHook && enterCancelledHook(el);\n } else {\n afterEnterHook && afterEnterHook(el);\n }\n el._enterCb = null;\n });\n\n if (!vnode.data.show) {\n // remove pending leave element on enter by injecting an insert hook\n mergeVNodeHook(vnode, 'insert', function () {\n var parent = el.parentNode;\n var pendingNode = parent && parent._pending && parent._pending[vnode.key];\n if (pendingNode &&\n pendingNode.tag === vnode.tag &&\n pendingNode.elm._leaveCb\n ) {\n pendingNode.elm._leaveCb();\n }\n enterHook && enterHook(el, cb);\n });\n }\n\n // start enter transition\n beforeEnterHook && beforeEnterHook(el);\n if (expectsCSS) {\n addTransitionClass(el, startClass);\n addTransitionClass(el, activeClass);\n nextFrame(function () {\n removeTransitionClass(el, startClass);\n if (!cb.cancelled) {\n addTransitionClass(el, toClass);\n if (!userWantsControl) {\n if (isValidDuration(explicitEnterDuration)) {\n setTimeout(cb, explicitEnterDuration);\n } else {\n whenTransitionEnds(el, type, cb);\n }\n }\n }\n });\n }\n\n if (vnode.data.show) {\n toggleDisplay && toggleDisplay();\n enterHook && enterHook(el, cb);\n }\n\n if (!expectsCSS && !userWantsControl) {\n cb();\n }\n}\n\nfunction leave (vnode, rm) {\n var el = vnode.elm;\n\n // call enter callback now\n if (isDef(el._enterCb)) {\n el._enterCb.cancelled = true;\n el._enterCb();\n }\n\n var data = resolveTransition(vnode.data.transition);\n if (isUndef(data) || el.nodeType !== 1) {\n return rm()\n }\n\n /* istanbul ignore if */\n if (isDef(el._leaveCb)) {\n return\n }\n\n var css = data.css;\n var type = data.type;\n var leaveClass = data.leaveClass;\n var leaveToClass = data.leaveToClass;\n var leaveActiveClass = data.leaveActiveClass;\n var beforeLeave = data.beforeLeave;\n var leave = data.leave;\n var afterLeave = data.afterLeave;\n var leaveCancelled = data.leaveCancelled;\n var delayLeave = data.delayLeave;\n var duration = data.duration;\n\n var expectsCSS = css !== false && !isIE9;\n var userWantsControl = getHookArgumentsLength(leave);\n\n var explicitLeaveDuration = toNumber(\n isObject(duration)\n ? duration.leave\n : duration\n );\n\n if (process.env.NODE_ENV !== 'production' && isDef(explicitLeaveDuration)) {\n checkDuration(explicitLeaveDuration, 'leave', vnode);\n }\n\n var cb = el._leaveCb = once(function () {\n if (el.parentNode && el.parentNode._pending) {\n el.parentNode._pending[vnode.key] = null;\n }\n if (expectsCSS) {\n removeTransitionClass(el, leaveToClass);\n removeTransitionClass(el, leaveActiveClass);\n }\n if (cb.cancelled) {\n if (expectsCSS) {\n removeTransitionClass(el, leaveClass);\n }\n leaveCancelled && leaveCancelled(el);\n } else {\n rm();\n afterLeave && afterLeave(el);\n }\n el._leaveCb = null;\n });\n\n if (delayLeave) {\n delayLeave(performLeave);\n } else {\n performLeave();\n }\n\n function performLeave () {\n // the delayed leave may have already been cancelled\n if (cb.cancelled) {\n return\n }\n // record leaving element\n if (!vnode.data.show && el.parentNode) {\n (el.parentNode._pending || (el.parentNode._pending = {}))[(vnode.key)] = vnode;\n }\n beforeLeave && beforeLeave(el);\n if (expectsCSS) {\n addTransitionClass(el, leaveClass);\n addTransitionClass(el, leaveActiveClass);\n nextFrame(function () {\n removeTransitionClass(el, leaveClass);\n if (!cb.cancelled) {\n addTransitionClass(el, leaveToClass);\n if (!userWantsControl) {\n if (isValidDuration(explicitLeaveDuration)) {\n setTimeout(cb, explicitLeaveDuration);\n } else {\n whenTransitionEnds(el, type, cb);\n }\n }\n }\n });\n }\n leave && leave(el, cb);\n if (!expectsCSS && !userWantsControl) {\n cb();\n }\n }\n}\n\n// only used in dev mode\nfunction checkDuration (val, name, vnode) {\n if (typeof val !== 'number') {\n warn(\n \"<transition> explicit \" + name + \" duration is not a valid number - \" +\n \"got \" + (JSON.stringify(val)) + \".\",\n vnode.context\n );\n } else if (isNaN(val)) {\n warn(\n \"<transition> explicit \" + name + \" duration is NaN - \" +\n 'the duration expression might be incorrect.',\n vnode.context\n );\n }\n}\n\nfunction isValidDuration (val) {\n return typeof val === 'number' && !isNaN(val)\n}\n\n/**\n * Normalize a transition hook's argument length. The hook may be:\n * - a merged hook (invoker) with the original in .fns\n * - a wrapped component method (check ._length)\n * - a plain function (.length)\n */\nfunction getHookArgumentsLength (fn) {\n if (isUndef(fn)) {\n return false\n }\n var invokerFns = fn.fns;\n if (isDef(invokerFns)) {\n // invoker\n return getHookArgumentsLength(\n Array.isArray(invokerFns)\n ? invokerFns[0]\n : invokerFns\n )\n } else {\n return (fn._length || fn.length) > 1\n }\n}\n\nfunction _enter (_, vnode) {\n if (vnode.data.show !== true) {\n enter(vnode);\n }\n}\n\nvar transition = inBrowser ? {\n create: _enter,\n activate: _enter,\n remove: function remove$$1 (vnode, rm) {\n /* istanbul ignore else */\n if (vnode.data.show !== true) {\n leave(vnode, rm);\n } else {\n rm();\n }\n }\n} : {};\n\nvar platformModules = [\n attrs,\n klass,\n events,\n domProps,\n style,\n transition\n];\n\n/* */\n\n// the directive module should be applied last, after all\n// built-in modules have been applied.\nvar modules = platformModules.concat(baseModules);\n\nvar patch = createPatchFunction({ nodeOps: nodeOps, modules: modules });\n\n/**\n * Not type checking this file because flow doesn't like attaching\n * properties to Elements.\n */\n\n/* istanbul ignore if */\nif (isIE9) {\n // http://www.matts411.com/post/internet-explorer-9-oninput/\n document.addEventListener('selectionchange', function () {\n var el = document.activeElement;\n if (el && el.vmodel) {\n trigger(el, 'input');\n }\n });\n}\n\nvar directive = {\n inserted: function inserted (el, binding, vnode, oldVnode) {\n if (vnode.tag === 'select') {\n // #6903\n if (oldVnode.elm && !oldVnode.elm._vOptions) {\n mergeVNodeHook(vnode, 'postpatch', function () {\n directive.componentUpdated(el, binding, vnode);\n });\n } else {\n setSelected(el, binding, vnode.context);\n }\n el._vOptions = [].map.call(el.options, getValue);\n } else if (vnode.tag === 'textarea' || isTextInputType(el.type)) {\n el._vModifiers = binding.modifiers;\n if (!binding.modifiers.lazy) {\n el.addEventListener('compositionstart', onCompositionStart);\n el.addEventListener('compositionend', onCompositionEnd);\n // Safari < 10.2 & UIWebView doesn't fire compositionend when\n // switching focus before confirming composition choice\n // this also fixes the issue where some browsers e.g. iOS Chrome\n // fires \"change\" instead of \"input\" on autocomplete.\n el.addEventListener('change', onCompositionEnd);\n /* istanbul ignore if */\n if (isIE9) {\n el.vmodel = true;\n }\n }\n }\n },\n\n componentUpdated: function componentUpdated (el, binding, vnode) {\n if (vnode.tag === 'select') {\n setSelected(el, binding, vnode.context);\n // in case the options rendered by v-for have changed,\n // it's possible that the value is out-of-sync with the rendered options.\n // detect such cases and filter out values that no longer has a matching\n // option in the DOM.\n var prevOptions = el._vOptions;\n var curOptions = el._vOptions = [].map.call(el.options, getValue);\n if (curOptions.some(function (o, i) { return !looseEqual(o, prevOptions[i]); })) {\n // trigger change event if\n // no matching option found for at least one value\n var needReset = el.multiple\n ? binding.value.some(function (v) { return hasNoMatchingOption(v, curOptions); })\n : binding.value !== binding.oldValue && hasNoMatchingOption(binding.value, curOptions);\n if (needReset) {\n trigger(el, 'change');\n }\n }\n }\n }\n};\n\nfunction setSelected (el, binding, vm) {\n actuallySetSelected(el, binding, vm);\n /* istanbul ignore if */\n if (isIE || isEdge) {\n setTimeout(function () {\n actuallySetSelected(el, binding, vm);\n }, 0);\n }\n}\n\nfunction actuallySetSelected (el, binding, vm) {\n var value = binding.value;\n var isMultiple = el.multiple;\n if (isMultiple && !Array.isArray(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"<select multiple v-model=\\\"\" + (binding.expression) + \"\\\"> \" +\n \"expects an Array value for its binding, but got \" + (Object.prototype.toString.call(value).slice(8, -1)),\n vm\n );\n return\n }\n var selected, option;\n for (var i = 0, l = el.options.length; i < l; i++) {\n option = el.options[i];\n if (isMultiple) {\n selected = looseIndexOf(value, getValue(option)) > -1;\n if (option.selected !== selected) {\n option.selected = selected;\n }\n } else {\n if (looseEqual(getValue(option), value)) {\n if (el.selectedIndex !== i) {\n el.selectedIndex = i;\n }\n return\n }\n }\n }\n if (!isMultiple) {\n el.selectedIndex = -1;\n }\n}\n\nfunction hasNoMatchingOption (value, options) {\n return options.every(function (o) { return !looseEqual(o, value); })\n}\n\nfunction getValue (option) {\n return '_value' in option\n ? option._value\n : option.value\n}\n\nfunction onCompositionStart (e) {\n e.target.composing = true;\n}\n\nfunction onCompositionEnd (e) {\n // prevent triggering an input event for no reason\n if (!e.target.composing) { return }\n e.target.composing = false;\n trigger(e.target, 'input');\n}\n\nfunction trigger (el, type) {\n var e = document.createEvent('HTMLEvents');\n e.initEvent(type, true, true);\n el.dispatchEvent(e);\n}\n\n/* */\n\n// recursively search for possible transition defined inside the component root\nfunction locateNode (vnode) {\n return vnode.componentInstance && (!vnode.data || !vnode.data.transition)\n ? locateNode(vnode.componentInstance._vnode)\n : vnode\n}\n\nvar show = {\n bind: function bind (el, ref, vnode) {\n var value = ref.value;\n\n vnode = locateNode(vnode);\n var transition$$1 = vnode.data && vnode.data.transition;\n var originalDisplay = el.__vOriginalDisplay =\n el.style.display === 'none' ? '' : el.style.display;\n if (value && transition$$1) {\n vnode.data.show = true;\n enter(vnode, function () {\n el.style.display = originalDisplay;\n });\n } else {\n el.style.display = value ? originalDisplay : 'none';\n }\n },\n\n update: function update (el, ref, vnode) {\n var value = ref.value;\n var oldValue = ref.oldValue;\n\n /* istanbul ignore if */\n if (!value === !oldValue) { return }\n vnode = locateNode(vnode);\n var transition$$1 = vnode.data && vnode.data.transition;\n if (transition$$1) {\n vnode.data.show = true;\n if (value) {\n enter(vnode, function () {\n el.style.display = el.__vOriginalDisplay;\n });\n } else {\n leave(vnode, function () {\n el.style.display = 'none';\n });\n }\n } else {\n el.style.display = value ? el.__vOriginalDisplay : 'none';\n }\n },\n\n unbind: function unbind (\n el,\n binding,\n vnode,\n oldVnode,\n isDestroy\n ) {\n if (!isDestroy) {\n el.style.display = el.__vOriginalDisplay;\n }\n }\n};\n\nvar platformDirectives = {\n model: directive,\n show: show\n};\n\n/* */\n\nvar transitionProps = {\n name: String,\n appear: Boolean,\n css: Boolean,\n mode: String,\n type: String,\n enterClass: String,\n leaveClass: String,\n enterToClass: String,\n leaveToClass: String,\n enterActiveClass: String,\n leaveActiveClass: String,\n appearClass: String,\n appearActiveClass: String,\n appearToClass: String,\n duration: [Number, String, Object]\n};\n\n// in case the child is also an abstract component, e.g. <keep-alive>\n// we want to recursively retrieve the real component to be rendered\nfunction getRealChild (vnode) {\n var compOptions = vnode && vnode.componentOptions;\n if (compOptions && compOptions.Ctor.options.abstract) {\n return getRealChild(getFirstComponentChild(compOptions.children))\n } else {\n return vnode\n }\n}\n\nfunction extractTransitionData (comp) {\n var data = {};\n var options = comp.$options;\n // props\n for (var key in options.propsData) {\n data[key] = comp[key];\n }\n // events.\n // extract listeners and pass them directly to the transition methods\n var listeners = options._parentListeners;\n for (var key$1 in listeners) {\n data[camelize(key$1)] = listeners[key$1];\n }\n return data\n}\n\nfunction placeholder (h, rawChild) {\n if (/\\d-keep-alive$/.test(rawChild.tag)) {\n return h('keep-alive', {\n props: rawChild.componentOptions.propsData\n })\n }\n}\n\nfunction hasParentTransition (vnode) {\n while ((vnode = vnode.parent)) {\n if (vnode.data.transition) {\n return true\n }\n }\n}\n\nfunction isSameChild (child, oldChild) {\n return oldChild.key === child.key && oldChild.tag === child.tag\n}\n\nvar isNotTextNode = function (c) { return c.tag || isAsyncPlaceholder(c); };\n\nvar isVShowDirective = function (d) { return d.name === 'show'; };\n\nvar Transition = {\n name: 'transition',\n props: transitionProps,\n abstract: true,\n\n render: function render (h) {\n var this$1 = this;\n\n var children = this.$slots.default;\n if (!children) {\n return\n }\n\n // filter out text nodes (possible whitespaces)\n children = children.filter(isNotTextNode);\n /* istanbul ignore if */\n if (!children.length) {\n return\n }\n\n // warn multiple elements\n if (process.env.NODE_ENV !== 'production' && children.length > 1) {\n warn(\n '<transition> can only be used on a single element. Use ' +\n '<transition-group> for lists.',\n this.$parent\n );\n }\n\n var mode = this.mode;\n\n // warn invalid mode\n if (process.env.NODE_ENV !== 'production' &&\n mode && mode !== 'in-out' && mode !== 'out-in'\n ) {\n warn(\n 'invalid <transition> mode: ' + mode,\n this.$parent\n );\n }\n\n var rawChild = children[0];\n\n // if this is a component root node and the component's\n // parent container node also has transition, skip.\n if (hasParentTransition(this.$vnode)) {\n return rawChild\n }\n\n // apply transition data to child\n // use getRealChild() to ignore abstract components e.g. keep-alive\n var child = getRealChild(rawChild);\n /* istanbul ignore if */\n if (!child) {\n return rawChild\n }\n\n if (this._leaving) {\n return placeholder(h, rawChild)\n }\n\n // ensure a key that is unique to the vnode type and to this transition\n // component instance. This key will be used to remove pending leaving nodes\n // during entering.\n var id = \"__transition-\" + (this._uid) + \"-\";\n child.key = child.key == null\n ? child.isComment\n ? id + 'comment'\n : id + child.tag\n : isPrimitive(child.key)\n ? (String(child.key).indexOf(id) === 0 ? child.key : id + child.key)\n : child.key;\n\n var data = (child.data || (child.data = {})).transition = extractTransitionData(this);\n var oldRawChild = this._vnode;\n var oldChild = getRealChild(oldRawChild);\n\n // mark v-show\n // so that the transition module can hand over the control to the directive\n if (child.data.directives && child.data.directives.some(isVShowDirective)) {\n child.data.show = true;\n }\n\n if (\n oldChild &&\n oldChild.data &&\n !isSameChild(child, oldChild) &&\n !isAsyncPlaceholder(oldChild) &&\n // #6687 component root is a comment node\n !(oldChild.componentInstance && oldChild.componentInstance._vnode.isComment)\n ) {\n // replace old child transition data with fresh one\n // important for dynamic transitions!\n var oldData = oldChild.data.transition = extend({}, data);\n // handle transition mode\n if (mode === 'out-in') {\n // return placeholder node and queue update when leave finishes\n this._leaving = true;\n mergeVNodeHook(oldData, 'afterLeave', function () {\n this$1._leaving = false;\n this$1.$forceUpdate();\n });\n return placeholder(h, rawChild)\n } else if (mode === 'in-out') {\n if (isAsyncPlaceholder(child)) {\n return oldRawChild\n }\n var delayedLeave;\n var performLeave = function () { delayedLeave(); };\n mergeVNodeHook(data, 'afterEnter', performLeave);\n mergeVNodeHook(data, 'enterCancelled', performLeave);\n mergeVNodeHook(oldData, 'delayLeave', function (leave) { delayedLeave = leave; });\n }\n }\n\n return rawChild\n }\n};\n\n/* */\n\nvar props = extend({\n tag: String,\n moveClass: String\n}, transitionProps);\n\ndelete props.mode;\n\nvar TransitionGroup = {\n props: props,\n\n beforeMount: function beforeMount () {\n var this$1 = this;\n\n var update = this._update;\n this._update = function (vnode, hydrating) {\n var restoreActiveInstance = setActiveInstance(this$1);\n // force removing pass\n this$1.__patch__(\n this$1._vnode,\n this$1.kept,\n false, // hydrating\n true // removeOnly (!important, avoids unnecessary moves)\n );\n this$1._vnode = this$1.kept;\n restoreActiveInstance();\n update.call(this$1, vnode, hydrating);\n };\n },\n\n render: function render (h) {\n var tag = this.tag || this.$vnode.data.tag || 'span';\n var map = Object.create(null);\n var prevChildren = this.prevChildren = this.children;\n var rawChildren = this.$slots.default || [];\n var children = this.children = [];\n var transitionData = extractTransitionData(this);\n\n for (var i = 0; i < rawChildren.length; i++) {\n var c = rawChildren[i];\n if (c.tag) {\n if (c.key != null && String(c.key).indexOf('__vlist') !== 0) {\n children.push(c);\n map[c.key] = c\n ;(c.data || (c.data = {})).transition = transitionData;\n } else if (process.env.NODE_ENV !== 'production') {\n var opts = c.componentOptions;\n var name = opts ? (opts.Ctor.options.name || opts.tag || '') : c.tag;\n warn((\"<transition-group> children must be keyed: <\" + name + \">\"));\n }\n }\n }\n\n if (prevChildren) {\n var kept = [];\n var removed = [];\n for (var i$1 = 0; i$1 < prevChildren.length; i$1++) {\n var c$1 = prevChildren[i$1];\n c$1.data.transition = transitionData;\n c$1.data.pos = c$1.elm.getBoundingClientRect();\n if (map[c$1.key]) {\n kept.push(c$1);\n } else {\n removed.push(c$1);\n }\n }\n this.kept = h(tag, null, kept);\n this.removed = removed;\n }\n\n return h(tag, null, children)\n },\n\n updated: function updated () {\n var children = this.prevChildren;\n var moveClass = this.moveClass || ((this.name || 'v') + '-move');\n if (!children.length || !this.hasMove(children[0].elm, moveClass)) {\n return\n }\n\n // we divide the work into three loops to avoid mixing DOM reads and writes\n // in each iteration - which helps prevent layout thrashing.\n children.forEach(callPendingCbs);\n children.forEach(recordPosition);\n children.forEach(applyTranslation);\n\n // force reflow to put everything in position\n // assign to this to avoid being removed in tree-shaking\n // $flow-disable-line\n this._reflow = document.body.offsetHeight;\n\n children.forEach(function (c) {\n if (c.data.moved) {\n var el = c.elm;\n var s = el.style;\n addTransitionClass(el, moveClass);\n s.transform = s.WebkitTransform = s.transitionDuration = '';\n el.addEventListener(transitionEndEvent, el._moveCb = function cb (e) {\n if (e && e.target !== el) {\n return\n }\n if (!e || /transform$/.test(e.propertyName)) {\n el.removeEventListener(transitionEndEvent, cb);\n el._moveCb = null;\n removeTransitionClass(el, moveClass);\n }\n });\n }\n });\n },\n\n methods: {\n hasMove: function hasMove (el, moveClass) {\n /* istanbul ignore if */\n if (!hasTransition) {\n return false\n }\n /* istanbul ignore if */\n if (this._hasMove) {\n return this._hasMove\n }\n // Detect whether an element with the move class applied has\n // CSS transitions. Since the element may be inside an entering\n // transition at this very moment, we make a clone of it and remove\n // all other transition classes applied to ensure only the move class\n // is applied.\n var clone = el.cloneNode();\n if (el._transitionClasses) {\n el._transitionClasses.forEach(function (cls) { removeClass(clone, cls); });\n }\n addClass(clone, moveClass);\n clone.style.display = 'none';\n this.$el.appendChild(clone);\n var info = getTransitionInfo(clone);\n this.$el.removeChild(clone);\n return (this._hasMove = info.hasTransform)\n }\n }\n};\n\nfunction callPendingCbs (c) {\n /* istanbul ignore if */\n if (c.elm._moveCb) {\n c.elm._moveCb();\n }\n /* istanbul ignore if */\n if (c.elm._enterCb) {\n c.elm._enterCb();\n }\n}\n\nfunction recordPosition (c) {\n c.data.newPos = c.elm.getBoundingClientRect();\n}\n\nfunction applyTranslation (c) {\n var oldPos = c.data.pos;\n var newPos = c.data.newPos;\n var dx = oldPos.left - newPos.left;\n var dy = oldPos.top - newPos.top;\n if (dx || dy) {\n c.data.moved = true;\n var s = c.elm.style;\n s.transform = s.WebkitTransform = \"translate(\" + dx + \"px,\" + dy + \"px)\";\n s.transitionDuration = '0s';\n }\n}\n\nvar platformComponents = {\n Transition: Transition,\n TransitionGroup: TransitionGroup\n};\n\n/* */\n\n// install platform specific utils\nVue.config.mustUseProp = mustUseProp;\nVue.config.isReservedTag = isReservedTag;\nVue.config.isReservedAttr = isReservedAttr;\nVue.config.getTagNamespace = getTagNamespace;\nVue.config.isUnknownElement = isUnknownElement;\n\n// install platform runtime directives & components\nextend(Vue.options.directives, platformDirectives);\nextend(Vue.options.components, platformComponents);\n\n// install platform patch function\nVue.prototype.__patch__ = inBrowser ? patch : noop;\n\n// public mount method\nVue.prototype.$mount = function (\n el,\n hydrating\n) {\n el = el && inBrowser ? query(el) : undefined;\n return mountComponent(this, el, hydrating)\n};\n\n// devtools global hook\n/* istanbul ignore next */\nif (inBrowser) {\n setTimeout(function () {\n if (config.devtools) {\n if (devtools) {\n devtools.emit('init', Vue);\n } else if (\n process.env.NODE_ENV !== 'production' &&\n process.env.NODE_ENV !== 'test' &&\n isChrome\n ) {\n console[console.info ? 'info' : 'log'](\n 'Download the Vue Devtools extension for a better development experience:\\n' +\n 'https://github.com/vuejs/vue-devtools'\n );\n }\n }\n if (process.env.NODE_ENV !== 'production' &&\n process.env.NODE_ENV !== 'test' &&\n config.productionTip !== false &&\n typeof console !== 'undefined'\n ) {\n console[console.info ? 'info' : 'log'](\n \"You are running Vue in development mode.\\n\" +\n \"Make sure to turn on production mode when deploying for production.\\n\" +\n \"See more tips at https://vuejs.org/guide/deployment.html\"\n );\n }\n }, 0);\n}\n\n/* */\n\nexport default Vue;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('loader',{attrs:{\"yes\":_vm.loadingQueues}}),_vm._v(\" \"),(!_vm.loadingQueues && !_vm.queues.length)?_c('p',{staticClass:\"text-center m-0 p-5\"},[_vm._v(\"\\n There aren't any queues.\\n \")]):_vm._e(),_vm._v(\" \"),(!_vm.loadingQueues && _vm.queues.length)?_c('table',{staticClass:\"table card-table table-hover\"},[_vm._m(0),_vm._v(\" \"),_c('tbody',_vm._l((_vm.queues),function(queue){return _c('tr',[_c('td',[_c('router-link',{attrs:{\"to\":{ name: 'metrics.detail', params: { type: 'queues', slug: queue }}}},[_vm._v(_vm._s(queue))])],1)])}),0)]):_vm._e()],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('thead',[_c('tr',[_c('th',[_vm._v(\"Queue\")])])])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--4-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Queues.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--4-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Queues.vue?vue&type=script&lang=js&\"","<script type=\"text/ecmascript-6\">\n export default {\n components: {},\n\n\n /**\n * The component's data.\n */\n data() {\n return {\n loadingQueues: true,\n queues: []\n };\n },\n\n\n /**\n * Prepare the component.\n */\n mounted() {\n this.loadQueues();\n },\n\n\n methods: {\n /**\n * Load the queues.\n */\n loadQueues() {\n this.loadingQueues = true;\n\n this.$http.get('/horizon/api/metrics/queues')\n .then(response => {\n this.queues = response.data;\n\n this.loadingQueues = false;\n });\n }\n }\n }\n</script>\n\n<template>\n <div>\n <loader :yes=\"loadingQueues\"/>\n\n <p class=\"text-center m-0 p-5\" v-if=\"!loadingQueues && !queues.length\">\n There aren't any queues.\n </p>\n\n <table v-if=\"!loadingQueues && queues.length\" class=\"table card-table table-hover\">\n <thead>\n <tr>\n <th>Queue</th>\n </tr>\n </thead>\n <tbody>\n <tr v-for=\"queue in queues\">\n <td>\n <router-link :to=\"{ name: 'metrics.detail', params: { type: 'queues', slug: queue }}\">{{ queue }}</router-link>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n</template>\n","import { render, staticRenderFns } from \"./Queues.vue?vue&type=template&id=51820f6c&\"\nimport script from \"./Queues.vue?vue&type=script&lang=js&\"\nexport * from \"./Queues.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","/**\n * @license\n * Lodash <https://lodash.com/>\n * Copyright JS Foundation and other contributors <https://js.foundation/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.11';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading and trailing whitespace. */\n var reTrim = /^\\s+|\\s+$/g,\n reTrimStart = /^\\s+/,\n reTrimEnd = /\\s+$/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n\n return result;\n }\n\n if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n\n return result;\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n if (isObject(srcValue)) {\n stack || (stack = new Stack);\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n var index = -1;\n iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n value = iteratee(value);\n\n var low = 0,\n high = array == null ? 0 : array.length,\n valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '<p>' + func(text) + '</p>';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '<p>fred, barney, & pebbles</p>'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('<body>');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<b><%- value %></b>');\n * compiled({ 'value': '<script>' });\n * // => '<b><script></b>'\n *\n * // Use the \"evaluate\" delimiter to execute JavaScript and generate HTML.\n * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the internal `print` function in \"evaluate\" delimiters.\n * var compiled = _.template('<% print(\"hello \" + user); %>!');\n * compiled({ 'user': 'barney' });\n * // => 'hello barney!'\n *\n * // Use the ES template literal delimiter as an \"interpolate\" delimiter.\n * // Disable support by replacing the \"interpolate\" delimiter.\n * var compiled = _.template('hello ${ user }!');\n * compiled({ 'user': 'pebbles' });\n * // => 'hello pebbles!'\n *\n * // Use backslashes to treat delimiters as plain text.\n * var compiled = _.template('<%= \"\\\\<%- value %\\\\>\" %>');\n * compiled({ 'value': 'ignored' });\n * // => '<%- value %>'\n *\n * // Use the `imports` option to import `jQuery` as `jq`.\n * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';\n * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the `sourceURL` option to specify a custom sourceURL for the template.\n * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });\n * compiled(data);\n * // => Find the source of \"greeting.jst\" under the Sources tab or Resources panel of the web inspector.\n *\n * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.\n * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });\n * compiled.source;\n * // => function(data) {\n * // var __t, __p = '';\n * // __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';\n * // return __p;\n * // }\n *\n * // Use custom template delimiters.\n * _.templateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\n * var compiled = _.template('hello {{ user }}!');\n * compiled({ 'user': 'mustache' });\n * // => 'hello mustache!'\n *\n * // Use the `source` property to inline compiled templates for meaningful\n * // line numbers in error messages and stack traces.\n * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\\\n * var JST = {\\\n * \"main\": ' + _.template(mainText).source + '\\\n * };\\\n * ');\n */\n function template(string, options, guard) {\n // Based on John Resig's `tmpl` implementation\n // (http://ejohn.org/blog/javascript-micro-templating/)\n // and Laura Doktorova's doT.js (https://github.com/olado/doT).\n var settings = lodash.templateSettings;\n\n if (guard && isIterateeCall(string, options, guard)) {\n options = undefined;\n }\n string = toString(string);\n options = assignInWith({}, options, settings, customDefaultsAssignIn);\n\n var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),\n importsKeys = keys(imports),\n importsValues = baseValues(imports, importsKeys);\n\n var isEscaping,\n isEvaluating,\n index = 0,\n interpolate = options.interpolate || reNoMatch,\n source = \"__p += '\";\n\n // Compile the regexp to match each delimiter.\n var reDelimiters = RegExp(\n (options.escape || reNoMatch).source + '|' +\n interpolate.source + '|' +\n (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +\n (options.evaluate || reNoMatch).source + '|$'\n , 'g');\n\n // Use a sourceURL for easier debugging.\n var sourceURL = '//# sourceURL=' +\n ('sourceURL' in options\n ? options.sourceURL\n : ('lodash.templateSources[' + (++templateCounter) + ']')\n ) + '\\n';\n\n string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {\n interpolateValue || (interpolateValue = esTemplateValue);\n\n // Escape characters that can't be included in string literals.\n source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);\n\n // Replace delimiters with snippets.\n if (escapeValue) {\n isEscaping = true;\n source += \"' +\\n__e(\" + escapeValue + \") +\\n'\";\n }\n if (evaluateValue) {\n isEvaluating = true;\n source += \"';\\n\" + evaluateValue + \";\\n__p += '\";\n }\n if (interpolateValue) {\n source += \"' +\\n((__t = (\" + interpolateValue + \")) == null ? '' : __t) +\\n'\";\n }\n index = offset + match.length;\n\n // The JS engine embedded in Adobe products needs `match` returned in\n // order to produce the correct `offset` value.\n return match;\n });\n\n source += \"';\\n\";\n\n // If `variable` is not specified wrap a with-statement around the generated\n // code to add the data object to the top of the scope chain.\n var variable = options.variable;\n if (!variable) {\n source = 'with (obj) {\\n' + source + '\\n}\\n';\n }\n // Cleanup code by stripping empty strings.\n source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)\n .replace(reEmptyStringMiddle, '$1')\n .replace(reEmptyStringTrailing, '$1;');\n\n // Frame code as the function body.\n source = 'function(' + (variable || 'obj') + ') {\\n' +\n (variable\n ? ''\n : 'obj || (obj = {});\\n'\n ) +\n \"var __t, __p = ''\" +\n (isEscaping\n ? ', __e = _.escape'\n : ''\n ) +\n (isEvaluating\n ? ', __j = Array.prototype.join;\\n' +\n \"function print() { __p += __j.call(arguments, '') }\\n\"\n : ';\\n'\n ) +\n source +\n 'return __p\\n}';\n\n var result = attempt(function() {\n return Function(importsKeys, sourceURL + 'return ' + source)\n .apply(undefined, importsValues);\n });\n\n // Provide the compiled function's source by its `toString` method or\n // the `source` property as a convenience for inlining compiled templates.\n result.source = source;\n if (isError(result)) {\n throw result;\n }\n return result;\n }\n\n /**\n * Converts `string`, as a whole, to lower case just like\n * [String#toLowerCase](https://mdn.io/toLowerCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.toLower('--Foo-Bar--');\n * // => '--foo-bar--'\n *\n * _.toLower('fooBar');\n * // => 'foobar'\n *\n * _.toLower('__FOO_BAR__');\n * // => '__foo_bar__'\n */\n function toLower(value) {\n return toString(value).toLowerCase();\n }\n\n /**\n * Converts `string`, as a whole, to upper case just like\n * [String#toUpperCase](https://mdn.io/toUpperCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.toUpper('--foo-bar--');\n * // => '--FOO-BAR--'\n *\n * _.toUpper('fooBar');\n * // => 'FOOBAR'\n *\n * _.toUpper('__foo_bar__');\n * // => '__FOO_BAR__'\n */\n function toUpper(value) {\n return toString(value).toUpperCase();\n }\n\n /**\n * Removes leading and trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trim(' abc ');\n * // => 'abc'\n *\n * _.trim('-_-abc-_-', '_-');\n * // => 'abc'\n *\n * _.map([' foo ', ' bar '], _.trim);\n * // => ['foo', 'bar']\n */\n function trim(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrim, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n chrSymbols = stringToArray(chars),\n start = charsStartIndex(strSymbols, chrSymbols),\n end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n return castSlice(strSymbols, start, end).join('');\n }\n\n /**\n * Removes trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimEnd(' abc ');\n * // => ' abc'\n *\n * _.trimEnd('-_-abc-_-', '_-');\n * // => '-_-abc'\n */\n function trimEnd(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrimEnd, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;\n\n return castSlice(strSymbols, 0, end).join('');\n }\n\n /**\n * Removes leading whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimStart(' abc ');\n * // => 'abc '\n *\n * _.trimStart('-_-abc-_-', '_-');\n * // => 'abc-_-'\n */\n function trimStart(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrimStart, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n start = charsStartIndex(strSymbols, stringToArray(chars));\n\n return castSlice(strSymbols, start).join('');\n }\n\n /**\n * Truncates `string` if it's longer than the given maximum string length.\n * The last characters of the truncated string are replaced with the omission\n * string which defaults to \"...\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to truncate.\n * @param {Object} [options={}] The options object.\n * @param {number} [options.length=30] The maximum string length.\n * @param {string} [options.omission='...'] The string to indicate text is omitted.\n * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n * @returns {string} Returns the truncated string.\n * @example\n *\n * _.truncate('hi-diddly-ho there, neighborino');\n * // => 'hi-diddly-ho there, neighbo...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': ' '\n * });\n * // => 'hi-diddly-ho there,...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': /,? +/\n * });\n * // => 'hi-diddly-ho there...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'omission': ' [...]'\n * });\n * // => 'hi-diddly-ho there, neig [...]'\n */\n function truncate(string, options) {\n var length = DEFAULT_TRUNC_LENGTH,\n omission = DEFAULT_TRUNC_OMISSION;\n\n if (isObject(options)) {\n var separator = 'separator' in options ? options.separator : separator;\n length = 'length' in options ? toInteger(options.length) : length;\n omission = 'omission' in options ? baseToString(options.omission) : omission;\n }\n string = toString(string);\n\n var strLength = string.length;\n if (hasUnicode(string)) {\n var strSymbols = stringToArray(string);\n strLength = strSymbols.length;\n }\n if (length >= strLength) {\n return string;\n }\n var end = length - stringSize(omission);\n if (end < 1) {\n return omission;\n }\n var result = strSymbols\n ? castSlice(strSymbols, 0, end).join('')\n : string.slice(0, end);\n\n if (separator === undefined) {\n return result + omission;\n }\n if (strSymbols) {\n end += (result.length - end);\n }\n if (isRegExp(separator)) {\n if (string.slice(end).search(separator)) {\n var match,\n substring = result;\n\n if (!separator.global) {\n separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n }\n separator.lastIndex = 0;\n while ((match = separator.exec(substring))) {\n var newEnd = match.index;\n }\n result = result.slice(0, newEnd === undefined ? end : newEnd);\n }\n } else if (string.indexOf(baseToString(separator), end) != end) {\n var index = result.lastIndexOf(separator);\n if (index > -1) {\n result = result.slice(0, index);\n }\n }\n return result + omission;\n }\n\n /**\n * The inverse of `_.escape`; this method converts the HTML entities\n * `&`, `<`, `>`, `"`, and `'` in `string` to\n * their corresponding characters.\n *\n * **Note:** No other HTML entities are unescaped. To unescape additional\n * HTML entities use a third-party library like [_he_](https://mths.be/he).\n *\n * @static\n * @memberOf _\n * @since 0.6.0\n * @category String\n * @param {string} [string=''] The string to unescape.\n * @returns {string} Returns the unescaped string.\n * @example\n *\n * _.unescape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function unescape(string) {\n string = toString(string);\n return (string && reHasEscapedHtml.test(string))\n ? string.replace(reEscapedHtml, unescapeHtmlChar)\n : string;\n }\n\n /**\n * Converts `string`, as space separated words, to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.upperCase('--foo-bar');\n * // => 'FOO BAR'\n *\n * _.upperCase('fooBar');\n * // => 'FOO BAR'\n *\n * _.upperCase('__foo_bar__');\n * // => 'FOO BAR'\n */\n var upperCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toUpperCase();\n });\n\n /**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\n var upperFirst = createCaseFirst('toUpperCase');\n\n /**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\n function words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Attempts to invoke `func`, returning either the result or the caught error\n * object. Any additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Function} func The function to attempt.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {*} Returns the `func` result or error object.\n * @example\n *\n * // Avoid throwing errors for invalid selectors.\n * var elements = _.attempt(function(selector) {\n * return document.querySelectorAll(selector);\n * }, '>_>');\n *\n * if (_.isError(elements)) {\n * elements = [];\n * }\n */\n var attempt = baseRest(function(func, args) {\n try {\n return apply(func, undefined, args);\n } catch (e) {\n return isError(e) ? e : new Error(e);\n }\n });\n\n /**\n * Binds methods of an object to the object itself, overwriting the existing\n * method.\n *\n * **Note:** This method doesn't set the \"length\" property of bound functions.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Object} object The object to bind and assign the bound methods to.\n * @param {...(string|string[])} methodNames The object method names to bind.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var view = {\n * 'label': 'docs',\n * 'click': function() {\n * console.log('clicked ' + this.label);\n * }\n * };\n *\n * _.bindAll(view, ['click']);\n * jQuery(element).on('click', view.click);\n * // => Logs 'clicked docs' when clicked.\n */\n var bindAll = flatRest(function(object, methodNames) {\n arrayEach(methodNames, function(key) {\n key = toKey(key);\n baseAssignValue(object, key, bind(object[key], object));\n });\n return object;\n });\n\n /**\n * Creates a function that iterates over `pairs` and invokes the corresponding\n * function of the first predicate to return truthy. The predicate-function\n * pairs are invoked with the `this` binding and arguments of the created\n * function.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Array} pairs The predicate-function pairs.\n * @returns {Function} Returns the new composite function.\n * @example\n *\n * var func = _.cond([\n * [_.matches({ 'a': 1 }), _.constant('matches A')],\n * [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],\n * [_.stubTrue, _.constant('no match')]\n * ]);\n *\n * func({ 'a': 1, 'b': 2 });\n * // => 'matches A'\n *\n * func({ 'a': 0, 'b': 1 });\n * // => 'matches B'\n *\n * func({ 'a': '1', 'b': '2' });\n * // => 'no match'\n */\n function cond(pairs) {\n var length = pairs == null ? 0 : pairs.length,\n toIteratee = getIteratee();\n\n pairs = !length ? [] : arrayMap(pairs, function(pair) {\n if (typeof pair[1] != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return [toIteratee(pair[0]), pair[1]];\n });\n\n return baseRest(function(args) {\n var index = -1;\n while (++index < length) {\n var pair = pairs[index];\n if (apply(pair[0], this, args)) {\n return apply(pair[1], this, args);\n }\n }\n });\n }\n\n /**\n * Creates a function that invokes the predicate properties of `source` with\n * the corresponding property values of a given object, returning `true` if\n * all predicates return truthy, else `false`.\n *\n * **Note:** The created function is equivalent to `_.conformsTo` with\n * `source` partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 2, 'b': 1 },\n * { 'a': 1, 'b': 2 }\n * ];\n *\n * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));\n * // => [{ 'a': 1, 'b': 2 }]\n */\n function conforms(source) {\n return baseConforms(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\n function constant(value) {\n return function() {\n return value;\n };\n }\n\n /**\n * Checks `value` to determine whether a default value should be returned in\n * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,\n * or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Util\n * @param {*} value The value to check.\n * @param {*} defaultValue The default value.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * _.defaultTo(1, 10);\n * // => 1\n *\n * _.defaultTo(undefined, 10);\n * // => 10\n */\n function defaultTo(value, defaultValue) {\n return (value == null || value !== value) ? defaultValue : value;\n }\n\n /**\n * Creates a function that returns the result of invoking the given functions\n * with the `this` binding of the created function, where each successive\n * invocation is supplied the return value of the previous.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flowRight\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flow([_.add, square]);\n * addSquare(1, 2);\n * // => 9\n */\n var flow = createFlow();\n\n /**\n * This method is like `_.flow` except that it creates a function that\n * invokes the given functions from right to left.\n *\n * @static\n * @since 3.0.0\n * @memberOf _\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flow\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flowRight([square, _.add]);\n * addSquare(1, 2);\n * // => 9\n */\n var flowRight = createFlow(true);\n\n /**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\n function identity(value) {\n return value;\n }\n\n /**\n * Creates a function that invokes `func` with the arguments of the created\n * function. If `func` is a property name, the created function returns the\n * property value for a given element. If `func` is an array or object, the\n * created function returns `true` for elements that contain the equivalent\n * source properties, otherwise it returns `false`.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Util\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @returns {Function} Returns the callback.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, _.iteratee(['user', 'fred']));\n * // => [{ 'user': 'fred', 'age': 40 }]\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, _.iteratee('user'));\n * // => ['barney', 'fred']\n *\n * // Create custom iteratee shorthands.\n * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n * return !_.isRegExp(func) ? iteratee(func) : function(string) {\n * return func.test(string);\n * };\n * });\n *\n * _.filter(['abc', 'def'], /ef/);\n * // => ['def']\n */\n function iteratee(func) {\n return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between a given\n * object and `source`, returning `true` if the given object has equivalent\n * property values, else `false`.\n *\n * **Note:** The created function is equivalent to `_.isMatch` with `source`\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n */\n function matches(source) {\n return baseMatches(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between the\n * value at `path` of a given object to `srcValue`, returning `true` if the\n * object value is equivalent, else `false`.\n *\n * **Note:** Partial comparisons will match empty array and empty object\n * `srcValue` values against any array or object value, respectively. See\n * `_.isEqual` for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.find(objects, _.matchesProperty('a', 4));\n * // => { 'a': 4, 'b': 5, 'c': 6 }\n */\n function matchesProperty(path, srcValue) {\n return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that invokes the method at `path` of a given object.\n * Any additional arguments are provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': _.constant(2) } },\n * { 'a': { 'b': _.constant(1) } }\n * ];\n *\n * _.map(objects, _.method('a.b'));\n * // => [2, 1]\n *\n * _.map(objects, _.method(['a', 'b']));\n * // => [2, 1]\n */\n var method = baseRest(function(path, args) {\n return function(object) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * The opposite of `_.method`; this method creates a function that invokes\n * the method at a given path of `object`. Any additional arguments are\n * provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Object} object The object to query.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var array = _.times(3, _.constant),\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.methodOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.methodOf(object));\n * // => [2, 0]\n */\n var methodOf = baseRest(function(object, args) {\n return function(path) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * Adds all own enumerable string keyed function properties of a source\n * object to the destination object. If `object` is a function, then methods\n * are added to its prototype as well.\n *\n * **Note:** Use `_.runInContext` to create a pristine `lodash` function to\n * avoid conflicts caused by modifying the original.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Function|Object} [object=lodash] The destination object.\n * @param {Object} source The object of functions to add.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.chain=true] Specify whether mixins are chainable.\n * @returns {Function|Object} Returns `object`.\n * @example\n *\n * function vowels(string) {\n * return _.filter(string, function(v) {\n * return /[aeiou]/i.test(v);\n * });\n * }\n *\n * _.mixin({ 'vowels': vowels });\n * _.vowels('fred');\n * // => ['e']\n *\n * _('fred').vowels().value();\n * // => ['e']\n *\n * _.mixin({ 'vowels': vowels }, { 'chain': false });\n * _('fred').vowels();\n * // => ['e']\n */\n function mixin(object, source, options) {\n var props = keys(source),\n methodNames = baseFunctions(source, props);\n\n if (options == null &&\n !(isObject(source) && (methodNames.length || !props.length))) {\n options = source;\n source = object;\n object = this;\n methodNames = baseFunctions(source, keys(source));\n }\n var chain = !(isObject(options) && 'chain' in options) || !!options.chain,\n isFunc = isFunction(object);\n\n arrayEach(methodNames, function(methodName) {\n var func = source[methodName];\n object[methodName] = func;\n if (isFunc) {\n object.prototype[methodName] = function() {\n var chainAll = this.__chain__;\n if (chain || chainAll) {\n var result = object(this.__wrapped__),\n actions = result.__actions__ = copyArray(this.__actions__);\n\n actions.push({ 'func': func, 'args': arguments, 'thisArg': object });\n result.__chain__ = chainAll;\n return result;\n }\n return func.apply(object, arrayPush([this.value()], arguments));\n };\n }\n });\n\n return object;\n }\n\n /**\n * Reverts the `_` variable to its previous value and returns a reference to\n * the `lodash` function.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @returns {Function} Returns the `lodash` function.\n * @example\n *\n * var lodash = _.noConflict();\n */\n function noConflict() {\n if (root._ === this) {\n root._ = oldDash;\n }\n return this;\n }\n\n /**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\n function noop() {\n // No operation performed.\n }\n\n /**\n * Creates a function that gets the argument at index `n`. If `n` is negative,\n * the nth argument from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [n=0] The index of the argument to return.\n * @returns {Function} Returns the new pass-thru function.\n * @example\n *\n * var func = _.nthArg(1);\n * func('a', 'b', 'c', 'd');\n * // => 'b'\n *\n * var func = _.nthArg(-2);\n * func('a', 'b', 'c', 'd');\n * // => 'c'\n */\n function nthArg(n) {\n n = toInteger(n);\n return baseRest(function(args) {\n return baseNth(args, n);\n });\n }\n\n /**\n * Creates a function that invokes `iteratees` with the arguments it receives\n * and returns their results.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to invoke.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.over([Math.max, Math.min]);\n *\n * func(1, 2, 3, 4);\n * // => [4, 1]\n */\n var over = createOver(arrayMap);\n\n /**\n * Creates a function that checks if **all** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overEvery([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => false\n *\n * func(NaN);\n * // => false\n */\n var overEvery = createOver(arrayEvery);\n\n /**\n * Creates a function that checks if **any** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overSome([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => true\n *\n * func(NaN);\n * // => false\n */\n var overSome = createOver(arraySome);\n\n /**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\n function property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n }\n\n /**\n * The opposite of `_.property`; this method creates a function that returns\n * the value at a given path of `object`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var array = [0, 1, 2],\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.propertyOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));\n * // => [2, 0]\n */\n function propertyOf(object) {\n return function(path) {\n return object == null ? undefined : baseGet(object, path);\n };\n }\n\n /**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\n var range = createRange();\n\n /**\n * This method is like `_.range` except that it populates values in\n * descending order.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.range\n * @example\n *\n * _.rangeRight(4);\n * // => [3, 2, 1, 0]\n *\n * _.rangeRight(-4);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 5);\n * // => [4, 3, 2, 1]\n *\n * _.rangeRight(0, 20, 5);\n * // => [15, 10, 5, 0]\n *\n * _.rangeRight(0, -4, -1);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.rangeRight(0);\n * // => []\n */\n var rangeRight = createRange(true);\n\n /**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\n function stubArray() {\n return [];\n }\n\n /**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\n function stubFalse() {\n return false;\n }\n\n /**\n * This method returns a new empty object.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Object} Returns the new empty object.\n * @example\n *\n * var objects = _.times(2, _.stubObject);\n *\n * console.log(objects);\n * // => [{}, {}]\n *\n * console.log(objects[0] === objects[1]);\n * // => false\n */\n function stubObject() {\n return {};\n }\n\n /**\n * This method returns an empty string.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {string} Returns the empty string.\n * @example\n *\n * _.times(2, _.stubString);\n * // => ['', '']\n */\n function stubString() {\n return '';\n }\n\n /**\n * This method returns `true`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `true`.\n * @example\n *\n * _.times(2, _.stubTrue);\n * // => [true, true]\n */\n function stubTrue() {\n return true;\n }\n\n /**\n * Invokes the iteratee `n` times, returning an array of the results of\n * each invocation. The iteratee is invoked with one argument; (index).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.times(3, String);\n * // => ['0', '1', '2']\n *\n * _.times(4, _.constant(0));\n * // => [0, 0, 0, 0]\n */\n function times(n, iteratee) {\n n = toInteger(n);\n if (n < 1 || n > MAX_SAFE_INTEGER) {\n return [];\n }\n var index = MAX_ARRAY_LENGTH,\n length = nativeMin(n, MAX_ARRAY_LENGTH);\n\n iteratee = getIteratee(iteratee);\n n -= MAX_ARRAY_LENGTH;\n\n var result = baseTimes(length, iteratee);\n while (++index < n) {\n iteratee(index);\n }\n return result;\n }\n\n /**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\n function toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n }\n\n /**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\n function uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Adds two numbers.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {number} augend The first number in an addition.\n * @param {number} addend The second number in an addition.\n * @returns {number} Returns the total.\n * @example\n *\n * _.add(6, 4);\n * // => 10\n */\n var add = createMathOperation(function(augend, addend) {\n return augend + addend;\n }, 0);\n\n /**\n * Computes `number` rounded up to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round up.\n * @param {number} [precision=0] The precision to round up to.\n * @returns {number} Returns the rounded up number.\n * @example\n *\n * _.ceil(4.006);\n * // => 5\n *\n * _.ceil(6.004, 2);\n * // => 6.01\n *\n * _.ceil(6040, -2);\n * // => 6100\n */\n var ceil = createRound('ceil');\n\n /**\n * Divide two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} dividend The first number in a division.\n * @param {number} divisor The second number in a division.\n * @returns {number} Returns the quotient.\n * @example\n *\n * _.divide(6, 4);\n * // => 1.5\n */\n var divide = createMathOperation(function(dividend, divisor) {\n return dividend / divisor;\n }, 1);\n\n /**\n * Computes `number` rounded down to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round down.\n * @param {number} [precision=0] The precision to round down to.\n * @returns {number} Returns the rounded down number.\n * @example\n *\n * _.floor(4.006);\n * // => 4\n *\n * _.floor(0.046, 2);\n * // => 0.04\n *\n * _.floor(4060, -2);\n * // => 4000\n */\n var floor = createRound('floor');\n\n /**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\n function max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n }\n\n /**\n * This method is like `_.max` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\n function maxBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)\n : undefined;\n }\n\n /**\n * Computes the mean of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the mean.\n * @example\n *\n * _.mean([4, 2, 8, 6]);\n * // => 5\n */\n function mean(array) {\n return baseMean(array, identity);\n }\n\n /**\n * This method is like `_.mean` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be averaged.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the mean.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.meanBy(objects, function(o) { return o.n; });\n * // => 5\n *\n * // The `_.property` iteratee shorthand.\n * _.meanBy(objects, 'n');\n * // => 5\n */\n function meanBy(array, iteratee) {\n return baseMean(array, getIteratee(iteratee, 2));\n }\n\n /**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\n function min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n }\n\n /**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\n function minBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)\n : undefined;\n }\n\n /**\n * Multiply two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} multiplier The first number in a multiplication.\n * @param {number} multiplicand The second number in a multiplication.\n * @returns {number} Returns the product.\n * @example\n *\n * _.multiply(6, 4);\n * // => 24\n */\n var multiply = createMathOperation(function(multiplier, multiplicand) {\n return multiplier * multiplicand;\n }, 1);\n\n /**\n * Computes `number` rounded to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round.\n * @param {number} [precision=0] The precision to round to.\n * @returns {number} Returns the rounded number.\n * @example\n *\n * _.round(4.006);\n * // => 4\n *\n * _.round(4.006, 2);\n * // => 4.01\n *\n * _.round(4060, -2);\n * // => 4100\n */\n var round = createRound('round');\n\n /**\n * Subtract two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {number} minuend The first number in a subtraction.\n * @param {number} subtrahend The second number in a subtraction.\n * @returns {number} Returns the difference.\n * @example\n *\n * _.subtract(6, 4);\n * // => 2\n */\n var subtract = createMathOperation(function(minuend, subtrahend) {\n return minuend - subtrahend;\n }, 0);\n\n /**\n * Computes the sum of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the sum.\n * @example\n *\n * _.sum([4, 2, 8, 6]);\n * // => 20\n */\n function sum(array) {\n return (array && array.length)\n ? baseSum(array, identity)\n : 0;\n }\n\n /**\n * This method is like `_.sum` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be summed.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the sum.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.sumBy(objects, function(o) { return o.n; });\n * // => 20\n *\n * // The `_.property` iteratee shorthand.\n * _.sumBy(objects, 'n');\n * // => 20\n */\n function sumBy(array, iteratee) {\n return (array && array.length)\n ? baseSum(array, getIteratee(iteratee, 2))\n : 0;\n }\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return wrapped values in chain sequences.\n lodash.after = after;\n lodash.ary = ary;\n lodash.assign = assign;\n lodash.assignIn = assignIn;\n lodash.assignInWith = assignInWith;\n lodash.assignWith = assignWith;\n lodash.at = at;\n lodash.before = before;\n lodash.bind = bind;\n lodash.bindAll = bindAll;\n lodash.bindKey = bindKey;\n lodash.castArray = castArray;\n lodash.chain = chain;\n lodash.chunk = chunk;\n lodash.compact = compact;\n lodash.concat = concat;\n lodash.cond = cond;\n lodash.conforms = conforms;\n lodash.constant = constant;\n lodash.countBy = countBy;\n lodash.create = create;\n lodash.curry = curry;\n lodash.curryRight = curryRight;\n lodash.debounce = debounce;\n lodash.defaults = defaults;\n lodash.defaultsDeep = defaultsDeep;\n lodash.defer = defer;\n lodash.delay = delay;\n lodash.difference = difference;\n lodash.differenceBy = differenceBy;\n lodash.differenceWith = differenceWith;\n lodash.drop = drop;\n lodash.dropRight = dropRight;\n lodash.dropRightWhile = dropRightWhile;\n lodash.dropWhile = dropWhile;\n lodash.fill = fill;\n lodash.filter = filter;\n lodash.flatMap = flatMap;\n lodash.flatMapDeep = flatMapDeep;\n lodash.flatMapDepth = flatMapDepth;\n lodash.flatten = flatten;\n lodash.flattenDeep = flattenDeep;\n lodash.flattenDepth = flattenDepth;\n lodash.flip = flip;\n lodash.flow = flow;\n lodash.flowRight = flowRight;\n lodash.fromPairs = fromPairs;\n lodash.functions = functions;\n lodash.functionsIn = functionsIn;\n lodash.groupBy = groupBy;\n lodash.initial = initial;\n lodash.intersection = intersection;\n lodash.intersectionBy = intersectionBy;\n lodash.intersectionWith = intersectionWith;\n lodash.invert = invert;\n lodash.invertBy = invertBy;\n lodash.invokeMap = invokeMap;\n lodash.iteratee = iteratee;\n lodash.keyBy = keyBy;\n lodash.keys = keys;\n lodash.keysIn = keysIn;\n lodash.map = map;\n lodash.mapKeys = mapKeys;\n lodash.mapValues = mapValues;\n lodash.matches = matches;\n lodash.matchesProperty = matchesProperty;\n lodash.memoize = memoize;\n lodash.merge = merge;\n lodash.mergeWith = mergeWith;\n lodash.method = method;\n lodash.methodOf = methodOf;\n lodash.mixin = mixin;\n lodash.negate = negate;\n lodash.nthArg = nthArg;\n lodash.omit = omit;\n lodash.omitBy = omitBy;\n lodash.once = once;\n lodash.orderBy = orderBy;\n lodash.over = over;\n lodash.overArgs = overArgs;\n lodash.overEvery = overEvery;\n lodash.overSome = overSome;\n lodash.partial = partial;\n lodash.partialRight = partialRight;\n lodash.partition = partition;\n lodash.pick = pick;\n lodash.pickBy = pickBy;\n lodash.property = property;\n lodash.propertyOf = propertyOf;\n lodash.pull = pull;\n lodash.pullAll = pullAll;\n lodash.pullAllBy = pullAllBy;\n lodash.pullAllWith = pullAllWith;\n lodash.pullAt = pullAt;\n lodash.range = range;\n lodash.rangeRight = rangeRight;\n lodash.rearg = rearg;\n lodash.reject = reject;\n lodash.remove = remove;\n lodash.rest = rest;\n lodash.reverse = reverse;\n lodash.sampleSize = sampleSize;\n lodash.set = set;\n lodash.setWith = setWith;\n lodash.shuffle = shuffle;\n lodash.slice = slice;\n lodash.sortBy = sortBy;\n lodash.sortedUniq = sortedUniq;\n lodash.sortedUniqBy = sortedUniqBy;\n lodash.split = split;\n lodash.spread = spread;\n lodash.tail = tail;\n lodash.take = take;\n lodash.takeRight = takeRight;\n lodash.takeRightWhile = takeRightWhile;\n lodash.takeWhile = takeWhile;\n lodash.tap = tap;\n lodash.throttle = throttle;\n lodash.thru = thru;\n lodash.toArray = toArray;\n lodash.toPairs = toPairs;\n lodash.toPairsIn = toPairsIn;\n lodash.toPath = toPath;\n lodash.toPlainObject = toPlainObject;\n lodash.transform = transform;\n lodash.unary = unary;\n lodash.union = union;\n lodash.unionBy = unionBy;\n lodash.unionWith = unionWith;\n lodash.uniq = uniq;\n lodash.uniqBy = uniqBy;\n lodash.uniqWith = uniqWith;\n lodash.unset = unset;\n lodash.unzip = unzip;\n lodash.unzipWith = unzipWith;\n lodash.update = update;\n lodash.updateWith = updateWith;\n lodash.values = values;\n lodash.valuesIn = valuesIn;\n lodash.without = without;\n lodash.words = words;\n lodash.wrap = wrap;\n lodash.xor = xor;\n lodash.xorBy = xorBy;\n lodash.xorWith = xorWith;\n lodash.zip = zip;\n lodash.zipObject = zipObject;\n lodash.zipObjectDeep = zipObjectDeep;\n lodash.zipWith = zipWith;\n\n // Add aliases.\n lodash.entries = toPairs;\n lodash.entriesIn = toPairsIn;\n lodash.extend = assignIn;\n lodash.extendWith = assignInWith;\n\n // Add methods to `lodash.prototype`.\n mixin(lodash, lodash);\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return unwrapped values in chain sequences.\n lodash.add = add;\n lodash.attempt = attempt;\n lodash.camelCase = camelCase;\n lodash.capitalize = capitalize;\n lodash.ceil = ceil;\n lodash.clamp = clamp;\n lodash.clone = clone;\n lodash.cloneDeep = cloneDeep;\n lodash.cloneDeepWith = cloneDeepWith;\n lodash.cloneWith = cloneWith;\n lodash.conformsTo = conformsTo;\n lodash.deburr = deburr;\n lodash.defaultTo = defaultTo;\n lodash.divide = divide;\n lodash.endsWith = endsWith;\n lodash.eq = eq;\n lodash.escape = escape;\n lodash.escapeRegExp = escapeRegExp;\n lodash.every = every;\n lodash.find = find;\n lodash.findIndex = findIndex;\n lodash.findKey = findKey;\n lodash.findLast = findLast;\n lodash.findLastIndex = findLastIndex;\n lodash.findLastKey = findLastKey;\n lodash.floor = floor;\n lodash.forEach = forEach;\n lodash.forEachRight = forEachRight;\n lodash.forIn = forIn;\n lodash.forInRight = forInRight;\n lodash.forOwn = forOwn;\n lodash.forOwnRight = forOwnRight;\n lodash.get = get;\n lodash.gt = gt;\n lodash.gte = gte;\n lodash.has = has;\n lodash.hasIn = hasIn;\n lodash.head = head;\n lodash.identity = identity;\n lodash.includes = includes;\n lodash.indexOf = indexOf;\n lodash.inRange = inRange;\n lodash.invoke = invoke;\n lodash.isArguments = isArguments;\n lodash.isArray = isArray;\n lodash.isArrayBuffer = isArrayBuffer;\n lodash.isArrayLike = isArrayLike;\n lodash.isArrayLikeObject = isArrayLikeObject;\n lodash.isBoolean = isBoolean;\n lodash.isBuffer = isBuffer;\n lodash.isDate = isDate;\n lodash.isElement = isElement;\n lodash.isEmpty = isEmpty;\n lodash.isEqual = isEqual;\n lodash.isEqualWith = isEqualWith;\n lodash.isError = isError;\n lodash.isFinite = isFinite;\n lodash.isFunction = isFunction;\n lodash.isInteger = isInteger;\n lodash.isLength = isLength;\n lodash.isMap = isMap;\n lodash.isMatch = isMatch;\n lodash.isMatchWith = isMatchWith;\n lodash.isNaN = isNaN;\n lodash.isNative = isNative;\n lodash.isNil = isNil;\n lodash.isNull = isNull;\n lodash.isNumber = isNumber;\n lodash.isObject = isObject;\n lodash.isObjectLike = isObjectLike;\n lodash.isPlainObject = isPlainObject;\n lodash.isRegExp = isRegExp;\n lodash.isSafeInteger = isSafeInteger;\n lodash.isSet = isSet;\n lodash.isString = isString;\n lodash.isSymbol = isSymbol;\n lodash.isTypedArray = isTypedArray;\n lodash.isUndefined = isUndefined;\n lodash.isWeakMap = isWeakMap;\n lodash.isWeakSet = isWeakSet;\n lodash.join = join;\n lodash.kebabCase = kebabCase;\n lodash.last = last;\n lodash.lastIndexOf = lastIndexOf;\n lodash.lowerCase = lowerCase;\n lodash.lowerFirst = lowerFirst;\n lodash.lt = lt;\n lodash.lte = lte;\n lodash.max = max;\n lodash.maxBy = maxBy;\n lodash.mean = mean;\n lodash.meanBy = meanBy;\n lodash.min = min;\n lodash.minBy = minBy;\n lodash.stubArray = stubArray;\n lodash.stubFalse = stubFalse;\n lodash.stubObject = stubObject;\n lodash.stubString = stubString;\n lodash.stubTrue = stubTrue;\n lodash.multiply = multiply;\n lodash.nth = nth;\n lodash.noConflict = noConflict;\n lodash.noop = noop;\n lodash.now = now;\n lodash.pad = pad;\n lodash.padEnd = padEnd;\n lodash.padStart = padStart;\n lodash.parseInt = parseInt;\n lodash.random = random;\n lodash.reduce = reduce;\n lodash.reduceRight = reduceRight;\n lodash.repeat = repeat;\n lodash.replace = replace;\n lodash.result = result;\n lodash.round = round;\n lodash.runInContext = runInContext;\n lodash.sample = sample;\n lodash.size = size;\n lodash.snakeCase = snakeCase;\n lodash.some = some;\n lodash.sortedIndex = sortedIndex;\n lodash.sortedIndexBy = sortedIndexBy;\n lodash.sortedIndexOf = sortedIndexOf;\n lodash.sortedLastIndex = sortedLastIndex;\n lodash.sortedLastIndexBy = sortedLastIndexBy;\n lodash.sortedLastIndexOf = sortedLastIndexOf;\n lodash.startCase = startCase;\n lodash.startsWith = startsWith;\n lodash.subtract = subtract;\n lodash.sum = sum;\n lodash.sumBy = sumBy;\n lodash.template = template;\n lodash.times = times;\n lodash.toFinite = toFinite;\n lodash.toInteger = toInteger;\n lodash.toLength = toLength;\n lodash.toLower = toLower;\n lodash.toNumber = toNumber;\n lodash.toSafeInteger = toSafeInteger;\n lodash.toString = toString;\n lodash.toUpper = toUpper;\n lodash.trim = trim;\n lodash.trimEnd = trimEnd;\n lodash.trimStart = trimStart;\n lodash.truncate = truncate;\n lodash.unescape = unescape;\n lodash.uniqueId = uniqueId;\n lodash.upperCase = upperCase;\n lodash.upperFirst = upperFirst;\n\n // Add aliases.\n lodash.each = forEach;\n lodash.eachRight = forEachRight;\n lodash.first = head;\n\n mixin(lodash, (function() {\n var source = {};\n baseForOwn(lodash, function(func, methodName) {\n if (!hasOwnProperty.call(lodash.prototype, methodName)) {\n source[methodName] = func;\n }\n });\n return source;\n }()), { 'chain': false });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The semantic version number.\n *\n * @static\n * @memberOf _\n * @type {string}\n */\n lodash.VERSION = VERSION;\n\n // Assign default placeholders.\n arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {\n lodash[methodName].placeholder = lodash;\n });\n\n // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.\n arrayEach(['drop', 'take'], function(methodName, index) {\n LazyWrapper.prototype[methodName] = function(n) {\n n = n === undefined ? 1 : nativeMax(toInteger(n), 0);\n\n var result = (this.__filtered__ && !index)\n ? new LazyWrapper(this)\n : this.clone();\n\n if (result.__filtered__) {\n result.__takeCount__ = nativeMin(n, result.__takeCount__);\n } else {\n result.__views__.push({\n 'size': nativeMin(n, MAX_ARRAY_LENGTH),\n 'type': methodName + (result.__dir__ < 0 ? 'Right' : '')\n });\n }\n return result;\n };\n\n LazyWrapper.prototype[methodName + 'Right'] = function(n) {\n return this.reverse()[methodName](n).reverse();\n };\n });\n\n // Add `LazyWrapper` methods that accept an `iteratee` value.\n arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {\n var type = index + 1,\n isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;\n\n LazyWrapper.prototype[methodName] = function(iteratee) {\n var result = this.clone();\n result.__iteratees__.push({\n 'iteratee': getIteratee(iteratee, 3),\n 'type': type\n });\n result.__filtered__ = result.__filtered__ || isFilter;\n return result;\n };\n });\n\n // Add `LazyWrapper` methods for `_.head` and `_.last`.\n arrayEach(['head', 'last'], function(methodName, index) {\n var takeName = 'take' + (index ? 'Right' : '');\n\n LazyWrapper.prototype[methodName] = function() {\n return this[takeName](1).value()[0];\n };\n });\n\n // Add `LazyWrapper` methods for `_.initial` and `_.tail`.\n arrayEach(['initial', 'tail'], function(methodName, index) {\n var dropName = 'drop' + (index ? '' : 'Right');\n\n LazyWrapper.prototype[methodName] = function() {\n return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);\n };\n });\n\n LazyWrapper.prototype.compact = function() {\n return this.filter(identity);\n };\n\n LazyWrapper.prototype.find = function(predicate) {\n return this.filter(predicate).head();\n };\n\n LazyWrapper.prototype.findLast = function(predicate) {\n return this.reverse().find(predicate);\n };\n\n LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {\n if (typeof path == 'function') {\n return new LazyWrapper(this);\n }\n return this.map(function(value) {\n return baseInvoke(value, path, args);\n });\n });\n\n LazyWrapper.prototype.reject = function(predicate) {\n return this.filter(negate(getIteratee(predicate)));\n };\n\n LazyWrapper.prototype.slice = function(start, end) {\n start = toInteger(start);\n\n var result = this;\n if (result.__filtered__ && (start > 0 || end < 0)) {\n return new LazyWrapper(result);\n }\n if (start < 0) {\n result = result.takeRight(-start);\n } else if (start) {\n result = result.drop(start);\n }\n if (end !== undefined) {\n end = toInteger(end);\n result = end < 0 ? result.dropRight(-end) : result.take(end - start);\n }\n return result;\n };\n\n LazyWrapper.prototype.takeRightWhile = function(predicate) {\n return this.reverse().takeWhile(predicate).reverse();\n };\n\n LazyWrapper.prototype.toArray = function() {\n return this.take(MAX_ARRAY_LENGTH);\n };\n\n // Add `LazyWrapper` methods to `lodash.prototype`.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),\n isTaker = /^(?:head|last)$/.test(methodName),\n lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],\n retUnwrapped = isTaker || /^find/.test(methodName);\n\n if (!lodashFunc) {\n return;\n }\n lodash.prototype[methodName] = function() {\n var value = this.__wrapped__,\n args = isTaker ? [1] : arguments,\n isLazy = value instanceof LazyWrapper,\n iteratee = args[0],\n useLazy = isLazy || isArray(value);\n\n var interceptor = function(value) {\n var result = lodashFunc.apply(lodash, arrayPush([value], args));\n return (isTaker && chainAll) ? result[0] : result;\n };\n\n if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {\n // Avoid lazy use if the iteratee has a \"length\" value other than `1`.\n isLazy = useLazy = false;\n }\n var chainAll = this.__chain__,\n isHybrid = !!this.__actions__.length,\n isUnwrapped = retUnwrapped && !chainAll,\n onlyLazy = isLazy && !isHybrid;\n\n if (!retUnwrapped && useLazy) {\n value = onlyLazy ? value : new LazyWrapper(this);\n var result = func.apply(value, args);\n result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });\n return new LodashWrapper(result, chainAll);\n }\n if (isUnwrapped && onlyLazy) {\n return func.apply(this, args);\n }\n result = this.thru(interceptor);\n return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;\n };\n });\n\n // Add `Array` methods to `lodash.prototype`.\n arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {\n var func = arrayProto[methodName],\n chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',\n retUnwrapped = /^(?:pop|shift)$/.test(methodName);\n\n lodash.prototype[methodName] = function() {\n var args = arguments;\n if (retUnwrapped && !this.__chain__) {\n var value = this.value();\n return func.apply(isArray(value) ? value : [], args);\n }\n return this[chainName](function(value) {\n return func.apply(isArray(value) ? value : [], args);\n });\n };\n });\n\n // Map minified method names to their real names.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var lodashFunc = lodash[methodName];\n if (lodashFunc) {\n var key = (lodashFunc.name + ''),\n names = realNames[key] || (realNames[key] = []);\n\n names.push({ 'name': methodName, 'func': lodashFunc });\n }\n });\n\n realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{\n 'name': 'wrapper',\n 'func': undefined\n }];\n\n // Add methods to `LazyWrapper`.\n LazyWrapper.prototype.clone = lazyClone;\n LazyWrapper.prototype.reverse = lazyReverse;\n LazyWrapper.prototype.value = lazyValue;\n\n // Add chain sequence methods to the `lodash` wrapper.\n lodash.prototype.at = wrapperAt;\n lodash.prototype.chain = wrapperChain;\n lodash.prototype.commit = wrapperCommit;\n lodash.prototype.next = wrapperNext;\n lodash.prototype.plant = wrapperPlant;\n lodash.prototype.reverse = wrapperReverse;\n lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;\n\n // Add lazy aliases.\n lodash.prototype.first = lodash.prototype.head;\n\n if (symIterator) {\n lodash.prototype[symIterator] = wrapperToIterator;\n }\n return lodash;\n });\n\n /*--------------------------------------------------------------------------*/\n\n // Export lodash.\n var _ = runInContext();\n\n // Some AMD build optimizers, like r.js, check for condition patterns like:\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n // Expose Lodash on the global object to prevent errors when Lodash is\n // loaded by a script tag in the presence of an AMD loader.\n // See http://requirejs.org/docs/errors.html#mismatch for more details.\n // Use `_.noConflict` to remove Lodash from the global object.\n root._ = _;\n\n // Define as an anonymous module so, through path mapping, it can be\n // referenced as the \"underscore\" module.\n define(function() {\n return _;\n });\n }\n // Check for `exports` after `define` in case a build optimizer adds it.\n else if (freeModule) {\n // Export for Node.js.\n (freeModule.exports = _)._ = _;\n // Export for CommonJS support.\n freeExports._ = _;\n }\n else {\n // Export to the global object.\n root._ = _;\n }\n}.call(this));\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%40/gi, '@').\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('layout',[_c('section',{staticClass:\"main-content\"},[_c('div',{staticClass:\"card\"},[_c('div',{staticClass:\"card-header\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-7\"},[_vm._v(_vm._s(_vm.job.name))]),_vm._v(\" \"),_c('div',{staticClass:\"col-md-5 text-right\"},[_c('button',{staticClass:\"btn btn-primary btn-sm\",on:{\"click\":function($event){_vm.retry(_vm.job.id)}}},[_c('i',{staticClass:\"icon-sm\"},[_c('svg',{staticClass:\"fill-white\",class:{spin: _vm.retryingJob}},[_c('use',{attrs:{\"xmlns:xlink\":\"http://www.w3.org/1999/xlink\",\"xlink:href\":\"#zondicon-refresh\"}})])])])])])]),_vm._v(\" \"),_c('div',{staticClass:\"card-body\"},[(_vm.job.id)?_c('div',[_c('div',{staticClass:\"row mb-2\"},[_c('div',{staticClass:\"col-md-2\"},[_c('strong',[_vm._v(\"ID\")])]),_vm._v(\" \"),_c('div',{staticClass:\"col\"},[_vm._v(_vm._s(_vm.job.id))])]),_vm._v(\" \"),_c('div',{staticClass:\"row mb-2\"},[_c('div',{staticClass:\"col-md-2\"},[_c('strong',[_vm._v(\"Queue\")])]),_vm._v(\" \"),_c('div',{staticClass:\"col\"},[_vm._v(_vm._s(_vm.job.queue))])]),_vm._v(\" \"),_c('div',{staticClass:\"row mb-2\"},[_c('div',{staticClass:\"col-md-2\"},[_c('strong',[_vm._v(\"Tags\")])]),_vm._v(\" \"),_c('div',{staticClass:\"col\"},[_vm._v(_vm._s(_vm.job.payload.tags && _vm.job.payload.tags.length ? _vm.job.payload.tags.join(', ') : ''))])]),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-2\"},[_c('strong',[_vm._v(\"Failed At\")])]),_vm._v(\" \"),_c('div',{staticClass:\"col\"},[_vm._v(_vm._s(_vm.readableTimestamp(_vm.job.failed_at)))])]),_vm._v(\" \"),_c('hr'),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-2\"},[_c('strong',[_vm._v(\"Error\")])]),_vm._v(\" \"),_c('div',{staticClass:\"col\"},[_c('div',{staticClass:\"exceptionDisplay\",domProps:{\"innerHTML\":_vm._s(_vm.prettyPrintException(_vm.job.exception))}})])]),_vm._v(\" \"),_c('hr'),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-2\"},[_c('strong',[_vm._v(\"Data\")])]),_vm._v(\" \"),_c('div',{staticClass:\"col\"},[_c('p',{staticClass:\"jobDetailsText\",domProps:{\"innerHTML\":_vm._s(_vm.prettyPrintJob(_vm.job.payload.data))}})])])]):_vm._e()])]),_vm._v(\" \"),(!_vm.loadingJob && _vm.job.retried_by.length)?_c('div',{staticClass:\"card mt-4\"},[_c('div',{staticClass:\"card-header\"},[_vm._v(\"Recent Retries\")]),_vm._v(\" \"),_c('div',{staticClass:\"table-responsive\"},[_c('table',{staticClass:\"table card-table table-hover\"},[_c('thead',[_c('tr',[_c('th',[_vm._v(\"Job\")]),_vm._v(\" \"),_c('th',[_vm._v(\"ID\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Retry Time\")])])]),_vm._v(\" \"),_c('tbody',_vm._l((_vm.job.retried_by),function(retry){return _c('tr',[_c('td',{staticClass:\"d-flex\"},[_c('status',{staticClass:\"mr-2\",attrs:{\"active\":retry.status == 'completed',\"pending\":retry.status == 'pending'}}),_vm._v(\"\\n \"+_vm._s(retry.status.charAt(0).toUpperCase() + retry.status.slice(1))+\"\\n \")],1),_vm._v(\" \"),_c('td',[(retry.status == 'failed')?_c('a',{attrs:{\"href\":'/horizon/failed/'+retry.id}},[_vm._v(\"\\n \"+_vm._s(retry.id)+\"\\n \")]):_c('span',[_vm._v(_vm._s(retry.id))])]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm.readableTimestamp(retry.retried_at)))])])}),0)]),_vm._v(\" \"),(!_vm.job.retried_by)?_c('message',{attrs:{\"text\":\"There aren't any recent retries for this job\"}}):_vm._e()],1)]):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--4-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Job.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--4-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Job.vue?vue&type=script&lang=js&\"","<script type=\"text/ecmascript-6\">\n import phpunserialize from 'phpunserialize'\n import Layout from '../../layouts/MainLayout.vue'\n import Status from '../../components/Status/Status.vue'\n\n export default {\n props: ['jobId'],\n\n\n components: {Layout, Status},\n\n\n /**\n * The component's data.\n */\n data() {\n return {\n loadingJob: true,\n retryingJob: false,\n job: {}\n };\n },\n\n\n /**\n * Prepare the component.\n */\n mounted() {\n this.loadFailedJob(this.jobId)\n\n this.interval = setInterval(() => {\n this.reloadRetries();\n }, 3000);\n },\n\n\n /**\n * Clean after the component is destroyed.\n */\n destroyed(){\n clearInterval(this.interval);\n },\n\n\n methods: {\n loadFailedJob(id) {\n this.loadingJob = true;\n\n this.$http.get('/horizon/api/jobs/failed/' + id)\n .then(response => {\n this.job = response.data;\n\n this.loadingJob = false;\n });\n },\n\n\n /**\n * Reload the job retries.\n */\n reloadRetries() {\n this.$http.get('/horizon/api/jobs/failed/' + this.jobId)\n .then(response => {\n this.job.retried_by = response.data.retried_by;\n\n });\n },\n\n\n /**\n * Retry the given failed job.\n */\n retry(id) {\n if (this.retryingJob) {\n return;\n }\n\n this.retryingJob = true;\n\n this.$http.post('/horizon/api/jobs/retry/' + id)\n .then(() => {\n setTimeout(() => {\n this.reloadRetries();\n\n this.retryingJob = false;\n }, 3000);\n });\n },\n\n\n /**\n * Convert exception to a more readable format.\n */\n prettyPrintException(exception){\n var lines = _.split(exception, \"\\n\"),\n output = '';\n\n lines.forEach(line => {\n output += '<span>' + line + '</span>';\n });\n\n return output;\n },\n\n\n /**\n * Pretty print serialized job.\n *\n * @param data\n * @returns {string}\n */\n prettyPrintJob(data){\n return '<pre>' + JSON.stringify(data.command ? phpunserialize(data.command) : data, null, 2) + '</pre>';\n }\n }\n }\n</script>\n\n<template>\n <layout>\n <section class=\"main-content\">\n <div class=\"card\">\n <div class=\"card-header\">\n <div class=\"row\">\n <div class=\"col-md-7\">{{job.name}}</div>\n <div class=\"col-md-5 text-right\">\n <button @click=\"retry(job.id)\" class=\"btn btn-primary btn-sm\">\n <i class=\"icon-sm\">\n <svg class=\"fill-white\" :class=\"{spin: retryingJob}\">\n <use xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#zondicon-refresh\"></use>\n </svg>\n </i>\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"card-body\">\n <div v-if=\"job.id\">\n <div class=\"row mb-2\">\n <div class=\"col-md-2\"><strong>ID</strong></div>\n <div class=\"col\">{{job.id}}</div>\n </div>\n <div class=\"row mb-2\">\n <div class=\"col-md-2\"><strong>Queue</strong></div>\n <div class=\"col\">{{job.queue}}</div>\n </div>\n <div class=\"row mb-2\">\n <div class=\"col-md-2\"><strong>Tags</strong></div>\n <div class=\"col\">{{ job.payload.tags && job.payload.tags.length ? job.payload.tags.join(', ') : '' }}</div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-2\"><strong>Failed At</strong></div>\n <div class=\"col\">{{readableTimestamp(job.failed_at)}}</div>\n </div>\n\n <hr>\n\n <div class=\"row\">\n <div class=\"col-md-2\"><strong>Error</strong></div>\n <div class=\"col\">\n <div class=\"exceptionDisplay\" v-html=\"prettyPrintException(job.exception)\"></div>\n </div>\n </div>\n\n <hr>\n\n <div class=\"row\">\n <div class=\"col-md-2\"><strong>Data</strong></div>\n <div class=\"col\">\n <p class=\"jobDetailsText\" v-html=\"prettyPrintJob(job.payload.data)\"></p>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"card mt-4\" v-if=\"!loadingJob && job.retried_by.length\">\n <div class=\"card-header\">Recent Retries</div>\n\n <div class=\"table-responsive\">\n <table class=\"table card-table table-hover\">\n <thead>\n <tr>\n <th>Job</th>\n <th>ID</th>\n <th>Retry Time</th>\n </tr>\n </thead>\n <tbody>\n <tr v-for=\"retry in job.retried_by\">\n <td class=\"d-flex\">\n <status :active=\"retry.status == 'completed'\" :pending=\"retry.status == 'pending'\" class=\"mr-2\"/>\n {{ retry.status.charAt(0).toUpperCase() + retry.status.slice(1) }}\n </td>\n <td>\n <a v-if=\"retry.status == 'failed'\" :href=\"'/horizon/failed/'+retry.id\">\n {{ retry.id }}\n </a>\n <span v-else>{{ retry.id }}</span>\n </td>\n <td>{{readableTimestamp(retry.retried_at)}}</td>\n </tr>\n </tbody>\n </table>\n\n <message v-if=\"!job.retried_by\" text=\"There aren't any recent retries for this job\"/>\n </div>\n </div>\n </section>\n </layout>\n</template>\n","import { render, staticRenderFns } from \"./Job.vue?vue&type=template&id=68a2ead0&\"\nimport script from \"./Job.vue?vue&type=script&lang=js&\"\nexport * from \"./Job.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.Bar = function(context, config) {\n\t\tconfig.type = 'bar';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n error.request = request;\n error.response = response;\n return error;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar Element = require('../core/core.element');\nvar helpers = require('../helpers/index');\n\nvar defaultColor = defaults.global.defaultColor;\n\ndefaults._set('global', {\n\telements: {\n\t\tpoint: {\n\t\t\tradius: 3,\n\t\t\tpointStyle: 'circle',\n\t\t\tbackgroundColor: defaultColor,\n\t\t\tborderColor: defaultColor,\n\t\t\tborderWidth: 1,\n\t\t\t// Hover\n\t\t\thitRadius: 1,\n\t\t\thoverRadius: 4,\n\t\t\thoverBorderWidth: 1\n\t\t}\n\t}\n});\n\nfunction xRange(mouseX) {\n\tvar vm = this._view;\n\treturn vm ? (Math.abs(mouseX - vm.x) < vm.radius + vm.hitRadius) : false;\n}\n\nfunction yRange(mouseY) {\n\tvar vm = this._view;\n\treturn vm ? (Math.abs(mouseY - vm.y) < vm.radius + vm.hitRadius) : false;\n}\n\nmodule.exports = Element.extend({\n\tinRange: function(mouseX, mouseY) {\n\t\tvar vm = this._view;\n\t\treturn vm ? ((Math.pow(mouseX - vm.x, 2) + Math.pow(mouseY - vm.y, 2)) < Math.pow(vm.hitRadius + vm.radius, 2)) : false;\n\t},\n\n\tinLabelRange: xRange,\n\tinXRange: xRange,\n\tinYRange: yRange,\n\n\tgetCenterPoint: function() {\n\t\tvar vm = this._view;\n\t\treturn {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y\n\t\t};\n\t},\n\n\tgetArea: function() {\n\t\treturn Math.PI * Math.pow(this._view.radius, 2);\n\t},\n\n\ttooltipPosition: function() {\n\t\tvar vm = this._view;\n\t\treturn {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y,\n\t\t\tpadding: vm.radius + vm.borderWidth\n\t\t};\n\t},\n\n\tdraw: function(chartArea) {\n\t\tvar vm = this._view;\n\t\tvar model = this._model;\n\t\tvar ctx = this._chart.ctx;\n\t\tvar pointStyle = vm.pointStyle;\n\t\tvar rotation = vm.rotation;\n\t\tvar radius = vm.radius;\n\t\tvar x = vm.x;\n\t\tvar y = vm.y;\n\t\tvar errMargin = 1.01; // 1.01 is margin for Accumulated error. (Especially Edge, IE.)\n\n\t\tif (vm.skip) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Clipping for Points.\n\t\tif (chartArea === undefined || (model.x >= chartArea.left && chartArea.right * errMargin >= model.x && model.y >= chartArea.top && chartArea.bottom * errMargin >= model.y)) {\n\t\t\tctx.strokeStyle = vm.borderColor || defaultColor;\n\t\t\tctx.lineWidth = helpers.valueOrDefault(vm.borderWidth, defaults.global.elements.point.borderWidth);\n\t\t\tctx.fillStyle = vm.backgroundColor || defaultColor;\n\t\t\thelpers.canvas.drawPoint(ctx, pointStyle, radius, x, y, rotation);\n\t\t}\n\t}\n});\n","'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.Bubble = function(context, config) {\n\t\tconfig.type = 'bubble';\n\t\treturn new Chart(context, config);\n\t};\n\n};\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container\"},[_vm._m(0),_vm._v(\" \"),_c('main',{staticClass:\"mt-4 mb-4\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-2\"},[_c('main-sidebar')],1),_vm._v(\" \"),_c('div',{staticClass:\"col-md-10\"},[_vm._t(\"default\")],2)])]),_vm._v(\" \"),_c('footer',{staticClass:\"pt-4 pb-4 text-center\",attrs:{\"id\":\"mainFooter\"}},[_vm._v(\"\\n Laravel is a trademark of Taylor Otwell. Copyright © Laravel LLC. All rights reserved.\\n \")])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pt-4 pb-4\",attrs:{\"id\":\"mainHeader\"}},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('img',{attrs:{\"src\":\"/vendor/horizon/img/horizon.svg\"}})])])])}]\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./MainSidebar.vue?vue&type=template&id=1e1c686a&\"\nvar script = {}\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('aside',{attrs:{\"id\":\"mainSidebar\"}},[_c('ul',{staticClass:\"nav flex-column\"},[_c('router-link',{staticClass:\"nav-item\",attrs:{\"tag\":\"li\",\"to\":\"/dashboard\",\"active-class\":\"active\"}},[_c('a',{staticClass:\"nav-link\"},[_c('i',[_c('svg',[_c('use',{attrs:{\"xmlns:xlink\":\"http://www.w3.org/1999/xlink\",\"xlink:href\":\"#zondicon-dashboard\"}})])]),_vm._v(\"\\n Dashboard\\n \")])]),_vm._v(\" \"),_c('router-link',{staticClass:\"nav-item\",attrs:{\"tag\":\"li\",\"to\":\"/monitoring\",\"active-class\":\"active\"}},[_c('a',{staticClass:\"nav-link\"},[_c('i',[_c('svg',[_c('use',{attrs:{\"xmlns:xlink\":\"http://www.w3.org/1999/xlink\",\"xlink:href\":\"#zondicon-search\"}})])]),_vm._v(\"\\n Monitoring\\n \")])]),_vm._v(\" \"),_c('router-link',{staticClass:\"nav-item\",attrs:{\"tag\":\"li\",\"to\":\"/metrics\",\"active-class\":\"active\"}},[_c('a',{staticClass:\"nav-link\",attrs:{\"href\":\"#\"}},[_c('i',[_c('svg',[_c('use',{attrs:{\"xmlns:xlink\":\"http://www.w3.org/1999/xlink\",\"xlink:href\":\"#zondicon-chart-bar\"}})])]),_vm._v(\"\\n Metrics\\n \")])]),_vm._v(\" \"),_c('router-link',{staticClass:\"nav-item\",attrs:{\"tag\":\"li\",\"to\":\"/recent-jobs\",\"active-class\":\"active\"}},[_c('a',{staticClass:\"nav-link\",attrs:{\"href\":\"#\"}},[_c('i',[_c('svg',[_c('use',{attrs:{\"xmlns:xlink\":\"http://www.w3.org/1999/xlink\",\"xlink:href\":\"#zondicon-cog\"}})])]),_vm._v(\"\\n Recent Jobs\\n \")])]),_vm._v(\" \"),_c('router-link',{staticClass:\"nav-item\",attrs:{\"tag\":\"li\",\"to\":\"/failed\",\"active-class\":\"active\"}},[_c('a',{staticClass:\"nav-link\",attrs:{\"href\":\"#\"}},[_c('i',[_c('svg',[_c('use',{attrs:{\"xmlns:xlink\":\"http://www.w3.org/1999/xlink\",\"xlink:href\":\"#zondicon-close-outline\"}})])]),_vm._v(\"\\n Failed\\n \")])])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--4-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MainLayout.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--4-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MainLayout.vue?vue&type=script&lang=js&\"","<script type=\"text/ecmascript-6\">\n import Status from '../components/Status/Status.vue'\n import MainSidebar from './MainSidebar.vue'\n\n export default {\n components: {Status, MainSidebar}\n }\n</script>\n\n<template>\n <div class=\"container\">\n <div id=\"mainHeader\" class=\"pt-4 pb-4\">\n <div class=\"row\">\n <div class=\"col\">\n <img src=\"/vendor/horizon/img/horizon.svg\">\n </div>\n </div>\n </div>\n\n <main class=\"mt-4 mb-4\">\n <div class=\"row\">\n <div class=\"col-md-2\">\n <main-sidebar/>\n </div>\n\n <div class=\"col-md-10\">\n <slot/>\n </div>\n </div>\n </main>\n\n <footer id=\"mainFooter\" class=\"pt-4 pb-4 text-center\">\n Laravel is a trademark of Taylor Otwell. Copyright © Laravel LLC. All rights reserved.\n </footer>\n </div>\n</template>\n\n","import { render, staticRenderFns } from \"./MainLayout.vue?vue&type=template&id=24fbab10&\"\nimport script from \"./MainLayout.vue?vue&type=script&lang=js&\"\nexport * from \"./MainLayout.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/* global window: false */\n'use strict';\n\nvar moment = require('moment');\nmoment = typeof moment === 'function' ? moment : window.moment;\n\nvar defaults = require('../core/core.defaults');\nvar helpers = require('../helpers/index');\nvar Scale = require('../core/core.scale');\nvar scaleService = require('../core/core.scaleService');\n\n// Integer constants are from the ES6 spec.\nvar MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991;\nvar MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\n\nvar INTERVALS = {\n\tmillisecond: {\n\t\tcommon: true,\n\t\tsize: 1,\n\t\tsteps: [1, 2, 5, 10, 20, 50, 100, 250, 500]\n\t},\n\tsecond: {\n\t\tcommon: true,\n\t\tsize: 1000,\n\t\tsteps: [1, 2, 5, 10, 15, 30]\n\t},\n\tminute: {\n\t\tcommon: true,\n\t\tsize: 60000,\n\t\tsteps: [1, 2, 5, 10, 15, 30]\n\t},\n\thour: {\n\t\tcommon: true,\n\t\tsize: 3600000,\n\t\tsteps: [1, 2, 3, 6, 12]\n\t},\n\tday: {\n\t\tcommon: true,\n\t\tsize: 86400000,\n\t\tsteps: [1, 2, 5]\n\t},\n\tweek: {\n\t\tcommon: false,\n\t\tsize: 604800000,\n\t\tsteps: [1, 2, 3, 4]\n\t},\n\tmonth: {\n\t\tcommon: true,\n\t\tsize: 2.628e9,\n\t\tsteps: [1, 2, 3]\n\t},\n\tquarter: {\n\t\tcommon: false,\n\t\tsize: 7.884e9,\n\t\tsteps: [1, 2, 3, 4]\n\t},\n\tyear: {\n\t\tcommon: true,\n\t\tsize: 3.154e10\n\t}\n};\n\nvar UNITS = Object.keys(INTERVALS);\n\nfunction sorter(a, b) {\n\treturn a - b;\n}\n\nfunction arrayUnique(items) {\n\tvar hash = {};\n\tvar out = [];\n\tvar i, ilen, item;\n\n\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\n\t\titem = items[i];\n\t\tif (!hash[item]) {\n\t\t\thash[item] = true;\n\t\t\tout.push(item);\n\t\t}\n\t}\n\n\treturn out;\n}\n\n/**\n * Returns an array of {time, pos} objects used to interpolate a specific `time` or position\n * (`pos`) on the scale, by searching entries before and after the requested value. `pos` is\n * a decimal between 0 and 1: 0 being the start of the scale (left or top) and 1 the other\n * extremity (left + width or top + height). Note that it would be more optimized to directly\n * store pre-computed pixels, but the scale dimensions are not guaranteed at the time we need\n * to create the lookup table. The table ALWAYS contains at least two items: min and max.\n *\n * @param {Number[]} timestamps - timestamps sorted from lowest to highest.\n * @param {String} distribution - If 'linear', timestamps will be spread linearly along the min\n * and max range, so basically, the table will contains only two items: {min, 0} and {max, 1}.\n * If 'series', timestamps will be positioned at the same distance from each other. In this\n * case, only timestamps that break the time linearity are registered, meaning that in the\n * best case, all timestamps are linear, the table contains only min and max.\n */\nfunction buildLookupTable(timestamps, min, max, distribution) {\n\tif (distribution === 'linear' || !timestamps.length) {\n\t\treturn [\n\t\t\t{time: min, pos: 0},\n\t\t\t{time: max, pos: 1}\n\t\t];\n\t}\n\n\tvar table = [];\n\tvar items = [min];\n\tvar i, ilen, prev, curr, next;\n\n\tfor (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n\t\tcurr = timestamps[i];\n\t\tif (curr > min && curr < max) {\n\t\t\titems.push(curr);\n\t\t}\n\t}\n\n\titems.push(max);\n\n\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\n\t\tnext = items[i + 1];\n\t\tprev = items[i - 1];\n\t\tcurr = items[i];\n\n\t\t// only add points that breaks the scale linearity\n\t\tif (prev === undefined || next === undefined || Math.round((next + prev) / 2) !== curr) {\n\t\t\ttable.push({time: curr, pos: i / (ilen - 1)});\n\t\t}\n\t}\n\n\treturn table;\n}\n\n// @see adapted from http://www.anujgakhar.com/2014/03/01/binary-search-in-javascript/\nfunction lookup(table, key, value) {\n\tvar lo = 0;\n\tvar hi = table.length - 1;\n\tvar mid, i0, i1;\n\n\twhile (lo >= 0 && lo <= hi) {\n\t\tmid = (lo + hi) >> 1;\n\t\ti0 = table[mid - 1] || null;\n\t\ti1 = table[mid];\n\n\t\tif (!i0) {\n\t\t\t// given value is outside table (before first item)\n\t\t\treturn {lo: null, hi: i1};\n\t\t} else if (i1[key] < value) {\n\t\t\tlo = mid + 1;\n\t\t} else if (i0[key] > value) {\n\t\t\thi = mid - 1;\n\t\t} else {\n\t\t\treturn {lo: i0, hi: i1};\n\t\t}\n\t}\n\n\t// given value is outside table (after last item)\n\treturn {lo: i1, hi: null};\n}\n\n/**\n * Linearly interpolates the given source `value` using the table items `skey` values and\n * returns the associated `tkey` value. For example, interpolate(table, 'time', 42, 'pos')\n * returns the position for a timestamp equal to 42. If value is out of bounds, values at\n * index [0, 1] or [n - 1, n] are used for the interpolation.\n */\nfunction interpolate(table, skey, sval, tkey) {\n\tvar range = lookup(table, skey, sval);\n\n\t// Note: the lookup table ALWAYS contains at least 2 items (min and max)\n\tvar prev = !range.lo ? table[0] : !range.hi ? table[table.length - 2] : range.lo;\n\tvar next = !range.lo ? table[1] : !range.hi ? table[table.length - 1] : range.hi;\n\n\tvar span = next[skey] - prev[skey];\n\tvar ratio = span ? (sval - prev[skey]) / span : 0;\n\tvar offset = (next[tkey] - prev[tkey]) * ratio;\n\n\treturn prev[tkey] + offset;\n}\n\n/**\n * Convert the given value to a moment object using the given time options.\n * @see http://momentjs.com/docs/#/parsing/\n */\nfunction momentify(value, options) {\n\tvar parser = options.parser;\n\tvar format = options.parser || options.format;\n\n\tif (typeof parser === 'function') {\n\t\treturn parser(value);\n\t}\n\n\tif (typeof value === 'string' && typeof format === 'string') {\n\t\treturn moment(value, format);\n\t}\n\n\tif (!(value instanceof moment)) {\n\t\tvalue = moment(value);\n\t}\n\n\tif (value.isValid()) {\n\t\treturn value;\n\t}\n\n\t// Labels are in an incompatible moment format and no `parser` has been provided.\n\t// The user might still use the deprecated `format` option to convert his inputs.\n\tif (typeof format === 'function') {\n\t\treturn format(value);\n\t}\n\n\treturn value;\n}\n\nfunction parse(input, scale) {\n\tif (helpers.isNullOrUndef(input)) {\n\t\treturn null;\n\t}\n\n\tvar options = scale.options.time;\n\tvar value = momentify(scale.getRightValue(input), options);\n\tif (!value.isValid()) {\n\t\treturn null;\n\t}\n\n\tif (options.round) {\n\t\tvalue.startOf(options.round);\n\t}\n\n\treturn value.valueOf();\n}\n\n/**\n * Returns the number of unit to skip to be able to display up to `capacity` number of ticks\n * in `unit` for the given `min` / `max` range and respecting the interval steps constraints.\n */\nfunction determineStepSize(min, max, unit, capacity) {\n\tvar range = max - min;\n\tvar interval = INTERVALS[unit];\n\tvar milliseconds = interval.size;\n\tvar steps = interval.steps;\n\tvar i, ilen, factor;\n\n\tif (!steps) {\n\t\treturn Math.ceil(range / (capacity * milliseconds));\n\t}\n\n\tfor (i = 0, ilen = steps.length; i < ilen; ++i) {\n\t\tfactor = steps[i];\n\t\tif (Math.ceil(range / (milliseconds * factor)) <= capacity) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn factor;\n}\n\n/**\n * Figures out what unit results in an appropriate number of auto-generated ticks\n */\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n\tvar ilen = UNITS.length;\n\tvar i, interval, factor;\n\n\tfor (i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n\t\tinterval = INTERVALS[UNITS[i]];\n\t\tfactor = interval.steps ? interval.steps[interval.steps.length - 1] : MAX_INTEGER;\n\n\t\tif (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n\t\t\treturn UNITS[i];\n\t\t}\n\t}\n\n\treturn UNITS[ilen - 1];\n}\n\n/**\n * Figures out what unit to format a set of ticks with\n */\nfunction determineUnitForFormatting(ticks, minUnit, min, max) {\n\tvar duration = moment.duration(moment(max).diff(moment(min)));\n\tvar ilen = UNITS.length;\n\tvar i, unit;\n\n\tfor (i = ilen - 1; i >= UNITS.indexOf(minUnit); i--) {\n\t\tunit = UNITS[i];\n\t\tif (INTERVALS[unit].common && duration.as(unit) >= ticks.length) {\n\t\t\treturn unit;\n\t\t}\n\t}\n\n\treturn UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\n\nfunction determineMajorUnit(unit) {\n\tfor (var i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n\t\tif (INTERVALS[UNITS[i]].common) {\n\t\t\treturn UNITS[i];\n\t\t}\n\t}\n}\n\n/**\n * Generates a maximum of `capacity` timestamps between min and max, rounded to the\n * `minor` unit, aligned on the `major` unit and using the given scale time `options`.\n * Important: this method can return ticks outside the min and max range, it's the\n * responsibility of the calling code to clamp values if needed.\n */\nfunction generate(min, max, capacity, options) {\n\tvar timeOpts = options.time;\n\tvar minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, capacity);\n\tvar major = determineMajorUnit(minor);\n\tvar stepSize = helpers.valueOrDefault(timeOpts.stepSize, timeOpts.unitStepSize);\n\tvar weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n\tvar majorTicksEnabled = options.ticks.major.enabled;\n\tvar interval = INTERVALS[minor];\n\tvar first = moment(min);\n\tvar last = moment(max);\n\tvar ticks = [];\n\tvar time;\n\n\tif (!stepSize) {\n\t\tstepSize = determineStepSize(min, max, minor, capacity);\n\t}\n\n\t// For 'week' unit, handle the first day of week option\n\tif (weekday) {\n\t\tfirst = first.isoWeekday(weekday);\n\t\tlast = last.isoWeekday(weekday);\n\t}\n\n\t// Align first/last ticks on unit\n\tfirst = first.startOf(weekday ? 'day' : minor);\n\tlast = last.startOf(weekday ? 'day' : minor);\n\n\t// Make sure that the last tick include max\n\tif (last < max) {\n\t\tlast.add(1, minor);\n\t}\n\n\ttime = moment(first);\n\n\tif (majorTicksEnabled && major && !weekday && !timeOpts.round) {\n\t\t// Align the first tick on the previous `minor` unit aligned on the `major` unit:\n\t\t// we first aligned time on the previous `major` unit then add the number of full\n\t\t// stepSize there is between first and the previous major time.\n\t\ttime.startOf(major);\n\t\ttime.add(~~((first - time) / (interval.size * stepSize)) * stepSize, minor);\n\t}\n\n\tfor (; time < last; time.add(stepSize, minor)) {\n\t\tticks.push(+time);\n\t}\n\n\tticks.push(+time);\n\n\treturn ticks;\n}\n\n/**\n * Returns the right and left offsets from edges in the form of {left, right}.\n * Offsets are added when the `offset` option is true.\n */\nfunction computeOffsets(table, ticks, min, max, options) {\n\tvar left = 0;\n\tvar right = 0;\n\tvar upper, lower;\n\n\tif (options.offset && ticks.length) {\n\t\tif (!options.time.min) {\n\t\t\tupper = ticks.length > 1 ? ticks[1] : max;\n\t\t\tlower = ticks[0];\n\t\t\tleft = (\n\t\t\t\tinterpolate(table, 'time', upper, 'pos') -\n\t\t\t\tinterpolate(table, 'time', lower, 'pos')\n\t\t\t) / 2;\n\t\t}\n\t\tif (!options.time.max) {\n\t\t\tupper = ticks[ticks.length - 1];\n\t\t\tlower = ticks.length > 1 ? ticks[ticks.length - 2] : min;\n\t\t\tright = (\n\t\t\t\tinterpolate(table, 'time', upper, 'pos') -\n\t\t\t\tinterpolate(table, 'time', lower, 'pos')\n\t\t\t) / 2;\n\t\t}\n\t}\n\n\treturn {left: left, right: right};\n}\n\nfunction ticksFromTimestamps(values, majorUnit) {\n\tvar ticks = [];\n\tvar i, ilen, value, major;\n\n\tfor (i = 0, ilen = values.length; i < ilen; ++i) {\n\t\tvalue = values[i];\n\t\tmajor = majorUnit ? value === +moment(value).startOf(majorUnit) : false;\n\n\t\tticks.push({\n\t\t\tvalue: value,\n\t\t\tmajor: major\n\t\t});\n\t}\n\n\treturn ticks;\n}\n\nfunction determineLabelFormat(data, timeOpts) {\n\tvar i, momentDate, hasTime;\n\tvar ilen = data.length;\n\n\t// find the label with the most parts (milliseconds, minutes, etc.)\n\t// format all labels with the same level of detail as the most specific label\n\tfor (i = 0; i < ilen; i++) {\n\t\tmomentDate = momentify(data[i], timeOpts);\n\t\tif (momentDate.millisecond() !== 0) {\n\t\t\treturn 'MMM D, YYYY h:mm:ss.SSS a';\n\t\t}\n\t\tif (momentDate.second() !== 0 || momentDate.minute() !== 0 || momentDate.hour() !== 0) {\n\t\t\thasTime = true;\n\t\t}\n\t}\n\tif (hasTime) {\n\t\treturn 'MMM D, YYYY h:mm:ss a';\n\t}\n\treturn 'MMM D, YYYY';\n}\n\nmodule.exports = function() {\n\n\tvar defaultConfig = {\n\t\tposition: 'bottom',\n\n\t\t/**\n\t\t * Data distribution along the scale:\n\t\t * - 'linear': data are spread according to their time (distances can vary),\n\t\t * - 'series': data are spread at the same distance from each other.\n\t\t * @see https://github.com/chartjs/Chart.js/pull/4507\n\t\t * @since 2.7.0\n\t\t */\n\t\tdistribution: 'linear',\n\n\t\t/**\n\t\t * Scale boundary strategy (bypassed by min/max time options)\n\t\t * - `data`: make sure data are fully visible, ticks outside are removed\n\t\t * - `ticks`: make sure ticks are fully visible, data outside are truncated\n\t\t * @see https://github.com/chartjs/Chart.js/pull/4556\n\t\t * @since 2.7.0\n\t\t */\n\t\tbounds: 'data',\n\n\t\ttime: {\n\t\t\tparser: false, // false == a pattern string from http://momentjs.com/docs/#/parsing/string-format/ or a custom callback that converts its argument to a moment\n\t\t\tformat: false, // DEPRECATED false == date objects, moment object, callback or a pattern string from http://momentjs.com/docs/#/parsing/string-format/\n\t\t\tunit: false, // false == automatic or override with week, month, year, etc.\n\t\t\tround: false, // none, or override with week, month, year, etc.\n\t\t\tdisplayFormat: false, // DEPRECATED\n\t\t\tisoWeekday: false, // override week start day - see http://momentjs.com/docs/#/get-set/iso-weekday/\n\t\t\tminUnit: 'millisecond',\n\n\t\t\t// defaults to unit's corresponding unitFormat below or override using pattern string from http://momentjs.com/docs/#/displaying/format/\n\t\t\tdisplayFormats: {\n\t\t\t\tmillisecond: 'h:mm:ss.SSS a', // 11:20:01.123 AM,\n\t\t\t\tsecond: 'h:mm:ss a', // 11:20:01 AM\n\t\t\t\tminute: 'h:mm a', // 11:20 AM\n\t\t\t\thour: 'hA', // 5PM\n\t\t\t\tday: 'MMM D', // Sep 4\n\t\t\t\tweek: 'll', // Week 46, or maybe \"[W]WW - YYYY\" ?\n\t\t\t\tmonth: 'MMM YYYY', // Sept 2015\n\t\t\t\tquarter: '[Q]Q - YYYY', // Q3\n\t\t\t\tyear: 'YYYY' // 2015\n\t\t\t},\n\t\t},\n\t\tticks: {\n\t\t\tautoSkip: false,\n\n\t\t\t/**\n\t\t\t * Ticks generation input values:\n\t\t\t * - 'auto': generates \"optimal\" ticks based on scale size and time options.\n\t\t\t * - 'data': generates ticks from data (including labels from data {t|x|y} objects).\n\t\t\t * - 'labels': generates ticks from user given `data.labels` values ONLY.\n\t\t\t * @see https://github.com/chartjs/Chart.js/pull/4507\n\t\t\t * @since 2.7.0\n\t\t\t */\n\t\t\tsource: 'auto',\n\n\t\t\tmajor: {\n\t\t\t\tenabled: false\n\t\t\t}\n\t\t}\n\t};\n\n\tvar TimeScale = Scale.extend({\n\t\tinitialize: function() {\n\t\t\tif (!moment) {\n\t\t\t\tthrow new Error('Chart.js - Moment.js could not be found! You must include it before Chart.js to use the time scale. Download at https://momentjs.com');\n\t\t\t}\n\n\t\t\tthis.mergeTicksOptions();\n\n\t\t\tScale.prototype.initialize.call(this);\n\t\t},\n\n\t\tupdate: function() {\n\t\t\tvar me = this;\n\t\t\tvar options = me.options;\n\n\t\t\t// DEPRECATIONS: output a message only one time per update\n\t\t\tif (options.time && options.time.format) {\n\t\t\t\tconsole.warn('options.time.format is deprecated and replaced by options.time.parser.');\n\t\t\t}\n\n\t\t\treturn Scale.prototype.update.apply(me, arguments);\n\t\t},\n\n\t\t/**\n\t\t * Allows data to be referenced via 't' attribute\n\t\t */\n\t\tgetRightValue: function(rawValue) {\n\t\t\tif (rawValue && rawValue.t !== undefined) {\n\t\t\t\trawValue = rawValue.t;\n\t\t\t}\n\t\t\treturn Scale.prototype.getRightValue.call(this, rawValue);\n\t\t},\n\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar timeOpts = me.options.time;\n\t\t\tvar unit = timeOpts.unit || 'day';\n\t\t\tvar min = MAX_INTEGER;\n\t\t\tvar max = MIN_INTEGER;\n\t\t\tvar timestamps = [];\n\t\t\tvar datasets = [];\n\t\t\tvar labels = [];\n\t\t\tvar i, j, ilen, jlen, data, timestamp;\n\n\t\t\t// Convert labels to timestamps\n\t\t\tfor (i = 0, ilen = chart.data.labels.length; i < ilen; ++i) {\n\t\t\t\tlabels.push(parse(chart.data.labels[i], me));\n\t\t\t}\n\n\t\t\t// Convert data to timestamps\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n\t\t\t\tif (chart.isDatasetVisible(i)) {\n\t\t\t\t\tdata = chart.data.datasets[i].data;\n\n\t\t\t\t\t// Let's consider that all data have the same format.\n\t\t\t\t\tif (helpers.isObject(data[0])) {\n\t\t\t\t\t\tdatasets[i] = [];\n\n\t\t\t\t\t\tfor (j = 0, jlen = data.length; j < jlen; ++j) {\n\t\t\t\t\t\t\ttimestamp = parse(data[j], me);\n\t\t\t\t\t\t\ttimestamps.push(timestamp);\n\t\t\t\t\t\t\tdatasets[i][j] = timestamp;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttimestamps.push.apply(timestamps, labels);\n\t\t\t\t\t\tdatasets[i] = labels.slice(0);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tdatasets[i] = [];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (labels.length) {\n\t\t\t\t// Sort labels **after** data have been converted\n\t\t\t\tlabels = arrayUnique(labels).sort(sorter);\n\t\t\t\tmin = Math.min(min, labels[0]);\n\t\t\t\tmax = Math.max(max, labels[labels.length - 1]);\n\t\t\t}\n\n\t\t\tif (timestamps.length) {\n\t\t\t\ttimestamps = arrayUnique(timestamps).sort(sorter);\n\t\t\t\tmin = Math.min(min, timestamps[0]);\n\t\t\t\tmax = Math.max(max, timestamps[timestamps.length - 1]);\n\t\t\t}\n\n\t\t\tmin = parse(timeOpts.min, me) || min;\n\t\t\tmax = parse(timeOpts.max, me) || max;\n\n\t\t\t// In case there is no valid min/max, set limits based on unit time option\n\t\t\tmin = min === MAX_INTEGER ? +moment().startOf(unit) : min;\n\t\t\tmax = max === MIN_INTEGER ? +moment().endOf(unit) + 1 : max;\n\n\t\t\t// Make sure that max is strictly higher than min (required by the lookup table)\n\t\t\tme.min = Math.min(min, max);\n\t\t\tme.max = Math.max(min + 1, max);\n\n\t\t\t// PRIVATE\n\t\t\tme._horizontal = me.isHorizontal();\n\t\t\tme._table = [];\n\t\t\tme._timestamps = {\n\t\t\t\tdata: timestamps,\n\t\t\t\tdatasets: datasets,\n\t\t\t\tlabels: labels\n\t\t\t};\n\t\t},\n\n\t\tbuildTicks: function() {\n\t\t\tvar me = this;\n\t\t\tvar min = me.min;\n\t\t\tvar max = me.max;\n\t\t\tvar options = me.options;\n\t\t\tvar timeOpts = options.time;\n\t\t\tvar timestamps = [];\n\t\t\tvar ticks = [];\n\t\t\tvar i, ilen, timestamp;\n\n\t\t\tswitch (options.ticks.source) {\n\t\t\tcase 'data':\n\t\t\t\ttimestamps = me._timestamps.data;\n\t\t\t\tbreak;\n\t\t\tcase 'labels':\n\t\t\t\ttimestamps = me._timestamps.labels;\n\t\t\t\tbreak;\n\t\t\tcase 'auto':\n\t\t\tdefault:\n\t\t\t\ttimestamps = generate(min, max, me.getLabelCapacity(min), options);\n\t\t\t}\n\n\t\t\tif (options.bounds === 'ticks' && timestamps.length) {\n\t\t\t\tmin = timestamps[0];\n\t\t\t\tmax = timestamps[timestamps.length - 1];\n\t\t\t}\n\n\t\t\t// Enforce limits with user min/max options\n\t\t\tmin = parse(timeOpts.min, me) || min;\n\t\t\tmax = parse(timeOpts.max, me) || max;\n\n\t\t\t// Remove ticks outside the min/max range\n\t\t\tfor (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n\t\t\t\ttimestamp = timestamps[i];\n\t\t\t\tif (timestamp >= min && timestamp <= max) {\n\t\t\t\t\tticks.push(timestamp);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tme.min = min;\n\t\t\tme.max = max;\n\n\t\t\t// PRIVATE\n\t\t\tme._unit = timeOpts.unit || determineUnitForFormatting(ticks, timeOpts.minUnit, me.min, me.max);\n\t\t\tme._majorUnit = determineMajorUnit(me._unit);\n\t\t\tme._table = buildLookupTable(me._timestamps.data, min, max, options.distribution);\n\t\t\tme._offsets = computeOffsets(me._table, ticks, min, max, options);\n\t\t\tme._labelFormat = determineLabelFormat(me._timestamps.data, timeOpts);\n\n\t\t\treturn ticksFromTimestamps(ticks, me._majorUnit);\n\t\t},\n\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar data = me.chart.data;\n\t\t\tvar timeOpts = me.options.time;\n\t\t\tvar label = data.labels && index < data.labels.length ? data.labels[index] : '';\n\t\t\tvar value = data.datasets[datasetIndex].data[index];\n\n\t\t\tif (helpers.isObject(value)) {\n\t\t\t\tlabel = me.getRightValue(value);\n\t\t\t}\n\t\t\tif (timeOpts.tooltipFormat) {\n\t\t\t\treturn momentify(label, timeOpts).format(timeOpts.tooltipFormat);\n\t\t\t}\n\t\t\tif (typeof label === 'string') {\n\t\t\t\treturn label;\n\t\t\t}\n\n\t\t\treturn momentify(label, timeOpts).format(me._labelFormat);\n\t\t},\n\n\t\t/**\n\t\t * Function to format an individual tick mark\n\t\t * @private\n\t\t */\n\t\ttickFormatFunction: function(tick, index, ticks, formatOverride) {\n\t\t\tvar me = this;\n\t\t\tvar options = me.options;\n\t\t\tvar time = tick.valueOf();\n\t\t\tvar formats = options.time.displayFormats;\n\t\t\tvar minorFormat = formats[me._unit];\n\t\t\tvar majorUnit = me._majorUnit;\n\t\t\tvar majorFormat = formats[majorUnit];\n\t\t\tvar majorTime = tick.clone().startOf(majorUnit).valueOf();\n\t\t\tvar majorTickOpts = options.ticks.major;\n\t\t\tvar major = majorTickOpts.enabled && majorUnit && majorFormat && time === majorTime;\n\t\t\tvar label = tick.format(formatOverride ? formatOverride : major ? majorFormat : minorFormat);\n\t\t\tvar tickOpts = major ? majorTickOpts : options.ticks.minor;\n\t\t\tvar formatter = helpers.valueOrDefault(tickOpts.callback, tickOpts.userCallback);\n\n\t\t\treturn formatter ? formatter(label, index, ticks) : label;\n\t\t},\n\n\t\tconvertTicksToLabels: function(ticks) {\n\t\t\tvar labels = [];\n\t\t\tvar i, ilen;\n\n\t\t\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\n\t\t\t\tlabels.push(this.tickFormatFunction(moment(ticks[i].value), i, ticks));\n\t\t\t}\n\n\t\t\treturn labels;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetPixelForOffset: function(time) {\n\t\t\tvar me = this;\n\t\t\tvar size = me._horizontal ? me.width : me.height;\n\t\t\tvar start = me._horizontal ? me.left : me.top;\n\t\t\tvar pos = interpolate(me._table, 'time', time, 'pos');\n\n\t\t\treturn start + size * (me._offsets.left + pos) / (me._offsets.left + 1 + me._offsets.right);\n\t\t},\n\n\t\tgetPixelForValue: function(value, index, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar time = null;\n\n\t\t\tif (index !== undefined && datasetIndex !== undefined) {\n\t\t\t\ttime = me._timestamps.datasets[datasetIndex][index];\n\t\t\t}\n\n\t\t\tif (time === null) {\n\t\t\t\ttime = parse(value, me);\n\t\t\t}\n\n\t\t\tif (time !== null) {\n\t\t\t\treturn me.getPixelForOffset(time);\n\t\t\t}\n\t\t},\n\n\t\tgetPixelForTick: function(index) {\n\t\t\tvar ticks = this.getTicks();\n\t\t\treturn index >= 0 && index < ticks.length ?\n\t\t\t\tthis.getPixelForOffset(ticks[index].value) :\n\t\t\t\tnull;\n\t\t},\n\n\t\tgetValueForPixel: function(pixel) {\n\t\t\tvar me = this;\n\t\t\tvar size = me._horizontal ? me.width : me.height;\n\t\t\tvar start = me._horizontal ? me.left : me.top;\n\t\t\tvar pos = (size ? (pixel - start) / size : 0) * (me._offsets.left + 1 + me._offsets.left) - me._offsets.right;\n\t\t\tvar time = interpolate(me._table, 'pos', pos, 'time');\n\n\t\t\treturn moment(time);\n\t\t},\n\n\t\t/**\n\t\t * Crude approximation of what the label width might be\n\t\t * @private\n\t\t */\n\t\tgetLabelWidth: function(label) {\n\t\t\tvar me = this;\n\t\t\tvar ticksOpts = me.options.ticks;\n\t\t\tvar tickLabelWidth = me.ctx.measureText(label).width;\n\t\t\tvar angle = helpers.toRadians(ticksOpts.maxRotation);\n\t\t\tvar cosRotation = Math.cos(angle);\n\t\t\tvar sinRotation = Math.sin(angle);\n\t\t\tvar tickFontSize = helpers.valueOrDefault(ticksOpts.fontSize, defaults.global.defaultFontSize);\n\n\t\t\treturn (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetLabelCapacity: function(exampleTime) {\n\t\t\tvar me = this;\n\n\t\t\tvar formatOverride = me.options.time.displayFormats.millisecond;\t// Pick the longest format for guestimation\n\n\t\t\tvar exampleLabel = me.tickFormatFunction(moment(exampleTime), 0, [], formatOverride);\n\t\t\tvar tickLabelWidth = me.getLabelWidth(exampleLabel);\n\t\t\tvar innerWidth = me.isHorizontal() ? me.width : me.height;\n\n\t\t\tvar capacity = Math.floor(innerWidth / tickLabelWidth);\n\t\t\treturn capacity > 0 ? capacity : 1;\n\t\t}\n\t});\n\n\tscaleService.registerScaleType('time', TimeScale, defaultConfig);\n};\n","'use strict';\n\nmodule.exports = require('./helpers.core');\nmodule.exports.easing = require('./helpers.easing');\nmodule.exports.canvas = require('./helpers.canvas');\nmodule.exports.options = require('./helpers.options');\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n // Note: status is not exposed by XDomainRequest\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nmodule.exports = function(Chart) {\n\tChart.Scatter = function(context, config) {\n\t\tconfig.type = 'scatter';\n\t\treturn new Chart(context, config);\n\t};\n};\n","'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.Doughnut = function(context, config) {\n\t\tconfig.type = 'doughnut';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n","/*!\n * Bootstrap v4.2.1 (https://getbootstrap.com/)\n * Copyright 2011-2018 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('popper.js'), require('jquery')) :\n typeof define === 'function' && define.amd ? define(['exports', 'popper.js', 'jquery'], factory) :\n (factory((global.bootstrap = {}),global.Popper,global.jQuery));\n}(this, (function (exports,Popper,$) { 'use strict';\n\n Popper = Popper && Popper.hasOwnProperty('default') ? Popper['default'] : Popper;\n $ = $ && $.hasOwnProperty('default') ? $['default'] : $;\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n }\n\n function _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n }\n\n function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n }\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.2.1): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n /**\n * ------------------------------------------------------------------------\n * Private TransitionEnd Helpers\n * ------------------------------------------------------------------------\n */\n\n var TRANSITION_END = 'transitionend';\n var MAX_UID = 1000000;\n var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n\n function toType(obj) {\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase();\n }\n\n function getSpecialTransitionEndEvent() {\n return {\n bindType: TRANSITION_END,\n delegateType: TRANSITION_END,\n handle: function handle(event) {\n if ($(event.target).is(this)) {\n return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params\n }\n\n return undefined; // eslint-disable-line no-undefined\n }\n };\n }\n\n function transitionEndEmulator(duration) {\n var _this = this;\n\n var called = false;\n $(this).one(Util.TRANSITION_END, function () {\n called = true;\n });\n setTimeout(function () {\n if (!called) {\n Util.triggerTransitionEnd(_this);\n }\n }, duration);\n return this;\n }\n\n function setTransitionEndSupport() {\n $.fn.emulateTransitionEnd = transitionEndEmulator;\n $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();\n }\n /**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\n\n var Util = {\n TRANSITION_END: 'bsTransitionEnd',\n getUID: function getUID(prefix) {\n do {\n // eslint-disable-next-line no-bitwise\n prefix += ~~(Math.random() * MAX_UID); // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix));\n\n return prefix;\n },\n getSelectorFromElement: function getSelectorFromElement(element) {\n var selector = element.getAttribute('data-target');\n\n if (!selector || selector === '#') {\n var hrefAttr = element.getAttribute('href');\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : '';\n }\n\n return selector && document.querySelector(selector) ? selector : null;\n },\n getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {\n if (!element) {\n return 0;\n } // Get transition-duration of the element\n\n\n var transitionDuration = $(element).css('transition-duration');\n var transitionDelay = $(element).css('transition-delay');\n var floatTransitionDuration = parseFloat(transitionDuration);\n var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found\n\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n } // If multiple durations are defined, take the first\n\n\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n },\n reflow: function reflow(element) {\n return element.offsetHeight;\n },\n triggerTransitionEnd: function triggerTransitionEnd(element) {\n $(element).trigger(TRANSITION_END);\n },\n // TODO: Remove in v5\n supportsTransitionEnd: function supportsTransitionEnd() {\n return Boolean(TRANSITION_END);\n },\n isElement: function isElement(obj) {\n return (obj[0] || obj).nodeType;\n },\n typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {\n for (var property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n var expectedTypes = configTypes[property];\n var value = config[property];\n var valueType = value && Util.isElement(value) ? 'element' : toType(value);\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(componentName.toUpperCase() + \": \" + (\"Option \\\"\" + property + \"\\\" provided type \\\"\" + valueType + \"\\\" \") + (\"but expected type \\\"\" + expectedTypes + \"\\\".\"));\n }\n }\n }\n },\n findShadowRoot: function findShadowRoot(element) {\n if (!document.documentElement.attachShadow) {\n return null;\n } // Can find the shadow root otherwise it'll return the document\n\n\n if (typeof element.getRootNode === 'function') {\n var root = element.getRootNode();\n return root instanceof ShadowRoot ? root : null;\n }\n\n if (element instanceof ShadowRoot) {\n return element;\n } // when we don't find a shadow root\n\n\n if (!element.parentNode) {\n return null;\n }\n\n return Util.findShadowRoot(element.parentNode);\n }\n };\n setTransitionEndSupport();\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME = 'alert';\n var VERSION = '4.2.1';\n var DATA_KEY = 'bs.alert';\n var EVENT_KEY = \".\" + DATA_KEY;\n var DATA_API_KEY = '.data-api';\n var JQUERY_NO_CONFLICT = $.fn[NAME];\n var Selector = {\n DISMISS: '[data-dismiss=\"alert\"]'\n };\n var Event = {\n CLOSE: \"close\" + EVENT_KEY,\n CLOSED: \"closed\" + EVENT_KEY,\n CLICK_DATA_API: \"click\" + EVENT_KEY + DATA_API_KEY\n };\n var ClassName = {\n ALERT: 'alert',\n FADE: 'fade',\n SHOW: 'show'\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n };\n\n var Alert =\n /*#__PURE__*/\n function () {\n function Alert(element) {\n this._element = element;\n } // Getters\n\n\n var _proto = Alert.prototype;\n\n // Public\n _proto.close = function close(element) {\n var rootElement = this._element;\n\n if (element) {\n rootElement = this._getRootElement(element);\n }\n\n var customEvent = this._triggerCloseEvent(rootElement);\n\n if (customEvent.isDefaultPrevented()) {\n return;\n }\n\n this._removeElement(rootElement);\n };\n\n _proto.dispose = function dispose() {\n $.removeData(this._element, DATA_KEY);\n this._element = null;\n }; // Private\n\n\n _proto._getRootElement = function _getRootElement(element) {\n var selector = Util.getSelectorFromElement(element);\n var parent = false;\n\n if (selector) {\n parent = document.querySelector(selector);\n }\n\n if (!parent) {\n parent = $(element).closest(\".\" + ClassName.ALERT)[0];\n }\n\n return parent;\n };\n\n _proto._triggerCloseEvent = function _triggerCloseEvent(element) {\n var closeEvent = $.Event(Event.CLOSE);\n $(element).trigger(closeEvent);\n return closeEvent;\n };\n\n _proto._removeElement = function _removeElement(element) {\n var _this = this;\n\n $(element).removeClass(ClassName.SHOW);\n\n if (!$(element).hasClass(ClassName.FADE)) {\n this._destroyElement(element);\n\n return;\n }\n\n var transitionDuration = Util.getTransitionDurationFromElement(element);\n $(element).one(Util.TRANSITION_END, function (event) {\n return _this._destroyElement(element, event);\n }).emulateTransitionEnd(transitionDuration);\n };\n\n _proto._destroyElement = function _destroyElement(element) {\n $(element).detach().trigger(Event.CLOSED).remove();\n }; // Static\n\n\n Alert._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $(this);\n var data = $element.data(DATA_KEY);\n\n if (!data) {\n data = new Alert(this);\n $element.data(DATA_KEY, data);\n }\n\n if (config === 'close') {\n data[config](this);\n }\n });\n };\n\n Alert._handleDismiss = function _handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault();\n }\n\n alertInstance.close(this);\n };\n };\n\n _createClass(Alert, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION;\n }\n }]);\n\n return Alert;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert()));\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Alert._jQueryInterface;\n $.fn[NAME].Constructor = Alert;\n\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n return Alert._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$1 = 'button';\n var VERSION$1 = '4.2.1';\n var DATA_KEY$1 = 'bs.button';\n var EVENT_KEY$1 = \".\" + DATA_KEY$1;\n var DATA_API_KEY$1 = '.data-api';\n var JQUERY_NO_CONFLICT$1 = $.fn[NAME$1];\n var ClassName$1 = {\n ACTIVE: 'active',\n BUTTON: 'btn',\n FOCUS: 'focus'\n };\n var Selector$1 = {\n DATA_TOGGLE_CARROT: '[data-toggle^=\"button\"]',\n DATA_TOGGLE: '[data-toggle=\"buttons\"]',\n INPUT: 'input:not([type=\"hidden\"])',\n ACTIVE: '.active',\n BUTTON: '.btn'\n };\n var Event$1 = {\n CLICK_DATA_API: \"click\" + EVENT_KEY$1 + DATA_API_KEY$1,\n FOCUS_BLUR_DATA_API: \"focus\" + EVENT_KEY$1 + DATA_API_KEY$1 + \" \" + (\"blur\" + EVENT_KEY$1 + DATA_API_KEY$1)\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n };\n\n var Button =\n /*#__PURE__*/\n function () {\n function Button(element) {\n this._element = element;\n } // Getters\n\n\n var _proto = Button.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n var triggerChangeEvent = true;\n var addAriaPressed = true;\n var rootElement = $(this._element).closest(Selector$1.DATA_TOGGLE)[0];\n\n if (rootElement) {\n var input = this._element.querySelector(Selector$1.INPUT);\n\n if (input) {\n if (input.type === 'radio') {\n if (input.checked && this._element.classList.contains(ClassName$1.ACTIVE)) {\n triggerChangeEvent = false;\n } else {\n var activeElement = rootElement.querySelector(Selector$1.ACTIVE);\n\n if (activeElement) {\n $(activeElement).removeClass(ClassName$1.ACTIVE);\n }\n }\n }\n\n if (triggerChangeEvent) {\n if (input.hasAttribute('disabled') || rootElement.hasAttribute('disabled') || input.classList.contains('disabled') || rootElement.classList.contains('disabled')) {\n return;\n }\n\n input.checked = !this._element.classList.contains(ClassName$1.ACTIVE);\n $(input).trigger('change');\n }\n\n input.focus();\n addAriaPressed = false;\n }\n }\n\n if (addAriaPressed) {\n this._element.setAttribute('aria-pressed', !this._element.classList.contains(ClassName$1.ACTIVE));\n }\n\n if (triggerChangeEvent) {\n $(this._element).toggleClass(ClassName$1.ACTIVE);\n }\n };\n\n _proto.dispose = function dispose() {\n $.removeData(this._element, DATA_KEY$1);\n this._element = null;\n }; // Static\n\n\n Button._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $(this).data(DATA_KEY$1);\n\n if (!data) {\n data = new Button(this);\n $(this).data(DATA_KEY$1, data);\n }\n\n if (config === 'toggle') {\n data[config]();\n }\n });\n };\n\n _createClass(Button, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$1;\n }\n }]);\n\n return Button;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $(document).on(Event$1.CLICK_DATA_API, Selector$1.DATA_TOGGLE_CARROT, function (event) {\n event.preventDefault();\n var button = event.target;\n\n if (!$(button).hasClass(ClassName$1.BUTTON)) {\n button = $(button).closest(Selector$1.BUTTON);\n }\n\n Button._jQueryInterface.call($(button), 'toggle');\n }).on(Event$1.FOCUS_BLUR_DATA_API, Selector$1.DATA_TOGGLE_CARROT, function (event) {\n var button = $(event.target).closest(Selector$1.BUTTON)[0];\n $(button).toggleClass(ClassName$1.FOCUS, /^focus(in)?$/.test(event.type));\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME$1] = Button._jQueryInterface;\n $.fn[NAME$1].Constructor = Button;\n\n $.fn[NAME$1].noConflict = function () {\n $.fn[NAME$1] = JQUERY_NO_CONFLICT$1;\n return Button._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$2 = 'carousel';\n var VERSION$2 = '4.2.1';\n var DATA_KEY$2 = 'bs.carousel';\n var EVENT_KEY$2 = \".\" + DATA_KEY$2;\n var DATA_API_KEY$2 = '.data-api';\n var JQUERY_NO_CONFLICT$2 = $.fn[NAME$2];\n var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key\n\n var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key\n\n var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\n var SWIPE_THRESHOLD = 40;\n var Default = {\n interval: 5000,\n keyboard: true,\n slide: false,\n pause: 'hover',\n wrap: true,\n touch: true\n };\n var DefaultType = {\n interval: '(number|boolean)',\n keyboard: 'boolean',\n slide: '(boolean|string)',\n pause: '(string|boolean)',\n wrap: 'boolean',\n touch: 'boolean'\n };\n var Direction = {\n NEXT: 'next',\n PREV: 'prev',\n LEFT: 'left',\n RIGHT: 'right'\n };\n var Event$2 = {\n SLIDE: \"slide\" + EVENT_KEY$2,\n SLID: \"slid\" + EVENT_KEY$2,\n KEYDOWN: \"keydown\" + EVENT_KEY$2,\n MOUSEENTER: \"mouseenter\" + EVENT_KEY$2,\n MOUSELEAVE: \"mouseleave\" + EVENT_KEY$2,\n TOUCHSTART: \"touchstart\" + EVENT_KEY$2,\n TOUCHMOVE: \"touchmove\" + EVENT_KEY$2,\n TOUCHEND: \"touchend\" + EVENT_KEY$2,\n POINTERDOWN: \"pointerdown\" + EVENT_KEY$2,\n POINTERUP: \"pointerup\" + EVENT_KEY$2,\n DRAG_START: \"dragstart\" + EVENT_KEY$2,\n LOAD_DATA_API: \"load\" + EVENT_KEY$2 + DATA_API_KEY$2,\n CLICK_DATA_API: \"click\" + EVENT_KEY$2 + DATA_API_KEY$2\n };\n var ClassName$2 = {\n CAROUSEL: 'carousel',\n ACTIVE: 'active',\n SLIDE: 'slide',\n RIGHT: 'carousel-item-right',\n LEFT: 'carousel-item-left',\n NEXT: 'carousel-item-next',\n PREV: 'carousel-item-prev',\n ITEM: 'carousel-item',\n POINTER_EVENT: 'pointer-event'\n };\n var Selector$2 = {\n ACTIVE: '.active',\n ACTIVE_ITEM: '.active.carousel-item',\n ITEM: '.carousel-item',\n ITEM_IMG: '.carousel-item img',\n NEXT_PREV: '.carousel-item-next, .carousel-item-prev',\n INDICATORS: '.carousel-indicators',\n DATA_SLIDE: '[data-slide], [data-slide-to]',\n DATA_RIDE: '[data-ride=\"carousel\"]'\n };\n var PointerType = {\n TOUCH: 'touch',\n PEN: 'pen'\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n };\n\n var Carousel =\n /*#__PURE__*/\n function () {\n function Carousel(element, config) {\n this._items = null;\n this._interval = null;\n this._activeElement = null;\n this._isPaused = false;\n this._isSliding = false;\n this.touchTimeout = null;\n this.touchStartX = 0;\n this.touchDeltaX = 0;\n this._config = this._getConfig(config);\n this._element = element;\n this._indicatorsElement = this._element.querySelector(Selector$2.INDICATORS);\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent);\n\n this._addEventListeners();\n } // Getters\n\n\n var _proto = Carousel.prototype;\n\n // Public\n _proto.next = function next() {\n if (!this._isSliding) {\n this._slide(Direction.NEXT);\n }\n };\n\n _proto.nextWhenVisible = function nextWhenVisible() {\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && $(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden') {\n this.next();\n }\n };\n\n _proto.prev = function prev() {\n if (!this._isSliding) {\n this._slide(Direction.PREV);\n }\n };\n\n _proto.pause = function pause(event) {\n if (!event) {\n this._isPaused = true;\n }\n\n if (this._element.querySelector(Selector$2.NEXT_PREV)) {\n Util.triggerTransitionEnd(this._element);\n this.cycle(true);\n }\n\n clearInterval(this._interval);\n this._interval = null;\n };\n\n _proto.cycle = function cycle(event) {\n if (!event) {\n this._isPaused = false;\n }\n\n if (this._interval) {\n clearInterval(this._interval);\n this._interval = null;\n }\n\n if (this._config.interval && !this._isPaused) {\n this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);\n }\n };\n\n _proto.to = function to(index) {\n var _this = this;\n\n this._activeElement = this._element.querySelector(Selector$2.ACTIVE_ITEM);\n\n var activeIndex = this._getItemIndex(this._activeElement);\n\n if (index > this._items.length - 1 || index < 0) {\n return;\n }\n\n if (this._isSliding) {\n $(this._element).one(Event$2.SLID, function () {\n return _this.to(index);\n });\n return;\n }\n\n if (activeIndex === index) {\n this.pause();\n this.cycle();\n return;\n }\n\n var direction = index > activeIndex ? Direction.NEXT : Direction.PREV;\n\n this._slide(direction, this._items[index]);\n };\n\n _proto.dispose = function dispose() {\n $(this._element).off(EVENT_KEY$2);\n $.removeData(this._element, DATA_KEY$2);\n this._items = null;\n this._config = null;\n this._element = null;\n this._interval = null;\n this._isPaused = null;\n this._isSliding = null;\n this._activeElement = null;\n this._indicatorsElement = null;\n }; // Private\n\n\n _proto._getConfig = function _getConfig(config) {\n config = _objectSpread({}, Default, config);\n Util.typeCheckConfig(NAME$2, config, DefaultType);\n return config;\n };\n\n _proto._handleSwipe = function _handleSwipe() {\n var absDeltax = Math.abs(this.touchDeltaX);\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return;\n }\n\n var direction = absDeltax / this.touchDeltaX; // swipe left\n\n if (direction > 0) {\n this.prev();\n } // swipe right\n\n\n if (direction < 0) {\n this.next();\n }\n };\n\n _proto._addEventListeners = function _addEventListeners() {\n var _this2 = this;\n\n if (this._config.keyboard) {\n $(this._element).on(Event$2.KEYDOWN, function (event) {\n return _this2._keydown(event);\n });\n }\n\n if (this._config.pause === 'hover') {\n $(this._element).on(Event$2.MOUSEENTER, function (event) {\n return _this2.pause(event);\n }).on(Event$2.MOUSELEAVE, function (event) {\n return _this2.cycle(event);\n });\n }\n\n this._addTouchEventListeners();\n };\n\n _proto._addTouchEventListeners = function _addTouchEventListeners() {\n var _this3 = this;\n\n if (!this._touchSupported) {\n return;\n }\n\n var start = function start(event) {\n if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n _this3.touchStartX = event.originalEvent.clientX;\n } else if (!_this3._pointerEvent) {\n _this3.touchStartX = event.originalEvent.touches[0].clientX;\n }\n };\n\n var move = function move(event) {\n // ensure swiping with one touch and not pinching\n if (event.originalEvent.touches && event.originalEvent.touches.length > 1) {\n _this3.touchDeltaX = 0;\n } else {\n _this3.touchDeltaX = event.originalEvent.touches[0].clientX - _this3.touchStartX;\n }\n };\n\n var end = function end(event) {\n if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n _this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX;\n }\n\n _this3._handleSwipe();\n\n if (_this3._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n _this3.pause();\n\n if (_this3.touchTimeout) {\n clearTimeout(_this3.touchTimeout);\n }\n\n _this3.touchTimeout = setTimeout(function (event) {\n return _this3.cycle(event);\n }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval);\n }\n };\n\n $(this._element.querySelectorAll(Selector$2.ITEM_IMG)).on(Event$2.DRAG_START, function (e) {\n return e.preventDefault();\n });\n\n if (this._pointerEvent) {\n $(this._element).on(Event$2.POINTERDOWN, function (event) {\n return start(event);\n });\n $(this._element).on(Event$2.POINTERUP, function (event) {\n return end(event);\n });\n\n this._element.classList.add(ClassName$2.POINTER_EVENT);\n } else {\n $(this._element).on(Event$2.TOUCHSTART, function (event) {\n return start(event);\n });\n $(this._element).on(Event$2.TOUCHMOVE, function (event) {\n return move(event);\n });\n $(this._element).on(Event$2.TOUCHEND, function (event) {\n return end(event);\n });\n }\n };\n\n _proto._keydown = function _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return;\n }\n\n switch (event.which) {\n case ARROW_LEFT_KEYCODE:\n event.preventDefault();\n this.prev();\n break;\n\n case ARROW_RIGHT_KEYCODE:\n event.preventDefault();\n this.next();\n break;\n\n default:\n }\n };\n\n _proto._getItemIndex = function _getItemIndex(element) {\n this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(Selector$2.ITEM)) : [];\n return this._items.indexOf(element);\n };\n\n _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {\n var isNextDirection = direction === Direction.NEXT;\n var isPrevDirection = direction === Direction.PREV;\n\n var activeIndex = this._getItemIndex(activeElement);\n\n var lastItemIndex = this._items.length - 1;\n var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement;\n }\n\n var delta = direction === Direction.PREV ? -1 : 1;\n var itemIndex = (activeIndex + delta) % this._items.length;\n return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];\n };\n\n _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {\n var targetIndex = this._getItemIndex(relatedTarget);\n\n var fromIndex = this._getItemIndex(this._element.querySelector(Selector$2.ACTIVE_ITEM));\n\n var slideEvent = $.Event(Event$2.SLIDE, {\n relatedTarget: relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n });\n $(this._element).trigger(slideEvent);\n return slideEvent;\n };\n\n _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(Selector$2.ACTIVE));\n $(indicators).removeClass(ClassName$2.ACTIVE);\n\n var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];\n\n if (nextIndicator) {\n $(nextIndicator).addClass(ClassName$2.ACTIVE);\n }\n }\n };\n\n _proto._slide = function _slide(direction, element) {\n var _this4 = this;\n\n var activeElement = this._element.querySelector(Selector$2.ACTIVE_ITEM);\n\n var activeElementIndex = this._getItemIndex(activeElement);\n\n var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);\n\n var nextElementIndex = this._getItemIndex(nextElement);\n\n var isCycling = Boolean(this._interval);\n var directionalClassName;\n var orderClassName;\n var eventDirectionName;\n\n if (direction === Direction.NEXT) {\n directionalClassName = ClassName$2.LEFT;\n orderClassName = ClassName$2.NEXT;\n eventDirectionName = Direction.LEFT;\n } else {\n directionalClassName = ClassName$2.RIGHT;\n orderClassName = ClassName$2.PREV;\n eventDirectionName = Direction.RIGHT;\n }\n\n if (nextElement && $(nextElement).hasClass(ClassName$2.ACTIVE)) {\n this._isSliding = false;\n return;\n }\n\n var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);\n\n if (slideEvent.isDefaultPrevented()) {\n return;\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return;\n }\n\n this._isSliding = true;\n\n if (isCycling) {\n this.pause();\n }\n\n this._setActiveIndicatorElement(nextElement);\n\n var slidEvent = $.Event(Event$2.SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n });\n\n if ($(this._element).hasClass(ClassName$2.SLIDE)) {\n $(nextElement).addClass(orderClassName);\n Util.reflow(nextElement);\n $(activeElement).addClass(directionalClassName);\n $(nextElement).addClass(directionalClassName);\n var nextElementInterval = parseInt(nextElement.getAttribute('data-interval'), 10);\n\n if (nextElementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval;\n this._config.interval = nextElementInterval;\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval;\n }\n\n var transitionDuration = Util.getTransitionDurationFromElement(activeElement);\n $(activeElement).one(Util.TRANSITION_END, function () {\n $(nextElement).removeClass(directionalClassName + \" \" + orderClassName).addClass(ClassName$2.ACTIVE);\n $(activeElement).removeClass(ClassName$2.ACTIVE + \" \" + orderClassName + \" \" + directionalClassName);\n _this4._isSliding = false;\n setTimeout(function () {\n return $(_this4._element).trigger(slidEvent);\n }, 0);\n }).emulateTransitionEnd(transitionDuration);\n } else {\n $(activeElement).removeClass(ClassName$2.ACTIVE);\n $(nextElement).addClass(ClassName$2.ACTIVE);\n this._isSliding = false;\n $(this._element).trigger(slidEvent);\n }\n\n if (isCycling) {\n this.cycle();\n }\n }; // Static\n\n\n Carousel._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $(this).data(DATA_KEY$2);\n\n var _config = _objectSpread({}, Default, $(this).data());\n\n if (typeof config === 'object') {\n _config = _objectSpread({}, _config, config);\n }\n\n var action = typeof config === 'string' ? config : _config.slide;\n\n if (!data) {\n data = new Carousel(this, _config);\n $(this).data(DATA_KEY$2, data);\n }\n\n if (typeof config === 'number') {\n data.to(config);\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + action + \"\\\"\");\n }\n\n data[action]();\n } else if (_config.interval) {\n data.pause();\n data.cycle();\n }\n });\n };\n\n Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {\n var selector = Util.getSelectorFromElement(this);\n\n if (!selector) {\n return;\n }\n\n var target = $(selector)[0];\n\n if (!target || !$(target).hasClass(ClassName$2.CAROUSEL)) {\n return;\n }\n\n var config = _objectSpread({}, $(target).data(), $(this).data());\n\n var slideIndex = this.getAttribute('data-slide-to');\n\n if (slideIndex) {\n config.interval = false;\n }\n\n Carousel._jQueryInterface.call($(target), config);\n\n if (slideIndex) {\n $(target).data(DATA_KEY$2).to(slideIndex);\n }\n\n event.preventDefault();\n };\n\n _createClass(Carousel, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$2;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default;\n }\n }]);\n\n return Carousel;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $(document).on(Event$2.CLICK_DATA_API, Selector$2.DATA_SLIDE, Carousel._dataApiClickHandler);\n $(window).on(Event$2.LOAD_DATA_API, function () {\n var carousels = [].slice.call(document.querySelectorAll(Selector$2.DATA_RIDE));\n\n for (var i = 0, len = carousels.length; i < len; i++) {\n var $carousel = $(carousels[i]);\n\n Carousel._jQueryInterface.call($carousel, $carousel.data());\n }\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME$2] = Carousel._jQueryInterface;\n $.fn[NAME$2].Constructor = Carousel;\n\n $.fn[NAME$2].noConflict = function () {\n $.fn[NAME$2] = JQUERY_NO_CONFLICT$2;\n return Carousel._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$3 = 'collapse';\n var VERSION$3 = '4.2.1';\n var DATA_KEY$3 = 'bs.collapse';\n var EVENT_KEY$3 = \".\" + DATA_KEY$3;\n var DATA_API_KEY$3 = '.data-api';\n var JQUERY_NO_CONFLICT$3 = $.fn[NAME$3];\n var Default$1 = {\n toggle: true,\n parent: ''\n };\n var DefaultType$1 = {\n toggle: 'boolean',\n parent: '(string|element)'\n };\n var Event$3 = {\n SHOW: \"show\" + EVENT_KEY$3,\n SHOWN: \"shown\" + EVENT_KEY$3,\n HIDE: \"hide\" + EVENT_KEY$3,\n HIDDEN: \"hidden\" + EVENT_KEY$3,\n CLICK_DATA_API: \"click\" + EVENT_KEY$3 + DATA_API_KEY$3\n };\n var ClassName$3 = {\n SHOW: 'show',\n COLLAPSE: 'collapse',\n COLLAPSING: 'collapsing',\n COLLAPSED: 'collapsed'\n };\n var Dimension = {\n WIDTH: 'width',\n HEIGHT: 'height'\n };\n var Selector$3 = {\n ACTIVES: '.show, .collapsing',\n DATA_TOGGLE: '[data-toggle=\"collapse\"]'\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n };\n\n var Collapse =\n /*#__PURE__*/\n function () {\n function Collapse(element, config) {\n this._isTransitioning = false;\n this._element = element;\n this._config = this._getConfig(config);\n this._triggerArray = [].slice.call(document.querySelectorAll(\"[data-toggle=\\\"collapse\\\"][href=\\\"#\" + element.id + \"\\\"],\" + (\"[data-toggle=\\\"collapse\\\"][data-target=\\\"#\" + element.id + \"\\\"]\")));\n var toggleList = [].slice.call(document.querySelectorAll(Selector$3.DATA_TOGGLE));\n\n for (var i = 0, len = toggleList.length; i < len; i++) {\n var elem = toggleList[i];\n var selector = Util.getSelectorFromElement(elem);\n var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) {\n return foundElem === element;\n });\n\n if (selector !== null && filterElement.length > 0) {\n this._selector = selector;\n\n this._triggerArray.push(elem);\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null;\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray);\n }\n\n if (this._config.toggle) {\n this.toggle();\n }\n } // Getters\n\n\n var _proto = Collapse.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n if ($(this._element).hasClass(ClassName$3.SHOW)) {\n this.hide();\n } else {\n this.show();\n }\n };\n\n _proto.show = function show() {\n var _this = this;\n\n if (this._isTransitioning || $(this._element).hasClass(ClassName$3.SHOW)) {\n return;\n }\n\n var actives;\n var activesData;\n\n if (this._parent) {\n actives = [].slice.call(this._parent.querySelectorAll(Selector$3.ACTIVES)).filter(function (elem) {\n if (typeof _this._config.parent === 'string') {\n return elem.getAttribute('data-parent') === _this._config.parent;\n }\n\n return elem.classList.contains(ClassName$3.COLLAPSE);\n });\n\n if (actives.length === 0) {\n actives = null;\n }\n }\n\n if (actives) {\n activesData = $(actives).not(this._selector).data(DATA_KEY$3);\n\n if (activesData && activesData._isTransitioning) {\n return;\n }\n }\n\n var startEvent = $.Event(Event$3.SHOW);\n $(this._element).trigger(startEvent);\n\n if (startEvent.isDefaultPrevented()) {\n return;\n }\n\n if (actives) {\n Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide');\n\n if (!activesData) {\n $(actives).data(DATA_KEY$3, null);\n }\n }\n\n var dimension = this._getDimension();\n\n $(this._element).removeClass(ClassName$3.COLLAPSE).addClass(ClassName$3.COLLAPSING);\n this._element.style[dimension] = 0;\n\n if (this._triggerArray.length) {\n $(this._triggerArray).removeClass(ClassName$3.COLLAPSED).attr('aria-expanded', true);\n }\n\n this.setTransitioning(true);\n\n var complete = function complete() {\n $(_this._element).removeClass(ClassName$3.COLLAPSING).addClass(ClassName$3.COLLAPSE).addClass(ClassName$3.SHOW);\n _this._element.style[dimension] = '';\n\n _this.setTransitioning(false);\n\n $(_this._element).trigger(Event$3.SHOWN);\n };\n\n var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n var scrollSize = \"scroll\" + capitalizedDimension;\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n this._element.style[dimension] = this._element[scrollSize] + \"px\";\n };\n\n _proto.hide = function hide() {\n var _this2 = this;\n\n if (this._isTransitioning || !$(this._element).hasClass(ClassName$3.SHOW)) {\n return;\n }\n\n var startEvent = $.Event(Event$3.HIDE);\n $(this._element).trigger(startEvent);\n\n if (startEvent.isDefaultPrevented()) {\n return;\n }\n\n var dimension = this._getDimension();\n\n this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + \"px\";\n Util.reflow(this._element);\n $(this._element).addClass(ClassName$3.COLLAPSING).removeClass(ClassName$3.COLLAPSE).removeClass(ClassName$3.SHOW);\n var triggerArrayLength = this._triggerArray.length;\n\n if (triggerArrayLength > 0) {\n for (var i = 0; i < triggerArrayLength; i++) {\n var trigger = this._triggerArray[i];\n var selector = Util.getSelectorFromElement(trigger);\n\n if (selector !== null) {\n var $elem = $([].slice.call(document.querySelectorAll(selector)));\n\n if (!$elem.hasClass(ClassName$3.SHOW)) {\n $(trigger).addClass(ClassName$3.COLLAPSED).attr('aria-expanded', false);\n }\n }\n }\n }\n\n this.setTransitioning(true);\n\n var complete = function complete() {\n _this2.setTransitioning(false);\n\n $(_this2._element).removeClass(ClassName$3.COLLAPSING).addClass(ClassName$3.COLLAPSE).trigger(Event$3.HIDDEN);\n };\n\n this._element.style[dimension] = '';\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n };\n\n _proto.setTransitioning = function setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning;\n };\n\n _proto.dispose = function dispose() {\n $.removeData(this._element, DATA_KEY$3);\n this._config = null;\n this._parent = null;\n this._element = null;\n this._triggerArray = null;\n this._isTransitioning = null;\n }; // Private\n\n\n _proto._getConfig = function _getConfig(config) {\n config = _objectSpread({}, Default$1, config);\n config.toggle = Boolean(config.toggle); // Coerce string values\n\n Util.typeCheckConfig(NAME$3, config, DefaultType$1);\n return config;\n };\n\n _proto._getDimension = function _getDimension() {\n var hasWidth = $(this._element).hasClass(Dimension.WIDTH);\n return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT;\n };\n\n _proto._getParent = function _getParent() {\n var _this3 = this;\n\n var parent;\n\n if (Util.isElement(this._config.parent)) {\n parent = this._config.parent; // It's a jQuery object\n\n if (typeof this._config.parent.jquery !== 'undefined') {\n parent = this._config.parent[0];\n }\n } else {\n parent = document.querySelector(this._config.parent);\n }\n\n var selector = \"[data-toggle=\\\"collapse\\\"][data-parent=\\\"\" + this._config.parent + \"\\\"]\";\n var children = [].slice.call(parent.querySelectorAll(selector));\n $(children).each(function (i, element) {\n _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);\n });\n return parent;\n };\n\n _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {\n var isOpen = $(element).hasClass(ClassName$3.SHOW);\n\n if (triggerArray.length) {\n $(triggerArray).toggleClass(ClassName$3.COLLAPSED, !isOpen).attr('aria-expanded', isOpen);\n }\n }; // Static\n\n\n Collapse._getTargetFromElement = function _getTargetFromElement(element) {\n var selector = Util.getSelectorFromElement(element);\n return selector ? document.querySelector(selector) : null;\n };\n\n Collapse._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $this = $(this);\n var data = $this.data(DATA_KEY$3);\n\n var _config = _objectSpread({}, Default$1, $this.data(), typeof config === 'object' && config ? config : {});\n\n if (!data && _config.toggle && /show|hide/.test(config)) {\n _config.toggle = false;\n }\n\n if (!data) {\n data = new Collapse(this, _config);\n $this.data(DATA_KEY$3, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Collapse, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$3;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$1;\n }\n }]);\n\n return Collapse;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $(document).on(Event$3.CLICK_DATA_API, Selector$3.DATA_TOGGLE, function (event) {\n // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n if (event.currentTarget.tagName === 'A') {\n event.preventDefault();\n }\n\n var $trigger = $(this);\n var selector = Util.getSelectorFromElement(this);\n var selectors = [].slice.call(document.querySelectorAll(selector));\n $(selectors).each(function () {\n var $target = $(this);\n var data = $target.data(DATA_KEY$3);\n var config = data ? 'toggle' : $trigger.data();\n\n Collapse._jQueryInterface.call($target, config);\n });\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME$3] = Collapse._jQueryInterface;\n $.fn[NAME$3].Constructor = Collapse;\n\n $.fn[NAME$3].noConflict = function () {\n $.fn[NAME$3] = JQUERY_NO_CONFLICT$3;\n return Collapse._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$4 = 'dropdown';\n var VERSION$4 = '4.2.1';\n var DATA_KEY$4 = 'bs.dropdown';\n var EVENT_KEY$4 = \".\" + DATA_KEY$4;\n var DATA_API_KEY$4 = '.data-api';\n var JQUERY_NO_CONFLICT$4 = $.fn[NAME$4];\n var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key\n\n var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key\n\n var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key\n\n var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key\n\n var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)\n\n var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + \"|\" + ARROW_DOWN_KEYCODE + \"|\" + ESCAPE_KEYCODE);\n var Event$4 = {\n HIDE: \"hide\" + EVENT_KEY$4,\n HIDDEN: \"hidden\" + EVENT_KEY$4,\n SHOW: \"show\" + EVENT_KEY$4,\n SHOWN: \"shown\" + EVENT_KEY$4,\n CLICK: \"click\" + EVENT_KEY$4,\n CLICK_DATA_API: \"click\" + EVENT_KEY$4 + DATA_API_KEY$4,\n KEYDOWN_DATA_API: \"keydown\" + EVENT_KEY$4 + DATA_API_KEY$4,\n KEYUP_DATA_API: \"keyup\" + EVENT_KEY$4 + DATA_API_KEY$4\n };\n var ClassName$4 = {\n DISABLED: 'disabled',\n SHOW: 'show',\n DROPUP: 'dropup',\n DROPRIGHT: 'dropright',\n DROPLEFT: 'dropleft',\n MENURIGHT: 'dropdown-menu-right',\n MENULEFT: 'dropdown-menu-left',\n POSITION_STATIC: 'position-static'\n };\n var Selector$4 = {\n DATA_TOGGLE: '[data-toggle=\"dropdown\"]',\n FORM_CHILD: '.dropdown form',\n MENU: '.dropdown-menu',\n NAVBAR_NAV: '.navbar-nav',\n VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n };\n var AttachmentMap = {\n TOP: 'top-start',\n TOPEND: 'top-end',\n BOTTOM: 'bottom-start',\n BOTTOMEND: 'bottom-end',\n RIGHT: 'right-start',\n RIGHTEND: 'right-end',\n LEFT: 'left-start',\n LEFTEND: 'left-end'\n };\n var Default$2 = {\n offset: 0,\n flip: true,\n boundary: 'scrollParent',\n reference: 'toggle',\n display: 'dynamic'\n };\n var DefaultType$2 = {\n offset: '(number|string|function)',\n flip: 'boolean',\n boundary: '(string|element)',\n reference: '(string|element)',\n display: 'string'\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n };\n\n var Dropdown =\n /*#__PURE__*/\n function () {\n function Dropdown(element, config) {\n this._element = element;\n this._popper = null;\n this._config = this._getConfig(config);\n this._menu = this._getMenuElement();\n this._inNavbar = this._detectNavbar();\n\n this._addEventListeners();\n } // Getters\n\n\n var _proto = Dropdown.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED)) {\n return;\n }\n\n var parent = Dropdown._getParentFromElement(this._element);\n\n var isActive = $(this._menu).hasClass(ClassName$4.SHOW);\n\n Dropdown._clearMenus();\n\n if (isActive) {\n return;\n }\n\n var relatedTarget = {\n relatedTarget: this._element\n };\n var showEvent = $.Event(Event$4.SHOW, relatedTarget);\n $(parent).trigger(showEvent);\n\n if (showEvent.isDefaultPrevented()) {\n return;\n } // Disable totally Popper.js for Dropdown in Navbar\n\n\n if (!this._inNavbar) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper.js (https://popper.js.org/)');\n }\n\n var referenceElement = this._element;\n\n if (this._config.reference === 'parent') {\n referenceElement = parent;\n } else if (Util.isElement(this._config.reference)) {\n referenceElement = this._config.reference; // Check if it's jQuery element\n\n if (typeof this._config.reference.jquery !== 'undefined') {\n referenceElement = this._config.reference[0];\n }\n } // If boundary is not `scrollParent`, then set position to `static`\n // to allow the menu to \"escape\" the scroll parent's boundaries\n // https://github.com/twbs/bootstrap/issues/24251\n\n\n if (this._config.boundary !== 'scrollParent') {\n $(parent).addClass(ClassName$4.POSITION_STATIC);\n }\n\n this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig());\n } // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n\n if ('ontouchstart' in document.documentElement && $(parent).closest(Selector$4.NAVBAR_NAV).length === 0) {\n $(document.body).children().on('mouseover', null, $.noop);\n }\n\n this._element.focus();\n\n this._element.setAttribute('aria-expanded', true);\n\n $(this._menu).toggleClass(ClassName$4.SHOW);\n $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.SHOWN, relatedTarget));\n };\n\n _proto.show = function show() {\n if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED) || $(this._menu).hasClass(ClassName$4.SHOW)) {\n return;\n }\n\n var relatedTarget = {\n relatedTarget: this._element\n };\n var showEvent = $.Event(Event$4.SHOW, relatedTarget);\n\n var parent = Dropdown._getParentFromElement(this._element);\n\n $(parent).trigger(showEvent);\n\n if (showEvent.isDefaultPrevented()) {\n return;\n }\n\n $(this._menu).toggleClass(ClassName$4.SHOW);\n $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.SHOWN, relatedTarget));\n };\n\n _proto.hide = function hide() {\n if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED) || !$(this._menu).hasClass(ClassName$4.SHOW)) {\n return;\n }\n\n var relatedTarget = {\n relatedTarget: this._element\n };\n var hideEvent = $.Event(Event$4.HIDE, relatedTarget);\n\n var parent = Dropdown._getParentFromElement(this._element);\n\n $(parent).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n return;\n }\n\n $(this._menu).toggleClass(ClassName$4.SHOW);\n $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.HIDDEN, relatedTarget));\n };\n\n _proto.dispose = function dispose() {\n $.removeData(this._element, DATA_KEY$4);\n $(this._element).off(EVENT_KEY$4);\n this._element = null;\n this._menu = null;\n\n if (this._popper !== null) {\n this._popper.destroy();\n\n this._popper = null;\n }\n };\n\n _proto.update = function update() {\n this._inNavbar = this._detectNavbar();\n\n if (this._popper !== null) {\n this._popper.scheduleUpdate();\n }\n }; // Private\n\n\n _proto._addEventListeners = function _addEventListeners() {\n var _this = this;\n\n $(this._element).on(Event$4.CLICK, function (event) {\n event.preventDefault();\n event.stopPropagation();\n\n _this.toggle();\n });\n };\n\n _proto._getConfig = function _getConfig(config) {\n config = _objectSpread({}, this.constructor.Default, $(this._element).data(), config);\n Util.typeCheckConfig(NAME$4, config, this.constructor.DefaultType);\n return config;\n };\n\n _proto._getMenuElement = function _getMenuElement() {\n if (!this._menu) {\n var parent = Dropdown._getParentFromElement(this._element);\n\n if (parent) {\n this._menu = parent.querySelector(Selector$4.MENU);\n }\n }\n\n return this._menu;\n };\n\n _proto._getPlacement = function _getPlacement() {\n var $parentDropdown = $(this._element.parentNode);\n var placement = AttachmentMap.BOTTOM; // Handle dropup\n\n if ($parentDropdown.hasClass(ClassName$4.DROPUP)) {\n placement = AttachmentMap.TOP;\n\n if ($(this._menu).hasClass(ClassName$4.MENURIGHT)) {\n placement = AttachmentMap.TOPEND;\n }\n } else if ($parentDropdown.hasClass(ClassName$4.DROPRIGHT)) {\n placement = AttachmentMap.RIGHT;\n } else if ($parentDropdown.hasClass(ClassName$4.DROPLEFT)) {\n placement = AttachmentMap.LEFT;\n } else if ($(this._menu).hasClass(ClassName$4.MENURIGHT)) {\n placement = AttachmentMap.BOTTOMEND;\n }\n\n return placement;\n };\n\n _proto._detectNavbar = function _detectNavbar() {\n return $(this._element).closest('.navbar').length > 0;\n };\n\n _proto._getPopperConfig = function _getPopperConfig() {\n var _this2 = this;\n\n var offsetConf = {};\n\n if (typeof this._config.offset === 'function') {\n offsetConf.fn = function (data) {\n data.offsets = _objectSpread({}, data.offsets, _this2._config.offset(data.offsets) || {});\n return data;\n };\n } else {\n offsetConf.offset = this._config.offset;\n }\n\n var popperConfig = {\n placement: this._getPlacement(),\n modifiers: {\n offset: offsetConf,\n flip: {\n enabled: this._config.flip\n },\n preventOverflow: {\n boundariesElement: this._config.boundary\n }\n } // Disable Popper.js if we have a static display\n\n };\n\n if (this._config.display === 'static') {\n popperConfig.modifiers.applyStyle = {\n enabled: false\n };\n }\n\n return popperConfig;\n }; // Static\n\n\n Dropdown._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $(this).data(DATA_KEY$4);\n\n var _config = typeof config === 'object' ? config : null;\n\n if (!data) {\n data = new Dropdown(this, _config);\n $(this).data(DATA_KEY$4, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n Dropdown._clearMenus = function _clearMenus(event) {\n if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n return;\n }\n\n var toggles = [].slice.call(document.querySelectorAll(Selector$4.DATA_TOGGLE));\n\n for (var i = 0, len = toggles.length; i < len; i++) {\n var parent = Dropdown._getParentFromElement(toggles[i]);\n\n var context = $(toggles[i]).data(DATA_KEY$4);\n var relatedTarget = {\n relatedTarget: toggles[i]\n };\n\n if (event && event.type === 'click') {\n relatedTarget.clickEvent = event;\n }\n\n if (!context) {\n continue;\n }\n\n var dropdownMenu = context._menu;\n\n if (!$(parent).hasClass(ClassName$4.SHOW)) {\n continue;\n }\n\n if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $.contains(parent, event.target)) {\n continue;\n }\n\n var hideEvent = $.Event(Event$4.HIDE, relatedTarget);\n $(parent).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n continue;\n } // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().off('mouseover', null, $.noop);\n }\n\n toggles[i].setAttribute('aria-expanded', 'false');\n $(dropdownMenu).removeClass(ClassName$4.SHOW);\n $(parent).removeClass(ClassName$4.SHOW).trigger($.Event(Event$4.HIDDEN, relatedTarget));\n }\n };\n\n Dropdown._getParentFromElement = function _getParentFromElement(element) {\n var parent;\n var selector = Util.getSelectorFromElement(element);\n\n if (selector) {\n parent = document.querySelector(selector);\n }\n\n return parent || element.parentNode;\n }; // eslint-disable-next-line complexity\n\n\n Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $(event.target).closest(Selector$4.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n if (this.disabled || $(this).hasClass(ClassName$4.DISABLED)) {\n return;\n }\n\n var parent = Dropdown._getParentFromElement(this);\n\n var isActive = $(parent).hasClass(ClassName$4.SHOW);\n\n if (!isActive || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {\n if (event.which === ESCAPE_KEYCODE) {\n var toggle = parent.querySelector(Selector$4.DATA_TOGGLE);\n $(toggle).trigger('focus');\n }\n\n $(this).trigger('click');\n return;\n }\n\n var items = [].slice.call(parent.querySelectorAll(Selector$4.VISIBLE_ITEMS));\n\n if (items.length === 0) {\n return;\n }\n\n var index = items.indexOf(event.target);\n\n if (event.which === ARROW_UP_KEYCODE && index > 0) {\n // Up\n index--;\n }\n\n if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {\n // Down\n index++;\n }\n\n if (index < 0) {\n index = 0;\n }\n\n items[index].focus();\n };\n\n _createClass(Dropdown, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$4;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$2;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$2;\n }\n }]);\n\n return Dropdown;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $(document).on(Event$4.KEYDOWN_DATA_API, Selector$4.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event$4.KEYDOWN_DATA_API, Selector$4.MENU, Dropdown._dataApiKeydownHandler).on(Event$4.CLICK_DATA_API + \" \" + Event$4.KEYUP_DATA_API, Dropdown._clearMenus).on(Event$4.CLICK_DATA_API, Selector$4.DATA_TOGGLE, function (event) {\n event.preventDefault();\n event.stopPropagation();\n\n Dropdown._jQueryInterface.call($(this), 'toggle');\n }).on(Event$4.CLICK_DATA_API, Selector$4.FORM_CHILD, function (e) {\n e.stopPropagation();\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME$4] = Dropdown._jQueryInterface;\n $.fn[NAME$4].Constructor = Dropdown;\n\n $.fn[NAME$4].noConflict = function () {\n $.fn[NAME$4] = JQUERY_NO_CONFLICT$4;\n return Dropdown._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$5 = 'modal';\n var VERSION$5 = '4.2.1';\n var DATA_KEY$5 = 'bs.modal';\n var EVENT_KEY$5 = \".\" + DATA_KEY$5;\n var DATA_API_KEY$5 = '.data-api';\n var JQUERY_NO_CONFLICT$5 = $.fn[NAME$5];\n var ESCAPE_KEYCODE$1 = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n var Default$3 = {\n backdrop: true,\n keyboard: true,\n focus: true,\n show: true\n };\n var DefaultType$3 = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n focus: 'boolean',\n show: 'boolean'\n };\n var Event$5 = {\n HIDE: \"hide\" + EVENT_KEY$5,\n HIDDEN: \"hidden\" + EVENT_KEY$5,\n SHOW: \"show\" + EVENT_KEY$5,\n SHOWN: \"shown\" + EVENT_KEY$5,\n FOCUSIN: \"focusin\" + EVENT_KEY$5,\n RESIZE: \"resize\" + EVENT_KEY$5,\n CLICK_DISMISS: \"click.dismiss\" + EVENT_KEY$5,\n KEYDOWN_DISMISS: \"keydown.dismiss\" + EVENT_KEY$5,\n MOUSEUP_DISMISS: \"mouseup.dismiss\" + EVENT_KEY$5,\n MOUSEDOWN_DISMISS: \"mousedown.dismiss\" + EVENT_KEY$5,\n CLICK_DATA_API: \"click\" + EVENT_KEY$5 + DATA_API_KEY$5\n };\n var ClassName$5 = {\n SCROLLBAR_MEASURER: 'modal-scrollbar-measure',\n BACKDROP: 'modal-backdrop',\n OPEN: 'modal-open',\n FADE: 'fade',\n SHOW: 'show'\n };\n var Selector$5 = {\n DIALOG: '.modal-dialog',\n DATA_TOGGLE: '[data-toggle=\"modal\"]',\n DATA_DISMISS: '[data-dismiss=\"modal\"]',\n FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n STICKY_CONTENT: '.sticky-top'\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n };\n\n var Modal =\n /*#__PURE__*/\n function () {\n function Modal(element, config) {\n this._config = this._getConfig(config);\n this._element = element;\n this._dialog = element.querySelector(Selector$5.DIALOG);\n this._backdrop = null;\n this._isShown = false;\n this._isBodyOverflowing = false;\n this._ignoreBackdropClick = false;\n this._isTransitioning = false;\n this._scrollbarWidth = 0;\n } // Getters\n\n\n var _proto = Modal.prototype;\n\n // Public\n _proto.toggle = function toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n };\n\n _proto.show = function show(relatedTarget) {\n var _this = this;\n\n if (this._isShown || this._isTransitioning) {\n return;\n }\n\n if ($(this._element).hasClass(ClassName$5.FADE)) {\n this._isTransitioning = true;\n }\n\n var showEvent = $.Event(Event$5.SHOW, {\n relatedTarget: relatedTarget\n });\n $(this._element).trigger(showEvent);\n\n if (this._isShown || showEvent.isDefaultPrevented()) {\n return;\n }\n\n this._isShown = true;\n\n this._checkScrollbar();\n\n this._setScrollbar();\n\n this._adjustDialog();\n\n this._setEscapeEvent();\n\n this._setResizeEvent();\n\n $(this._element).on(Event$5.CLICK_DISMISS, Selector$5.DATA_DISMISS, function (event) {\n return _this.hide(event);\n });\n $(this._dialog).on(Event$5.MOUSEDOWN_DISMISS, function () {\n $(_this._element).one(Event$5.MOUSEUP_DISMISS, function (event) {\n if ($(event.target).is(_this._element)) {\n _this._ignoreBackdropClick = true;\n }\n });\n });\n\n this._showBackdrop(function () {\n return _this._showElement(relatedTarget);\n });\n };\n\n _proto.hide = function hide(event) {\n var _this2 = this;\n\n if (event) {\n event.preventDefault();\n }\n\n if (!this._isShown || this._isTransitioning) {\n return;\n }\n\n var hideEvent = $.Event(Event$5.HIDE);\n $(this._element).trigger(hideEvent);\n\n if (!this._isShown || hideEvent.isDefaultPrevented()) {\n return;\n }\n\n this._isShown = false;\n var transition = $(this._element).hasClass(ClassName$5.FADE);\n\n if (transition) {\n this._isTransitioning = true;\n }\n\n this._setEscapeEvent();\n\n this._setResizeEvent();\n\n $(document).off(Event$5.FOCUSIN);\n $(this._element).removeClass(ClassName$5.SHOW);\n $(this._element).off(Event$5.CLICK_DISMISS);\n $(this._dialog).off(Event$5.MOUSEDOWN_DISMISS);\n\n if (transition) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $(this._element).one(Util.TRANSITION_END, function (event) {\n return _this2._hideModal(event);\n }).emulateTransitionEnd(transitionDuration);\n } else {\n this._hideModal();\n }\n };\n\n _proto.dispose = function dispose() {\n [window, this._element, this._dialog].forEach(function (htmlElement) {\n return $(htmlElement).off(EVENT_KEY$5);\n });\n /**\n * `document` has 2 events `Event.FOCUSIN` and `Event.CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `Event.CLICK_DATA_API` event that should remain\n */\n\n $(document).off(Event$5.FOCUSIN);\n $.removeData(this._element, DATA_KEY$5);\n this._config = null;\n this._element = null;\n this._dialog = null;\n this._backdrop = null;\n this._isShown = null;\n this._isBodyOverflowing = null;\n this._ignoreBackdropClick = null;\n this._isTransitioning = null;\n this._scrollbarWidth = null;\n };\n\n _proto.handleUpdate = function handleUpdate() {\n this._adjustDialog();\n }; // Private\n\n\n _proto._getConfig = function _getConfig(config) {\n config = _objectSpread({}, Default$3, config);\n Util.typeCheckConfig(NAME$5, config, DefaultType$3);\n return config;\n };\n\n _proto._showElement = function _showElement(relatedTarget) {\n var _this3 = this;\n\n var transition = $(this._element).hasClass(ClassName$5.FADE);\n\n if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element);\n }\n\n this._element.style.display = 'block';\n\n this._element.removeAttribute('aria-hidden');\n\n this._element.setAttribute('aria-modal', true);\n\n this._element.scrollTop = 0;\n\n if (transition) {\n Util.reflow(this._element);\n }\n\n $(this._element).addClass(ClassName$5.SHOW);\n\n if (this._config.focus) {\n this._enforceFocus();\n }\n\n var shownEvent = $.Event(Event$5.SHOWN, {\n relatedTarget: relatedTarget\n });\n\n var transitionComplete = function transitionComplete() {\n if (_this3._config.focus) {\n _this3._element.focus();\n }\n\n _this3._isTransitioning = false;\n $(_this3._element).trigger(shownEvent);\n };\n\n if (transition) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._dialog);\n $(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);\n } else {\n transitionComplete();\n }\n };\n\n _proto._enforceFocus = function _enforceFocus() {\n var _this4 = this;\n\n $(document).off(Event$5.FOCUSIN) // Guard against infinite focus loop\n .on(Event$5.FOCUSIN, function (event) {\n if (document !== event.target && _this4._element !== event.target && $(_this4._element).has(event.target).length === 0) {\n _this4._element.focus();\n }\n });\n };\n\n _proto._setEscapeEvent = function _setEscapeEvent() {\n var _this5 = this;\n\n if (this._isShown && this._config.keyboard) {\n $(this._element).on(Event$5.KEYDOWN_DISMISS, function (event) {\n if (event.which === ESCAPE_KEYCODE$1) {\n event.preventDefault();\n\n _this5.hide();\n }\n });\n } else if (!this._isShown) {\n $(this._element).off(Event$5.KEYDOWN_DISMISS);\n }\n };\n\n _proto._setResizeEvent = function _setResizeEvent() {\n var _this6 = this;\n\n if (this._isShown) {\n $(window).on(Event$5.RESIZE, function (event) {\n return _this6.handleUpdate(event);\n });\n } else {\n $(window).off(Event$5.RESIZE);\n }\n };\n\n _proto._hideModal = function _hideModal() {\n var _this7 = this;\n\n this._element.style.display = 'none';\n\n this._element.setAttribute('aria-hidden', true);\n\n this._element.removeAttribute('aria-modal');\n\n this._isTransitioning = false;\n\n this._showBackdrop(function () {\n $(document.body).removeClass(ClassName$5.OPEN);\n\n _this7._resetAdjustments();\n\n _this7._resetScrollbar();\n\n $(_this7._element).trigger(Event$5.HIDDEN);\n });\n };\n\n _proto._removeBackdrop = function _removeBackdrop() {\n if (this._backdrop) {\n $(this._backdrop).remove();\n this._backdrop = null;\n }\n };\n\n _proto._showBackdrop = function _showBackdrop(callback) {\n var _this8 = this;\n\n var animate = $(this._element).hasClass(ClassName$5.FADE) ? ClassName$5.FADE : '';\n\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement('div');\n this._backdrop.className = ClassName$5.BACKDROP;\n\n if (animate) {\n this._backdrop.classList.add(animate);\n }\n\n $(this._backdrop).appendTo(document.body);\n $(this._element).on(Event$5.CLICK_DISMISS, function (event) {\n if (_this8._ignoreBackdropClick) {\n _this8._ignoreBackdropClick = false;\n return;\n }\n\n if (event.target !== event.currentTarget) {\n return;\n }\n\n if (_this8._config.backdrop === 'static') {\n _this8._element.focus();\n } else {\n _this8.hide();\n }\n });\n\n if (animate) {\n Util.reflow(this._backdrop);\n }\n\n $(this._backdrop).addClass(ClassName$5.SHOW);\n\n if (!callback) {\n return;\n }\n\n if (!animate) {\n callback();\n return;\n }\n\n var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n $(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);\n } else if (!this._isShown && this._backdrop) {\n $(this._backdrop).removeClass(ClassName$5.SHOW);\n\n var callbackRemove = function callbackRemove() {\n _this8._removeBackdrop();\n\n if (callback) {\n callback();\n }\n };\n\n if ($(this._element).hasClass(ClassName$5.FADE)) {\n var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n\n $(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);\n } else {\n callbackRemove();\n }\n } else if (callback) {\n callback();\n }\n }; // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // todo (fat): these should probably be refactored out of modal.js\n // ----------------------------------------------------------------------\n\n\n _proto._adjustDialog = function _adjustDialog() {\n var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n if (!this._isBodyOverflowing && isModalOverflowing) {\n this._element.style.paddingLeft = this._scrollbarWidth + \"px\";\n }\n\n if (this._isBodyOverflowing && !isModalOverflowing) {\n this._element.style.paddingRight = this._scrollbarWidth + \"px\";\n }\n };\n\n _proto._resetAdjustments = function _resetAdjustments() {\n this._element.style.paddingLeft = '';\n this._element.style.paddingRight = '';\n };\n\n _proto._checkScrollbar = function _checkScrollbar() {\n var rect = document.body.getBoundingClientRect();\n this._isBodyOverflowing = rect.left + rect.right < window.innerWidth;\n this._scrollbarWidth = this._getScrollbarWidth();\n };\n\n _proto._setScrollbar = function _setScrollbar() {\n var _this9 = this;\n\n if (this._isBodyOverflowing) {\n // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n var fixedContent = [].slice.call(document.querySelectorAll(Selector$5.FIXED_CONTENT));\n var stickyContent = [].slice.call(document.querySelectorAll(Selector$5.STICKY_CONTENT)); // Adjust fixed content padding\n\n $(fixedContent).each(function (index, element) {\n var actualPadding = element.style.paddingRight;\n var calculatedPadding = $(element).css('padding-right');\n $(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this9._scrollbarWidth + \"px\");\n }); // Adjust sticky content margin\n\n $(stickyContent).each(function (index, element) {\n var actualMargin = element.style.marginRight;\n var calculatedMargin = $(element).css('margin-right');\n $(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this9._scrollbarWidth + \"px\");\n }); // Adjust body padding\n\n var actualPadding = document.body.style.paddingRight;\n var calculatedPadding = $(document.body).css('padding-right');\n $(document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + \"px\");\n }\n\n $(document.body).addClass(ClassName$5.OPEN);\n };\n\n _proto._resetScrollbar = function _resetScrollbar() {\n // Restore fixed content padding\n var fixedContent = [].slice.call(document.querySelectorAll(Selector$5.FIXED_CONTENT));\n $(fixedContent).each(function (index, element) {\n var padding = $(element).data('padding-right');\n $(element).removeData('padding-right');\n element.style.paddingRight = padding ? padding : '';\n }); // Restore sticky content\n\n var elements = [].slice.call(document.querySelectorAll(\"\" + Selector$5.STICKY_CONTENT));\n $(elements).each(function (index, element) {\n var margin = $(element).data('margin-right');\n\n if (typeof margin !== 'undefined') {\n $(element).css('margin-right', margin).removeData('margin-right');\n }\n }); // Restore body padding\n\n var padding = $(document.body).data('padding-right');\n $(document.body).removeData('padding-right');\n document.body.style.paddingRight = padding ? padding : '';\n };\n\n _proto._getScrollbarWidth = function _getScrollbarWidth() {\n // thx d.walsh\n var scrollDiv = document.createElement('div');\n scrollDiv.className = ClassName$5.SCROLLBAR_MEASURER;\n document.body.appendChild(scrollDiv);\n var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollbarWidth;\n }; // Static\n\n\n Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n var data = $(this).data(DATA_KEY$5);\n\n var _config = _objectSpread({}, Default$3, $(this).data(), typeof config === 'object' && config ? config : {});\n\n if (!data) {\n data = new Modal(this, _config);\n $(this).data(DATA_KEY$5, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config](relatedTarget);\n } else if (_config.show) {\n data.show(relatedTarget);\n }\n });\n };\n\n _createClass(Modal, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$5;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$3;\n }\n }]);\n\n return Modal;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $(document).on(Event$5.CLICK_DATA_API, Selector$5.DATA_TOGGLE, function (event) {\n var _this10 = this;\n\n var target;\n var selector = Util.getSelectorFromElement(this);\n\n if (selector) {\n target = document.querySelector(selector);\n }\n\n var config = $(target).data(DATA_KEY$5) ? 'toggle' : _objectSpread({}, $(target).data(), $(this).data());\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault();\n }\n\n var $target = $(target).one(Event$5.SHOW, function (showEvent) {\n if (showEvent.isDefaultPrevented()) {\n // Only register focus restorer if modal will actually get shown\n return;\n }\n\n $target.one(Event$5.HIDDEN, function () {\n if ($(_this10).is(':visible')) {\n _this10.focus();\n }\n });\n });\n\n Modal._jQueryInterface.call($(target), config, this);\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME$5] = Modal._jQueryInterface;\n $.fn[NAME$5].Constructor = Modal;\n\n $.fn[NAME$5].noConflict = function () {\n $.fn[NAME$5] = JQUERY_NO_CONFLICT$5;\n return Modal._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$6 = 'tooltip';\n var VERSION$6 = '4.2.1';\n var DATA_KEY$6 = 'bs.tooltip';\n var EVENT_KEY$6 = \".\" + DATA_KEY$6;\n var JQUERY_NO_CONFLICT$6 = $.fn[NAME$6];\n var CLASS_PREFIX = 'bs-tooltip';\n var BSCLS_PREFIX_REGEX = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX + \"\\\\S+\", 'g');\n var DefaultType$4 = {\n animation: 'boolean',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string',\n delay: '(number|object)',\n html: 'boolean',\n selector: '(string|boolean)',\n placement: '(string|function)',\n offset: '(number|string)',\n container: '(string|element|boolean)',\n fallbackPlacement: '(string|array)',\n boundary: '(string|element)'\n };\n var AttachmentMap$1 = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: 'right',\n BOTTOM: 'bottom',\n LEFT: 'left'\n };\n var Default$4 = {\n animation: true,\n template: '<div class=\"tooltip\" role=\"tooltip\">' + '<div class=\"arrow\"></div>' + '<div class=\"tooltip-inner\"></div></div>',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n selector: false,\n placement: 'top',\n offset: 0,\n container: false,\n fallbackPlacement: 'flip',\n boundary: 'scrollParent'\n };\n var HoverState = {\n SHOW: 'show',\n OUT: 'out'\n };\n var Event$6 = {\n HIDE: \"hide\" + EVENT_KEY$6,\n HIDDEN: \"hidden\" + EVENT_KEY$6,\n SHOW: \"show\" + EVENT_KEY$6,\n SHOWN: \"shown\" + EVENT_KEY$6,\n INSERTED: \"inserted\" + EVENT_KEY$6,\n CLICK: \"click\" + EVENT_KEY$6,\n FOCUSIN: \"focusin\" + EVENT_KEY$6,\n FOCUSOUT: \"focusout\" + EVENT_KEY$6,\n MOUSEENTER: \"mouseenter\" + EVENT_KEY$6,\n MOUSELEAVE: \"mouseleave\" + EVENT_KEY$6\n };\n var ClassName$6 = {\n FADE: 'fade',\n SHOW: 'show'\n };\n var Selector$6 = {\n TOOLTIP: '.tooltip',\n TOOLTIP_INNER: '.tooltip-inner',\n ARROW: '.arrow'\n };\n var Trigger = {\n HOVER: 'hover',\n FOCUS: 'focus',\n CLICK: 'click',\n MANUAL: 'manual'\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n };\n\n var Tooltip =\n /*#__PURE__*/\n function () {\n function Tooltip(element, config) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper.js (https://popper.js.org/)');\n } // private\n\n\n this._isEnabled = true;\n this._timeout = 0;\n this._hoverState = '';\n this._activeTrigger = {};\n this._popper = null; // Protected\n\n this.element = element;\n this.config = this._getConfig(config);\n this.tip = null;\n\n this._setListeners();\n } // Getters\n\n\n var _proto = Tooltip.prototype;\n\n // Public\n _proto.enable = function enable() {\n this._isEnabled = true;\n };\n\n _proto.disable = function disable() {\n this._isEnabled = false;\n };\n\n _proto.toggleEnabled = function toggleEnabled() {\n this._isEnabled = !this._isEnabled;\n };\n\n _proto.toggle = function toggle(event) {\n if (!this._isEnabled) {\n return;\n }\n\n if (event) {\n var dataKey = this.constructor.DATA_KEY;\n var context = $(event.currentTarget).data(dataKey);\n\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $(event.currentTarget).data(dataKey, context);\n }\n\n context._activeTrigger.click = !context._activeTrigger.click;\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context);\n } else {\n context._leave(null, context);\n }\n } else {\n if ($(this.getTipElement()).hasClass(ClassName$6.SHOW)) {\n this._leave(null, this);\n\n return;\n }\n\n this._enter(null, this);\n }\n };\n\n _proto.dispose = function dispose() {\n clearTimeout(this._timeout);\n $.removeData(this.element, this.constructor.DATA_KEY);\n $(this.element).off(this.constructor.EVENT_KEY);\n $(this.element).closest('.modal').off('hide.bs.modal');\n\n if (this.tip) {\n $(this.tip).remove();\n }\n\n this._isEnabled = null;\n this._timeout = null;\n this._hoverState = null;\n this._activeTrigger = null;\n\n if (this._popper !== null) {\n this._popper.destroy();\n }\n\n this._popper = null;\n this.element = null;\n this.config = null;\n this.tip = null;\n };\n\n _proto.show = function show() {\n var _this = this;\n\n if ($(this.element).css('display') === 'none') {\n throw new Error('Please use show on visible elements');\n }\n\n var showEvent = $.Event(this.constructor.Event.SHOW);\n\n if (this.isWithContent() && this._isEnabled) {\n $(this.element).trigger(showEvent);\n var shadowRoot = Util.findShadowRoot(this.element);\n var isInTheDom = $.contains(shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement, this.element);\n\n if (showEvent.isDefaultPrevented() || !isInTheDom) {\n return;\n }\n\n var tip = this.getTipElement();\n var tipId = Util.getUID(this.constructor.NAME);\n tip.setAttribute('id', tipId);\n this.element.setAttribute('aria-describedby', tipId);\n this.setContent();\n\n if (this.config.animation) {\n $(tip).addClass(ClassName$6.FADE);\n }\n\n var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;\n\n var attachment = this._getAttachment(placement);\n\n this.addAttachmentClass(attachment);\n\n var container = this._getContainer();\n\n $(tip).data(this.constructor.DATA_KEY, this);\n\n if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) {\n $(tip).appendTo(container);\n }\n\n $(this.element).trigger(this.constructor.Event.INSERTED);\n this._popper = new Popper(this.element, tip, {\n placement: attachment,\n modifiers: {\n offset: {\n offset: this.config.offset\n },\n flip: {\n behavior: this.config.fallbackPlacement\n },\n arrow: {\n element: Selector$6.ARROW\n },\n preventOverflow: {\n boundariesElement: this.config.boundary\n }\n },\n onCreate: function onCreate(data) {\n if (data.originalPlacement !== data.placement) {\n _this._handlePopperPlacementChange(data);\n }\n },\n onUpdate: function onUpdate(data) {\n return _this._handlePopperPlacementChange(data);\n }\n });\n $(tip).addClass(ClassName$6.SHOW); // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().on('mouseover', null, $.noop);\n }\n\n var complete = function complete() {\n if (_this.config.animation) {\n _this._fixTransition();\n }\n\n var prevHoverState = _this._hoverState;\n _this._hoverState = null;\n $(_this.element).trigger(_this.constructor.Event.SHOWN);\n\n if (prevHoverState === HoverState.OUT) {\n _this._leave(null, _this);\n }\n };\n\n if ($(this.tip).hasClass(ClassName$6.FADE)) {\n var transitionDuration = Util.getTransitionDurationFromElement(this.tip);\n $(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n }\n };\n\n _proto.hide = function hide(callback) {\n var _this2 = this;\n\n var tip = this.getTipElement();\n var hideEvent = $.Event(this.constructor.Event.HIDE);\n\n var complete = function complete() {\n if (_this2._hoverState !== HoverState.SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip);\n }\n\n _this2._cleanTipClass();\n\n _this2.element.removeAttribute('aria-describedby');\n\n $(_this2.element).trigger(_this2.constructor.Event.HIDDEN);\n\n if (_this2._popper !== null) {\n _this2._popper.destroy();\n }\n\n if (callback) {\n callback();\n }\n };\n\n $(this.element).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n return;\n }\n\n $(tip).removeClass(ClassName$6.SHOW); // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().off('mouseover', null, $.noop);\n }\n\n this._activeTrigger[Trigger.CLICK] = false;\n this._activeTrigger[Trigger.FOCUS] = false;\n this._activeTrigger[Trigger.HOVER] = false;\n\n if ($(this.tip).hasClass(ClassName$6.FADE)) {\n var transitionDuration = Util.getTransitionDurationFromElement(tip);\n $(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n\n this._hoverState = '';\n };\n\n _proto.update = function update() {\n if (this._popper !== null) {\n this._popper.scheduleUpdate();\n }\n }; // Protected\n\n\n _proto.isWithContent = function isWithContent() {\n return Boolean(this.getTitle());\n };\n\n _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(CLASS_PREFIX + \"-\" + attachment);\n };\n\n _proto.getTipElement = function getTipElement() {\n this.tip = this.tip || $(this.config.template)[0];\n return this.tip;\n };\n\n _proto.setContent = function setContent() {\n var tip = this.getTipElement();\n this.setElementContent($(tip.querySelectorAll(Selector$6.TOOLTIP_INNER)), this.getTitle());\n $(tip).removeClass(ClassName$6.FADE + \" \" + ClassName$6.SHOW);\n };\n\n _proto.setElementContent = function setElementContent($element, content) {\n var html = this.config.html;\n\n if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n // Content is a DOM node or a jQuery\n if (html) {\n if (!$(content).parent().is($element)) {\n $element.empty().append(content);\n }\n } else {\n $element.text($(content).text());\n }\n } else {\n $element[html ? 'html' : 'text'](content);\n }\n };\n\n _proto.getTitle = function getTitle() {\n var title = this.element.getAttribute('data-original-title');\n\n if (!title) {\n title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;\n }\n\n return title;\n }; // Private\n\n\n _proto._getContainer = function _getContainer() {\n if (this.config.container === false) {\n return document.body;\n }\n\n if (Util.isElement(this.config.container)) {\n return $(this.config.container);\n }\n\n return $(document).find(this.config.container);\n };\n\n _proto._getAttachment = function _getAttachment(placement) {\n return AttachmentMap$1[placement.toUpperCase()];\n };\n\n _proto._setListeners = function _setListeners() {\n var _this3 = this;\n\n var triggers = this.config.trigger.split(' ');\n triggers.forEach(function (trigger) {\n if (trigger === 'click') {\n $(_this3.element).on(_this3.constructor.Event.CLICK, _this3.config.selector, function (event) {\n return _this3.toggle(event);\n });\n } else if (trigger !== Trigger.MANUAL) {\n var eventIn = trigger === Trigger.HOVER ? _this3.constructor.Event.MOUSEENTER : _this3.constructor.Event.FOCUSIN;\n var eventOut = trigger === Trigger.HOVER ? _this3.constructor.Event.MOUSELEAVE : _this3.constructor.Event.FOCUSOUT;\n $(_this3.element).on(eventIn, _this3.config.selector, function (event) {\n return _this3._enter(event);\n }).on(eventOut, _this3.config.selector, function (event) {\n return _this3._leave(event);\n });\n }\n });\n $(this.element).closest('.modal').on('hide.bs.modal', function () {\n if (_this3.element) {\n _this3.hide();\n }\n });\n\n if (this.config.selector) {\n this.config = _objectSpread({}, this.config, {\n trigger: 'manual',\n selector: ''\n });\n } else {\n this._fixTitle();\n }\n };\n\n _proto._fixTitle = function _fixTitle() {\n var titleType = typeof this.element.getAttribute('data-original-title');\n\n if (this.element.getAttribute('title') || titleType !== 'string') {\n this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '');\n this.element.setAttribute('title', '');\n }\n };\n\n _proto._enter = function _enter(event, context) {\n var dataKey = this.constructor.DATA_KEY;\n context = context || $(event.currentTarget).data(dataKey);\n\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $(event.currentTarget).data(dataKey, context);\n }\n\n if (event) {\n context._activeTrigger[event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true;\n }\n\n if ($(context.getTipElement()).hasClass(ClassName$6.SHOW) || context._hoverState === HoverState.SHOW) {\n context._hoverState = HoverState.SHOW;\n return;\n }\n\n clearTimeout(context._timeout);\n context._hoverState = HoverState.SHOW;\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show();\n return;\n }\n\n context._timeout = setTimeout(function () {\n if (context._hoverState === HoverState.SHOW) {\n context.show();\n }\n }, context.config.delay.show);\n };\n\n _proto._leave = function _leave(event, context) {\n var dataKey = this.constructor.DATA_KEY;\n context = context || $(event.currentTarget).data(dataKey);\n\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $(event.currentTarget).data(dataKey, context);\n }\n\n if (event) {\n context._activeTrigger[event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false;\n }\n\n if (context._isWithActiveTrigger()) {\n return;\n }\n\n clearTimeout(context._timeout);\n context._hoverState = HoverState.OUT;\n\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide();\n return;\n }\n\n context._timeout = setTimeout(function () {\n if (context._hoverState === HoverState.OUT) {\n context.hide();\n }\n }, context.config.delay.hide);\n };\n\n _proto._isWithActiveTrigger = function _isWithActiveTrigger() {\n for (var trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true;\n }\n }\n\n return false;\n };\n\n _proto._getConfig = function _getConfig(config) {\n config = _objectSpread({}, this.constructor.Default, $(this.element).data(), typeof config === 'object' && config ? config : {});\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n };\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString();\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString();\n }\n\n Util.typeCheckConfig(NAME$6, config, this.constructor.DefaultType);\n return config;\n };\n\n _proto._getDelegateConfig = function _getDelegateConfig() {\n var config = {};\n\n if (this.config) {\n for (var key in this.config) {\n if (this.constructor.Default[key] !== this.config[key]) {\n config[key] = this.config[key];\n }\n }\n }\n\n return config;\n };\n\n _proto._cleanTipClass = function _cleanTipClass() {\n var $tip = $(this.getTipElement());\n var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);\n\n if (tabClass !== null && tabClass.length) {\n $tip.removeClass(tabClass.join(''));\n }\n };\n\n _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) {\n var popperInstance = popperData.instance;\n this.tip = popperInstance.popper;\n\n this._cleanTipClass();\n\n this.addAttachmentClass(this._getAttachment(popperData.placement));\n };\n\n _proto._fixTransition = function _fixTransition() {\n var tip = this.getTipElement();\n var initConfigAnimation = this.config.animation;\n\n if (tip.getAttribute('x-placement') !== null) {\n return;\n }\n\n $(tip).removeClass(ClassName$6.FADE);\n this.config.animation = false;\n this.hide();\n this.show();\n this.config.animation = initConfigAnimation;\n }; // Static\n\n\n Tooltip._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $(this).data(DATA_KEY$6);\n\n var _config = typeof config === 'object' && config;\n\n if (!data && /dispose|hide/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new Tooltip(this, _config);\n $(this).data(DATA_KEY$6, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Tooltip, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$6;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$4;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME$6;\n }\n }, {\n key: \"DATA_KEY\",\n get: function get() {\n return DATA_KEY$6;\n }\n }, {\n key: \"Event\",\n get: function get() {\n return Event$6;\n }\n }, {\n key: \"EVENT_KEY\",\n get: function get() {\n return EVENT_KEY$6;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$4;\n }\n }]);\n\n return Tooltip;\n }();\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n\n $.fn[NAME$6] = Tooltip._jQueryInterface;\n $.fn[NAME$6].Constructor = Tooltip;\n\n $.fn[NAME$6].noConflict = function () {\n $.fn[NAME$6] = JQUERY_NO_CONFLICT$6;\n return Tooltip._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$7 = 'popover';\n var VERSION$7 = '4.2.1';\n var DATA_KEY$7 = 'bs.popover';\n var EVENT_KEY$7 = \".\" + DATA_KEY$7;\n var JQUERY_NO_CONFLICT$7 = $.fn[NAME$7];\n var CLASS_PREFIX$1 = 'bs-popover';\n var BSCLS_PREFIX_REGEX$1 = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX$1 + \"\\\\S+\", 'g');\n\n var Default$5 = _objectSpread({}, Tooltip.Default, {\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '<div class=\"popover\" role=\"tooltip\">' + '<div class=\"arrow\"></div>' + '<h3 class=\"popover-header\"></h3>' + '<div class=\"popover-body\"></div></div>'\n });\n\n var DefaultType$5 = _objectSpread({}, Tooltip.DefaultType, {\n content: '(string|element|function)'\n });\n\n var ClassName$7 = {\n FADE: 'fade',\n SHOW: 'show'\n };\n var Selector$7 = {\n TITLE: '.popover-header',\n CONTENT: '.popover-body'\n };\n var Event$7 = {\n HIDE: \"hide\" + EVENT_KEY$7,\n HIDDEN: \"hidden\" + EVENT_KEY$7,\n SHOW: \"show\" + EVENT_KEY$7,\n SHOWN: \"shown\" + EVENT_KEY$7,\n INSERTED: \"inserted\" + EVENT_KEY$7,\n CLICK: \"click\" + EVENT_KEY$7,\n FOCUSIN: \"focusin\" + EVENT_KEY$7,\n FOCUSOUT: \"focusout\" + EVENT_KEY$7,\n MOUSEENTER: \"mouseenter\" + EVENT_KEY$7,\n MOUSELEAVE: \"mouseleave\" + EVENT_KEY$7\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n };\n\n var Popover =\n /*#__PURE__*/\n function (_Tooltip) {\n _inheritsLoose(Popover, _Tooltip);\n\n function Popover() {\n return _Tooltip.apply(this, arguments) || this;\n }\n\n var _proto = Popover.prototype;\n\n // Overrides\n _proto.isWithContent = function isWithContent() {\n return this.getTitle() || this._getContent();\n };\n\n _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(CLASS_PREFIX$1 + \"-\" + attachment);\n };\n\n _proto.getTipElement = function getTipElement() {\n this.tip = this.tip || $(this.config.template)[0];\n return this.tip;\n };\n\n _proto.setContent = function setContent() {\n var $tip = $(this.getTipElement()); // We use append for html objects to maintain js events\n\n this.setElementContent($tip.find(Selector$7.TITLE), this.getTitle());\n\n var content = this._getContent();\n\n if (typeof content === 'function') {\n content = content.call(this.element);\n }\n\n this.setElementContent($tip.find(Selector$7.CONTENT), content);\n $tip.removeClass(ClassName$7.FADE + \" \" + ClassName$7.SHOW);\n }; // Private\n\n\n _proto._getContent = function _getContent() {\n return this.element.getAttribute('data-content') || this.config.content;\n };\n\n _proto._cleanTipClass = function _cleanTipClass() {\n var $tip = $(this.getTipElement());\n var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX$1);\n\n if (tabClass !== null && tabClass.length > 0) {\n $tip.removeClass(tabClass.join(''));\n }\n }; // Static\n\n\n Popover._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $(this).data(DATA_KEY$7);\n\n var _config = typeof config === 'object' ? config : null;\n\n if (!data && /dispose|hide/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new Popover(this, _config);\n $(this).data(DATA_KEY$7, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Popover, null, [{\n key: \"VERSION\",\n // Getters\n get: function get() {\n return VERSION$7;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$5;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME$7;\n }\n }, {\n key: \"DATA_KEY\",\n get: function get() {\n return DATA_KEY$7;\n }\n }, {\n key: \"Event\",\n get: function get() {\n return Event$7;\n }\n }, {\n key: \"EVENT_KEY\",\n get: function get() {\n return EVENT_KEY$7;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$5;\n }\n }]);\n\n return Popover;\n }(Tooltip);\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n\n $.fn[NAME$7] = Popover._jQueryInterface;\n $.fn[NAME$7].Constructor = Popover;\n\n $.fn[NAME$7].noConflict = function () {\n $.fn[NAME$7] = JQUERY_NO_CONFLICT$7;\n return Popover._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$8 = 'scrollspy';\n var VERSION$8 = '4.2.1';\n var DATA_KEY$8 = 'bs.scrollspy';\n var EVENT_KEY$8 = \".\" + DATA_KEY$8;\n var DATA_API_KEY$6 = '.data-api';\n var JQUERY_NO_CONFLICT$8 = $.fn[NAME$8];\n var Default$6 = {\n offset: 10,\n method: 'auto',\n target: ''\n };\n var DefaultType$6 = {\n offset: 'number',\n method: 'string',\n target: '(string|element)'\n };\n var Event$8 = {\n ACTIVATE: \"activate\" + EVENT_KEY$8,\n SCROLL: \"scroll\" + EVENT_KEY$8,\n LOAD_DATA_API: \"load\" + EVENT_KEY$8 + DATA_API_KEY$6\n };\n var ClassName$8 = {\n DROPDOWN_ITEM: 'dropdown-item',\n DROPDOWN_MENU: 'dropdown-menu',\n ACTIVE: 'active'\n };\n var Selector$8 = {\n DATA_SPY: '[data-spy=\"scroll\"]',\n ACTIVE: '.active',\n NAV_LIST_GROUP: '.nav, .list-group',\n NAV_LINKS: '.nav-link',\n NAV_ITEMS: '.nav-item',\n LIST_ITEMS: '.list-group-item',\n DROPDOWN: '.dropdown',\n DROPDOWN_ITEMS: '.dropdown-item',\n DROPDOWN_TOGGLE: '.dropdown-toggle'\n };\n var OffsetMethod = {\n OFFSET: 'offset',\n POSITION: 'position'\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n };\n\n var ScrollSpy =\n /*#__PURE__*/\n function () {\n function ScrollSpy(element, config) {\n var _this = this;\n\n this._element = element;\n this._scrollElement = element.tagName === 'BODY' ? window : element;\n this._config = this._getConfig(config);\n this._selector = this._config.target + \" \" + Selector$8.NAV_LINKS + \",\" + (this._config.target + \" \" + Selector$8.LIST_ITEMS + \",\") + (this._config.target + \" \" + Selector$8.DROPDOWN_ITEMS);\n this._offsets = [];\n this._targets = [];\n this._activeTarget = null;\n this._scrollHeight = 0;\n $(this._scrollElement).on(Event$8.SCROLL, function (event) {\n return _this._process(event);\n });\n this.refresh();\n\n this._process();\n } // Getters\n\n\n var _proto = ScrollSpy.prototype;\n\n // Public\n _proto.refresh = function refresh() {\n var _this2 = this;\n\n var autoMethod = this._scrollElement === this._scrollElement.window ? OffsetMethod.OFFSET : OffsetMethod.POSITION;\n var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;\n var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0;\n this._offsets = [];\n this._targets = [];\n this._scrollHeight = this._getScrollHeight();\n var targets = [].slice.call(document.querySelectorAll(this._selector));\n targets.map(function (element) {\n var target;\n var targetSelector = Util.getSelectorFromElement(element);\n\n if (targetSelector) {\n target = document.querySelector(targetSelector);\n }\n\n if (target) {\n var targetBCR = target.getBoundingClientRect();\n\n if (targetBCR.width || targetBCR.height) {\n // TODO (fat): remove sketch reliance on jQuery position/offset\n return [$(target)[offsetMethod]().top + offsetBase, targetSelector];\n }\n }\n\n return null;\n }).filter(function (item) {\n return item;\n }).sort(function (a, b) {\n return a[0] - b[0];\n }).forEach(function (item) {\n _this2._offsets.push(item[0]);\n\n _this2._targets.push(item[1]);\n });\n };\n\n _proto.dispose = function dispose() {\n $.removeData(this._element, DATA_KEY$8);\n $(this._scrollElement).off(EVENT_KEY$8);\n this._element = null;\n this._scrollElement = null;\n this._config = null;\n this._selector = null;\n this._offsets = null;\n this._targets = null;\n this._activeTarget = null;\n this._scrollHeight = null;\n }; // Private\n\n\n _proto._getConfig = function _getConfig(config) {\n config = _objectSpread({}, Default$6, typeof config === 'object' && config ? config : {});\n\n if (typeof config.target !== 'string') {\n var id = $(config.target).attr('id');\n\n if (!id) {\n id = Util.getUID(NAME$8);\n $(config.target).attr('id', id);\n }\n\n config.target = \"#\" + id;\n }\n\n Util.typeCheckConfig(NAME$8, config, DefaultType$6);\n return config;\n };\n\n _proto._getScrollTop = function _getScrollTop() {\n return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;\n };\n\n _proto._getScrollHeight = function _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);\n };\n\n _proto._getOffsetHeight = function _getOffsetHeight() {\n return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;\n };\n\n _proto._process = function _process() {\n var scrollTop = this._getScrollTop() + this._config.offset;\n\n var scrollHeight = this._getScrollHeight();\n\n var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh();\n }\n\n if (scrollTop >= maxScroll) {\n var target = this._targets[this._targets.length - 1];\n\n if (this._activeTarget !== target) {\n this._activate(target);\n }\n\n return;\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null;\n\n this._clear();\n\n return;\n }\n\n var offsetLength = this._offsets.length;\n\n for (var i = offsetLength; i--;) {\n var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);\n\n if (isActiveTarget) {\n this._activate(this._targets[i]);\n }\n }\n };\n\n _proto._activate = function _activate(target) {\n this._activeTarget = target;\n\n this._clear();\n\n var queries = this._selector.split(',').map(function (selector) {\n return selector + \"[data-target=\\\"\" + target + \"\\\"],\" + selector + \"[href=\\\"\" + target + \"\\\"]\";\n });\n\n var $link = $([].slice.call(document.querySelectorAll(queries.join(','))));\n\n if ($link.hasClass(ClassName$8.DROPDOWN_ITEM)) {\n $link.closest(Selector$8.DROPDOWN).find(Selector$8.DROPDOWN_TOGGLE).addClass(ClassName$8.ACTIVE);\n $link.addClass(ClassName$8.ACTIVE);\n } else {\n // Set triggered link as active\n $link.addClass(ClassName$8.ACTIVE); // Set triggered links parents as active\n // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n\n $link.parents(Selector$8.NAV_LIST_GROUP).prev(Selector$8.NAV_LINKS + \", \" + Selector$8.LIST_ITEMS).addClass(ClassName$8.ACTIVE); // Handle special case when .nav-link is inside .nav-item\n\n $link.parents(Selector$8.NAV_LIST_GROUP).prev(Selector$8.NAV_ITEMS).children(Selector$8.NAV_LINKS).addClass(ClassName$8.ACTIVE);\n }\n\n $(this._scrollElement).trigger(Event$8.ACTIVATE, {\n relatedTarget: target\n });\n };\n\n _proto._clear = function _clear() {\n [].slice.call(document.querySelectorAll(this._selector)).filter(function (node) {\n return node.classList.contains(ClassName$8.ACTIVE);\n }).forEach(function (node) {\n return node.classList.remove(ClassName$8.ACTIVE);\n });\n }; // Static\n\n\n ScrollSpy._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $(this).data(DATA_KEY$8);\n\n var _config = typeof config === 'object' && config;\n\n if (!data) {\n data = new ScrollSpy(this, _config);\n $(this).data(DATA_KEY$8, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(ScrollSpy, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$8;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$6;\n }\n }]);\n\n return ScrollSpy;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $(window).on(Event$8.LOAD_DATA_API, function () {\n var scrollSpys = [].slice.call(document.querySelectorAll(Selector$8.DATA_SPY));\n var scrollSpysLength = scrollSpys.length;\n\n for (var i = scrollSpysLength; i--;) {\n var $spy = $(scrollSpys[i]);\n\n ScrollSpy._jQueryInterface.call($spy, $spy.data());\n }\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME$8] = ScrollSpy._jQueryInterface;\n $.fn[NAME$8].Constructor = ScrollSpy;\n\n $.fn[NAME$8].noConflict = function () {\n $.fn[NAME$8] = JQUERY_NO_CONFLICT$8;\n return ScrollSpy._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$9 = 'tab';\n var VERSION$9 = '4.2.1';\n var DATA_KEY$9 = 'bs.tab';\n var EVENT_KEY$9 = \".\" + DATA_KEY$9;\n var DATA_API_KEY$7 = '.data-api';\n var JQUERY_NO_CONFLICT$9 = $.fn[NAME$9];\n var Event$9 = {\n HIDE: \"hide\" + EVENT_KEY$9,\n HIDDEN: \"hidden\" + EVENT_KEY$9,\n SHOW: \"show\" + EVENT_KEY$9,\n SHOWN: \"shown\" + EVENT_KEY$9,\n CLICK_DATA_API: \"click\" + EVENT_KEY$9 + DATA_API_KEY$7\n };\n var ClassName$9 = {\n DROPDOWN_MENU: 'dropdown-menu',\n ACTIVE: 'active',\n DISABLED: 'disabled',\n FADE: 'fade',\n SHOW: 'show'\n };\n var Selector$9 = {\n DROPDOWN: '.dropdown',\n NAV_LIST_GROUP: '.nav, .list-group',\n ACTIVE: '.active',\n ACTIVE_UL: '> li > .active',\n DATA_TOGGLE: '[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]',\n DROPDOWN_TOGGLE: '.dropdown-toggle',\n DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu .active'\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n };\n\n var Tab =\n /*#__PURE__*/\n function () {\n function Tab(element) {\n this._element = element;\n } // Getters\n\n\n var _proto = Tab.prototype;\n\n // Public\n _proto.show = function show() {\n var _this = this;\n\n if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $(this._element).hasClass(ClassName$9.ACTIVE) || $(this._element).hasClass(ClassName$9.DISABLED)) {\n return;\n }\n\n var target;\n var previous;\n var listElement = $(this._element).closest(Selector$9.NAV_LIST_GROUP)[0];\n var selector = Util.getSelectorFromElement(this._element);\n\n if (listElement) {\n var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? Selector$9.ACTIVE_UL : Selector$9.ACTIVE;\n previous = $.makeArray($(listElement).find(itemSelector));\n previous = previous[previous.length - 1];\n }\n\n var hideEvent = $.Event(Event$9.HIDE, {\n relatedTarget: this._element\n });\n var showEvent = $.Event(Event$9.SHOW, {\n relatedTarget: previous\n });\n\n if (previous) {\n $(previous).trigger(hideEvent);\n }\n\n $(this._element).trigger(showEvent);\n\n if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {\n return;\n }\n\n if (selector) {\n target = document.querySelector(selector);\n }\n\n this._activate(this._element, listElement);\n\n var complete = function complete() {\n var hiddenEvent = $.Event(Event$9.HIDDEN, {\n relatedTarget: _this._element\n });\n var shownEvent = $.Event(Event$9.SHOWN, {\n relatedTarget: previous\n });\n $(previous).trigger(hiddenEvent);\n $(_this._element).trigger(shownEvent);\n };\n\n if (target) {\n this._activate(target, target.parentNode, complete);\n } else {\n complete();\n }\n };\n\n _proto.dispose = function dispose() {\n $.removeData(this._element, DATA_KEY$9);\n this._element = null;\n }; // Private\n\n\n _proto._activate = function _activate(element, container, callback) {\n var _this2 = this;\n\n var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? $(container).find(Selector$9.ACTIVE_UL) : $(container).children(Selector$9.ACTIVE);\n var active = activeElements[0];\n var isTransitioning = callback && active && $(active).hasClass(ClassName$9.FADE);\n\n var complete = function complete() {\n return _this2._transitionComplete(element, active, callback);\n };\n\n if (active && isTransitioning) {\n var transitionDuration = Util.getTransitionDurationFromElement(active);\n $(active).removeClass(ClassName$9.SHOW).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n };\n\n _proto._transitionComplete = function _transitionComplete(element, active, callback) {\n if (active) {\n $(active).removeClass(ClassName$9.ACTIVE);\n var dropdownChild = $(active.parentNode).find(Selector$9.DROPDOWN_ACTIVE_CHILD)[0];\n\n if (dropdownChild) {\n $(dropdownChild).removeClass(ClassName$9.ACTIVE);\n }\n\n if (active.getAttribute('role') === 'tab') {\n active.setAttribute('aria-selected', false);\n }\n }\n\n $(element).addClass(ClassName$9.ACTIVE);\n\n if (element.getAttribute('role') === 'tab') {\n element.setAttribute('aria-selected', true);\n }\n\n Util.reflow(element);\n $(element).addClass(ClassName$9.SHOW);\n\n if (element.parentNode && $(element.parentNode).hasClass(ClassName$9.DROPDOWN_MENU)) {\n var dropdownElement = $(element).closest(Selector$9.DROPDOWN)[0];\n\n if (dropdownElement) {\n var dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(Selector$9.DROPDOWN_TOGGLE));\n $(dropdownToggleList).addClass(ClassName$9.ACTIVE);\n }\n\n element.setAttribute('aria-expanded', true);\n }\n\n if (callback) {\n callback();\n }\n }; // Static\n\n\n Tab._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $this = $(this);\n var data = $this.data(DATA_KEY$9);\n\n if (!data) {\n data = new Tab(this);\n $this.data(DATA_KEY$9, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Tab, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$9;\n }\n }]);\n\n return Tab;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $(document).on(Event$9.CLICK_DATA_API, Selector$9.DATA_TOGGLE, function (event) {\n event.preventDefault();\n\n Tab._jQueryInterface.call($(this), 'show');\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME$9] = Tab._jQueryInterface;\n $.fn[NAME$9].Constructor = Tab;\n\n $.fn[NAME$9].noConflict = function () {\n $.fn[NAME$9] = JQUERY_NO_CONFLICT$9;\n return Tab._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$a = 'toast';\n var VERSION$a = '4.2.1';\n var DATA_KEY$a = 'bs.toast';\n var EVENT_KEY$a = \".\" + DATA_KEY$a;\n var JQUERY_NO_CONFLICT$a = $.fn[NAME$a];\n var Event$a = {\n CLICK_DISMISS: \"click.dismiss\" + EVENT_KEY$a,\n HIDE: \"hide\" + EVENT_KEY$a,\n HIDDEN: \"hidden\" + EVENT_KEY$a,\n SHOW: \"show\" + EVENT_KEY$a,\n SHOWN: \"shown\" + EVENT_KEY$a\n };\n var ClassName$a = {\n FADE: 'fade',\n HIDE: 'hide',\n SHOW: 'show',\n SHOWING: 'showing'\n };\n var DefaultType$7 = {\n animation: 'boolean',\n autohide: 'boolean',\n delay: 'number'\n };\n var Default$7 = {\n animation: true,\n autohide: true,\n delay: 500\n };\n var Selector$a = {\n DATA_DISMISS: '[data-dismiss=\"toast\"]'\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n };\n\n var Toast =\n /*#__PURE__*/\n function () {\n function Toast(element, config) {\n this._element = element;\n this._config = this._getConfig(config);\n this._timeout = null;\n\n this._setListeners();\n } // Getters\n\n\n var _proto = Toast.prototype;\n\n // Public\n _proto.show = function show() {\n var _this = this;\n\n $(this._element).trigger(Event$a.SHOW);\n\n if (this._config.animation) {\n this._element.classList.add(ClassName$a.FADE);\n }\n\n var complete = function complete() {\n _this._element.classList.remove(ClassName$a.SHOWING);\n\n _this._element.classList.add(ClassName$a.SHOW);\n\n $(_this._element).trigger(Event$a.SHOWN);\n\n if (_this._config.autohide) {\n _this.hide();\n }\n };\n\n this._element.classList.remove(ClassName$a.HIDE);\n\n this._element.classList.add(ClassName$a.SHOWING);\n\n if (this._config.animation) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n };\n\n _proto.hide = function hide(withoutTimeout) {\n var _this2 = this;\n\n if (!this._element.classList.contains(ClassName$a.SHOW)) {\n return;\n }\n\n $(this._element).trigger(Event$a.HIDE);\n\n if (withoutTimeout) {\n this._close();\n } else {\n this._timeout = setTimeout(function () {\n _this2._close();\n }, this._config.delay);\n }\n };\n\n _proto.dispose = function dispose() {\n clearTimeout(this._timeout);\n this._timeout = null;\n\n if (this._element.classList.contains(ClassName$a.SHOW)) {\n this._element.classList.remove(ClassName$a.SHOW);\n }\n\n $(this._element).off(Event$a.CLICK_DISMISS);\n $.removeData(this._element, DATA_KEY$a);\n this._element = null;\n this._config = null;\n }; // Private\n\n\n _proto._getConfig = function _getConfig(config) {\n config = _objectSpread({}, Default$7, $(this._element).data(), typeof config === 'object' && config ? config : {});\n Util.typeCheckConfig(NAME$a, config, this.constructor.DefaultType);\n return config;\n };\n\n _proto._setListeners = function _setListeners() {\n var _this3 = this;\n\n $(this._element).on(Event$a.CLICK_DISMISS, Selector$a.DATA_DISMISS, function () {\n return _this3.hide(true);\n });\n };\n\n _proto._close = function _close() {\n var _this4 = this;\n\n var complete = function complete() {\n _this4._element.classList.add(ClassName$a.HIDE);\n\n $(_this4._element).trigger(Event$a.HIDDEN);\n };\n\n this._element.classList.remove(ClassName$a.SHOW);\n\n if (this._config.animation) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n }; // Static\n\n\n Toast._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $(this);\n var data = $element.data(DATA_KEY$a);\n\n var _config = typeof config === 'object' && config;\n\n if (!data) {\n data = new Toast(this, _config);\n $element.data(DATA_KEY$a, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config](this);\n }\n });\n };\n\n _createClass(Toast, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$a;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$7;\n }\n }]);\n\n return Toast;\n }();\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n\n $.fn[NAME$a] = Toast._jQueryInterface;\n $.fn[NAME$a].Constructor = Toast;\n\n $.fn[NAME$a].noConflict = function () {\n $.fn[NAME$a] = JQUERY_NO_CONFLICT$a;\n return Toast._jQueryInterface;\n };\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.2.1): index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n (function () {\n if (typeof $ === 'undefined') {\n throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.');\n }\n\n var version = $.fn.jquery.split(' ')[0].split('.');\n var minMajor = 1;\n var ltMajor = 2;\n var minMinor = 9;\n var minPatch = 1;\n var maxMajor = 4;\n\n if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');\n }\n })();\n\n exports.Util = Util;\n exports.Alert = Alert;\n exports.Button = Button;\n exports.Carousel = Carousel;\n exports.Collapse = Collapse;\n exports.Dropdown = Dropdown;\n exports.Modal = Modal;\n exports.Popover = Popover;\n exports.Scrollspy = ScrollSpy;\n exports.Tab = Tab;\n exports.Toast = Toast;\n exports.Tooltip = Tooltip;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n//# sourceMappingURL=bootstrap.js.map\n","'use strict';\n\nvar helpers = require('./helpers.core');\n\n/**\n * @namespace Chart.helpers.canvas\n */\nvar exports = module.exports = {\n\t/**\n\t * Clears the entire canvas associated to the given `chart`.\n\t * @param {Chart} chart - The chart for which to clear the canvas.\n\t */\n\tclear: function(chart) {\n\t\tchart.ctx.clearRect(0, 0, chart.width, chart.height);\n\t},\n\n\t/**\n\t * Creates a \"path\" for a rectangle with rounded corners at position (x, y) with a\n\t * given size (width, height) and the same `radius` for all corners.\n\t * @param {CanvasRenderingContext2D} ctx - The canvas 2D Context.\n\t * @param {Number} x - The x axis of the coordinate for the rectangle starting point.\n\t * @param {Number} y - The y axis of the coordinate for the rectangle starting point.\n\t * @param {Number} width - The rectangle's width.\n\t * @param {Number} height - The rectangle's height.\n\t * @param {Number} radius - The rounded amount (in pixels) for the four corners.\n\t * @todo handle `radius` as top-left, top-right, bottom-right, bottom-left array/object?\n\t */\n\troundedRect: function(ctx, x, y, width, height, radius) {\n\t\tif (radius) {\n\t\t\t// NOTE(SB) `epsilon` helps to prevent minor artifacts appearing\n\t\t\t// on Chrome when `r` is exactly half the height or the width.\n\t\t\tvar epsilon = 0.0000001;\n\t\t\tvar r = Math.min(radius, (height / 2) - epsilon, (width / 2) - epsilon);\n\n\t\t\tctx.moveTo(x + r, y);\n\t\t\tctx.lineTo(x + width - r, y);\n\t\t\tctx.arcTo(x + width, y, x + width, y + r, r);\n\t\t\tctx.lineTo(x + width, y + height - r);\n\t\t\tctx.arcTo(x + width, y + height, x + width - r, y + height, r);\n\t\t\tctx.lineTo(x + r, y + height);\n\t\t\tctx.arcTo(x, y + height, x, y + height - r, r);\n\t\t\tctx.lineTo(x, y + r);\n\t\t\tctx.arcTo(x, y, x + r, y, r);\n\t\t\tctx.closePath();\n\t\t\tctx.moveTo(x, y);\n\t\t} else {\n\t\t\tctx.rect(x, y, width, height);\n\t\t}\n\t},\n\n\tdrawPoint: function(ctx, style, radius, x, y, rotation) {\n\t\tvar type, edgeLength, xOffset, yOffset, height, size;\n\t\trotation = rotation || 0;\n\n\t\tif (style && typeof style === 'object') {\n\t\t\ttype = style.toString();\n\t\t\tif (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n\t\t\t\tctx.drawImage(style, x - style.width / 2, y - style.height / 2, style.width, style.height);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (isNaN(radius) || radius <= 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tctx.save();\n\t\tctx.translate(x, y);\n\t\tctx.rotate(rotation * Math.PI / 180);\n\t\tctx.beginPath();\n\n\t\tswitch (style) {\n\t\t// Default includes circle\n\t\tdefault:\n\t\t\tctx.arc(0, 0, radius, 0, Math.PI * 2);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'triangle':\n\t\t\tedgeLength = 3 * radius / Math.sqrt(3);\n\t\t\theight = edgeLength * Math.sqrt(3) / 2;\n\t\t\tctx.moveTo(-edgeLength / 2, height / 3);\n\t\t\tctx.lineTo(edgeLength / 2, height / 3);\n\t\t\tctx.lineTo(0, -2 * height / 3);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'rect':\n\t\t\tsize = 1 / Math.SQRT2 * radius;\n\t\t\tctx.rect(-size, -size, 2 * size, 2 * size);\n\t\t\tbreak;\n\t\tcase 'rectRounded':\n\t\t\tvar offset = radius / Math.SQRT2;\n\t\t\tvar leftX = -offset;\n\t\t\tvar topY = -offset;\n\t\t\tvar sideSize = Math.SQRT2 * radius;\n\n\t\t\t// NOTE(SB) the rounded rect implementation changed to use `arcTo`\n\t\t\t// instead of `quadraticCurveTo` since it generates better results\n\t\t\t// when rect is almost a circle. 0.425 (instead of 0.5) produces\n\t\t\t// results visually closer to the previous impl.\n\t\t\tthis.roundedRect(ctx, leftX, topY, sideSize, sideSize, radius * 0.425);\n\t\t\tbreak;\n\t\tcase 'rectRot':\n\t\t\tsize = 1 / Math.SQRT2 * radius;\n\t\t\tctx.moveTo(-size, 0);\n\t\t\tctx.lineTo(0, size);\n\t\t\tctx.lineTo(size, 0);\n\t\t\tctx.lineTo(0, -size);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'cross':\n\t\t\tctx.moveTo(0, radius);\n\t\t\tctx.lineTo(0, -radius);\n\t\t\tctx.moveTo(-radius, 0);\n\t\t\tctx.lineTo(radius, 0);\n\t\t\tbreak;\n\t\tcase 'crossRot':\n\t\t\txOffset = Math.cos(Math.PI / 4) * radius;\n\t\t\tyOffset = Math.sin(Math.PI / 4) * radius;\n\t\t\tctx.moveTo(-xOffset, -yOffset);\n\t\t\tctx.lineTo(xOffset, yOffset);\n\t\t\tctx.moveTo(-xOffset, yOffset);\n\t\t\tctx.lineTo(xOffset, -yOffset);\n\t\t\tbreak;\n\t\tcase 'star':\n\t\t\tctx.moveTo(0, radius);\n\t\t\tctx.lineTo(0, -radius);\n\t\t\tctx.moveTo(-radius, 0);\n\t\t\tctx.lineTo(radius, 0);\n\t\t\txOffset = Math.cos(Math.PI / 4) * radius;\n\t\t\tyOffset = Math.sin(Math.PI / 4) * radius;\n\t\t\tctx.moveTo(-xOffset, -yOffset);\n\t\t\tctx.lineTo(xOffset, yOffset);\n\t\t\tctx.moveTo(-xOffset, yOffset);\n\t\t\tctx.lineTo(xOffset, -yOffset);\n\t\t\tbreak;\n\t\tcase 'line':\n\t\t\tctx.moveTo(-radius, 0);\n\t\t\tctx.lineTo(radius, 0);\n\t\t\tbreak;\n\t\tcase 'dash':\n\t\t\tctx.moveTo(0, 0);\n\t\t\tctx.lineTo(radius, 0);\n\t\t\tbreak;\n\t\t}\n\n\t\tctx.fill();\n\t\tctx.stroke();\n\t\tctx.restore();\n\t},\n\n\tclipArea: function(ctx, area) {\n\t\tctx.save();\n\t\tctx.beginPath();\n\t\tctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n\t\tctx.clip();\n\t},\n\n\tunclipArea: function(ctx) {\n\t\tctx.restore();\n\t},\n\n\tlineTo: function(ctx, previous, target, flip) {\n\t\tif (target.steppedLine) {\n\t\t\tif ((target.steppedLine === 'after' && !flip) || (target.steppedLine !== 'after' && flip)) {\n\t\t\t\tctx.lineTo(previous.x, target.y);\n\t\t\t} else {\n\t\t\t\tctx.lineTo(target.x, previous.y);\n\t\t\t}\n\t\t\tctx.lineTo(target.x, target.y);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!target.tension) {\n\t\t\tctx.lineTo(target.x, target.y);\n\t\t\treturn;\n\t\t}\n\n\t\tctx.bezierCurveTo(\n\t\t\tflip ? previous.controlPointPreviousX : previous.controlPointNextX,\n\t\t\tflip ? previous.controlPointPreviousY : previous.controlPointNextY,\n\t\t\tflip ? target.controlPointNextX : target.controlPointPreviousX,\n\t\t\tflip ? target.controlPointNextY : target.controlPointPreviousY,\n\t\t\ttarget.x,\n\t\t\ttarget.y);\n\t}\n};\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.helpers.canvas.clear instead.\n * @namespace Chart.helpers.clear\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.clear = exports.clear;\n\n/**\n * Provided for backward compatibility, use Chart.helpers.canvas.roundedRect instead.\n * @namespace Chart.helpers.drawRoundedRectangle\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.drawRoundedRectangle = function(ctx) {\n\tctx.beginPath();\n\texports.roundedRect.apply(exports, arguments);\n};\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","'use strict';\n\n/**\n * @namespace Chart.helpers\n */\nvar helpers = {\n\t/**\n\t * An empty function that can be used, for example, for optional callback.\n\t */\n\tnoop: function() {},\n\n\t/**\n\t * Returns a unique id, sequentially generated from a global variable.\n\t * @returns {Number}\n\t * @function\n\t */\n\tuid: (function() {\n\t\tvar id = 0;\n\t\treturn function() {\n\t\t\treturn id++;\n\t\t};\n\t}()),\n\n\t/**\n\t * Returns true if `value` is neither null nor undefined, else returns false.\n\t * @param {*} value - The value to test.\n\t * @returns {Boolean}\n\t * @since 2.7.0\n\t */\n\tisNullOrUndef: function(value) {\n\t\treturn value === null || typeof value === 'undefined';\n\t},\n\n\t/**\n\t * Returns true if `value` is an array, else returns false.\n\t * @param {*} value - The value to test.\n\t * @returns {Boolean}\n\t * @function\n\t */\n\tisArray: Array.isArray ? Array.isArray : function(value) {\n\t\treturn Object.prototype.toString.call(value) === '[object Array]';\n\t},\n\n\t/**\n\t * Returns true if `value` is an object (excluding null), else returns false.\n\t * @param {*} value - The value to test.\n\t * @returns {Boolean}\n\t * @since 2.7.0\n\t */\n\tisObject: function(value) {\n\t\treturn value !== null && Object.prototype.toString.call(value) === '[object Object]';\n\t},\n\n\t/**\n\t * Returns `value` if defined, else returns `defaultValue`.\n\t * @param {*} value - The value to return if defined.\n\t * @param {*} defaultValue - The value to return if `value` is undefined.\n\t * @returns {*}\n\t */\n\tvalueOrDefault: function(value, defaultValue) {\n\t\treturn typeof value === 'undefined' ? defaultValue : value;\n\t},\n\n\t/**\n\t * Returns value at the given `index` in array if defined, else returns `defaultValue`.\n\t * @param {Array} value - The array to lookup for value at `index`.\n\t * @param {Number} index - The index in `value` to lookup for value.\n\t * @param {*} defaultValue - The value to return if `value[index]` is undefined.\n\t * @returns {*}\n\t */\n\tvalueAtIndexOrDefault: function(value, index, defaultValue) {\n\t\treturn helpers.valueOrDefault(helpers.isArray(value) ? value[index] : value, defaultValue);\n\t},\n\n\t/**\n\t * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\n\t * value returned by `fn`. If `fn` is not a function, this method returns undefined.\n\t * @param {Function} fn - The function to call.\n\t * @param {Array|undefined|null} args - The arguments with which `fn` should be called.\n\t * @param {Object} [thisArg] - The value of `this` provided for the call to `fn`.\n\t * @returns {*}\n\t */\n\tcallback: function(fn, args, thisArg) {\n\t\tif (fn && typeof fn.call === 'function') {\n\t\t\treturn fn.apply(thisArg, args);\n\t\t}\n\t},\n\n\t/**\n\t * Note(SB) for performance sake, this method should only be used when loopable type\n\t * is unknown or in none intensive code (not called often and small loopable). Else\n\t * it's preferable to use a regular for() loop and save extra function calls.\n\t * @param {Object|Array} loopable - The object or array to be iterated.\n\t * @param {Function} fn - The function to call for each item.\n\t * @param {Object} [thisArg] - The value of `this` provided for the call to `fn`.\n\t * @param {Boolean} [reverse] - If true, iterates backward on the loopable.\n\t */\n\teach: function(loopable, fn, thisArg, reverse) {\n\t\tvar i, len, keys;\n\t\tif (helpers.isArray(loopable)) {\n\t\t\tlen = loopable.length;\n\t\t\tif (reverse) {\n\t\t\t\tfor (i = len - 1; i >= 0; i--) {\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (helpers.isObject(loopable)) {\n\t\t\tkeys = Object.keys(loopable);\n\t\t\tlen = keys.length;\n\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\tfn.call(thisArg, loopable[keys[i]], keys[i]);\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\n\t * @see http://stackoverflow.com/a/14853974\n\t * @param {Array} a0 - The array to compare\n\t * @param {Array} a1 - The array to compare\n\t * @returns {Boolean}\n\t */\n\tarrayEquals: function(a0, a1) {\n\t\tvar i, ilen, v0, v1;\n\n\t\tif (!a0 || !a1 || a0.length !== a1.length) {\n\t\t\treturn false;\n\t\t}\n\n\t\tfor (i = 0, ilen = a0.length; i < ilen; ++i) {\n\t\t\tv0 = a0[i];\n\t\t\tv1 = a1[i];\n\n\t\t\tif (v0 instanceof Array && v1 instanceof Array) {\n\t\t\t\tif (!helpers.arrayEquals(v0, v1)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} else if (v0 !== v1) {\n\t\t\t\t// NOTE: two different object instances will never be equal: {x:20} != {x:20}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t/**\n\t * Returns a deep copy of `source` without keeping references on objects and arrays.\n\t * @param {*} source - The value to clone.\n\t * @returns {*}\n\t */\n\tclone: function(source) {\n\t\tif (helpers.isArray(source)) {\n\t\t\treturn source.map(helpers.clone);\n\t\t}\n\n\t\tif (helpers.isObject(source)) {\n\t\t\tvar target = {};\n\t\t\tvar keys = Object.keys(source);\n\t\t\tvar klen = keys.length;\n\t\t\tvar k = 0;\n\n\t\t\tfor (; k < klen; ++k) {\n\t\t\t\ttarget[keys[k]] = helpers.clone(source[keys[k]]);\n\t\t\t}\n\n\t\t\treturn target;\n\t\t}\n\n\t\treturn source;\n\t},\n\n\t/**\n\t * The default merger when Chart.helpers.merge is called without merger option.\n\t * Note(SB): this method is also used by configMerge and scaleMerge as fallback.\n\t * @private\n\t */\n\t_merger: function(key, target, source, options) {\n\t\tvar tval = target[key];\n\t\tvar sval = source[key];\n\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\n\t\t\thelpers.merge(tval, sval, options);\n\t\t} else {\n\t\t\ttarget[key] = helpers.clone(sval);\n\t\t}\n\t},\n\n\t/**\n\t * Merges source[key] in target[key] only if target[key] is undefined.\n\t * @private\n\t */\n\t_mergerIf: function(key, target, source) {\n\t\tvar tval = target[key];\n\t\tvar sval = source[key];\n\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\n\t\t\thelpers.mergeIf(tval, sval);\n\t\t} else if (!target.hasOwnProperty(key)) {\n\t\t\ttarget[key] = helpers.clone(sval);\n\t\t}\n\t},\n\n\t/**\n\t * Recursively deep copies `source` properties into `target` with the given `options`.\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n\t * @param {Object} target - The target object in which all sources are merged into.\n\t * @param {Object|Array(Object)} source - Object(s) to merge into `target`.\n\t * @param {Object} [options] - Merging options:\n\t * @param {Function} [options.merger] - The merge method (key, target, source, options)\n\t * @returns {Object} The `target` object.\n\t */\n\tmerge: function(target, source, options) {\n\t\tvar sources = helpers.isArray(source) ? source : [source];\n\t\tvar ilen = sources.length;\n\t\tvar merge, i, keys, klen, k;\n\n\t\tif (!helpers.isObject(target)) {\n\t\t\treturn target;\n\t\t}\n\n\t\toptions = options || {};\n\t\tmerge = options.merger || helpers._merger;\n\n\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\tsource = sources[i];\n\t\t\tif (!helpers.isObject(source)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tkeys = Object.keys(source);\n\t\t\tfor (k = 0, klen = keys.length; k < klen; ++k) {\n\t\t\t\tmerge(keys[k], target, source, options);\n\t\t\t}\n\t\t}\n\n\t\treturn target;\n\t},\n\n\t/**\n\t * Recursively deep copies `source` properties into `target` *only* if not defined in target.\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n\t * @param {Object} target - The target object in which all sources are merged into.\n\t * @param {Object|Array(Object)} source - Object(s) to merge into `target`.\n\t * @returns {Object} The `target` object.\n\t */\n\tmergeIf: function(target, source) {\n\t\treturn helpers.merge(target, source, {merger: helpers._mergerIf});\n\t},\n\n\t/**\n\t * Applies the contents of two or more objects together into the first object.\n\t * @param {Object} target - The target object in which all objects are merged into.\n\t * @param {Object} arg1 - Object containing additional properties to merge in target.\n\t * @param {Object} argN - Additional objects containing properties to merge in target.\n\t * @returns {Object} The `target` object.\n\t */\n\textend: function(target) {\n\t\tvar setFn = function(value, key) {\n\t\t\ttarget[key] = value;\n\t\t};\n\t\tfor (var i = 1, ilen = arguments.length; i < ilen; ++i) {\n\t\t\thelpers.each(arguments[i], setFn);\n\t\t}\n\t\treturn target;\n\t},\n\n\t/**\n\t * Basic javascript inheritance based on the model created in Backbone.js\n\t */\n\tinherits: function(extensions) {\n\t\tvar me = this;\n\t\tvar ChartElement = (extensions && extensions.hasOwnProperty('constructor')) ? extensions.constructor : function() {\n\t\t\treturn me.apply(this, arguments);\n\t\t};\n\n\t\tvar Surrogate = function() {\n\t\t\tthis.constructor = ChartElement;\n\t\t};\n\n\t\tSurrogate.prototype = me.prototype;\n\t\tChartElement.prototype = new Surrogate();\n\t\tChartElement.extend = helpers.inherits;\n\n\t\tif (extensions) {\n\t\t\thelpers.extend(ChartElement.prototype, extensions);\n\t\t}\n\n\t\tChartElement.__super__ = me.prototype;\n\t\treturn ChartElement;\n\t}\n};\n\nmodule.exports = helpers;\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.helpers.callback instead.\n * @function Chart.helpers.callCallback\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n * @private\n */\nhelpers.callCallback = helpers.callback;\n\n/**\n * Provided for backward compatibility, use Array.prototype.indexOf instead.\n * Array.prototype.indexOf compatibility: Chrome, Opera, Safari, FF1.5+, IE9+\n * @function Chart.helpers.indexOf\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.indexOf = function(array, item, fromIndex) {\n\treturn Array.prototype.indexOf.call(array, item, fromIndex);\n};\n\n/**\n * Provided for backward compatibility, use Chart.helpers.valueOrDefault instead.\n * @function Chart.helpers.getValueOrDefault\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.getValueOrDefault = helpers.valueOrDefault;\n\n/**\n * Provided for backward compatibility, use Chart.helpers.valueAtIndexOrDefault instead.\n * @function Chart.helpers.getValueAtIndexOrDefault\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.getValueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n","var scope = (typeof global !== \"undefined\" && global) ||\n (typeof self !== \"undefined\" && self) ||\n window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n (typeof global !== \"undefined\" && global.setImmediate) ||\n (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n (typeof global !== \"undefined\" && global.clearImmediate) ||\n (this && this.clearImmediate);\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar isAbsoluteURL = require('./../helpers/isAbsoluteURL');\nvar combineURLs = require('./../helpers/combineURLs');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Support baseURL config\n if (config.baseURL && !isAbsoluteURL(config.url)) {\n config.url = combineURLs(config.baseURL, config.url);\n }\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers || {}\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData(\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData(\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar Element = require('../core/core.element');\nvar helpers = require('../helpers/index');\n\nvar globalDefaults = defaults.global;\n\ndefaults._set('global', {\n\telements: {\n\t\tline: {\n\t\t\ttension: 0.4,\n\t\t\tbackgroundColor: globalDefaults.defaultColor,\n\t\t\tborderWidth: 3,\n\t\t\tborderColor: globalDefaults.defaultColor,\n\t\t\tborderCapStyle: 'butt',\n\t\t\tborderDash: [],\n\t\t\tborderDashOffset: 0.0,\n\t\t\tborderJoinStyle: 'miter',\n\t\t\tcapBezierPoints: true,\n\t\t\tfill: true, // do we fill in the area between the line and its base axis\n\t\t}\n\t}\n});\n\nmodule.exports = Element.extend({\n\tdraw: function() {\n\t\tvar me = this;\n\t\tvar vm = me._view;\n\t\tvar ctx = me._chart.ctx;\n\t\tvar spanGaps = vm.spanGaps;\n\t\tvar points = me._children.slice(); // clone array\n\t\tvar globalOptionLineElements = globalDefaults.elements.line;\n\t\tvar lastDrawnIndex = -1;\n\t\tvar index, current, previous, currentVM;\n\n\t\t// If we are looping, adding the first point again\n\t\tif (me._loop && points.length) {\n\t\t\tpoints.push(points[0]);\n\t\t}\n\n\t\tctx.save();\n\n\t\t// Stroke Line Options\n\t\tctx.lineCap = vm.borderCapStyle || globalOptionLineElements.borderCapStyle;\n\n\t\t// IE 9 and 10 do not support line dash\n\t\tif (ctx.setLineDash) {\n\t\t\tctx.setLineDash(vm.borderDash || globalOptionLineElements.borderDash);\n\t\t}\n\n\t\tctx.lineDashOffset = vm.borderDashOffset || globalOptionLineElements.borderDashOffset;\n\t\tctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle;\n\t\tctx.lineWidth = vm.borderWidth || globalOptionLineElements.borderWidth;\n\t\tctx.strokeStyle = vm.borderColor || globalDefaults.defaultColor;\n\n\t\t// Stroke Line\n\t\tctx.beginPath();\n\t\tlastDrawnIndex = -1;\n\n\t\tfor (index = 0; index < points.length; ++index) {\n\t\t\tcurrent = points[index];\n\t\t\tprevious = helpers.previousItem(points, index);\n\t\t\tcurrentVM = current._view;\n\n\t\t\t// First point moves to it's starting position no matter what\n\t\t\tif (index === 0) {\n\t\t\t\tif (!currentVM.skip) {\n\t\t\t\t\tctx.moveTo(currentVM.x, currentVM.y);\n\t\t\t\t\tlastDrawnIndex = index;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tprevious = lastDrawnIndex === -1 ? previous : points[lastDrawnIndex];\n\n\t\t\t\tif (!currentVM.skip) {\n\t\t\t\t\tif ((lastDrawnIndex !== (index - 1) && !spanGaps) || lastDrawnIndex === -1) {\n\t\t\t\t\t\t// There was a gap and this is the first point after the gap\n\t\t\t\t\t\tctx.moveTo(currentVM.x, currentVM.y);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Line to next point\n\t\t\t\t\t\thelpers.canvas.lineTo(ctx, previous._view, current._view);\n\t\t\t\t\t}\n\t\t\t\t\tlastDrawnIndex = index;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tctx.stroke();\n\t\tctx.restore();\n\t}\n});\n","'use strict';\n\nvar defaults = require('./core.defaults');\nvar helpers = require('../helpers/index');\n\ndefaults._set('global', {\n\tplugins: {}\n});\n\n/**\n * The plugin service singleton\n * @namespace Chart.plugins\n * @since 2.1.0\n */\nmodule.exports = {\n\t/**\n\t * Globally registered plugins.\n\t * @private\n\t */\n\t_plugins: [],\n\n\t/**\n\t * This identifier is used to invalidate the descriptors cache attached to each chart\n\t * when a global plugin is registered or unregistered. In this case, the cache ID is\n\t * incremented and descriptors are regenerated during following API calls.\n\t * @private\n\t */\n\t_cacheId: 0,\n\n\t/**\n\t * Registers the given plugin(s) if not already registered.\n\t * @param {Array|Object} plugins plugin instance(s).\n\t */\n\tregister: function(plugins) {\n\t\tvar p = this._plugins;\n\t\t([]).concat(plugins).forEach(function(plugin) {\n\t\t\tif (p.indexOf(plugin) === -1) {\n\t\t\t\tp.push(plugin);\n\t\t\t}\n\t\t});\n\n\t\tthis._cacheId++;\n\t},\n\n\t/**\n\t * Unregisters the given plugin(s) only if registered.\n\t * @param {Array|Object} plugins plugin instance(s).\n\t */\n\tunregister: function(plugins) {\n\t\tvar p = this._plugins;\n\t\t([]).concat(plugins).forEach(function(plugin) {\n\t\t\tvar idx = p.indexOf(plugin);\n\t\t\tif (idx !== -1) {\n\t\t\t\tp.splice(idx, 1);\n\t\t\t}\n\t\t});\n\n\t\tthis._cacheId++;\n\t},\n\n\t/**\n\t * Remove all registered plugins.\n\t * @since 2.1.5\n\t */\n\tclear: function() {\n\t\tthis._plugins = [];\n\t\tthis._cacheId++;\n\t},\n\n\t/**\n\t * Returns the number of registered plugins?\n\t * @returns {Number}\n\t * @since 2.1.5\n\t */\n\tcount: function() {\n\t\treturn this._plugins.length;\n\t},\n\n\t/**\n\t * Returns all registered plugin instances.\n\t * @returns {Array} array of plugin objects.\n\t * @since 2.1.5\n\t */\n\tgetAll: function() {\n\t\treturn this._plugins;\n\t},\n\n\t/**\n\t * Calls enabled plugins for `chart` on the specified hook and with the given args.\n\t * This method immediately returns as soon as a plugin explicitly returns false. The\n\t * returned value can be used, for instance, to interrupt the current action.\n\t * @param {Object} chart - The chart instance for which plugins should be called.\n\t * @param {String} hook - The name of the plugin method to call (e.g. 'beforeUpdate').\n\t * @param {Array} [args] - Extra arguments to apply to the hook call.\n\t * @returns {Boolean} false if any of the plugins return false, else returns true.\n\t */\n\tnotify: function(chart, hook, args) {\n\t\tvar descriptors = this.descriptors(chart);\n\t\tvar ilen = descriptors.length;\n\t\tvar i, descriptor, plugin, params, method;\n\n\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\tdescriptor = descriptors[i];\n\t\t\tplugin = descriptor.plugin;\n\t\t\tmethod = plugin[hook];\n\t\t\tif (typeof method === 'function') {\n\t\t\t\tparams = [chart].concat(args || []);\n\t\t\t\tparams.push(descriptor.options);\n\t\t\t\tif (method.apply(plugin, params) === false) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t/**\n\t * Returns descriptors of enabled plugins for the given chart.\n\t * @returns {Array} [{ plugin, options }]\n\t * @private\n\t */\n\tdescriptors: function(chart) {\n\t\tvar cache = chart.$plugins || (chart.$plugins = {});\n\t\tif (cache.id === this._cacheId) {\n\t\t\treturn cache.descriptors;\n\t\t}\n\n\t\tvar plugins = [];\n\t\tvar descriptors = [];\n\t\tvar config = (chart && chart.config) || {};\n\t\tvar options = (config.options && config.options.plugins) || {};\n\n\t\tthis._plugins.concat(config.plugins || []).forEach(function(plugin) {\n\t\t\tvar idx = plugins.indexOf(plugin);\n\t\t\tif (idx !== -1) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar id = plugin.id;\n\t\t\tvar opts = options[id];\n\t\t\tif (opts === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (opts === true) {\n\t\t\t\topts = helpers.clone(defaults.global.plugins[id]);\n\t\t\t}\n\n\t\t\tplugins.push(plugin);\n\t\t\tdescriptors.push({\n\t\t\t\tplugin: plugin,\n\t\t\t\toptions: opts || {}\n\t\t\t});\n\t\t});\n\n\t\tcache.descriptors = descriptors;\n\t\tcache.id = this._cacheId;\n\t\treturn descriptors;\n\t},\n\n\t/**\n\t * Invalidates cache for the given chart: descriptors hold a reference on plugin option,\n\t * but in some cases, this reference can be changed by the user when updating options.\n\t * https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\n\t * @private\n\t */\n\t_invalidate: function(chart) {\n\t\tdelete chart.$plugins;\n\t}\n};\n\n/**\n * Plugin extension hooks.\n * @interface IPlugin\n * @since 2.1.0\n */\n/**\n * @method IPlugin#beforeInit\n * @desc Called before initializing `chart`.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#afterInit\n * @desc Called after `chart` has been initialized and before the first update.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeUpdate\n * @desc Called before updating `chart`. If any plugin returns `false`, the update\n * is cancelled (and thus subsequent render(s)) until another `update` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart update.\n */\n/**\n * @method IPlugin#afterUpdate\n * @desc Called after `chart` has been updated and before rendering. Note that this\n * hook will not be called if the chart update has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeDatasetsUpdate\n * @desc Called before updating the `chart` datasets. If any plugin returns `false`,\n * the datasets update is cancelled until another `update` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} false to cancel the datasets update.\n * @since version 2.1.5\n*/\n/**\n * @method IPlugin#afterDatasetsUpdate\n * @desc Called after the `chart` datasets have been updated. Note that this hook\n * will not be called if the datasets update has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n * @since version 2.1.5\n */\n/**\n * @method IPlugin#beforeDatasetUpdate\n * @desc Called before updating the `chart` dataset at the given `args.index`. If any plugin\n * returns `false`, the datasets update is cancelled until another `update` is triggered.\n * @param {Chart} chart - The chart instance.\n * @param {Object} args - The call arguments.\n * @param {Number} args.index - The dataset index.\n * @param {Object} args.meta - The dataset metadata.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart datasets drawing.\n */\n/**\n * @method IPlugin#afterDatasetUpdate\n * @desc Called after the `chart` datasets at the given `args.index` has been updated. Note\n * that this hook will not be called if the datasets update has been previously cancelled.\n * @param {Chart} chart - The chart instance.\n * @param {Object} args - The call arguments.\n * @param {Number} args.index - The dataset index.\n * @param {Object} args.meta - The dataset metadata.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeLayout\n * @desc Called before laying out `chart`. If any plugin returns `false`,\n * the layout update is cancelled until another `update` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart layout.\n */\n/**\n * @method IPlugin#afterLayout\n * @desc Called after the `chart` has been layed out. Note that this hook will not\n * be called if the layout update has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeRender\n * @desc Called before rendering `chart`. If any plugin returns `false`,\n * the rendering is cancelled until another `render` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart rendering.\n */\n/**\n * @method IPlugin#afterRender\n * @desc Called after the `chart` has been fully rendered (and animation completed). Note\n * that this hook will not be called if the rendering has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeDraw\n * @desc Called before drawing `chart` at every animation frame specified by the given\n * easing value. If any plugin returns `false`, the frame drawing is cancelled until\n * another `render` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart drawing.\n */\n/**\n * @method IPlugin#afterDraw\n * @desc Called after the `chart` has been drawn for the specific easing value. Note\n * that this hook will not be called if the drawing has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeDatasetsDraw\n * @desc Called before drawing the `chart` datasets. If any plugin returns `false`,\n * the datasets drawing is cancelled until another `render` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart datasets drawing.\n */\n/**\n * @method IPlugin#afterDatasetsDraw\n * @desc Called after the `chart` datasets have been drawn. Note that this hook\n * will not be called if the datasets drawing has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeDatasetDraw\n * @desc Called before drawing the `chart` dataset at the given `args.index` (datasets\n * are drawn in the reverse order). If any plugin returns `false`, the datasets drawing\n * is cancelled until another `render` is triggered.\n * @param {Chart} chart - The chart instance.\n * @param {Object} args - The call arguments.\n * @param {Number} args.index - The dataset index.\n * @param {Object} args.meta - The dataset metadata.\n * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart datasets drawing.\n */\n/**\n * @method IPlugin#afterDatasetDraw\n * @desc Called after the `chart` datasets at the given `args.index` have been drawn\n * (datasets are drawn in the reverse order). Note that this hook will not be called\n * if the datasets drawing has been previously cancelled.\n * @param {Chart} chart - The chart instance.\n * @param {Object} args - The call arguments.\n * @param {Number} args.index - The dataset index.\n * @param {Object} args.meta - The dataset metadata.\n * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeTooltipDraw\n * @desc Called before drawing the `tooltip`. If any plugin returns `false`,\n * the tooltip drawing is cancelled until another `render` is triggered.\n * @param {Chart} chart - The chart instance.\n * @param {Object} args - The call arguments.\n * @param {Object} args.tooltip - The tooltip.\n * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart tooltip drawing.\n */\n/**\n * @method IPlugin#afterTooltipDraw\n * @desc Called after drawing the `tooltip`. Note that this hook will not\n * be called if the tooltip drawing has been previously cancelled.\n * @param {Chart} chart - The chart instance.\n * @param {Object} args - The call arguments.\n * @param {Object} args.tooltip - The tooltip.\n * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeEvent\n * @desc Called before processing the specified `event`. If any plugin returns `false`,\n * the event will be discarded.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {IEvent} event - The event object.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#afterEvent\n * @desc Called after the `event` has been consumed. Note that this hook\n * will not be called if the `event` has been previously discarded.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {IEvent} event - The event object.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#resize\n * @desc Called after the chart as been resized.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Number} size - The new canvas display size (eq. canvas.style width & height).\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#destroy\n * @desc Called after the chart as been destroyed.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n","/**\n * @namespace Chart\n */\nvar Chart = require('./core/core')();\n\nChart.helpers = require('./helpers/index');\n\n// @todo dispatch these helpers into appropriated helpers/helpers.* file and write unit tests!\nrequire('./core/core.helpers')(Chart);\n\nChart.Animation = require('./core/core.animation');\nChart.animationService = require('./core/core.animations');\nChart.defaults = require('./core/core.defaults');\nChart.Element = require('./core/core.element');\nChart.elements = require('./elements/index');\nChart.Interaction = require('./core/core.interaction');\nChart.layouts = require('./core/core.layouts');\nChart.platform = require('./platforms/platform');\nChart.plugins = require('./core/core.plugins');\nChart.Scale = require('./core/core.scale');\nChart.scaleService = require('./core/core.scaleService');\nChart.Ticks = require('./core/core.ticks');\nChart.Tooltip = require('./core/core.tooltip');\n\nrequire('./core/core.controller')(Chart);\nrequire('./core/core.datasetController')(Chart);\n\nrequire('./scales/scale.linearbase')(Chart);\nrequire('./scales/scale.category')(Chart);\nrequire('./scales/scale.linear')(Chart);\nrequire('./scales/scale.logarithmic')(Chart);\nrequire('./scales/scale.radialLinear')(Chart);\nrequire('./scales/scale.time')(Chart);\n\n// Controllers must be loaded after elements\n// See Chart.core.datasetController.dataElementType\nrequire('./controllers/controller.bar')(Chart);\nrequire('./controllers/controller.bubble')(Chart);\nrequire('./controllers/controller.doughnut')(Chart);\nrequire('./controllers/controller.line')(Chart);\nrequire('./controllers/controller.polarArea')(Chart);\nrequire('./controllers/controller.radar')(Chart);\nrequire('./controllers/controller.scatter')(Chart);\n\nrequire('./charts/Chart.Bar')(Chart);\nrequire('./charts/Chart.Bubble')(Chart);\nrequire('./charts/Chart.Doughnut')(Chart);\nrequire('./charts/Chart.Line')(Chart);\nrequire('./charts/Chart.PolarArea')(Chart);\nrequire('./charts/Chart.Radar')(Chart);\nrequire('./charts/Chart.Scatter')(Chart);\n\n// Loading built-in plugins\nvar plugins = require('./plugins');\nfor (var k in plugins) {\n\tif (plugins.hasOwnProperty(k)) {\n\t\tChart.plugins.register(plugins[k]);\n\t}\n}\n\nChart.platform.initialize();\n\nmodule.exports = Chart;\nif (typeof window !== 'undefined') {\n\twindow.Chart = Chart;\n}\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, not available anymore\n * @namespace Chart.Legend\n * @deprecated since version 2.1.5\n * @todo remove at version 3\n * @private\n */\nChart.Legend = plugins.legend._element;\n\n/**\n * Provided for backward compatibility, not available anymore\n * @namespace Chart.Title\n * @deprecated since version 2.1.5\n * @todo remove at version 3\n * @private\n */\nChart.Title = plugins.title._element;\n\n/**\n * Provided for backward compatibility, use Chart.plugins instead\n * @namespace Chart.pluginService\n * @deprecated since version 2.1.5\n * @todo remove at version 3\n * @private\n */\nChart.pluginService = Chart.plugins;\n\n/**\n * Provided for backward compatibility, inheriting from Chart.PlugingBase has no\n * effect, instead simply create/register plugins via plain JavaScript objects.\n * @interface Chart.PluginBase\n * @deprecated since version 2.5.0\n * @todo remove at version 3\n * @private\n */\nChart.PluginBase = Chart.Element.extend({});\n\n/**\n * Provided for backward compatibility, use Chart.helpers.canvas instead.\n * @namespace Chart.canvasHelpers\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n * @private\n */\nChart.canvasHelpers = Chart.helpers.canvas;\n\n/**\n * Provided for backward compatibility, use Chart.layouts instead.\n * @namespace Chart.layoutService\n * @deprecated since version 2.8.0\n * @todo remove at version 3\n * @private\n */\nChart.layoutService = Chart.layouts;\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar Element = require('../core/core.element');\nvar helpers = require('../helpers/index');\n\ndefaults._set('global', {\n\telements: {\n\t\tarc: {\n\t\t\tbackgroundColor: defaults.global.defaultColor,\n\t\t\tborderColor: '#fff',\n\t\t\tborderWidth: 2\n\t\t}\n\t}\n});\n\nmodule.exports = Element.extend({\n\tinLabelRange: function(mouseX) {\n\t\tvar vm = this._view;\n\n\t\tif (vm) {\n\t\t\treturn (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hoverRadius, 2));\n\t\t}\n\t\treturn false;\n\t},\n\n\tinRange: function(chartX, chartY) {\n\t\tvar vm = this._view;\n\n\t\tif (vm) {\n\t\t\tvar pointRelativePosition = helpers.getAngleFromPoint(vm, {x: chartX, y: chartY});\n\t\t\tvar\tangle = pointRelativePosition.angle;\n\t\t\tvar distance = pointRelativePosition.distance;\n\n\t\t\t// Sanitise angle range\n\t\t\tvar startAngle = vm.startAngle;\n\t\t\tvar endAngle = vm.endAngle;\n\t\t\twhile (endAngle < startAngle) {\n\t\t\t\tendAngle += 2.0 * Math.PI;\n\t\t\t}\n\t\t\twhile (angle > endAngle) {\n\t\t\t\tangle -= 2.0 * Math.PI;\n\t\t\t}\n\t\t\twhile (angle < startAngle) {\n\t\t\t\tangle += 2.0 * Math.PI;\n\t\t\t}\n\n\t\t\t// Check if within the range of the open/close angle\n\t\t\tvar betweenAngles = (angle >= startAngle && angle <= endAngle);\n\t\t\tvar withinRadius = (distance >= vm.innerRadius && distance <= vm.outerRadius);\n\n\t\t\treturn (betweenAngles && withinRadius);\n\t\t}\n\t\treturn false;\n\t},\n\n\tgetCenterPoint: function() {\n\t\tvar vm = this._view;\n\t\tvar halfAngle = (vm.startAngle + vm.endAngle) / 2;\n\t\tvar halfRadius = (vm.innerRadius + vm.outerRadius) / 2;\n\t\treturn {\n\t\t\tx: vm.x + Math.cos(halfAngle) * halfRadius,\n\t\t\ty: vm.y + Math.sin(halfAngle) * halfRadius\n\t\t};\n\t},\n\n\tgetArea: function() {\n\t\tvar vm = this._view;\n\t\treturn Math.PI * ((vm.endAngle - vm.startAngle) / (2 * Math.PI)) * (Math.pow(vm.outerRadius, 2) - Math.pow(vm.innerRadius, 2));\n\t},\n\n\ttooltipPosition: function() {\n\t\tvar vm = this._view;\n\t\tvar centreAngle = vm.startAngle + ((vm.endAngle - vm.startAngle) / 2);\n\t\tvar rangeFromCentre = (vm.outerRadius - vm.innerRadius) / 2 + vm.innerRadius;\n\n\t\treturn {\n\t\t\tx: vm.x + (Math.cos(centreAngle) * rangeFromCentre),\n\t\t\ty: vm.y + (Math.sin(centreAngle) * rangeFromCentre)\n\t\t};\n\t},\n\n\tdraw: function() {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\t\tvar sA = vm.startAngle;\n\t\tvar eA = vm.endAngle;\n\n\t\tctx.beginPath();\n\n\t\tctx.arc(vm.x, vm.y, vm.outerRadius, sA, eA);\n\t\tctx.arc(vm.x, vm.y, vm.innerRadius, eA, sA, true);\n\n\t\tctx.closePath();\n\t\tctx.strokeStyle = vm.borderColor;\n\t\tctx.lineWidth = vm.borderWidth;\n\n\t\tctx.fillStyle = vm.backgroundColor;\n\n\t\tctx.fill();\n\t\tctx.lineJoin = 'bevel';\n\n\t\tif (vm.borderWidth) {\n\t\t\tctx.stroke();\n\t\t}\n\t}\n});\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar elements = require('../elements/index');\nvar helpers = require('../helpers/index');\n\ndefaults._set('doughnut', {\n\tanimation: {\n\t\t// Boolean - Whether we animate the rotation of the Doughnut\n\t\tanimateRotate: true,\n\t\t// Boolean - Whether we animate scaling the Doughnut from the centre\n\t\tanimateScale: false\n\t},\n\thover: {\n\t\tmode: 'single'\n\t},\n\tlegendCallback: function(chart) {\n\t\tvar text = [];\n\t\ttext.push('<ul class=\"' + chart.id + '-legend\">');\n\n\t\tvar data = chart.data;\n\t\tvar datasets = data.datasets;\n\t\tvar labels = data.labels;\n\n\t\tif (datasets.length) {\n\t\t\tfor (var i = 0; i < datasets[0].data.length; ++i) {\n\t\t\t\ttext.push('<li><span style=\"background-color:' + datasets[0].backgroundColor[i] + '\"></span>');\n\t\t\t\tif (labels[i]) {\n\t\t\t\t\ttext.push(labels[i]);\n\t\t\t\t}\n\t\t\t\ttext.push('</li>');\n\t\t\t}\n\t\t}\n\n\t\ttext.push('</ul>');\n\t\treturn text.join('');\n\t},\n\tlegend: {\n\t\tlabels: {\n\t\t\tgenerateLabels: function(chart) {\n\t\t\t\tvar data = chart.data;\n\t\t\t\tif (data.labels.length && data.datasets.length) {\n\t\t\t\t\treturn data.labels.map(function(label, i) {\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\n\t\t\t\t\t\tvar ds = data.datasets[0];\n\t\t\t\t\t\tvar arc = meta.data[i];\n\t\t\t\t\t\tvar custom = arc && arc.custom || {};\n\t\t\t\t\t\tvar valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n\t\t\t\t\t\tvar arcOpts = chart.options.elements.arc;\n\t\t\t\t\t\tvar fill = custom.backgroundColor ? custom.backgroundColor : valueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor);\n\t\t\t\t\t\tvar stroke = custom.borderColor ? custom.borderColor : valueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor);\n\t\t\t\t\t\tvar bw = custom.borderWidth ? custom.borderWidth : valueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttext: label,\n\t\t\t\t\t\t\tfillStyle: fill,\n\t\t\t\t\t\t\tstrokeStyle: stroke,\n\t\t\t\t\t\t\tlineWidth: bw,\n\t\t\t\t\t\t\thidden: isNaN(ds.data[i]) || meta.data[i].hidden,\n\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\n\t\t\t\t\t\t\tindex: i\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn [];\n\t\t\t}\n\t\t},\n\n\t\tonClick: function(e, legendItem) {\n\t\t\tvar index = legendItem.index;\n\t\t\tvar chart = this.chart;\n\t\t\tvar i, ilen, meta;\n\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\t// toggle visibility of index if exists\n\t\t\t\tif (meta.data[index]) {\n\t\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tchart.update();\n\t\t}\n\t},\n\n\t// The percentage of the chart that we cut out of the middle.\n\tcutoutPercentage: 50,\n\n\t// The rotation of the chart, where the first data arc begins.\n\trotation: Math.PI * -0.5,\n\n\t// The total circumference of the chart.\n\tcircumference: Math.PI * 2.0,\n\n\t// Need to override these to give a nice default\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\treturn '';\n\t\t\t},\n\t\t\tlabel: function(tooltipItem, data) {\n\t\t\t\tvar dataLabel = data.labels[tooltipItem.index];\n\t\t\t\tvar value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];\n\n\t\t\t\tif (helpers.isArray(dataLabel)) {\n\t\t\t\t\t// show value on first line of multiline label\n\t\t\t\t\t// need to clone because we are changing the value\n\t\t\t\t\tdataLabel = dataLabel.slice();\n\t\t\t\t\tdataLabel[0] += value;\n\t\t\t\t} else {\n\t\t\t\t\tdataLabel += value;\n\t\t\t\t}\n\n\t\t\t\treturn dataLabel;\n\t\t\t}\n\t\t}\n\t}\n});\n\ndefaults._set('pie', helpers.clone(defaults.doughnut));\ndefaults._set('pie', {\n\tcutoutPercentage: 0\n});\n\nmodule.exports = function(Chart) {\n\n\tChart.controllers.doughnut = Chart.controllers.pie = Chart.DatasetController.extend({\n\n\t\tdataElementType: elements.Arc,\n\n\t\tlinkScales: helpers.noop,\n\n\t\t// Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly\n\t\tgetRingIndex: function(datasetIndex) {\n\t\t\tvar ringIndex = 0;\n\n\t\t\tfor (var j = 0; j < datasetIndex; ++j) {\n\t\t\t\tif (this.chart.isDatasetVisible(j)) {\n\t\t\t\t\t++ringIndex;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn ringIndex;\n\t\t},\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar chartArea = chart.chartArea;\n\t\t\tvar opts = chart.options;\n\t\t\tvar arcOpts = opts.elements.arc;\n\t\t\tvar availableWidth = chartArea.right - chartArea.left - arcOpts.borderWidth;\n\t\t\tvar availableHeight = chartArea.bottom - chartArea.top - arcOpts.borderWidth;\n\t\t\tvar minSize = Math.min(availableWidth, availableHeight);\n\t\t\tvar offset = {x: 0, y: 0};\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar cutoutPercentage = opts.cutoutPercentage;\n\t\t\tvar circumference = opts.circumference;\n\n\t\t\t// If the chart's circumference isn't a full circle, calculate minSize as a ratio of the width/height of the arc\n\t\t\tif (circumference < Math.PI * 2.0) {\n\t\t\t\tvar startAngle = opts.rotation % (Math.PI * 2.0);\n\t\t\t\tstartAngle += Math.PI * 2.0 * (startAngle >= Math.PI ? -1 : startAngle < -Math.PI ? 1 : 0);\n\t\t\t\tvar endAngle = startAngle + circumference;\n\t\t\t\tvar start = {x: Math.cos(startAngle), y: Math.sin(startAngle)};\n\t\t\t\tvar end = {x: Math.cos(endAngle), y: Math.sin(endAngle)};\n\t\t\t\tvar contains0 = (startAngle <= 0 && endAngle >= 0) || (startAngle <= Math.PI * 2.0 && Math.PI * 2.0 <= endAngle);\n\t\t\t\tvar contains90 = (startAngle <= Math.PI * 0.5 && Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 2.5 && Math.PI * 2.5 <= endAngle);\n\t\t\t\tvar contains180 = (startAngle <= -Math.PI && -Math.PI <= endAngle) || (startAngle <= Math.PI && Math.PI <= endAngle);\n\t\t\t\tvar contains270 = (startAngle <= -Math.PI * 0.5 && -Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 1.5 && Math.PI * 1.5 <= endAngle);\n\t\t\t\tvar cutout = cutoutPercentage / 100.0;\n\t\t\t\tvar min = {x: contains180 ? -1 : Math.min(start.x * (start.x < 0 ? 1 : cutout), end.x * (end.x < 0 ? 1 : cutout)), y: contains270 ? -1 : Math.min(start.y * (start.y < 0 ? 1 : cutout), end.y * (end.y < 0 ? 1 : cutout))};\n\t\t\t\tvar max = {x: contains0 ? 1 : Math.max(start.x * (start.x > 0 ? 1 : cutout), end.x * (end.x > 0 ? 1 : cutout)), y: contains90 ? 1 : Math.max(start.y * (start.y > 0 ? 1 : cutout), end.y * (end.y > 0 ? 1 : cutout))};\n\t\t\t\tvar size = {width: (max.x - min.x) * 0.5, height: (max.y - min.y) * 0.5};\n\t\t\t\tminSize = Math.min(availableWidth / size.width, availableHeight / size.height);\n\t\t\t\toffset = {x: (max.x + min.x) * -0.5, y: (max.y + min.y) * -0.5};\n\t\t\t}\n\n\t\t\tchart.borderWidth = me.getMaxBorderWidth(meta.data);\n\t\t\tchart.outerRadius = Math.max((minSize - chart.borderWidth) / 2, 0);\n\t\t\tchart.innerRadius = Math.max(cutoutPercentage ? (chart.outerRadius / 100) * (cutoutPercentage) : 0, 0);\n\t\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\n\t\t\tchart.offsetX = offset.x * chart.outerRadius;\n\t\t\tchart.offsetY = offset.y * chart.outerRadius;\n\n\t\t\tmeta.total = me.calculateTotal();\n\n\t\t\tme.outerRadius = chart.outerRadius - (chart.radiusLength * me.getRingIndex(me.index));\n\t\t\tme.innerRadius = Math.max(me.outerRadius - chart.radiusLength, 0);\n\n\t\t\thelpers.each(meta.data, function(arc, index) {\n\t\t\t\tme.updateElement(arc, index, reset);\n\t\t\t});\n\t\t},\n\n\t\tupdateElement: function(arc, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar chartArea = chart.chartArea;\n\t\t\tvar opts = chart.options;\n\t\t\tvar animationOpts = opts.animation;\n\t\t\tvar centerX = (chartArea.left + chartArea.right) / 2;\n\t\t\tvar centerY = (chartArea.top + chartArea.bottom) / 2;\n\t\t\tvar startAngle = opts.rotation; // non reset case handled later\n\t\t\tvar endAngle = opts.rotation; // non reset case handled later\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / (2.0 * Math.PI));\n\t\t\tvar innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius;\n\t\t\tvar outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius;\n\t\t\tvar valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n\n\t\t\thelpers.extend(arc, {\n\t\t\t\t// Utility\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_index: index,\n\n\t\t\t\t// Desired view properties\n\t\t\t\t_model: {\n\t\t\t\t\tx: centerX + chart.offsetX,\n\t\t\t\t\ty: centerY + chart.offsetY,\n\t\t\t\t\tstartAngle: startAngle,\n\t\t\t\t\tendAngle: endAngle,\n\t\t\t\t\tcircumference: circumference,\n\t\t\t\t\touterRadius: outerRadius,\n\t\t\t\t\tinnerRadius: innerRadius,\n\t\t\t\t\tlabel: valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index])\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tvar model = arc._model;\n\n\t\t\t// Resets the visual styles\n\t\t\tvar custom = arc.custom || {};\n\t\t\tvar valueOrDefault = helpers.valueAtIndexOrDefault;\n\t\t\tvar elementOpts = this.chart.options.elements.arc;\n\t\t\tmodel.backgroundColor = custom.backgroundColor ? custom.backgroundColor : valueOrDefault(dataset.backgroundColor, index, elementOpts.backgroundColor);\n\t\t\tmodel.borderColor = custom.borderColor ? custom.borderColor : valueOrDefault(dataset.borderColor, index, elementOpts.borderColor);\n\t\t\tmodel.borderWidth = custom.borderWidth ? custom.borderWidth : valueOrDefault(dataset.borderWidth, index, elementOpts.borderWidth);\n\n\t\t\t// Set correct angles if not resetting\n\t\t\tif (!reset || !animationOpts.animateRotate) {\n\t\t\t\tif (index === 0) {\n\t\t\t\t\tmodel.startAngle = opts.rotation;\n\t\t\t\t} else {\n\t\t\t\t\tmodel.startAngle = me.getMeta().data[index - 1]._model.endAngle;\n\t\t\t\t}\n\n\t\t\t\tmodel.endAngle = model.startAngle + model.circumference;\n\t\t\t}\n\n\t\t\tarc.pivot();\n\t\t},\n\n\t\tcalculateTotal: function() {\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar meta = this.getMeta();\n\t\t\tvar total = 0;\n\t\t\tvar value;\n\n\t\t\thelpers.each(meta.data, function(element, index) {\n\t\t\t\tvalue = dataset.data[index];\n\t\t\t\tif (!isNaN(value) && !element.hidden) {\n\t\t\t\t\ttotal += Math.abs(value);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t/* if (total === 0) {\n\t\t\t\ttotal = NaN;\n\t\t\t}*/\n\n\t\t\treturn total;\n\t\t},\n\n\t\tcalculateCircumference: function(value) {\n\t\t\tvar total = this.getMeta().total;\n\t\t\tif (total > 0 && !isNaN(value)) {\n\t\t\t\treturn (Math.PI * 2.0) * (Math.abs(value) / total);\n\t\t\t}\n\t\t\treturn 0;\n\t\t},\n\n\t\t// gets the max border or hover width to properly scale pie charts\n\t\tgetMaxBorderWidth: function(arcs) {\n\t\t\tvar max = 0;\n\t\t\tvar index = this.index;\n\t\t\tvar length = arcs.length;\n\t\t\tvar borderWidth;\n\t\t\tvar hoverWidth;\n\n\t\t\tfor (var i = 0; i < length; i++) {\n\t\t\t\tborderWidth = arcs[i]._model ? arcs[i]._model.borderWidth : 0;\n\t\t\t\thoverWidth = arcs[i]._chart ? arcs[i]._chart.config.data.datasets[index].hoverBorderWidth : 0;\n\n\t\t\t\tmax = borderWidth > max ? borderWidth : max;\n\t\t\t\tmax = hoverWidth > max ? hoverWidth : max;\n\t\t\t}\n\t\t\treturn max;\n\t\t}\n\t});\n};\n","'use strict';\n\nvar helpers = require('../helpers/index');\nvar Scale = require('../core/core.scale');\nvar scaleService = require('../core/core.scaleService');\nvar Ticks = require('../core/core.ticks');\n\n/**\n * Generate a set of logarithmic ticks\n * @param generationOptions the options used to generate the ticks\n * @param dataRange the range of the data\n * @returns {Array<Number>} array of tick values\n */\nfunction generateTicks(generationOptions, dataRange) {\n\tvar ticks = [];\n\tvar valueOrDefault = helpers.valueOrDefault;\n\n\t// Figure out what the max number of ticks we can support it is based on the size of\n\t// the axis area. For now, we say that the minimum tick spacing in pixels must be 50\n\t// We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\n\t// the graph\n\tvar tickVal = valueOrDefault(generationOptions.min, Math.pow(10, Math.floor(helpers.log10(dataRange.min))));\n\n\tvar endExp = Math.floor(helpers.log10(dataRange.max));\n\tvar endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\n\tvar exp, significand;\n\n\tif (tickVal === 0) {\n\t\texp = Math.floor(helpers.log10(dataRange.minNotZero));\n\t\tsignificand = Math.floor(dataRange.minNotZero / Math.pow(10, exp));\n\n\t\tticks.push(tickVal);\n\t\ttickVal = significand * Math.pow(10, exp);\n\t} else {\n\t\texp = Math.floor(helpers.log10(tickVal));\n\t\tsignificand = Math.floor(tickVal / Math.pow(10, exp));\n\t}\n\tvar precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n\n\tdo {\n\t\tticks.push(tickVal);\n\n\t\t++significand;\n\t\tif (significand === 10) {\n\t\t\tsignificand = 1;\n\t\t\t++exp;\n\t\t\tprecision = exp >= 0 ? 1 : precision;\n\t\t}\n\n\t\ttickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\n\t} while (exp < endExp || (exp === endExp && significand < endSignificand));\n\n\tvar lastTick = valueOrDefault(generationOptions.max, tickVal);\n\tticks.push(lastTick);\n\n\treturn ticks;\n}\n\n\nmodule.exports = function(Chart) {\n\n\tvar defaultConfig = {\n\t\tposition: 'left',\n\n\t\t// label settings\n\t\tticks: {\n\t\t\tcallback: Ticks.formatters.logarithmic\n\t\t}\n\t};\n\n\tvar LogarithmicScale = Scale.extend({\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar chart = me.chart;\n\t\t\tvar data = chart.data;\n\t\t\tvar datasets = data.datasets;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\t\t\tfunction IDMatches(meta) {\n\t\t\t\treturn isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id;\n\t\t\t}\n\n\t\t\t// Calculate Range\n\t\t\tme.min = null;\n\t\t\tme.max = null;\n\t\t\tme.minNotZero = null;\n\n\t\t\tvar hasStacks = opts.stacked;\n\t\t\tif (hasStacks === undefined) {\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tif (hasStacks) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) &&\n\t\t\t\t\t\tmeta.stack !== undefined) {\n\t\t\t\t\t\thasStacks = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (opts.stacked || hasStacks) {\n\t\t\t\tvar valuesPerStack = {};\n\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tvar key = [\n\t\t\t\t\t\tmeta.type,\n\t\t\t\t\t\t// we have a separate stack for stack=undefined datasets when the opts.stacked is undefined\n\t\t\t\t\t\t((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''),\n\t\t\t\t\t\tmeta.stack\n\t\t\t\t\t].join('.');\n\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\t\tif (valuesPerStack[key] === undefined) {\n\t\t\t\t\t\t\tvaluesPerStack[key] = [];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\t\tvar values = valuesPerStack[key];\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\t\t// invalid, hidden and negative values are ignored\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden || value < 0) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tvalues[index] = values[index] || 0;\n\t\t\t\t\t\t\tvalues[index] += value;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\thelpers.each(valuesPerStack, function(valuesForType) {\n\t\t\t\t\tif (valuesForType.length > 0) {\n\t\t\t\t\t\tvar minVal = helpers.min(valuesForType);\n\t\t\t\t\t\tvar maxVal = helpers.max(valuesForType);\n\t\t\t\t\t\tme.min = me.min === null ? minVal : Math.min(me.min, minVal);\n\t\t\t\t\t\tme.max = me.max === null ? maxVal : Math.max(me.max, maxVal);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t} else {\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\t\t// invalid, hidden and negative values are ignored\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden || value < 0) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (me.min === null) {\n\t\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t\t} else if (value < me.min) {\n\t\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (me.max === null) {\n\t\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t\t} else if (value > me.max) {\n\t\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (value !== 0 && (me.minNotZero === null || value < me.minNotZero)) {\n\t\t\t\t\t\t\t\tme.minNotZero = value;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Common base implementation to handle ticks.min, ticks.max\n\t\t\tthis.handleTickRangeOptions();\n\t\t},\n\t\thandleTickRangeOptions: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\t\t\tvar valueOrDefault = helpers.valueOrDefault;\n\t\t\tvar DEFAULT_MIN = 1;\n\t\t\tvar DEFAULT_MAX = 10;\n\n\t\t\tme.min = valueOrDefault(tickOpts.min, me.min);\n\t\t\tme.max = valueOrDefault(tickOpts.max, me.max);\n\n\t\t\tif (me.min === me.max) {\n\t\t\t\tif (me.min !== 0 && me.min !== null) {\n\t\t\t\t\tme.min = Math.pow(10, Math.floor(helpers.log10(me.min)) - 1);\n\t\t\t\t\tme.max = Math.pow(10, Math.floor(helpers.log10(me.max)) + 1);\n\t\t\t\t} else {\n\t\t\t\t\tme.min = DEFAULT_MIN;\n\t\t\t\t\tme.max = DEFAULT_MAX;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (me.min === null) {\n\t\t\t\tme.min = Math.pow(10, Math.floor(helpers.log10(me.max)) - 1);\n\t\t\t}\n\t\t\tif (me.max === null) {\n\t\t\t\tme.max = me.min !== 0\n\t\t\t\t\t? Math.pow(10, Math.floor(helpers.log10(me.min)) + 1)\n\t\t\t\t\t: DEFAULT_MAX;\n\t\t\t}\n\t\t\tif (me.minNotZero === null) {\n\t\t\t\tif (me.min > 0) {\n\t\t\t\t\tme.minNotZero = me.min;\n\t\t\t\t} else if (me.max < 1) {\n\t\t\t\t\tme.minNotZero = Math.pow(10, Math.floor(helpers.log10(me.max)));\n\t\t\t\t} else {\n\t\t\t\t\tme.minNotZero = DEFAULT_MIN;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tbuildTicks: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\t\t\tvar reverse = !me.isHorizontal();\n\n\t\t\tvar generationOptions = {\n\t\t\t\tmin: tickOpts.min,\n\t\t\t\tmax: tickOpts.max\n\t\t\t};\n\t\t\tvar ticks = me.ticks = generateTicks(generationOptions, me);\n\n\t\t\t// At this point, we need to update our max and min given the tick values since we have expanded the\n\t\t\t// range of the scale\n\t\t\tme.max = helpers.max(ticks);\n\t\t\tme.min = helpers.min(ticks);\n\n\t\t\tif (tickOpts.reverse) {\n\t\t\t\treverse = !reverse;\n\t\t\t\tme.start = me.max;\n\t\t\t\tme.end = me.min;\n\t\t\t} else {\n\t\t\t\tme.start = me.min;\n\t\t\t\tme.end = me.max;\n\t\t\t}\n\t\t\tif (reverse) {\n\t\t\t\tticks.reverse();\n\t\t\t}\n\t\t},\n\t\tconvertTicksToLabels: function() {\n\t\t\tthis.tickValues = this.ticks.slice();\n\n\t\t\tScale.prototype.convertTicksToLabels.call(this);\n\t\t},\n\t\t// Get the correct tooltip label\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\n\t\t},\n\t\tgetPixelForTick: function(index) {\n\t\t\treturn this.getPixelForValue(this.tickValues[index]);\n\t\t},\n\t\t/**\n\t\t * Returns the value of the first tick.\n\t\t * @param {Number} value - The minimum not zero value.\n\t\t * @return {Number} The first tick value.\n\t\t * @private\n\t\t */\n\t\t_getFirstTickValue: function(value) {\n\t\t\tvar exp = Math.floor(helpers.log10(value));\n\t\t\tvar significand = Math.floor(value / Math.pow(10, exp));\n\n\t\t\treturn significand * Math.pow(10, exp);\n\t\t},\n\t\tgetPixelForValue: function(value) {\n\t\t\tvar me = this;\n\t\t\tvar reverse = me.options.ticks.reverse;\n\t\t\tvar log10 = helpers.log10;\n\t\t\tvar firstTickValue = me._getFirstTickValue(me.minNotZero);\n\t\t\tvar offset = 0;\n\t\t\tvar innerDimension, pixel, start, end, sign;\n\n\t\t\tvalue = +me.getRightValue(value);\n\t\t\tif (reverse) {\n\t\t\t\tstart = me.end;\n\t\t\t\tend = me.start;\n\t\t\t\tsign = -1;\n\t\t\t} else {\n\t\t\t\tstart = me.start;\n\t\t\t\tend = me.end;\n\t\t\t\tsign = 1;\n\t\t\t}\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tinnerDimension = me.width;\n\t\t\t\tpixel = reverse ? me.right : me.left;\n\t\t\t} else {\n\t\t\t\tinnerDimension = me.height;\n\t\t\t\tsign *= -1; // invert, since the upper-left corner of the canvas is at pixel (0, 0)\n\t\t\t\tpixel = reverse ? me.top : me.bottom;\n\t\t\t}\n\t\t\tif (value !== start) {\n\t\t\t\tif (start === 0) { // include zero tick\n\t\t\t\t\toffset = helpers.getValueOrDefault(\n\t\t\t\t\t\tme.options.ticks.fontSize,\n\t\t\t\t\t\tChart.defaults.global.defaultFontSize\n\t\t\t\t\t);\n\t\t\t\t\tinnerDimension -= offset;\n\t\t\t\t\tstart = firstTickValue;\n\t\t\t\t}\n\t\t\t\tif (value !== 0) {\n\t\t\t\t\toffset += innerDimension / (log10(end) - log10(start)) * (log10(value) - log10(start));\n\t\t\t\t}\n\t\t\t\tpixel += sign * offset;\n\t\t\t}\n\t\t\treturn pixel;\n\t\t},\n\t\tgetValueForPixel: function(pixel) {\n\t\t\tvar me = this;\n\t\t\tvar reverse = me.options.ticks.reverse;\n\t\t\tvar log10 = helpers.log10;\n\t\t\tvar firstTickValue = me._getFirstTickValue(me.minNotZero);\n\t\t\tvar innerDimension, start, end, value;\n\n\t\t\tif (reverse) {\n\t\t\t\tstart = me.end;\n\t\t\t\tend = me.start;\n\t\t\t} else {\n\t\t\t\tstart = me.start;\n\t\t\t\tend = me.end;\n\t\t\t}\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tinnerDimension = me.width;\n\t\t\t\tvalue = reverse ? me.right - pixel : pixel - me.left;\n\t\t\t} else {\n\t\t\t\tinnerDimension = me.height;\n\t\t\t\tvalue = reverse ? pixel - me.top : me.bottom - pixel;\n\t\t\t}\n\t\t\tif (value !== start) {\n\t\t\t\tif (start === 0) { // include zero tick\n\t\t\t\t\tvar offset = helpers.getValueOrDefault(\n\t\t\t\t\t\tme.options.ticks.fontSize,\n\t\t\t\t\t\tChart.defaults.global.defaultFontSize\n\t\t\t\t\t);\n\t\t\t\t\tvalue -= offset;\n\t\t\t\t\tinnerDimension -= offset;\n\t\t\t\t\tstart = firstTickValue;\n\t\t\t\t}\n\t\t\t\tvalue *= log10(end) - log10(start);\n\t\t\t\tvalue /= innerDimension;\n\t\t\t\tvalue = Math.pow(10, log10(start) + value);\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t});\n\n\tscaleService.registerScaleType('logarithmic', LogarithmicScale, defaultConfig);\n};\n","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n }\n\n // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n // Don't get fooled by e.g. browserify environments.\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar helpers = require('../helpers/index');\nvar scaleService = require('../core/core.scaleService');\nvar Ticks = require('../core/core.ticks');\n\nmodule.exports = function(Chart) {\n\n\tvar defaultConfig = {\n\t\tposition: 'left',\n\t\tticks: {\n\t\t\tcallback: Ticks.formatters.linear\n\t\t}\n\t};\n\n\tvar LinearScale = Chart.LinearScaleBase.extend({\n\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar chart = me.chart;\n\t\t\tvar data = chart.data;\n\t\t\tvar datasets = data.datasets;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\t\t\tvar DEFAULT_MIN = 0;\n\t\t\tvar DEFAULT_MAX = 1;\n\n\t\t\tfunction IDMatches(meta) {\n\t\t\t\treturn isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id;\n\t\t\t}\n\n\t\t\t// First Calculate the range\n\t\t\tme.min = null;\n\t\t\tme.max = null;\n\n\t\t\tvar hasStacks = opts.stacked;\n\t\t\tif (hasStacks === undefined) {\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tif (hasStacks) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) &&\n\t\t\t\t\t\tmeta.stack !== undefined) {\n\t\t\t\t\t\thasStacks = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (opts.stacked || hasStacks) {\n\t\t\t\tvar valuesPerStack = {};\n\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tvar key = [\n\t\t\t\t\t\tmeta.type,\n\t\t\t\t\t\t// we have a separate stack for stack=undefined datasets when the opts.stacked is undefined\n\t\t\t\t\t\t((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''),\n\t\t\t\t\t\tmeta.stack\n\t\t\t\t\t].join('.');\n\n\t\t\t\t\tif (valuesPerStack[key] === undefined) {\n\t\t\t\t\t\tvaluesPerStack[key] = {\n\t\t\t\t\t\t\tpositiveValues: [],\n\t\t\t\t\t\t\tnegativeValues: []\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Store these per type\n\t\t\t\t\tvar positiveValues = valuesPerStack[key].positiveValues;\n\t\t\t\t\tvar negativeValues = valuesPerStack[key].negativeValues;\n\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tpositiveValues[index] = positiveValues[index] || 0;\n\t\t\t\t\t\t\tnegativeValues[index] = negativeValues[index] || 0;\n\n\t\t\t\t\t\t\tif (opts.relativePoints) {\n\t\t\t\t\t\t\t\tpositiveValues[index] = 100;\n\t\t\t\t\t\t\t} else if (value < 0) {\n\t\t\t\t\t\t\t\tnegativeValues[index] += value;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tpositiveValues[index] += value;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\thelpers.each(valuesPerStack, function(valuesForType) {\n\t\t\t\t\tvar values = valuesForType.positiveValues.concat(valuesForType.negativeValues);\n\t\t\t\t\tvar minVal = helpers.min(values);\n\t\t\t\t\tvar maxVal = helpers.max(values);\n\t\t\t\t\tme.min = me.min === null ? minVal : Math.min(me.min, minVal);\n\t\t\t\t\tme.max = me.max === null ? maxVal : Math.max(me.max, maxVal);\n\t\t\t\t});\n\n\t\t\t} else {\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (me.min === null) {\n\t\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t\t} else if (value < me.min) {\n\t\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (me.max === null) {\n\t\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t\t} else if (value > me.max) {\n\t\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tme.min = isFinite(me.min) && !isNaN(me.min) ? me.min : DEFAULT_MIN;\n\t\t\tme.max = isFinite(me.max) && !isNaN(me.max) ? me.max : DEFAULT_MAX;\n\n\t\t\t// Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\n\t\t\tthis.handleTickRangeOptions();\n\t\t},\n\t\tgetTickLimit: function() {\n\t\t\tvar maxTicks;\n\t\t\tvar me = this;\n\t\t\tvar tickOpts = me.options.ticks;\n\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tmaxTicks = Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(me.width / 50));\n\t\t\t} else {\n\t\t\t\t// The factor of 2 used to scale the font size has been experimentally determined.\n\t\t\t\tvar tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, defaults.global.defaultFontSize);\n\t\t\t\tmaxTicks = Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(me.height / (2 * tickFontSize)));\n\t\t\t}\n\n\t\t\treturn maxTicks;\n\t\t},\n\t\t// Called after the ticks are built. We need\n\t\thandleDirectionalChanges: function() {\n\t\t\tif (!this.isHorizontal()) {\n\t\t\t\t// We are in a vertical orientation. The top value is the highest. So reverse the array\n\t\t\t\tthis.ticks.reverse();\n\t\t\t}\n\t\t},\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\n\t\t},\n\t\t// Utils\n\t\tgetPixelForValue: function(value) {\n\t\t\t// This must be called after fit has been run so that\n\t\t\t// this.left, this.top, this.right, and this.bottom have been defined\n\t\t\tvar me = this;\n\t\t\tvar start = me.start;\n\n\t\t\tvar rightValue = +me.getRightValue(value);\n\t\t\tvar pixel;\n\t\t\tvar range = me.end - start;\n\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tpixel = me.left + (me.width / range * (rightValue - start));\n\t\t\t} else {\n\t\t\t\tpixel = me.bottom - (me.height / range * (rightValue - start));\n\t\t\t}\n\t\t\treturn pixel;\n\t\t},\n\t\tgetValueForPixel: function(pixel) {\n\t\t\tvar me = this;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\t\t\tvar innerDimension = isHorizontal ? me.width : me.height;\n\t\t\tvar offset = (isHorizontal ? pixel - me.left : me.bottom - pixel) / innerDimension;\n\t\t\treturn me.start + ((me.end - me.start) * offset);\n\t\t},\n\t\tgetPixelForTick: function(index) {\n\t\t\treturn this.getPixelForValue(this.ticksAsNumbers[index]);\n\t\t}\n\t});\n\n\tscaleService.registerScaleType('linear', LinearScale, defaultConfig);\n};\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar elements = require('../elements/index');\nvar helpers = require('../helpers/index');\n\ndefaults._set('bar', {\n\thover: {\n\t\tmode: 'label'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'category',\n\n\t\t\t// Specific to Bar Controller\n\t\t\tcategoryPercentage: 0.8,\n\t\t\tbarPercentage: 0.9,\n\n\t\t\t// offset settings\n\t\t\toffset: true,\n\n\t\t\t// grid line settings\n\t\t\tgridLines: {\n\t\t\t\toffsetGridLines: true\n\t\t\t}\n\t\t}],\n\n\t\tyAxes: [{\n\t\t\ttype: 'linear'\n\t\t}]\n\t}\n});\n\ndefaults._set('horizontalBar', {\n\thover: {\n\t\tmode: 'index',\n\t\taxis: 'y'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'linear',\n\t\t\tposition: 'bottom'\n\t\t}],\n\n\t\tyAxes: [{\n\t\t\tposition: 'left',\n\t\t\ttype: 'category',\n\n\t\t\t// Specific to Horizontal Bar Controller\n\t\t\tcategoryPercentage: 0.8,\n\t\t\tbarPercentage: 0.9,\n\n\t\t\t// offset settings\n\t\t\toffset: true,\n\n\t\t\t// grid line settings\n\t\t\tgridLines: {\n\t\t\t\toffsetGridLines: true\n\t\t\t}\n\t\t}]\n\t},\n\n\telements: {\n\t\trectangle: {\n\t\t\tborderSkipped: 'left'\n\t\t}\n\t},\n\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function(item, data) {\n\t\t\t\t// Pick first xLabel for now\n\t\t\t\tvar title = '';\n\n\t\t\t\tif (item.length > 0) {\n\t\t\t\t\tif (item[0].yLabel) {\n\t\t\t\t\t\ttitle = item[0].yLabel;\n\t\t\t\t\t} else if (data.labels.length > 0 && item[0].index < data.labels.length) {\n\t\t\t\t\t\ttitle = data.labels[item[0].index];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn title;\n\t\t\t},\n\n\t\t\tlabel: function(item, data) {\n\t\t\t\tvar datasetLabel = data.datasets[item.datasetIndex].label || '';\n\t\t\t\treturn datasetLabel + ': ' + item.xLabel;\n\t\t\t}\n\t\t},\n\t\tmode: 'index',\n\t\taxis: 'y'\n\t}\n});\n\n/**\n * Computes the \"optimal\" sample size to maintain bars equally sized while preventing overlap.\n * @private\n */\nfunction computeMinSampleSize(scale, pixels) {\n\tvar min = scale.isHorizontal() ? scale.width : scale.height;\n\tvar ticks = scale.getTicks();\n\tvar prev, curr, i, ilen;\n\n\tfor (i = 1, ilen = pixels.length; i < ilen; ++i) {\n\t\tmin = Math.min(min, pixels[i] - pixels[i - 1]);\n\t}\n\n\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\n\t\tcurr = scale.getPixelForTick(i);\n\t\tmin = i > 0 ? Math.min(min, curr - prev) : min;\n\t\tprev = curr;\n\t}\n\n\treturn min;\n}\n\n/**\n * Computes an \"ideal\" category based on the absolute bar thickness or, if undefined or null,\n * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This\n * mode currently always generates bars equally sized (until we introduce scriptable options?).\n * @private\n */\nfunction computeFitCategoryTraits(index, ruler, options) {\n\tvar thickness = options.barThickness;\n\tvar count = ruler.stackCount;\n\tvar curr = ruler.pixels[index];\n\tvar size, ratio;\n\n\tif (helpers.isNullOrUndef(thickness)) {\n\t\tsize = ruler.min * options.categoryPercentage;\n\t\tratio = options.barPercentage;\n\t} else {\n\t\t// When bar thickness is enforced, category and bar percentages are ignored.\n\t\t// Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%')\n\t\t// and deprecate barPercentage since this value is ignored when thickness is absolute.\n\t\tsize = thickness * count;\n\t\tratio = 1;\n\t}\n\n\treturn {\n\t\tchunk: size / count,\n\t\tratio: ratio,\n\t\tstart: curr - (size / 2)\n\t};\n}\n\n/**\n * Computes an \"optimal\" category that globally arranges bars side by side (no gap when\n * percentage options are 1), based on the previous and following categories. This mode\n * generates bars with different widths when data are not evenly spaced.\n * @private\n */\nfunction computeFlexCategoryTraits(index, ruler, options) {\n\tvar pixels = ruler.pixels;\n\tvar curr = pixels[index];\n\tvar prev = index > 0 ? pixels[index - 1] : null;\n\tvar next = index < pixels.length - 1 ? pixels[index + 1] : null;\n\tvar percent = options.categoryPercentage;\n\tvar start, size;\n\n\tif (prev === null) {\n\t\t// first data: its size is double based on the next point or,\n\t\t// if it's also the last data, we use the scale end extremity.\n\t\tprev = curr - (next === null ? ruler.end - curr : next - curr);\n\t}\n\n\tif (next === null) {\n\t\t// last data: its size is also double based on the previous point.\n\t\tnext = curr + curr - prev;\n\t}\n\n\tstart = curr - ((curr - prev) / 2) * percent;\n\tsize = ((next - prev) / 2) * percent;\n\n\treturn {\n\t\tchunk: size / ruler.stackCount,\n\t\tratio: options.barPercentage,\n\t\tstart: start\n\t};\n}\n\nmodule.exports = function(Chart) {\n\n\tChart.controllers.bar = Chart.DatasetController.extend({\n\n\t\tdataElementType: elements.Rectangle,\n\n\t\tinitialize: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta;\n\n\t\t\tChart.DatasetController.prototype.initialize.apply(me, arguments);\n\n\t\t\tmeta = me.getMeta();\n\t\t\tmeta.stack = me.getDataset().stack;\n\t\t\tmeta.bar = true;\n\t\t},\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar rects = me.getMeta().data;\n\t\t\tvar i, ilen;\n\n\t\t\tme._ruler = me.getRuler();\n\n\t\t\tfor (i = 0, ilen = rects.length; i < ilen; ++i) {\n\t\t\t\tme.updateElement(rects[i], i, reset);\n\t\t\t}\n\t\t},\n\n\t\tupdateElement: function(rectangle, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar custom = rectangle.custom || {};\n\t\t\tvar rectangleOptions = chart.options.elements.rectangle;\n\n\t\t\trectangle._xScale = me.getScaleForId(meta.xAxisID);\n\t\t\trectangle._yScale = me.getScaleForId(meta.yAxisID);\n\t\t\trectangle._datasetIndex = me.index;\n\t\t\trectangle._index = index;\n\n\t\t\trectangle._model = {\n\t\t\t\tdatasetLabel: dataset.label,\n\t\t\t\tlabel: chart.data.labels[index],\n\t\t\t\tborderSkipped: custom.borderSkipped ? custom.borderSkipped : rectangleOptions.borderSkipped,\n\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.backgroundColor, index, rectangleOptions.backgroundColor),\n\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.borderColor, index, rectangleOptions.borderColor),\n\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.borderWidth, index, rectangleOptions.borderWidth)\n\t\t\t};\n\n\t\t\tme.updateElementGeometry(rectangle, index, reset);\n\n\t\t\trectangle.pivot();\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tupdateElementGeometry: function(rectangle, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar model = rectangle._model;\n\t\t\tvar vscale = me.getValueScale();\n\t\t\tvar base = vscale.getBasePixel();\n\t\t\tvar horizontal = vscale.isHorizontal();\n\t\t\tvar ruler = me._ruler || me.getRuler();\n\t\t\tvar vpixels = me.calculateBarValuePixels(me.index, index);\n\t\t\tvar ipixels = me.calculateBarIndexPixels(me.index, index, ruler);\n\n\t\t\tmodel.horizontal = horizontal;\n\t\t\tmodel.base = reset ? base : vpixels.base;\n\t\t\tmodel.x = horizontal ? reset ? base : vpixels.head : ipixels.center;\n\t\t\tmodel.y = horizontal ? ipixels.center : reset ? base : vpixels.head;\n\t\t\tmodel.height = horizontal ? ipixels.size : undefined;\n\t\t\tmodel.width = horizontal ? undefined : ipixels.size;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetValueScaleId: function() {\n\t\t\treturn this.getMeta().yAxisID;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetIndexScaleId: function() {\n\t\t\treturn this.getMeta().xAxisID;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetValueScale: function() {\n\t\t\treturn this.getScaleForId(this.getValueScaleId());\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetIndexScale: function() {\n\t\t\treturn this.getScaleForId(this.getIndexScaleId());\n\t\t},\n\n\t\t/**\n\t\t * Returns the stacks based on groups and bar visibility.\n\t\t * @param {Number} [last] - The dataset index\n\t\t * @returns {Array} The stack list\n\t\t * @private\n\t\t */\n\t\t_getStacks: function(last) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar scale = me.getIndexScale();\n\t\t\tvar stacked = scale.options.stacked;\n\t\t\tvar ilen = last === undefined ? chart.data.datasets.length : last + 1;\n\t\t\tvar stacks = [];\n\t\t\tvar i, meta;\n\n\t\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\tif (meta.bar && chart.isDatasetVisible(i) &&\n\t\t\t\t\t(stacked === false ||\n\t\t\t\t\t(stacked === true && stacks.indexOf(meta.stack) === -1) ||\n\t\t\t\t\t(stacked === undefined && (meta.stack === undefined || stacks.indexOf(meta.stack) === -1)))) {\n\t\t\t\t\tstacks.push(meta.stack);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn stacks;\n\t\t},\n\n\t\t/**\n\t\t * Returns the effective number of stacks based on groups and bar visibility.\n\t\t * @private\n\t\t */\n\t\tgetStackCount: function() {\n\t\t\treturn this._getStacks().length;\n\t\t},\n\n\t\t/**\n\t\t * Returns the stack index for the given dataset based on groups and bar visibility.\n\t\t * @param {Number} [datasetIndex] - The dataset index\n\t\t * @param {String} [name] - The stack name to find\n\t\t * @returns {Number} The stack index\n\t\t * @private\n\t\t */\n\t\tgetStackIndex: function(datasetIndex, name) {\n\t\t\tvar stacks = this._getStacks(datasetIndex);\n\t\t\tvar index = (name !== undefined)\n\t\t\t\t? stacks.indexOf(name)\n\t\t\t\t: -1; // indexOf returns -1 if element is not present\n\n\t\t\treturn (index === -1)\n\t\t\t\t? stacks.length - 1\n\t\t\t\t: index;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetRuler: function() {\n\t\t\tvar me = this;\n\t\t\tvar scale = me.getIndexScale();\n\t\t\tvar stackCount = me.getStackCount();\n\t\t\tvar datasetIndex = me.index;\n\t\t\tvar isHorizontal = scale.isHorizontal();\n\t\t\tvar start = isHorizontal ? scale.left : scale.top;\n\t\t\tvar end = start + (isHorizontal ? scale.width : scale.height);\n\t\t\tvar pixels = [];\n\t\t\tvar i, ilen, min;\n\n\t\t\tfor (i = 0, ilen = me.getMeta().data.length; i < ilen; ++i) {\n\t\t\t\tpixels.push(scale.getPixelForValue(null, i, datasetIndex));\n\t\t\t}\n\n\t\t\tmin = helpers.isNullOrUndef(scale.options.barThickness)\n\t\t\t\t? computeMinSampleSize(scale, pixels)\n\t\t\t\t: -1;\n\n\t\t\treturn {\n\t\t\t\tmin: min,\n\t\t\t\tpixels: pixels,\n\t\t\t\tstart: start,\n\t\t\t\tend: end,\n\t\t\t\tstackCount: stackCount,\n\t\t\t\tscale: scale\n\t\t\t};\n\t\t},\n\n\t\t/**\n\t\t * Note: pixel values are not clamped to the scale area.\n\t\t * @private\n\t\t */\n\t\tcalculateBarValuePixels: function(datasetIndex, index) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar scale = me.getValueScale();\n\t\t\tvar datasets = chart.data.datasets;\n\t\t\tvar value = scale.getRightValue(datasets[datasetIndex].data[index]);\n\t\t\tvar stacked = scale.options.stacked;\n\t\t\tvar stack = meta.stack;\n\t\t\tvar start = 0;\n\t\t\tvar i, imeta, ivalue, base, head, size;\n\n\t\t\tif (stacked || (stacked === undefined && stack !== undefined)) {\n\t\t\t\tfor (i = 0; i < datasetIndex; ++i) {\n\t\t\t\t\timeta = chart.getDatasetMeta(i);\n\n\t\t\t\t\tif (imeta.bar &&\n\t\t\t\t\t\timeta.stack === stack &&\n\t\t\t\t\t\timeta.controller.getValueScaleId() === scale.id &&\n\t\t\t\t\t\tchart.isDatasetVisible(i)) {\n\n\t\t\t\t\t\tivalue = scale.getRightValue(datasets[i].data[index]);\n\t\t\t\t\t\tif ((value < 0 && ivalue < 0) || (value >= 0 && ivalue > 0)) {\n\t\t\t\t\t\t\tstart += ivalue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbase = scale.getPixelForValue(start);\n\t\t\thead = scale.getPixelForValue(start + value);\n\t\t\tsize = (head - base) / 2;\n\n\t\t\treturn {\n\t\t\t\tsize: size,\n\t\t\t\tbase: base,\n\t\t\t\thead: head,\n\t\t\t\tcenter: head + size / 2\n\t\t\t};\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tcalculateBarIndexPixels: function(datasetIndex, index, ruler) {\n\t\t\tvar me = this;\n\t\t\tvar options = ruler.scale.options;\n\t\t\tvar range = options.barThickness === 'flex'\n\t\t\t\t? computeFlexCategoryTraits(index, ruler, options)\n\t\t\t\t: computeFitCategoryTraits(index, ruler, options);\n\n\t\t\tvar stackIndex = me.getStackIndex(datasetIndex, me.getMeta().stack);\n\t\t\tvar center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n\t\t\tvar size = Math.min(\n\t\t\t\thelpers.valueOrDefault(options.maxBarThickness, Infinity),\n\t\t\t\trange.chunk * range.ratio);\n\n\t\t\treturn {\n\t\t\t\tbase: center - size / 2,\n\t\t\t\thead: center + size / 2,\n\t\t\t\tcenter: center,\n\t\t\t\tsize: size\n\t\t\t};\n\t\t},\n\n\t\tdraw: function() {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar scale = me.getValueScale();\n\t\t\tvar rects = me.getMeta().data;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar ilen = rects.length;\n\t\t\tvar i = 0;\n\n\t\t\thelpers.canvas.clipArea(chart.ctx, chart.chartArea);\n\n\t\t\tfor (; i < ilen; ++i) {\n\t\t\t\tif (!isNaN(scale.getRightValue(dataset.data[i]))) {\n\t\t\t\t\trects[i].draw();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\thelpers.canvas.unclipArea(chart.ctx);\n\t\t},\n\t});\n\n\tChart.controllers.horizontalBar = Chart.controllers.bar.extend({\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetValueScaleId: function() {\n\t\t\treturn this.getMeta().xAxisID;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetIndexScaleId: function() {\n\t\t\treturn this.getMeta().yAxisID;\n\t\t}\n\t});\n};\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar elements = require('../elements/index');\nvar helpers = require('../helpers/index');\n\ndefaults._set('radar', {\n\tscale: {\n\t\ttype: 'radialLinear'\n\t},\n\telements: {\n\t\tline: {\n\t\t\ttension: 0 // no bezier in radar\n\t\t}\n\t}\n});\n\nmodule.exports = function(Chart) {\n\n\tChart.controllers.radar = Chart.DatasetController.extend({\n\n\t\tdatasetElementType: elements.Line,\n\n\t\tdataElementType: elements.Point,\n\n\t\tlinkScales: helpers.noop,\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar line = meta.dataset;\n\t\t\tvar points = meta.data;\n\t\t\tvar custom = line.custom || {};\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar lineElementOptions = me.chart.options.elements.line;\n\t\t\tvar scale = me.chart.scale;\n\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\tif ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) {\n\t\t\t\tdataset.lineTension = dataset.tension;\n\t\t\t}\n\n\t\t\thelpers.extend(meta.dataset, {\n\t\t\t\t// Utility\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_scale: scale,\n\t\t\t\t// Data\n\t\t\t\t_children: points,\n\t\t\t\t_loop: true,\n\t\t\t\t// Model\n\t\t\t\t_model: {\n\t\t\t\t\t// Appearance\n\t\t\t\t\ttension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, lineElementOptions.tension),\n\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor),\n\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth),\n\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor),\n\t\t\t\t\tfill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill),\n\t\t\t\t\tborderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle),\n\t\t\t\t\tborderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash),\n\t\t\t\t\tborderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset),\n\t\t\t\t\tborderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle),\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tmeta.dataset.pivot();\n\n\t\t\t// Update Points\n\t\t\thelpers.each(points, function(point, index) {\n\t\t\t\tme.updateElement(point, index, reset);\n\t\t\t}, me);\n\n\t\t\t// Update bezier control points\n\t\t\tme.updateBezierControlPoints();\n\t\t},\n\t\tupdateElement: function(point, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar scale = me.chart.scale;\n\t\t\tvar pointElementOptions = me.chart.options.elements.point;\n\t\t\tvar pointPosition = scale.getPointPositionForValue(index, dataset.data[index]);\n\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\tif ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) {\n\t\t\t\tdataset.pointRadius = dataset.radius;\n\t\t\t}\n\t\t\tif ((dataset.hitRadius !== undefined) && (dataset.pointHitRadius === undefined)) {\n\t\t\t\tdataset.pointHitRadius = dataset.hitRadius;\n\t\t\t}\n\n\t\t\thelpers.extend(point, {\n\t\t\t\t// Utility\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_index: index,\n\t\t\t\t_scale: scale,\n\n\t\t\t\t// Desired view properties\n\t\t\t\t_model: {\n\t\t\t\t\tx: reset ? scale.xCenter : pointPosition.x, // value not used in dataset scale, but we want a consistent API between scales\n\t\t\t\t\ty: reset ? scale.yCenter : pointPosition.y,\n\n\t\t\t\t\t// Appearance\n\t\t\t\t\ttension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, me.chart.options.elements.line.tension),\n\t\t\t\t\tradius: custom.radius ? custom.radius : helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointElementOptions.radius),\n\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, pointElementOptions.backgroundColor),\n\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, pointElementOptions.borderColor),\n\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, pointElementOptions.borderWidth),\n\t\t\t\t\tpointStyle: custom.pointStyle ? custom.pointStyle : helpers.valueAtIndexOrDefault(dataset.pointStyle, index, pointElementOptions.pointStyle),\n\t\t\t\t\trotation: custom.rotation ? custom.rotation : helpers.valueAtIndexOrDefault(dataset.pointRotation, index, pointElementOptions.rotation),\n\n\t\t\t\t\t// Tooltip\n\t\t\t\t\thitRadius: custom.hitRadius ? custom.hitRadius : helpers.valueAtIndexOrDefault(dataset.pointHitRadius, index, pointElementOptions.hitRadius)\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tpoint._model.skip = custom.skip ? custom.skip : (isNaN(point._model.x) || isNaN(point._model.y));\n\t\t},\n\t\tupdateBezierControlPoints: function() {\n\t\t\tvar chartArea = this.chart.chartArea;\n\t\t\tvar meta = this.getMeta();\n\n\t\t\thelpers.each(meta.data, function(point, index) {\n\t\t\t\tvar model = point._model;\n\t\t\t\tvar controlPoints = helpers.splineCurve(\n\t\t\t\t\thelpers.previousItem(meta.data, index, true)._model,\n\t\t\t\t\tmodel,\n\t\t\t\t\thelpers.nextItem(meta.data, index, true)._model,\n\t\t\t\t\tmodel.tension\n\t\t\t\t);\n\n\t\t\t\t// Prevent the bezier going outside of the bounds of the graph\n\t\t\t\tmodel.controlPointPreviousX = Math.max(Math.min(controlPoints.previous.x, chartArea.right), chartArea.left);\n\t\t\t\tmodel.controlPointPreviousY = Math.max(Math.min(controlPoints.previous.y, chartArea.bottom), chartArea.top);\n\n\t\t\t\tmodel.controlPointNextX = Math.max(Math.min(controlPoints.next.x, chartArea.right), chartArea.left);\n\t\t\t\tmodel.controlPointNextY = Math.max(Math.min(controlPoints.next.y, chartArea.bottom), chartArea.top);\n\n\t\t\t\t// Now pivot the point for animation\n\t\t\t\tpoint.pivot();\n\t\t\t});\n\t\t},\n\n\t\tsetHoverStyle: function(point) {\n\t\t\t// Point\n\t\t\tvar dataset = this.chart.data.datasets[point._datasetIndex];\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar index = point._index;\n\t\t\tvar model = point._model;\n\n\t\t\tpoint.$previousStyle = {\n\t\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\t\tborderColor: model.borderColor,\n\t\t\t\tborderWidth: model.borderWidth,\n\t\t\t\tradius: model.radius\n\t\t\t};\n\n\t\t\tmodel.radius = custom.hoverRadius ? custom.hoverRadius : helpers.valueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius);\n\t\t\tmodel.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : helpers.valueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor));\n\t\t\tmodel.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : helpers.valueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor));\n\t\t\tmodel.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : helpers.valueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth);\n\t\t},\n\t});\n};\n","/*!\n * vue-router v3.0.2\n * (c) 2018 Evan You\n * @license MIT\n */\n/* */\n\nfunction assert (condition, message) {\n if (!condition) {\n throw new Error((\"[vue-router] \" + message))\n }\n}\n\nfunction warn (condition, message) {\n if (process.env.NODE_ENV !== 'production' && !condition) {\n typeof console !== 'undefined' && console.warn((\"[vue-router] \" + message));\n }\n}\n\nfunction isError (err) {\n return Object.prototype.toString.call(err).indexOf('Error') > -1\n}\n\nfunction extend (a, b) {\n for (var key in b) {\n a[key] = b[key];\n }\n return a\n}\n\nvar View = {\n name: 'RouterView',\n functional: true,\n props: {\n name: {\n type: String,\n default: 'default'\n }\n },\n render: function render (_, ref) {\n var props = ref.props;\n var children = ref.children;\n var parent = ref.parent;\n var data = ref.data;\n\n // used by devtools to display a router-view badge\n data.routerView = true;\n\n // directly use parent context's createElement() function\n // so that components rendered by router-view can resolve named slots\n var h = parent.$createElement;\n var name = props.name;\n var route = parent.$route;\n var cache = parent._routerViewCache || (parent._routerViewCache = {});\n\n // determine current view depth, also check to see if the tree\n // has been toggled inactive but kept-alive.\n var depth = 0;\n var inactive = false;\n while (parent && parent._routerRoot !== parent) {\n if (parent.$vnode && parent.$vnode.data.routerView) {\n depth++;\n }\n if (parent._inactive) {\n inactive = true;\n }\n parent = parent.$parent;\n }\n data.routerViewDepth = depth;\n\n // render previous view if the tree is inactive and kept-alive\n if (inactive) {\n return h(cache[name], data, children)\n }\n\n var matched = route.matched[depth];\n // render empty node if no matched route\n if (!matched) {\n cache[name] = null;\n return h()\n }\n\n var component = cache[name] = matched.components[name];\n\n // attach instance registration hook\n // this will be called in the instance's injected lifecycle hooks\n data.registerRouteInstance = function (vm, val) {\n // val could be undefined for unregistration\n var current = matched.instances[name];\n if (\n (val && current !== vm) ||\n (!val && current === vm)\n ) {\n matched.instances[name] = val;\n }\n }\n\n // also register instance in prepatch hook\n // in case the same component instance is reused across different routes\n ;(data.hook || (data.hook = {})).prepatch = function (_, vnode) {\n matched.instances[name] = vnode.componentInstance;\n };\n\n // resolve props\n var propsToPass = data.props = resolveProps(route, matched.props && matched.props[name]);\n if (propsToPass) {\n // clone to prevent mutation\n propsToPass = data.props = extend({}, propsToPass);\n // pass non-declared props as attrs\n var attrs = data.attrs = data.attrs || {};\n for (var key in propsToPass) {\n if (!component.props || !(key in component.props)) {\n attrs[key] = propsToPass[key];\n delete propsToPass[key];\n }\n }\n }\n\n return h(component, data, children)\n }\n}\n\nfunction resolveProps (route, config) {\n switch (typeof config) {\n case 'undefined':\n return\n case 'object':\n return config\n case 'function':\n return config(route)\n case 'boolean':\n return config ? route.params : undefined\n default:\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n \"props in \\\"\" + (route.path) + \"\\\" is a \" + (typeof config) + \", \" +\n \"expecting an object, function or boolean.\"\n );\n }\n }\n}\n\n/* */\n\nvar encodeReserveRE = /[!'()*]/g;\nvar encodeReserveReplacer = function (c) { return '%' + c.charCodeAt(0).toString(16); };\nvar commaRE = /%2C/g;\n\n// fixed encodeURIComponent which is more conformant to RFC3986:\n// - escapes [!'()*]\n// - preserve commas\nvar encode = function (str) { return encodeURIComponent(str)\n .replace(encodeReserveRE, encodeReserveReplacer)\n .replace(commaRE, ','); };\n\nvar decode = decodeURIComponent;\n\nfunction resolveQuery (\n query,\n extraQuery,\n _parseQuery\n) {\n if ( extraQuery === void 0 ) extraQuery = {};\n\n var parse = _parseQuery || parseQuery;\n var parsedQuery;\n try {\n parsedQuery = parse(query || '');\n } catch (e) {\n process.env.NODE_ENV !== 'production' && warn(false, e.message);\n parsedQuery = {};\n }\n for (var key in extraQuery) {\n parsedQuery[key] = extraQuery[key];\n }\n return parsedQuery\n}\n\nfunction parseQuery (query) {\n var res = {};\n\n query = query.trim().replace(/^(\\?|#|&)/, '');\n\n if (!query) {\n return res\n }\n\n query.split('&').forEach(function (param) {\n var parts = param.replace(/\\+/g, ' ').split('=');\n var key = decode(parts.shift());\n var val = parts.length > 0\n ? decode(parts.join('='))\n : null;\n\n if (res[key] === undefined) {\n res[key] = val;\n } else if (Array.isArray(res[key])) {\n res[key].push(val);\n } else {\n res[key] = [res[key], val];\n }\n });\n\n return res\n}\n\nfunction stringifyQuery (obj) {\n var res = obj ? Object.keys(obj).map(function (key) {\n var val = obj[key];\n\n if (val === undefined) {\n return ''\n }\n\n if (val === null) {\n return encode(key)\n }\n\n if (Array.isArray(val)) {\n var result = [];\n val.forEach(function (val2) {\n if (val2 === undefined) {\n return\n }\n if (val2 === null) {\n result.push(encode(key));\n } else {\n result.push(encode(key) + '=' + encode(val2));\n }\n });\n return result.join('&')\n }\n\n return encode(key) + '=' + encode(val)\n }).filter(function (x) { return x.length > 0; }).join('&') : null;\n return res ? (\"?\" + res) : ''\n}\n\n/* */\n\nvar trailingSlashRE = /\\/?$/;\n\nfunction createRoute (\n record,\n location,\n redirectedFrom,\n router\n) {\n var stringifyQuery$$1 = router && router.options.stringifyQuery;\n\n var query = location.query || {};\n try {\n query = clone(query);\n } catch (e) {}\n\n var route = {\n name: location.name || (record && record.name),\n meta: (record && record.meta) || {},\n path: location.path || '/',\n hash: location.hash || '',\n query: query,\n params: location.params || {},\n fullPath: getFullPath(location, stringifyQuery$$1),\n matched: record ? formatMatch(record) : []\n };\n if (redirectedFrom) {\n route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery$$1);\n }\n return Object.freeze(route)\n}\n\nfunction clone (value) {\n if (Array.isArray(value)) {\n return value.map(clone)\n } else if (value && typeof value === 'object') {\n var res = {};\n for (var key in value) {\n res[key] = clone(value[key]);\n }\n return res\n } else {\n return value\n }\n}\n\n// the starting route that represents the initial state\nvar START = createRoute(null, {\n path: '/'\n});\n\nfunction formatMatch (record) {\n var res = [];\n while (record) {\n res.unshift(record);\n record = record.parent;\n }\n return res\n}\n\nfunction getFullPath (\n ref,\n _stringifyQuery\n) {\n var path = ref.path;\n var query = ref.query; if ( query === void 0 ) query = {};\n var hash = ref.hash; if ( hash === void 0 ) hash = '';\n\n var stringify = _stringifyQuery || stringifyQuery;\n return (path || '/') + stringify(query) + hash\n}\n\nfunction isSameRoute (a, b) {\n if (b === START) {\n return a === b\n } else if (!b) {\n return false\n } else if (a.path && b.path) {\n return (\n a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') &&\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query)\n )\n } else if (a.name && b.name) {\n return (\n a.name === b.name &&\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query) &&\n isObjectEqual(a.params, b.params)\n )\n } else {\n return false\n }\n}\n\nfunction isObjectEqual (a, b) {\n if ( a === void 0 ) a = {};\n if ( b === void 0 ) b = {};\n\n // handle null value #1566\n if (!a || !b) { return a === b }\n var aKeys = Object.keys(a);\n var bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) {\n return false\n }\n return aKeys.every(function (key) {\n var aVal = a[key];\n var bVal = b[key];\n // check nested equality\n if (typeof aVal === 'object' && typeof bVal === 'object') {\n return isObjectEqual(aVal, bVal)\n }\n return String(aVal) === String(bVal)\n })\n}\n\nfunction isIncludedRoute (current, target) {\n return (\n current.path.replace(trailingSlashRE, '/').indexOf(\n target.path.replace(trailingSlashRE, '/')\n ) === 0 &&\n (!target.hash || current.hash === target.hash) &&\n queryIncludes(current.query, target.query)\n )\n}\n\nfunction queryIncludes (current, target) {\n for (var key in target) {\n if (!(key in current)) {\n return false\n }\n }\n return true\n}\n\n/* */\n\n// work around weird flow bug\nvar toTypes = [String, Object];\nvar eventTypes = [String, Array];\n\nvar Link = {\n name: 'RouterLink',\n props: {\n to: {\n type: toTypes,\n required: true\n },\n tag: {\n type: String,\n default: 'a'\n },\n exact: Boolean,\n append: Boolean,\n replace: Boolean,\n activeClass: String,\n exactActiveClass: String,\n event: {\n type: eventTypes,\n default: 'click'\n }\n },\n render: function render (h) {\n var this$1 = this;\n\n var router = this.$router;\n var current = this.$route;\n var ref = router.resolve(this.to, current, this.append);\n var location = ref.location;\n var route = ref.route;\n var href = ref.href;\n\n var classes = {};\n var globalActiveClass = router.options.linkActiveClass;\n var globalExactActiveClass = router.options.linkExactActiveClass;\n // Support global empty active class\n var activeClassFallback = globalActiveClass == null\n ? 'router-link-active'\n : globalActiveClass;\n var exactActiveClassFallback = globalExactActiveClass == null\n ? 'router-link-exact-active'\n : globalExactActiveClass;\n var activeClass = this.activeClass == null\n ? activeClassFallback\n : this.activeClass;\n var exactActiveClass = this.exactActiveClass == null\n ? exactActiveClassFallback\n : this.exactActiveClass;\n var compareTarget = location.path\n ? createRoute(null, location, null, router)\n : route;\n\n classes[exactActiveClass] = isSameRoute(current, compareTarget);\n classes[activeClass] = this.exact\n ? classes[exactActiveClass]\n : isIncludedRoute(current, compareTarget);\n\n var handler = function (e) {\n if (guardEvent(e)) {\n if (this$1.replace) {\n router.replace(location);\n } else {\n router.push(location);\n }\n }\n };\n\n var on = { click: guardEvent };\n if (Array.isArray(this.event)) {\n this.event.forEach(function (e) { on[e] = handler; });\n } else {\n on[this.event] = handler;\n }\n\n var data = {\n class: classes\n };\n\n if (this.tag === 'a') {\n data.on = on;\n data.attrs = { href: href };\n } else {\n // find the first <a> child and apply listener and href\n var a = findAnchor(this.$slots.default);\n if (a) {\n // in case the <a> is a static node\n a.isStatic = false;\n var aData = a.data = extend({}, a.data);\n aData.on = on;\n var aAttrs = a.data.attrs = extend({}, a.data.attrs);\n aAttrs.href = href;\n } else {\n // doesn't have <a> child, apply listener to self\n data.on = on;\n }\n }\n\n return h(this.tag, data, this.$slots.default)\n }\n}\n\nfunction guardEvent (e) {\n // don't redirect with control keys\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) { return }\n // don't redirect when preventDefault called\n if (e.defaultPrevented) { return }\n // don't redirect on right click\n if (e.button !== undefined && e.button !== 0) { return }\n // don't redirect if `target=\"_blank\"`\n if (e.currentTarget && e.currentTarget.getAttribute) {\n var target = e.currentTarget.getAttribute('target');\n if (/\\b_blank\\b/i.test(target)) { return }\n }\n // this may be a Weex event which doesn't have this method\n if (e.preventDefault) {\n e.preventDefault();\n }\n return true\n}\n\nfunction findAnchor (children) {\n if (children) {\n var child;\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n if (child.tag === 'a') {\n return child\n }\n if (child.children && (child = findAnchor(child.children))) {\n return child\n }\n }\n }\n}\n\nvar _Vue;\n\nfunction install (Vue) {\n if (install.installed && _Vue === Vue) { return }\n install.installed = true;\n\n _Vue = Vue;\n\n var isDef = function (v) { return v !== undefined; };\n\n var registerInstance = function (vm, callVal) {\n var i = vm.$options._parentVnode;\n if (isDef(i) && isDef(i = i.data) && isDef(i = i.registerRouteInstance)) {\n i(vm, callVal);\n }\n };\n\n Vue.mixin({\n beforeCreate: function beforeCreate () {\n if (isDef(this.$options.router)) {\n this._routerRoot = this;\n this._router = this.$options.router;\n this._router.init(this);\n Vue.util.defineReactive(this, '_route', this._router.history.current);\n } else {\n this._routerRoot = (this.$parent && this.$parent._routerRoot) || this;\n }\n registerInstance(this, this);\n },\n destroyed: function destroyed () {\n registerInstance(this);\n }\n });\n\n Object.defineProperty(Vue.prototype, '$router', {\n get: function get () { return this._routerRoot._router }\n });\n\n Object.defineProperty(Vue.prototype, '$route', {\n get: function get () { return this._routerRoot._route }\n });\n\n Vue.component('RouterView', View);\n Vue.component('RouterLink', Link);\n\n var strats = Vue.config.optionMergeStrategies;\n // use the same hook merging strategy for route hooks\n strats.beforeRouteEnter = strats.beforeRouteLeave = strats.beforeRouteUpdate = strats.created;\n}\n\n/* */\n\nvar inBrowser = typeof window !== 'undefined';\n\n/* */\n\nfunction resolvePath (\n relative,\n base,\n append\n) {\n var firstChar = relative.charAt(0);\n if (firstChar === '/') {\n return relative\n }\n\n if (firstChar === '?' || firstChar === '#') {\n return base + relative\n }\n\n var stack = base.split('/');\n\n // remove trailing segment if:\n // - not appending\n // - appending to trailing slash (last segment is empty)\n if (!append || !stack[stack.length - 1]) {\n stack.pop();\n }\n\n // resolve relative path\n var segments = relative.replace(/^\\//, '').split('/');\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n if (segment === '..') {\n stack.pop();\n } else if (segment !== '.') {\n stack.push(segment);\n }\n }\n\n // ensure leading slash\n if (stack[0] !== '') {\n stack.unshift('');\n }\n\n return stack.join('/')\n}\n\nfunction parsePath (path) {\n var hash = '';\n var query = '';\n\n var hashIndex = path.indexOf('#');\n if (hashIndex >= 0) {\n hash = path.slice(hashIndex);\n path = path.slice(0, hashIndex);\n }\n\n var queryIndex = path.indexOf('?');\n if (queryIndex >= 0) {\n query = path.slice(queryIndex + 1);\n path = path.slice(0, queryIndex);\n }\n\n return {\n path: path,\n query: query,\n hash: hash\n }\n}\n\nfunction cleanPath (path) {\n return path.replace(/\\/\\//g, '/')\n}\n\nvar isarray = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n\n/**\n * Expose `pathToRegexp`.\n */\nvar pathToRegexp_1 = pathToRegexp;\nvar parse_1 = parse;\nvar compile_1 = compile;\nvar tokensToFunction_1 = tokensToFunction;\nvar tokensToRegExp_1 = tokensToRegExp;\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g');\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = [];\n var key = 0;\n var index = 0;\n var path = '';\n var defaultDelimiter = options && options.delimiter || '/';\n var res;\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0];\n var escaped = res[1];\n var offset = res.index;\n path += str.slice(index, offset);\n index = offset + m.length;\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1];\n continue\n }\n\n var next = str[index];\n var prefix = res[2];\n var name = res[3];\n var capture = res[4];\n var group = res[5];\n var modifier = res[6];\n var asterisk = res[7];\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path);\n path = '';\n }\n\n var partial = prefix != null && next != null && next !== prefix;\n var repeat = modifier === '+' || modifier === '*';\n var optional = modifier === '?' || modifier === '*';\n var delimiter = res[2] || defaultDelimiter;\n var pattern = capture || group;\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n });\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index);\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path);\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options))\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length);\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$');\n }\n }\n\n return function (obj, opts) {\n var path = '';\n var data = obj || {};\n var options = opts || {};\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent;\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n path += token;\n\n continue\n }\n\n var value = data[token.name];\n var segment;\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix;\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j]);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment;\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment;\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys;\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g);\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n });\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = [];\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source);\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options));\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n var strict = options.strict;\n var end = options.end !== false;\n var route = '';\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n route += escapeString(token);\n } else {\n var prefix = escapeString(token.prefix);\n var capture = '(?:' + token.pattern + ')';\n\n keys.push(token);\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*';\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?';\n } else {\n capture = prefix + '(' + capture + ')?';\n }\n } else {\n capture = prefix + '(' + capture + ')';\n }\n\n route += capture;\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/');\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter;\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?';\n }\n\n if (end) {\n route += '$';\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)';\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\npathToRegexp_1.parse = parse_1;\npathToRegexp_1.compile = compile_1;\npathToRegexp_1.tokensToFunction = tokensToFunction_1;\npathToRegexp_1.tokensToRegExp = tokensToRegExp_1;\n\n/* */\n\n// $flow-disable-line\nvar regexpCompileCache = Object.create(null);\n\nfunction fillParams (\n path,\n params,\n routeMsg\n) {\n try {\n var filler =\n regexpCompileCache[path] ||\n (regexpCompileCache[path] = pathToRegexp_1.compile(path));\n return filler(params || {}, { pretty: true })\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"missing param for \" + routeMsg + \": \" + (e.message)));\n }\n return ''\n }\n}\n\n/* */\n\nfunction createRouteMap (\n routes,\n oldPathList,\n oldPathMap,\n oldNameMap\n) {\n // the path list is used to control path matching priority\n var pathList = oldPathList || [];\n // $flow-disable-line\n var pathMap = oldPathMap || Object.create(null);\n // $flow-disable-line\n var nameMap = oldNameMap || Object.create(null);\n\n routes.forEach(function (route) {\n addRouteRecord(pathList, pathMap, nameMap, route);\n });\n\n // ensure wildcard routes are always at the end\n for (var i = 0, l = pathList.length; i < l; i++) {\n if (pathList[i] === '*') {\n pathList.push(pathList.splice(i, 1)[0]);\n l--;\n i--;\n }\n }\n\n return {\n pathList: pathList,\n pathMap: pathMap,\n nameMap: nameMap\n }\n}\n\nfunction addRouteRecord (\n pathList,\n pathMap,\n nameMap,\n route,\n parent,\n matchAs\n) {\n var path = route.path;\n var name = route.name;\n if (process.env.NODE_ENV !== 'production') {\n assert(path != null, \"\\\"path\\\" is required in a route configuration.\");\n assert(\n typeof route.component !== 'string',\n \"route config \\\"component\\\" for path: \" + (String(path || name)) + \" cannot be a \" +\n \"string id. Use an actual component instead.\"\n );\n }\n\n var pathToRegexpOptions = route.pathToRegexpOptions || {};\n var normalizedPath = normalizePath(\n path,\n parent,\n pathToRegexpOptions.strict\n );\n\n if (typeof route.caseSensitive === 'boolean') {\n pathToRegexpOptions.sensitive = route.caseSensitive;\n }\n\n var record = {\n path: normalizedPath,\n regex: compileRouteRegex(normalizedPath, pathToRegexpOptions),\n components: route.components || { default: route.component },\n instances: {},\n name: name,\n parent: parent,\n matchAs: matchAs,\n redirect: route.redirect,\n beforeEnter: route.beforeEnter,\n meta: route.meta || {},\n props: route.props == null\n ? {}\n : route.components\n ? route.props\n : { default: route.props }\n };\n\n if (route.children) {\n // Warn if route is named, does not redirect and has a default child route.\n // If users navigate to this route by name, the default child will\n // not be rendered (GH Issue #629)\n if (process.env.NODE_ENV !== 'production') {\n if (route.name && !route.redirect && route.children.some(function (child) { return /^\\/?$/.test(child.path); })) {\n warn(\n false,\n \"Named Route '\" + (route.name) + \"' has a default child route. \" +\n \"When navigating to this named route (:to=\\\"{name: '\" + (route.name) + \"'\\\"), \" +\n \"the default child route will not be rendered. Remove the name from \" +\n \"this route and use the name of the default child route for named \" +\n \"links instead.\"\n );\n }\n }\n route.children.forEach(function (child) {\n var childMatchAs = matchAs\n ? cleanPath((matchAs + \"/\" + (child.path)))\n : undefined;\n addRouteRecord(pathList, pathMap, nameMap, child, record, childMatchAs);\n });\n }\n\n if (route.alias !== undefined) {\n var aliases = Array.isArray(route.alias)\n ? route.alias\n : [route.alias];\n\n aliases.forEach(function (alias) {\n var aliasRoute = {\n path: alias,\n children: route.children\n };\n addRouteRecord(\n pathList,\n pathMap,\n nameMap,\n aliasRoute,\n parent,\n record.path || '/' // matchAs\n );\n });\n }\n\n if (!pathMap[record.path]) {\n pathList.push(record.path);\n pathMap[record.path] = record;\n }\n\n if (name) {\n if (!nameMap[name]) {\n nameMap[name] = record;\n } else if (process.env.NODE_ENV !== 'production' && !matchAs) {\n warn(\n false,\n \"Duplicate named routes definition: \" +\n \"{ name: \\\"\" + name + \"\\\", path: \\\"\" + (record.path) + \"\\\" }\"\n );\n }\n }\n}\n\nfunction compileRouteRegex (path, pathToRegexpOptions) {\n var regex = pathToRegexp_1(path, [], pathToRegexpOptions);\n if (process.env.NODE_ENV !== 'production') {\n var keys = Object.create(null);\n regex.keys.forEach(function (key) {\n warn(!keys[key.name], (\"Duplicate param keys in route with path: \\\"\" + path + \"\\\"\"));\n keys[key.name] = true;\n });\n }\n return regex\n}\n\nfunction normalizePath (path, parent, strict) {\n if (!strict) { path = path.replace(/\\/$/, ''); }\n if (path[0] === '/') { return path }\n if (parent == null) { return path }\n return cleanPath(((parent.path) + \"/\" + path))\n}\n\n/* */\n\nfunction normalizeLocation (\n raw,\n current,\n append,\n router\n) {\n var next = typeof raw === 'string' ? { path: raw } : raw;\n // named target\n if (next.name || next._normalized) {\n return next\n }\n\n // relative params\n if (!next.path && next.params && current) {\n next = extend({}, next);\n next._normalized = true;\n var params = extend(extend({}, current.params), next.params);\n if (current.name) {\n next.name = current.name;\n next.params = params;\n } else if (current.matched.length) {\n var rawPath = current.matched[current.matched.length - 1].path;\n next.path = fillParams(rawPath, params, (\"path \" + (current.path)));\n } else if (process.env.NODE_ENV !== 'production') {\n warn(false, \"relative params navigation requires a current route.\");\n }\n return next\n }\n\n var parsedPath = parsePath(next.path || '');\n var basePath = (current && current.path) || '/';\n var path = parsedPath.path\n ? resolvePath(parsedPath.path, basePath, append || next.append)\n : basePath;\n\n var query = resolveQuery(\n parsedPath.query,\n next.query,\n router && router.options.parseQuery\n );\n\n var hash = next.hash || parsedPath.hash;\n if (hash && hash.charAt(0) !== '#') {\n hash = \"#\" + hash;\n }\n\n return {\n _normalized: true,\n path: path,\n query: query,\n hash: hash\n }\n}\n\n/* */\n\n\n\nfunction createMatcher (\n routes,\n router\n) {\n var ref = createRouteMap(routes);\n var pathList = ref.pathList;\n var pathMap = ref.pathMap;\n var nameMap = ref.nameMap;\n\n function addRoutes (routes) {\n createRouteMap(routes, pathList, pathMap, nameMap);\n }\n\n function match (\n raw,\n currentRoute,\n redirectedFrom\n ) {\n var location = normalizeLocation(raw, currentRoute, false, router);\n var name = location.name;\n\n if (name) {\n var record = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n warn(record, (\"Route with name '\" + name + \"' does not exist\"));\n }\n if (!record) { return _createRoute(null, location) }\n var paramNames = record.regex.keys\n .filter(function (key) { return !key.optional; })\n .map(function (key) { return key.name; });\n\n if (typeof location.params !== 'object') {\n location.params = {};\n }\n\n if (currentRoute && typeof currentRoute.params === 'object') {\n for (var key in currentRoute.params) {\n if (!(key in location.params) && paramNames.indexOf(key) > -1) {\n location.params[key] = currentRoute.params[key];\n }\n }\n }\n\n if (record) {\n location.path = fillParams(record.path, location.params, (\"named route \\\"\" + name + \"\\\"\"));\n return _createRoute(record, location, redirectedFrom)\n }\n } else if (location.path) {\n location.params = {};\n for (var i = 0; i < pathList.length; i++) {\n var path = pathList[i];\n var record$1 = pathMap[path];\n if (matchRoute(record$1.regex, location.path, location.params)) {\n return _createRoute(record$1, location, redirectedFrom)\n }\n }\n }\n // no match\n return _createRoute(null, location)\n }\n\n function redirect (\n record,\n location\n ) {\n var originalRedirect = record.redirect;\n var redirect = typeof originalRedirect === 'function'\n ? originalRedirect(createRoute(record, location, null, router))\n : originalRedirect;\n\n if (typeof redirect === 'string') {\n redirect = { path: redirect };\n }\n\n if (!redirect || typeof redirect !== 'object') {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false, (\"invalid redirect option: \" + (JSON.stringify(redirect)))\n );\n }\n return _createRoute(null, location)\n }\n\n var re = redirect;\n var name = re.name;\n var path = re.path;\n var query = location.query;\n var hash = location.hash;\n var params = location.params;\n query = re.hasOwnProperty('query') ? re.query : query;\n hash = re.hasOwnProperty('hash') ? re.hash : hash;\n params = re.hasOwnProperty('params') ? re.params : params;\n\n if (name) {\n // resolved named direct\n var targetRecord = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n assert(targetRecord, (\"redirect failed: named route \\\"\" + name + \"\\\" not found.\"));\n }\n return match({\n _normalized: true,\n name: name,\n query: query,\n hash: hash,\n params: params\n }, undefined, location)\n } else if (path) {\n // 1. resolve relative redirect\n var rawPath = resolveRecordPath(path, record);\n // 2. resolve params\n var resolvedPath = fillParams(rawPath, params, (\"redirect route with path \\\"\" + rawPath + \"\\\"\"));\n // 3. rematch with existing query and hash\n return match({\n _normalized: true,\n path: resolvedPath,\n query: query,\n hash: hash\n }, undefined, location)\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"invalid redirect option: \" + (JSON.stringify(redirect))));\n }\n return _createRoute(null, location)\n }\n }\n\n function alias (\n record,\n location,\n matchAs\n ) {\n var aliasedPath = fillParams(matchAs, location.params, (\"aliased route with path \\\"\" + matchAs + \"\\\"\"));\n var aliasedMatch = match({\n _normalized: true,\n path: aliasedPath\n });\n if (aliasedMatch) {\n var matched = aliasedMatch.matched;\n var aliasedRecord = matched[matched.length - 1];\n location.params = aliasedMatch.params;\n return _createRoute(aliasedRecord, location)\n }\n return _createRoute(null, location)\n }\n\n function _createRoute (\n record,\n location,\n redirectedFrom\n ) {\n if (record && record.redirect) {\n return redirect(record, redirectedFrom || location)\n }\n if (record && record.matchAs) {\n return alias(record, location, record.matchAs)\n }\n return createRoute(record, location, redirectedFrom, router)\n }\n\n return {\n match: match,\n addRoutes: addRoutes\n }\n}\n\nfunction matchRoute (\n regex,\n path,\n params\n) {\n var m = path.match(regex);\n\n if (!m) {\n return false\n } else if (!params) {\n return true\n }\n\n for (var i = 1, len = m.length; i < len; ++i) {\n var key = regex.keys[i - 1];\n var val = typeof m[i] === 'string' ? decodeURIComponent(m[i]) : m[i];\n if (key) {\n // Fix #1994: using * with props: true generates a param named 0\n params[key.name || 'pathMatch'] = val;\n }\n }\n\n return true\n}\n\nfunction resolveRecordPath (path, record) {\n return resolvePath(path, record.parent ? record.parent.path : '/', true)\n}\n\n/* */\n\nvar positionStore = Object.create(null);\n\nfunction setupScroll () {\n // Fix for #1585 for Firefox\n // Fix for #2195 Add optional third attribute to workaround a bug in safari https://bugs.webkit.org/show_bug.cgi?id=182678\n window.history.replaceState({ key: getStateKey() }, '', window.location.href.replace(window.location.origin, ''));\n window.addEventListener('popstate', function (e) {\n saveScrollPosition();\n if (e.state && e.state.key) {\n setStateKey(e.state.key);\n }\n });\n}\n\nfunction handleScroll (\n router,\n to,\n from,\n isPop\n) {\n if (!router.app) {\n return\n }\n\n var behavior = router.options.scrollBehavior;\n if (!behavior) {\n return\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(typeof behavior === 'function', \"scrollBehavior must be a function\");\n }\n\n // wait until re-render finishes before scrolling\n router.app.$nextTick(function () {\n var position = getScrollPosition();\n var shouldScroll = behavior.call(router, to, from, isPop ? position : null);\n\n if (!shouldScroll) {\n return\n }\n\n if (typeof shouldScroll.then === 'function') {\n shouldScroll.then(function (shouldScroll) {\n scrollToPosition((shouldScroll), position);\n }).catch(function (err) {\n if (process.env.NODE_ENV !== 'production') {\n assert(false, err.toString());\n }\n });\n } else {\n scrollToPosition(shouldScroll, position);\n }\n });\n}\n\nfunction saveScrollPosition () {\n var key = getStateKey();\n if (key) {\n positionStore[key] = {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n }\n}\n\nfunction getScrollPosition () {\n var key = getStateKey();\n if (key) {\n return positionStore[key]\n }\n}\n\nfunction getElementPosition (el, offset) {\n var docEl = document.documentElement;\n var docRect = docEl.getBoundingClientRect();\n var elRect = el.getBoundingClientRect();\n return {\n x: elRect.left - docRect.left - offset.x,\n y: elRect.top - docRect.top - offset.y\n }\n}\n\nfunction isValidPosition (obj) {\n return isNumber(obj.x) || isNumber(obj.y)\n}\n\nfunction normalizePosition (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : window.pageXOffset,\n y: isNumber(obj.y) ? obj.y : window.pageYOffset\n }\n}\n\nfunction normalizeOffset (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : 0,\n y: isNumber(obj.y) ? obj.y : 0\n }\n}\n\nfunction isNumber (v) {\n return typeof v === 'number'\n}\n\nfunction scrollToPosition (shouldScroll, position) {\n var isObject = typeof shouldScroll === 'object';\n if (isObject && typeof shouldScroll.selector === 'string') {\n var el = document.querySelector(shouldScroll.selector);\n if (el) {\n var offset = shouldScroll.offset && typeof shouldScroll.offset === 'object' ? shouldScroll.offset : {};\n offset = normalizeOffset(offset);\n position = getElementPosition(el, offset);\n } else if (isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n } else if (isObject && isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n\n if (position) {\n window.scrollTo(position.x, position.y);\n }\n}\n\n/* */\n\nvar supportsPushState = inBrowser && (function () {\n var ua = window.navigator.userAgent;\n\n if (\n (ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) &&\n ua.indexOf('Mobile Safari') !== -1 &&\n ua.indexOf('Chrome') === -1 &&\n ua.indexOf('Windows Phone') === -1\n ) {\n return false\n }\n\n return window.history && 'pushState' in window.history\n})();\n\n// use User Timing api (if present) for more accurate key precision\nvar Time = inBrowser && window.performance && window.performance.now\n ? window.performance\n : Date;\n\nvar _key = genKey();\n\nfunction genKey () {\n return Time.now().toFixed(3)\n}\n\nfunction getStateKey () {\n return _key\n}\n\nfunction setStateKey (key) {\n _key = key;\n}\n\nfunction pushState (url, replace) {\n saveScrollPosition();\n // try...catch the pushState call to get around Safari\n // DOM Exception 18 where it limits to 100 pushState calls\n var history = window.history;\n try {\n if (replace) {\n history.replaceState({ key: _key }, '', url);\n } else {\n _key = genKey();\n history.pushState({ key: _key }, '', url);\n }\n } catch (e) {\n window.location[replace ? 'replace' : 'assign'](url);\n }\n}\n\nfunction replaceState (url) {\n pushState(url, true);\n}\n\n/* */\n\nfunction runQueue (queue, fn, cb) {\n var step = function (index) {\n if (index >= queue.length) {\n cb();\n } else {\n if (queue[index]) {\n fn(queue[index], function () {\n step(index + 1);\n });\n } else {\n step(index + 1);\n }\n }\n };\n step(0);\n}\n\n/* */\n\nfunction resolveAsyncComponents (matched) {\n return function (to, from, next) {\n var hasAsync = false;\n var pending = 0;\n var error = null;\n\n flatMapComponents(matched, function (def, _, match, key) {\n // if it's a function and doesn't have cid attached,\n // assume it's an async component resolve function.\n // we are not using Vue's default async resolving mechanism because\n // we want to halt the navigation until the incoming component has been\n // resolved.\n if (typeof def === 'function' && def.cid === undefined) {\n hasAsync = true;\n pending++;\n\n var resolve = once(function (resolvedDef) {\n if (isESModule(resolvedDef)) {\n resolvedDef = resolvedDef.default;\n }\n // save resolved on async factory in case it's used elsewhere\n def.resolved = typeof resolvedDef === 'function'\n ? resolvedDef\n : _Vue.extend(resolvedDef);\n match.components[key] = resolvedDef;\n pending--;\n if (pending <= 0) {\n next();\n }\n });\n\n var reject = once(function (reason) {\n var msg = \"Failed to resolve async component \" + key + \": \" + reason;\n process.env.NODE_ENV !== 'production' && warn(false, msg);\n if (!error) {\n error = isError(reason)\n ? reason\n : new Error(msg);\n next(error);\n }\n });\n\n var res;\n try {\n res = def(resolve, reject);\n } catch (e) {\n reject(e);\n }\n if (res) {\n if (typeof res.then === 'function') {\n res.then(resolve, reject);\n } else {\n // new syntax in Vue 2.3\n var comp = res.component;\n if (comp && typeof comp.then === 'function') {\n comp.then(resolve, reject);\n }\n }\n }\n }\n });\n\n if (!hasAsync) { next(); }\n }\n}\n\nfunction flatMapComponents (\n matched,\n fn\n) {\n return flatten(matched.map(function (m) {\n return Object.keys(m.components).map(function (key) { return fn(\n m.components[key],\n m.instances[key],\n m, key\n ); })\n }))\n}\n\nfunction flatten (arr) {\n return Array.prototype.concat.apply([], arr)\n}\n\nvar hasSymbol =\n typeof Symbol === 'function' &&\n typeof Symbol.toStringTag === 'symbol';\n\nfunction isESModule (obj) {\n return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module')\n}\n\n// in Webpack 2, require.ensure now also returns a Promise\n// so the resolve/reject functions may get called an extra time\n// if the user uses an arrow function shorthand that happens to\n// return that Promise.\nfunction once (fn) {\n var called = false;\n return function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (called) { return }\n called = true;\n return fn.apply(this, args)\n }\n}\n\n/* */\n\nvar History = function History (router, base) {\n this.router = router;\n this.base = normalizeBase(base);\n // start with a route object that stands for \"nowhere\"\n this.current = START;\n this.pending = null;\n this.ready = false;\n this.readyCbs = [];\n this.readyErrorCbs = [];\n this.errorCbs = [];\n};\n\nHistory.prototype.listen = function listen (cb) {\n this.cb = cb;\n};\n\nHistory.prototype.onReady = function onReady (cb, errorCb) {\n if (this.ready) {\n cb();\n } else {\n this.readyCbs.push(cb);\n if (errorCb) {\n this.readyErrorCbs.push(errorCb);\n }\n }\n};\n\nHistory.prototype.onError = function onError (errorCb) {\n this.errorCbs.push(errorCb);\n};\n\nHistory.prototype.transitionTo = function transitionTo (location, onComplete, onAbort) {\n var this$1 = this;\n\n var route = this.router.match(location, this.current);\n this.confirmTransition(route, function () {\n this$1.updateRoute(route);\n onComplete && onComplete(route);\n this$1.ensureURL();\n\n // fire ready cbs once\n if (!this$1.ready) {\n this$1.ready = true;\n this$1.readyCbs.forEach(function (cb) { cb(route); });\n }\n }, function (err) {\n if (onAbort) {\n onAbort(err);\n }\n if (err && !this$1.ready) {\n this$1.ready = true;\n this$1.readyErrorCbs.forEach(function (cb) { cb(err); });\n }\n });\n};\n\nHistory.prototype.confirmTransition = function confirmTransition (route, onComplete, onAbort) {\n var this$1 = this;\n\n var current = this.current;\n var abort = function (err) {\n if (isError(err)) {\n if (this$1.errorCbs.length) {\n this$1.errorCbs.forEach(function (cb) { cb(err); });\n } else {\n warn(false, 'uncaught error during route navigation:');\n console.error(err);\n }\n }\n onAbort && onAbort(err);\n };\n if (\n isSameRoute(route, current) &&\n // in the case the route map has been dynamically appended to\n route.matched.length === current.matched.length\n ) {\n this.ensureURL();\n return abort()\n }\n\n var ref = resolveQueue(this.current.matched, route.matched);\n var updated = ref.updated;\n var deactivated = ref.deactivated;\n var activated = ref.activated;\n\n var queue = [].concat(\n // in-component leave guards\n extractLeaveGuards(deactivated),\n // global before hooks\n this.router.beforeHooks,\n // in-component update hooks\n extractUpdateHooks(updated),\n // in-config enter guards\n activated.map(function (m) { return m.beforeEnter; }),\n // async components\n resolveAsyncComponents(activated)\n );\n\n this.pending = route;\n var iterator = function (hook, next) {\n if (this$1.pending !== route) {\n return abort()\n }\n try {\n hook(route, current, function (to) {\n if (to === false || isError(to)) {\n // next(false) -> abort navigation, ensure current URL\n this$1.ensureURL(true);\n abort(to);\n } else if (\n typeof to === 'string' ||\n (typeof to === 'object' && (\n typeof to.path === 'string' ||\n typeof to.name === 'string'\n ))\n ) {\n // next('/') or next({ path: '/' }) -> redirect\n abort();\n if (typeof to === 'object' && to.replace) {\n this$1.replace(to);\n } else {\n this$1.push(to);\n }\n } else {\n // confirm transition and pass on the value\n next(to);\n }\n });\n } catch (e) {\n abort(e);\n }\n };\n\n runQueue(queue, iterator, function () {\n var postEnterCbs = [];\n var isValid = function () { return this$1.current === route; };\n // wait until async components are resolved before\n // extracting in-component enter guards\n var enterGuards = extractEnterGuards(activated, postEnterCbs, isValid);\n var queue = enterGuards.concat(this$1.router.resolveHooks);\n runQueue(queue, iterator, function () {\n if (this$1.pending !== route) {\n return abort()\n }\n this$1.pending = null;\n onComplete(route);\n if (this$1.router.app) {\n this$1.router.app.$nextTick(function () {\n postEnterCbs.forEach(function (cb) { cb(); });\n });\n }\n });\n });\n};\n\nHistory.prototype.updateRoute = function updateRoute (route) {\n var prev = this.current;\n this.current = route;\n this.cb && this.cb(route);\n this.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n};\n\nfunction normalizeBase (base) {\n if (!base) {\n if (inBrowser) {\n // respect <base> tag\n var baseEl = document.querySelector('base');\n base = (baseEl && baseEl.getAttribute('href')) || '/';\n // strip full URL origin\n base = base.replace(/^https?:\\/\\/[^\\/]+/, '');\n } else {\n base = '/';\n }\n }\n // make sure there's the starting slash\n if (base.charAt(0) !== '/') {\n base = '/' + base;\n }\n // remove trailing slash\n return base.replace(/\\/$/, '')\n}\n\nfunction resolveQueue (\n current,\n next\n) {\n var i;\n var max = Math.max(current.length, next.length);\n for (i = 0; i < max; i++) {\n if (current[i] !== next[i]) {\n break\n }\n }\n return {\n updated: next.slice(0, i),\n activated: next.slice(i),\n deactivated: current.slice(i)\n }\n}\n\nfunction extractGuards (\n records,\n name,\n bind,\n reverse\n) {\n var guards = flatMapComponents(records, function (def, instance, match, key) {\n var guard = extractGuard(def, name);\n if (guard) {\n return Array.isArray(guard)\n ? guard.map(function (guard) { return bind(guard, instance, match, key); })\n : bind(guard, instance, match, key)\n }\n });\n return flatten(reverse ? guards.reverse() : guards)\n}\n\nfunction extractGuard (\n def,\n key\n) {\n if (typeof def !== 'function') {\n // extend now so that global mixins are applied.\n def = _Vue.extend(def);\n }\n return def.options[key]\n}\n\nfunction extractLeaveGuards (deactivated) {\n return extractGuards(deactivated, 'beforeRouteLeave', bindGuard, true)\n}\n\nfunction extractUpdateHooks (updated) {\n return extractGuards(updated, 'beforeRouteUpdate', bindGuard)\n}\n\nfunction bindGuard (guard, instance) {\n if (instance) {\n return function boundRouteGuard () {\n return guard.apply(instance, arguments)\n }\n }\n}\n\nfunction extractEnterGuards (\n activated,\n cbs,\n isValid\n) {\n return extractGuards(activated, 'beforeRouteEnter', function (guard, _, match, key) {\n return bindEnterGuard(guard, match, key, cbs, isValid)\n })\n}\n\nfunction bindEnterGuard (\n guard,\n match,\n key,\n cbs,\n isValid\n) {\n return function routeEnterGuard (to, from, next) {\n return guard(to, from, function (cb) {\n next(cb);\n if (typeof cb === 'function') {\n cbs.push(function () {\n // #750\n // if a router-view is wrapped with an out-in transition,\n // the instance may not have been registered at this time.\n // we will need to poll for registration until current route\n // is no longer valid.\n poll(cb, match.instances, key, isValid);\n });\n }\n })\n }\n}\n\nfunction poll (\n cb, // somehow flow cannot infer this is a function\n instances,\n key,\n isValid\n) {\n if (\n instances[key] &&\n !instances[key]._isBeingDestroyed // do not reuse being destroyed instance\n ) {\n cb(instances[key]);\n } else if (isValid()) {\n setTimeout(function () {\n poll(cb, instances, key, isValid);\n }, 16);\n }\n}\n\n/* */\n\nvar HTML5History = (function (History$$1) {\n function HTML5History (router, base) {\n var this$1 = this;\n\n History$$1.call(this, router, base);\n\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n setupScroll();\n }\n\n var initLocation = getLocation(this.base);\n window.addEventListener('popstate', function (e) {\n var current = this$1.current;\n\n // Avoiding first `popstate` event dispatched in some browsers but first\n // history route not updated since async guard at the same time.\n var location = getLocation(this$1.base);\n if (this$1.current === START && location === initLocation) {\n return\n }\n\n this$1.transitionTo(location, function (route) {\n if (supportsScroll) {\n handleScroll(router, route, current, true);\n }\n });\n });\n }\n\n if ( History$$1 ) HTML5History.__proto__ = History$$1;\n HTML5History.prototype = Object.create( History$$1 && History$$1.prototype );\n HTML5History.prototype.constructor = HTML5History;\n\n HTML5History.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HTML5History.prototype.push = function push (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n pushState(cleanPath(this$1.base + route.fullPath));\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n replaceState(cleanPath(this$1.base + route.fullPath));\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.ensureURL = function ensureURL (push) {\n if (getLocation(this.base) !== this.current.fullPath) {\n var current = cleanPath(this.base + this.current.fullPath);\n push ? pushState(current) : replaceState(current);\n }\n };\n\n HTML5History.prototype.getCurrentLocation = function getCurrentLocation () {\n return getLocation(this.base)\n };\n\n return HTML5History;\n}(History));\n\nfunction getLocation (base) {\n var path = decodeURI(window.location.pathname);\n if (base && path.indexOf(base) === 0) {\n path = path.slice(base.length);\n }\n return (path || '/') + window.location.search + window.location.hash\n}\n\n/* */\n\nvar HashHistory = (function (History$$1) {\n function HashHistory (router, base, fallback) {\n History$$1.call(this, router, base);\n // check history fallback deeplinking\n if (fallback && checkFallback(this.base)) {\n return\n }\n ensureSlash();\n }\n\n if ( History$$1 ) HashHistory.__proto__ = History$$1;\n HashHistory.prototype = Object.create( History$$1 && History$$1.prototype );\n HashHistory.prototype.constructor = HashHistory;\n\n // this is delayed until the app mounts\n // to avoid the hashchange listener being fired too early\n HashHistory.prototype.setupListeners = function setupListeners () {\n var this$1 = this;\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n setupScroll();\n }\n\n window.addEventListener(supportsPushState ? 'popstate' : 'hashchange', function () {\n var current = this$1.current;\n if (!ensureSlash()) {\n return\n }\n this$1.transitionTo(getHash(), function (route) {\n if (supportsScroll) {\n handleScroll(this$1.router, route, current, true);\n }\n if (!supportsPushState) {\n replaceHash(route.fullPath);\n }\n });\n });\n };\n\n HashHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n pushHash(route.fullPath);\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HashHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n replaceHash(route.fullPath);\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HashHistory.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HashHistory.prototype.ensureURL = function ensureURL (push) {\n var current = this.current.fullPath;\n if (getHash() !== current) {\n push ? pushHash(current) : replaceHash(current);\n }\n };\n\n HashHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n return getHash()\n };\n\n return HashHistory;\n}(History));\n\nfunction checkFallback (base) {\n var location = getLocation(base);\n if (!/^\\/#/.test(location)) {\n window.location.replace(\n cleanPath(base + '/#' + location)\n );\n return true\n }\n}\n\nfunction ensureSlash () {\n var path = getHash();\n if (path.charAt(0) === '/') {\n return true\n }\n replaceHash('/' + path);\n return false\n}\n\nfunction getHash () {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var index = href.indexOf('#');\n return index === -1 ? '' : decodeURI(href.slice(index + 1))\n}\n\nfunction getUrl (path) {\n var href = window.location.href;\n var i = href.indexOf('#');\n var base = i >= 0 ? href.slice(0, i) : href;\n return (base + \"#\" + path)\n}\n\nfunction pushHash (path) {\n if (supportsPushState) {\n pushState(getUrl(path));\n } else {\n window.location.hash = path;\n }\n}\n\nfunction replaceHash (path) {\n if (supportsPushState) {\n replaceState(getUrl(path));\n } else {\n window.location.replace(getUrl(path));\n }\n}\n\n/* */\n\nvar AbstractHistory = (function (History$$1) {\n function AbstractHistory (router, base) {\n History$$1.call(this, router, base);\n this.stack = [];\n this.index = -1;\n }\n\n if ( History$$1 ) AbstractHistory.__proto__ = History$$1;\n AbstractHistory.prototype = Object.create( History$$1 && History$$1.prototype );\n AbstractHistory.prototype.constructor = AbstractHistory;\n\n AbstractHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1 = this;\n\n this.transitionTo(location, function (route) {\n this$1.stack = this$1.stack.slice(0, this$1.index + 1).concat(route);\n this$1.index++;\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n AbstractHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n this.transitionTo(location, function (route) {\n this$1.stack = this$1.stack.slice(0, this$1.index).concat(route);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n AbstractHistory.prototype.go = function go (n) {\n var this$1 = this;\n\n var targetIndex = this.index + n;\n if (targetIndex < 0 || targetIndex >= this.stack.length) {\n return\n }\n var route = this.stack[targetIndex];\n this.confirmTransition(route, function () {\n this$1.index = targetIndex;\n this$1.updateRoute(route);\n });\n };\n\n AbstractHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n var current = this.stack[this.stack.length - 1];\n return current ? current.fullPath : '/'\n };\n\n AbstractHistory.prototype.ensureURL = function ensureURL () {\n // noop\n };\n\n return AbstractHistory;\n}(History));\n\n/* */\n\n\n\nvar VueRouter = function VueRouter (options) {\n if ( options === void 0 ) options = {};\n\n this.app = null;\n this.apps = [];\n this.options = options;\n this.beforeHooks = [];\n this.resolveHooks = [];\n this.afterHooks = [];\n this.matcher = createMatcher(options.routes || [], this);\n\n var mode = options.mode || 'hash';\n this.fallback = mode === 'history' && !supportsPushState && options.fallback !== false;\n if (this.fallback) {\n mode = 'hash';\n }\n if (!inBrowser) {\n mode = 'abstract';\n }\n this.mode = mode;\n\n switch (mode) {\n case 'history':\n this.history = new HTML5History(this, options.base);\n break\n case 'hash':\n this.history = new HashHistory(this, options.base, this.fallback);\n break\n case 'abstract':\n this.history = new AbstractHistory(this, options.base);\n break\n default:\n if (process.env.NODE_ENV !== 'production') {\n assert(false, (\"invalid mode: \" + mode));\n }\n }\n};\n\nvar prototypeAccessors = { currentRoute: { configurable: true } };\n\nVueRouter.prototype.match = function match (\n raw,\n current,\n redirectedFrom\n) {\n return this.matcher.match(raw, current, redirectedFrom)\n};\n\nprototypeAccessors.currentRoute.get = function () {\n return this.history && this.history.current\n};\n\nVueRouter.prototype.init = function init (app /* Vue component instance */) {\n var this$1 = this;\n\n process.env.NODE_ENV !== 'production' && assert(\n install.installed,\n \"not installed. Make sure to call `Vue.use(VueRouter)` \" +\n \"before creating root instance.\"\n );\n\n this.apps.push(app);\n\n // main app already initialized.\n if (this.app) {\n return\n }\n\n this.app = app;\n\n var history = this.history;\n\n if (history instanceof HTML5History) {\n history.transitionTo(history.getCurrentLocation());\n } else if (history instanceof HashHistory) {\n var setupHashListener = function () {\n history.setupListeners();\n };\n history.transitionTo(\n history.getCurrentLocation(),\n setupHashListener,\n setupHashListener\n );\n }\n\n history.listen(function (route) {\n this$1.apps.forEach(function (app) {\n app._route = route;\n });\n });\n};\n\nVueRouter.prototype.beforeEach = function beforeEach (fn) {\n return registerHook(this.beforeHooks, fn)\n};\n\nVueRouter.prototype.beforeResolve = function beforeResolve (fn) {\n return registerHook(this.resolveHooks, fn)\n};\n\nVueRouter.prototype.afterEach = function afterEach (fn) {\n return registerHook(this.afterHooks, fn)\n};\n\nVueRouter.prototype.onReady = function onReady (cb, errorCb) {\n this.history.onReady(cb, errorCb);\n};\n\nVueRouter.prototype.onError = function onError (errorCb) {\n this.history.onError(errorCb);\n};\n\nVueRouter.prototype.push = function push (location, onComplete, onAbort) {\n this.history.push(location, onComplete, onAbort);\n};\n\nVueRouter.prototype.replace = function replace (location, onComplete, onAbort) {\n this.history.replace(location, onComplete, onAbort);\n};\n\nVueRouter.prototype.go = function go (n) {\n this.history.go(n);\n};\n\nVueRouter.prototype.back = function back () {\n this.go(-1);\n};\n\nVueRouter.prototype.forward = function forward () {\n this.go(1);\n};\n\nVueRouter.prototype.getMatchedComponents = function getMatchedComponents (to) {\n var route = to\n ? to.matched\n ? to\n : this.resolve(to).route\n : this.currentRoute;\n if (!route) {\n return []\n }\n return [].concat.apply([], route.matched.map(function (m) {\n return Object.keys(m.components).map(function (key) {\n return m.components[key]\n })\n }))\n};\n\nVueRouter.prototype.resolve = function resolve (\n to,\n current,\n append\n) {\n var location = normalizeLocation(\n to,\n current || this.history.current,\n append,\n this\n );\n var route = this.match(location, current);\n var fullPath = route.redirectedFrom || route.fullPath;\n var base = this.history.base;\n var href = createHref(base, fullPath, this.mode);\n return {\n location: location,\n route: route,\n href: href,\n // for backwards compat\n normalizedTo: location,\n resolved: route\n }\n};\n\nVueRouter.prototype.addRoutes = function addRoutes (routes) {\n this.matcher.addRoutes(routes);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nObject.defineProperties( VueRouter.prototype, prototypeAccessors );\n\nfunction registerHook (list, fn) {\n list.push(fn);\n return function () {\n var i = list.indexOf(fn);\n if (i > -1) { list.splice(i, 1); }\n }\n}\n\nfunction createHref (base, fullPath, mode) {\n var path = mode === 'hash' ? '#' + fullPath : fullPath;\n return base ? cleanPath(base + '/' + path) : path\n}\n\nVueRouter.install = install;\nVueRouter.version = '3.0.2';\n\nif (inBrowser && window.Vue) {\n window.Vue.use(VueRouter);\n}\n\nexport default VueRouter;\n","import Vue from 'vue'\nimport Router from 'vue-router'\n\nVue.use(Router);\n\nexport default new Router({\n mode: 'history',\n base: '/horizon/',\n routes: [\n {\n path: '/',\n redirect: '/dashboard',\n },\n {\n path: '/dashboard',\n component: require('./pages/Dashboard.vue').default,\n },\n {\n path: '/monitoring',\n component: require('./pages/Monitoring/Index.vue').default,\n },\n {\n path: '/monitoring/:tag',\n component: require('./pages/Monitoring/Tag.vue').default,\n children: [\n {\n path: '/',\n name: 'monitoring.detail.index',\n component: require('./pages/Monitoring/Jobs.vue').default,\n props: {type: 'index'}\n },\n {\n path: 'failed',\n name: 'monitoring.detail.failed',\n component: require('./pages/Monitoring/Jobs.vue').default,\n props: {type: 'failed'}\n },\n ],\n },\n {\n path: '/metrics',\n component: require('./pages/Metrics/Index.vue').default,\n children: [\n {\n path: '/',\n redirect: 'jobs',\n },\n {\n path: 'jobs',\n component: require('./pages/Metrics/Jobs.vue').default\n },\n {\n path: 'queues',\n component: require('./pages/Metrics/Queues.vue').default\n },\n ],\n },\n {\n path: '/metrics/:type/:slug',\n name: 'metrics.detail',\n component: require('./pages/Metrics/Metric.vue').default,\n props: true,\n },\n {\n path: '/recent-jobs',\n name: 'recent-jobs.detail',\n component: require('./pages/RecentJobs/Index.vue').default,\n },\n {\n path: '/failed',\n component: require('./pages/Failed/Index.vue').default,\n },\n {\n path: '/failed/:jobId',\n name: 'failed.detail',\n component: require('./pages/Failed/Job.vue').default,\n props: true,\n },\n ],\n})\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--4-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--4-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","<script type=\"text/ecmascript-6\">\n export default {\n name: 'App',\n };\n</script>\n\n<template>\n <router-view/>\n</template>\n\n","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=2b41c06f&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('router-view')}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue';\nimport _ from 'lodash';\nimport axios from 'axios'\nimport moment from 'moment';\nimport router from './router';\nimport App from './components/App.vue';\n\nwindow.$ = window.jQuery = require('jquery');\nwindow.Popper = require('popper.js').default;\n\nrequire('bootstrap');\n\n$('body')\n .tooltip({\n selector: '[data-toggle=tooltip]'\n })\n .click(function(){\n $('a[data-toggle=\"tooltip\"]').tooltip('hide');\n });\n\nVue.prototype.$http = axios.create();\n\nwindow.Bus = new Vue({name: 'Bus'});\n\nVue.component('loader', require('./components/Status/Loader.vue').default);\n\nVue.config.errorHandler = function (err, vm, info) {\n console.error(err);\n};\n\nVue.mixin({\n methods: {\n /**\n * Format the given date with respect to timezone.\n */\n formatDate(unixTime){\n return moment(unixTime * 1000).add(new Date().getTimezoneOffset() / 60)\n },\n\n\n /**\n * Extract the job base name.\n */\n jobBaseName(name){\n if (!name.includes('\\\\')) return name;\n\n var parts = name.split(\"\\\\\");\n\n return parts[parts.length - 1];\n },\n\n\n /**\n * Convert to human readable timestamp.\n */\n readableTimestamp(timestamp){\n return this.formatDate(timestamp).format('YY-MM-DD HH:mm:ss');\n },\n\n\n /**\n * Format the tags.\n */\n displayableTagsList(tags, truncate = true){\n if (!tags || !tags.length) return '';\n\n return _.reduce(tags, (s, n)=> {\n return (s ? s + ', ' : '') + (truncate ? _.truncate(n) : n);\n }, '');\n }\n }\n});\n\nnew Vue({\n el: '#root',\n\n router,\n\n /**\n * The component's data.\n */\n data() {\n return {}\n },\n\n render: h => h(App),\n});\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar elements = require('../elements/index');\nvar helpers = require('../helpers/index');\n\ndefaults._set('bubble', {\n\thover: {\n\t\tmode: 'single'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'linear', // bubble should probably use a linear scale by default\n\t\t\tposition: 'bottom',\n\t\t\tid: 'x-axis-0' // need an ID so datasets can reference the scale\n\t\t}],\n\t\tyAxes: [{\n\t\t\ttype: 'linear',\n\t\t\tposition: 'left',\n\t\t\tid: 'y-axis-0'\n\t\t}]\n\t},\n\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\t// Title doesn't make sense for scatter since we format the data as a point\n\t\t\t\treturn '';\n\t\t\t},\n\t\t\tlabel: function(item, data) {\n\t\t\t\tvar datasetLabel = data.datasets[item.datasetIndex].label || '';\n\t\t\t\tvar dataPoint = data.datasets[item.datasetIndex].data[item.index];\n\t\t\t\treturn datasetLabel + ': (' + item.xLabel + ', ' + item.yLabel + ', ' + dataPoint.r + ')';\n\t\t\t}\n\t\t}\n\t}\n});\n\n\nmodule.exports = function(Chart) {\n\n\tChart.controllers.bubble = Chart.DatasetController.extend({\n\t\t/**\n\t\t * @protected\n\t\t */\n\t\tdataElementType: elements.Point,\n\n\t\t/**\n\t\t * @protected\n\t\t */\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar points = meta.data;\n\n\t\t\t// Update Points\n\t\t\thelpers.each(points, function(point, index) {\n\t\t\t\tme.updateElement(point, index, reset);\n\t\t\t});\n\t\t},\n\n\t\t/**\n\t\t * @protected\n\t\t */\n\t\tupdateElement: function(point, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar xScale = me.getScaleForId(meta.xAxisID);\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\t\tvar options = me._resolveElementOptions(point, index);\n\t\t\tvar data = me.getDataset().data[index];\n\t\t\tvar dsIndex = me.index;\n\n\t\t\tvar x = reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex);\n\t\t\tvar y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex);\n\n\t\t\tpoint._xScale = xScale;\n\t\t\tpoint._yScale = yScale;\n\t\t\tpoint._options = options;\n\t\t\tpoint._datasetIndex = dsIndex;\n\t\t\tpoint._index = index;\n\t\t\tpoint._model = {\n\t\t\t\tbackgroundColor: options.backgroundColor,\n\t\t\t\tborderColor: options.borderColor,\n\t\t\t\tborderWidth: options.borderWidth,\n\t\t\t\thitRadius: options.hitRadius,\n\t\t\t\tpointStyle: options.pointStyle,\n\t\t\t\trotation: options.rotation,\n\t\t\t\tradius: reset ? 0 : options.radius,\n\t\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\n\t\t\t\tx: x,\n\t\t\t\ty: y,\n\t\t\t};\n\n\t\t\tpoint.pivot();\n\t\t},\n\n\t\t/**\n\t\t * @protected\n\t\t */\n\t\tsetHoverStyle: function(point) {\n\t\t\tvar model = point._model;\n\t\t\tvar options = point._options;\n\t\t\tpoint.$previousStyle = {\n\t\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\t\tborderColor: model.borderColor,\n\t\t\t\tborderWidth: model.borderWidth,\n\t\t\t\tradius: model.radius\n\t\t\t};\n\t\t\tmodel.backgroundColor = helpers.valueOrDefault(options.hoverBackgroundColor, helpers.getHoverColor(options.backgroundColor));\n\t\t\tmodel.borderColor = helpers.valueOrDefault(options.hoverBorderColor, helpers.getHoverColor(options.borderColor));\n\t\t\tmodel.borderWidth = helpers.valueOrDefault(options.hoverBorderWidth, options.borderWidth);\n\t\t\tmodel.radius = options.radius + options.hoverRadius;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\t_resolveElementOptions: function(point, index) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar datasets = chart.data.datasets;\n\t\t\tvar dataset = datasets[me.index];\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar options = chart.options.elements.point;\n\t\t\tvar resolve = helpers.options.resolve;\n\t\t\tvar data = dataset.data[index];\n\t\t\tvar values = {};\n\t\t\tvar i, ilen, key;\n\n\t\t\t// Scriptable options\n\t\t\tvar context = {\n\t\t\t\tchart: chart,\n\t\t\t\tdataIndex: index,\n\t\t\t\tdataset: dataset,\n\t\t\t\tdatasetIndex: me.index\n\t\t\t};\n\n\t\t\tvar keys = [\n\t\t\t\t'backgroundColor',\n\t\t\t\t'borderColor',\n\t\t\t\t'borderWidth',\n\t\t\t\t'hoverBackgroundColor',\n\t\t\t\t'hoverBorderColor',\n\t\t\t\t'hoverBorderWidth',\n\t\t\t\t'hoverRadius',\n\t\t\t\t'hitRadius',\n\t\t\t\t'pointStyle',\n\t\t\t\t'rotation'\n\t\t\t];\n\n\t\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\n\t\t\t\tkey = keys[i];\n\t\t\t\tvalues[key] = resolve([\n\t\t\t\t\tcustom[key],\n\t\t\t\t\tdataset[key],\n\t\t\t\t\toptions[key]\n\t\t\t\t], context, index);\n\t\t\t}\n\n\t\t\t// Custom radius resolution\n\t\t\tvalues.radius = resolve([\n\t\t\t\tcustom.radius,\n\t\t\t\tdata ? data.r : undefined,\n\t\t\t\tdataset.radius,\n\t\t\t\toptions.radius\n\t\t\t], context, index);\n\t\t\treturn values;\n\t\t}\n\t});\n};\n","'use strict';\n\nvar defaults = require('./core.defaults');\nvar Element = require('./core.element');\nvar helpers = require('../helpers/index');\nvar Ticks = require('./core.ticks');\n\ndefaults._set('scale', {\n\tdisplay: true,\n\tposition: 'left',\n\toffset: false,\n\n\t// grid line settings\n\tgridLines: {\n\t\tdisplay: true,\n\t\tcolor: 'rgba(0, 0, 0, 0.1)',\n\t\tlineWidth: 1,\n\t\tdrawBorder: true,\n\t\tdrawOnChartArea: true,\n\t\tdrawTicks: true,\n\t\ttickMarkLength: 10,\n\t\tzeroLineWidth: 1,\n\t\tzeroLineColor: 'rgba(0,0,0,0.25)',\n\t\tzeroLineBorderDash: [],\n\t\tzeroLineBorderDashOffset: 0.0,\n\t\toffsetGridLines: false,\n\t\tborderDash: [],\n\t\tborderDashOffset: 0.0\n\t},\n\n\t// scale label\n\tscaleLabel: {\n\t\t// display property\n\t\tdisplay: false,\n\n\t\t// actual label\n\t\tlabelString: '',\n\n\t\t// line height\n\t\tlineHeight: 1.2,\n\n\t\t// top/bottom padding\n\t\tpadding: {\n\t\t\ttop: 4,\n\t\t\tbottom: 4\n\t\t}\n\t},\n\n\t// label settings\n\tticks: {\n\t\tbeginAtZero: false,\n\t\tminRotation: 0,\n\t\tmaxRotation: 50,\n\t\tmirror: false,\n\t\tpadding: 0,\n\t\treverse: false,\n\t\tdisplay: true,\n\t\tautoSkip: true,\n\t\tautoSkipPadding: 0,\n\t\tlabelOffset: 0,\n\t\t// We pass through arrays to be rendered as multiline labels, we convert Others to strings here.\n\t\tcallback: Ticks.formatters.values,\n\t\tminor: {},\n\t\tmajor: {}\n\t}\n});\n\nfunction labelsFromTicks(ticks) {\n\tvar labels = [];\n\tvar i, ilen;\n\n\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\n\t\tlabels.push(ticks[i].label);\n\t}\n\n\treturn labels;\n}\n\nfunction getLineValue(scale, index, offsetGridLines) {\n\tvar lineValue = scale.getPixelForTick(index);\n\n\tif (offsetGridLines) {\n\t\tif (index === 0) {\n\t\t\tlineValue -= (scale.getPixelForTick(1) - lineValue) / 2;\n\t\t} else {\n\t\t\tlineValue -= (lineValue - scale.getPixelForTick(index - 1)) / 2;\n\t\t}\n\t}\n\treturn lineValue;\n}\n\nfunction computeTextSize(context, tick, font) {\n\treturn helpers.isArray(tick) ?\n\t\thelpers.longestText(context, font, tick) :\n\t\tcontext.measureText(tick).width;\n}\n\nfunction parseFontOptions(options) {\n\tvar valueOrDefault = helpers.valueOrDefault;\n\tvar globalDefaults = defaults.global;\n\tvar size = valueOrDefault(options.fontSize, globalDefaults.defaultFontSize);\n\tvar style = valueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle);\n\tvar family = valueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily);\n\n\treturn {\n\t\tsize: size,\n\t\tstyle: style,\n\t\tfamily: family,\n\t\tfont: helpers.fontString(size, style, family)\n\t};\n}\n\nfunction parseLineHeight(options) {\n\treturn helpers.options.toLineHeight(\n\t\thelpers.valueOrDefault(options.lineHeight, 1.2),\n\t\thelpers.valueOrDefault(options.fontSize, defaults.global.defaultFontSize));\n}\n\nmodule.exports = Element.extend({\n\t/**\n\t * Get the padding needed for the scale\n\t * @method getPadding\n\t * @private\n\t * @returns {Padding} the necessary padding\n\t */\n\tgetPadding: function() {\n\t\tvar me = this;\n\t\treturn {\n\t\t\tleft: me.paddingLeft || 0,\n\t\t\ttop: me.paddingTop || 0,\n\t\t\tright: me.paddingRight || 0,\n\t\t\tbottom: me.paddingBottom || 0\n\t\t};\n\t},\n\n\t/**\n\t * Returns the scale tick objects ({label, major})\n\t * @since 2.7\n\t */\n\tgetTicks: function() {\n\t\treturn this._ticks;\n\t},\n\n\t// These methods are ordered by lifecyle. Utilities then follow.\n\t// Any function defined here is inherited by all scale types.\n\t// Any function can be extended by the scale type\n\n\tmergeTicksOptions: function() {\n\t\tvar ticks = this.options.ticks;\n\t\tif (ticks.minor === false) {\n\t\t\tticks.minor = {\n\t\t\t\tdisplay: false\n\t\t\t};\n\t\t}\n\t\tif (ticks.major === false) {\n\t\t\tticks.major = {\n\t\t\t\tdisplay: false\n\t\t\t};\n\t\t}\n\t\tfor (var key in ticks) {\n\t\t\tif (key !== 'major' && key !== 'minor') {\n\t\t\t\tif (typeof ticks.minor[key] === 'undefined') {\n\t\t\t\t\tticks.minor[key] = ticks[key];\n\t\t\t\t}\n\t\t\t\tif (typeof ticks.major[key] === 'undefined') {\n\t\t\t\t\tticks.major[key] = ticks[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tbeforeUpdate: function() {\n\t\thelpers.callback(this.options.beforeUpdate, [this]);\n\t},\n\n\tupdate: function(maxWidth, maxHeight, margins) {\n\t\tvar me = this;\n\t\tvar i, ilen, labels, label, ticks, tick;\n\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n\t\tme.beforeUpdate();\n\n\t\t// Absorb the master measurements\n\t\tme.maxWidth = maxWidth;\n\t\tme.maxHeight = maxHeight;\n\t\tme.margins = helpers.extend({\n\t\t\tleft: 0,\n\t\t\tright: 0,\n\t\t\ttop: 0,\n\t\t\tbottom: 0\n\t\t}, margins);\n\t\tme.longestTextCache = me.longestTextCache || {};\n\n\t\t// Dimensions\n\t\tme.beforeSetDimensions();\n\t\tme.setDimensions();\n\t\tme.afterSetDimensions();\n\n\t\t// Data min/max\n\t\tme.beforeDataLimits();\n\t\tme.determineDataLimits();\n\t\tme.afterDataLimits();\n\n\t\t// Ticks - `this.ticks` is now DEPRECATED!\n\t\t// Internal ticks are now stored as objects in the PRIVATE `this._ticks` member\n\t\t// and must not be accessed directly from outside this class. `this.ticks` being\n\t\t// around for long time and not marked as private, we can't change its structure\n\t\t// without unexpected breaking changes. If you need to access the scale ticks,\n\t\t// use scale.getTicks() instead.\n\n\t\tme.beforeBuildTicks();\n\n\t\t// New implementations should return an array of objects but for BACKWARD COMPAT,\n\t\t// we still support no return (`this.ticks` internally set by calling this method).\n\t\tticks = me.buildTicks() || [];\n\n\t\tme.afterBuildTicks();\n\n\t\tme.beforeTickToLabelConversion();\n\n\t\t// New implementations should return the formatted tick labels but for BACKWARD\n\t\t// COMPAT, we still support no return (`this.ticks` internally changed by calling\n\t\t// this method and supposed to contain only string values).\n\t\tlabels = me.convertTicksToLabels(ticks) || me.ticks;\n\n\t\tme.afterTickToLabelConversion();\n\n\t\tme.ticks = labels; // BACKWARD COMPATIBILITY\n\n\t\t// IMPORTANT: from this point, we consider that `this.ticks` will NEVER change!\n\n\t\t// BACKWARD COMPAT: synchronize `_ticks` with labels (so potentially `this.ticks`)\n\t\tfor (i = 0, ilen = labels.length; i < ilen; ++i) {\n\t\t\tlabel = labels[i];\n\t\t\ttick = ticks[i];\n\t\t\tif (!tick) {\n\t\t\t\tticks.push(tick = {\n\t\t\t\t\tlabel: label,\n\t\t\t\t\tmajor: false\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\ttick.label = label;\n\t\t\t}\n\t\t}\n\n\t\tme._ticks = ticks;\n\n\t\t// Tick Rotation\n\t\tme.beforeCalculateTickRotation();\n\t\tme.calculateTickRotation();\n\t\tme.afterCalculateTickRotation();\n\t\t// Fit\n\t\tme.beforeFit();\n\t\tme.fit();\n\t\tme.afterFit();\n\t\t//\n\t\tme.afterUpdate();\n\n\t\treturn me.minSize;\n\n\t},\n\tafterUpdate: function() {\n\t\thelpers.callback(this.options.afterUpdate, [this]);\n\t},\n\n\t//\n\n\tbeforeSetDimensions: function() {\n\t\thelpers.callback(this.options.beforeSetDimensions, [this]);\n\t},\n\tsetDimensions: function() {\n\t\tvar me = this;\n\t\t// Set the unconstrained dimension before label rotation\n\t\tif (me.isHorizontal()) {\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.width = me.maxWidth;\n\t\t\tme.left = 0;\n\t\t\tme.right = me.width;\n\t\t} else {\n\t\t\tme.height = me.maxHeight;\n\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.top = 0;\n\t\t\tme.bottom = me.height;\n\t\t}\n\n\t\t// Reset padding\n\t\tme.paddingLeft = 0;\n\t\tme.paddingTop = 0;\n\t\tme.paddingRight = 0;\n\t\tme.paddingBottom = 0;\n\t},\n\tafterSetDimensions: function() {\n\t\thelpers.callback(this.options.afterSetDimensions, [this]);\n\t},\n\n\t// Data limits\n\tbeforeDataLimits: function() {\n\t\thelpers.callback(this.options.beforeDataLimits, [this]);\n\t},\n\tdetermineDataLimits: helpers.noop,\n\tafterDataLimits: function() {\n\t\thelpers.callback(this.options.afterDataLimits, [this]);\n\t},\n\n\t//\n\tbeforeBuildTicks: function() {\n\t\thelpers.callback(this.options.beforeBuildTicks, [this]);\n\t},\n\tbuildTicks: helpers.noop,\n\tafterBuildTicks: function() {\n\t\thelpers.callback(this.options.afterBuildTicks, [this]);\n\t},\n\n\tbeforeTickToLabelConversion: function() {\n\t\thelpers.callback(this.options.beforeTickToLabelConversion, [this]);\n\t},\n\tconvertTicksToLabels: function() {\n\t\tvar me = this;\n\t\t// Convert ticks to strings\n\t\tvar tickOpts = me.options.ticks;\n\t\tme.ticks = me.ticks.map(tickOpts.userCallback || tickOpts.callback, this);\n\t},\n\tafterTickToLabelConversion: function() {\n\t\thelpers.callback(this.options.afterTickToLabelConversion, [this]);\n\t},\n\n\t//\n\n\tbeforeCalculateTickRotation: function() {\n\t\thelpers.callback(this.options.beforeCalculateTickRotation, [this]);\n\t},\n\tcalculateTickRotation: function() {\n\t\tvar me = this;\n\t\tvar context = me.ctx;\n\t\tvar tickOpts = me.options.ticks;\n\t\tvar labels = labelsFromTicks(me._ticks);\n\n\t\t// Get the width of each grid by calculating the difference\n\t\t// between x offsets between 0 and 1.\n\t\tvar tickFont = parseFontOptions(tickOpts);\n\t\tcontext.font = tickFont.font;\n\n\t\tvar labelRotation = tickOpts.minRotation || 0;\n\n\t\tif (labels.length && me.options.display && me.isHorizontal()) {\n\t\t\tvar originalLabelWidth = helpers.longestText(context, tickFont.font, labels, me.longestTextCache);\n\t\t\tvar labelWidth = originalLabelWidth;\n\t\t\tvar cosRotation, sinRotation;\n\n\t\t\t// Allow 3 pixels x2 padding either side for label readability\n\t\t\tvar tickWidth = me.getPixelForTick(1) - me.getPixelForTick(0) - 6;\n\n\t\t\t// Max label rotation can be set or default to 90 - also act as a loop counter\n\t\t\twhile (labelWidth > tickWidth && labelRotation < tickOpts.maxRotation) {\n\t\t\t\tvar angleRadians = helpers.toRadians(labelRotation);\n\t\t\t\tcosRotation = Math.cos(angleRadians);\n\t\t\t\tsinRotation = Math.sin(angleRadians);\n\n\t\t\t\tif (sinRotation * originalLabelWidth > me.maxHeight) {\n\t\t\t\t\t// go back one step\n\t\t\t\t\tlabelRotation--;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tlabelRotation++;\n\t\t\t\tlabelWidth = cosRotation * originalLabelWidth;\n\t\t\t}\n\t\t}\n\n\t\tme.labelRotation = labelRotation;\n\t},\n\tafterCalculateTickRotation: function() {\n\t\thelpers.callback(this.options.afterCalculateTickRotation, [this]);\n\t},\n\n\t//\n\n\tbeforeFit: function() {\n\t\thelpers.callback(this.options.beforeFit, [this]);\n\t},\n\tfit: function() {\n\t\tvar me = this;\n\t\t// Reset\n\t\tvar minSize = me.minSize = {\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t};\n\n\t\tvar labels = labelsFromTicks(me._ticks);\n\n\t\tvar opts = me.options;\n\t\tvar tickOpts = opts.ticks;\n\t\tvar scaleLabelOpts = opts.scaleLabel;\n\t\tvar gridLineOpts = opts.gridLines;\n\t\tvar display = opts.display;\n\t\tvar isHorizontal = me.isHorizontal();\n\n\t\tvar tickFont = parseFontOptions(tickOpts);\n\t\tvar tickMarkLength = opts.gridLines.tickMarkLength;\n\n\t\t// Width\n\t\tif (isHorizontal) {\n\t\t\t// subtract the margins to line up with the chartArea if we are a full width scale\n\t\t\tminSize.width = me.isFullWidth() ? me.maxWidth - me.margins.left - me.margins.right : me.maxWidth;\n\t\t} else {\n\t\t\tminSize.width = display && gridLineOpts.drawTicks ? tickMarkLength : 0;\n\t\t}\n\n\t\t// height\n\t\tif (isHorizontal) {\n\t\t\tminSize.height = display && gridLineOpts.drawTicks ? tickMarkLength : 0;\n\t\t} else {\n\t\t\tminSize.height = me.maxHeight; // fill all the height\n\t\t}\n\n\t\t// Are we showing a title for the scale?\n\t\tif (scaleLabelOpts.display && display) {\n\t\t\tvar scaleLabelLineHeight = parseLineHeight(scaleLabelOpts);\n\t\t\tvar scaleLabelPadding = helpers.options.toPadding(scaleLabelOpts.padding);\n\t\t\tvar deltaHeight = scaleLabelLineHeight + scaleLabelPadding.height;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tminSize.height += deltaHeight;\n\t\t\t} else {\n\t\t\t\tminSize.width += deltaHeight;\n\t\t\t}\n\t\t}\n\n\t\t// Don't bother fitting the ticks if we are not showing them\n\t\tif (tickOpts.display && display) {\n\t\t\tvar largestTextWidth = helpers.longestText(me.ctx, tickFont.font, labels, me.longestTextCache);\n\t\t\tvar tallestLabelHeightInLines = helpers.numberOfLabelLines(labels);\n\t\t\tvar lineSpace = tickFont.size * 0.5;\n\t\t\tvar tickPadding = me.options.ticks.padding;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\t// A horizontal axis is more constrained by the height.\n\t\t\t\tme.longestLabelWidth = largestTextWidth;\n\n\t\t\t\tvar angleRadians = helpers.toRadians(me.labelRotation);\n\t\t\t\tvar cosRotation = Math.cos(angleRadians);\n\t\t\t\tvar sinRotation = Math.sin(angleRadians);\n\n\t\t\t\t// TODO - improve this calculation\n\t\t\t\tvar labelHeight = (sinRotation * largestTextWidth)\n\t\t\t\t\t+ (tickFont.size * tallestLabelHeightInLines)\n\t\t\t\t\t+ (lineSpace * (tallestLabelHeightInLines - 1))\n\t\t\t\t\t+ lineSpace; // padding\n\n\t\t\t\tminSize.height = Math.min(me.maxHeight, minSize.height + labelHeight + tickPadding);\n\n\t\t\t\tme.ctx.font = tickFont.font;\n\t\t\t\tvar firstLabelWidth = computeTextSize(me.ctx, labels[0], tickFont.font);\n\t\t\t\tvar lastLabelWidth = computeTextSize(me.ctx, labels[labels.length - 1], tickFont.font);\n\n\t\t\t\t// Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned\n\t\t\t\t// which means that the right padding is dominated by the font height\n\t\t\t\tif (me.labelRotation !== 0) {\n\t\t\t\t\tme.paddingLeft = opts.position === 'bottom' ? (cosRotation * firstLabelWidth) + 3 : (cosRotation * lineSpace) + 3; // add 3 px to move away from canvas edges\n\t\t\t\t\tme.paddingRight = opts.position === 'bottom' ? (cosRotation * lineSpace) + 3 : (cosRotation * lastLabelWidth) + 3;\n\t\t\t\t} else {\n\t\t\t\t\tme.paddingLeft = firstLabelWidth / 2 + 3; // add 3 px to move away from canvas edges\n\t\t\t\t\tme.paddingRight = lastLabelWidth / 2 + 3;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// A vertical axis is more constrained by the width. Labels are the\n\t\t\t\t// dominant factor here, so get that length first and account for padding\n\t\t\t\tif (tickOpts.mirror) {\n\t\t\t\t\tlargestTextWidth = 0;\n\t\t\t\t} else {\n\t\t\t\t\t// use lineSpace for consistency with horizontal axis\n\t\t\t\t\t// tickPadding is not implemented for horizontal\n\t\t\t\t\tlargestTextWidth += tickPadding + lineSpace;\n\t\t\t\t}\n\n\t\t\t\tminSize.width = Math.min(me.maxWidth, minSize.width + largestTextWidth);\n\n\t\t\t\tme.paddingTop = tickFont.size / 2;\n\t\t\t\tme.paddingBottom = tickFont.size / 2;\n\t\t\t}\n\t\t}\n\n\t\tme.handleMargins();\n\n\t\tme.width = minSize.width;\n\t\tme.height = minSize.height;\n\t},\n\n\t/**\n\t * Handle margins and padding interactions\n\t * @private\n\t */\n\thandleMargins: function() {\n\t\tvar me = this;\n\t\tif (me.margins) {\n\t\t\tme.paddingLeft = Math.max(me.paddingLeft - me.margins.left, 0);\n\t\t\tme.paddingTop = Math.max(me.paddingTop - me.margins.top, 0);\n\t\t\tme.paddingRight = Math.max(me.paddingRight - me.margins.right, 0);\n\t\t\tme.paddingBottom = Math.max(me.paddingBottom - me.margins.bottom, 0);\n\t\t}\n\t},\n\n\tafterFit: function() {\n\t\thelpers.callback(this.options.afterFit, [this]);\n\t},\n\n\t// Shared Methods\n\tisHorizontal: function() {\n\t\treturn this.options.position === 'top' || this.options.position === 'bottom';\n\t},\n\tisFullWidth: function() {\n\t\treturn (this.options.fullWidth);\n\t},\n\n\t// Get the correct value. NaN bad inputs, If the value type is object get the x or y based on whether we are horizontal or not\n\tgetRightValue: function(rawValue) {\n\t\t// Null and undefined values first\n\t\tif (helpers.isNullOrUndef(rawValue)) {\n\t\t\treturn NaN;\n\t\t}\n\t\t// isNaN(object) returns true, so make sure NaN is checking for a number; Discard Infinite values\n\t\tif (typeof rawValue === 'number' && !isFinite(rawValue)) {\n\t\t\treturn NaN;\n\t\t}\n\t\t// If it is in fact an object, dive in one more level\n\t\tif (rawValue) {\n\t\t\tif (this.isHorizontal()) {\n\t\t\t\tif (rawValue.x !== undefined) {\n\t\t\t\t\treturn this.getRightValue(rawValue.x);\n\t\t\t\t}\n\t\t\t} else if (rawValue.y !== undefined) {\n\t\t\t\treturn this.getRightValue(rawValue.y);\n\t\t\t}\n\t\t}\n\n\t\t// Value is good, return it\n\t\treturn rawValue;\n\t},\n\n\t/**\n\t * Used to get the value to display in the tooltip for the data at the given index\n\t * @param index\n\t * @param datasetIndex\n\t */\n\tgetLabelForIndex: helpers.noop,\n\n\t/**\n\t * Returns the location of the given data point. Value can either be an index or a numerical value\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param value\n\t * @param index\n\t * @param datasetIndex\n\t */\n\tgetPixelForValue: helpers.noop,\n\n\t/**\n\t * Used to get the data value from a given pixel. This is the inverse of getPixelForValue\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param pixel\n\t */\n\tgetValueForPixel: helpers.noop,\n\n\t/**\n\t * Returns the location of the tick at the given index\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t */\n\tgetPixelForTick: function(index) {\n\t\tvar me = this;\n\t\tvar offset = me.options.offset;\n\t\tif (me.isHorizontal()) {\n\t\t\tvar innerWidth = me.width - (me.paddingLeft + me.paddingRight);\n\t\t\tvar tickWidth = innerWidth / Math.max((me._ticks.length - (offset ? 0 : 1)), 1);\n\t\t\tvar pixel = (tickWidth * index) + me.paddingLeft;\n\n\t\t\tif (offset) {\n\t\t\t\tpixel += tickWidth / 2;\n\t\t\t}\n\n\t\t\tvar finalVal = me.left + Math.round(pixel);\n\t\t\tfinalVal += me.isFullWidth() ? me.margins.left : 0;\n\t\t\treturn finalVal;\n\t\t}\n\t\tvar innerHeight = me.height - (me.paddingTop + me.paddingBottom);\n\t\treturn me.top + (index * (innerHeight / (me._ticks.length - 1)));\n\t},\n\n\t/**\n\t * Utility for getting the pixel location of a percentage of scale\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t */\n\tgetPixelForDecimal: function(decimal) {\n\t\tvar me = this;\n\t\tif (me.isHorizontal()) {\n\t\t\tvar innerWidth = me.width - (me.paddingLeft + me.paddingRight);\n\t\t\tvar valueOffset = (innerWidth * decimal) + me.paddingLeft;\n\n\t\t\tvar finalVal = me.left + Math.round(valueOffset);\n\t\t\tfinalVal += me.isFullWidth() ? me.margins.left : 0;\n\t\t\treturn finalVal;\n\t\t}\n\t\treturn me.top + (decimal * me.height);\n\t},\n\n\t/**\n\t * Returns the pixel for the minimum chart value\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t */\n\tgetBasePixel: function() {\n\t\treturn this.getPixelForValue(this.getBaseValue());\n\t},\n\n\tgetBaseValue: function() {\n\t\tvar me = this;\n\t\tvar min = me.min;\n\t\tvar max = me.max;\n\n\t\treturn me.beginAtZero ? 0 :\n\t\t\tmin < 0 && max < 0 ? max :\n\t\t\tmin > 0 && max > 0 ? min :\n\t\t\t0;\n\t},\n\n\t/**\n\t * Returns a subset of ticks to be plotted to avoid overlapping labels.\n\t * @private\n\t */\n\t_autoSkip: function(ticks) {\n\t\tvar skipRatio;\n\t\tvar me = this;\n\t\tvar isHorizontal = me.isHorizontal();\n\t\tvar optionTicks = me.options.ticks.minor;\n\t\tvar tickCount = ticks.length;\n\t\tvar labelRotationRadians = helpers.toRadians(me.labelRotation);\n\t\tvar cosRotation = Math.cos(labelRotationRadians);\n\t\tvar longestRotatedLabel = me.longestLabelWidth * cosRotation;\n\t\tvar result = [];\n\t\tvar i, tick, shouldSkip;\n\n\t\t// figure out the maximum number of gridlines to show\n\t\tvar maxTicks;\n\t\tif (optionTicks.maxTicksLimit) {\n\t\t\tmaxTicks = optionTicks.maxTicksLimit;\n\t\t}\n\n\t\tif (isHorizontal) {\n\t\t\tskipRatio = false;\n\n\t\t\tif ((longestRotatedLabel + optionTicks.autoSkipPadding) * tickCount > (me.width - (me.paddingLeft + me.paddingRight))) {\n\t\t\t\tskipRatio = 1 + Math.floor(((longestRotatedLabel + optionTicks.autoSkipPadding) * tickCount) / (me.width - (me.paddingLeft + me.paddingRight)));\n\t\t\t}\n\n\t\t\t// if they defined a max number of optionTicks,\n\t\t\t// increase skipRatio until that number is met\n\t\t\tif (maxTicks && tickCount > maxTicks) {\n\t\t\t\tskipRatio = Math.max(skipRatio, Math.floor(tickCount / maxTicks));\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0; i < tickCount; i++) {\n\t\t\ttick = ticks[i];\n\n\t\t\t// Since we always show the last tick,we need may need to hide the last shown one before\n\t\t\tshouldSkip = (skipRatio > 1 && i % skipRatio > 0) || (i % skipRatio === 0 && i + skipRatio >= tickCount);\n\t\t\tif (shouldSkip && i !== tickCount - 1) {\n\t\t\t\t// leave tick in place but make sure it's not displayed (#4635)\n\t\t\t\tdelete tick.label;\n\t\t\t}\n\t\t\tresult.push(tick);\n\t\t}\n\t\treturn result;\n\t},\n\n\t// Actually draw the scale on the canvas\n\t// @param {rectangle} chartArea : the area of the chart to draw full grid lines on\n\tdraw: function(chartArea) {\n\t\tvar me = this;\n\t\tvar options = me.options;\n\t\tif (!options.display) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar context = me.ctx;\n\t\tvar globalDefaults = defaults.global;\n\t\tvar optionTicks = options.ticks.minor;\n\t\tvar optionMajorTicks = options.ticks.major || optionTicks;\n\t\tvar gridLines = options.gridLines;\n\t\tvar scaleLabel = options.scaleLabel;\n\n\t\tvar isRotated = me.labelRotation !== 0;\n\t\tvar isHorizontal = me.isHorizontal();\n\n\t\tvar ticks = optionTicks.autoSkip ? me._autoSkip(me.getTicks()) : me.getTicks();\n\t\tvar tickFontColor = helpers.valueOrDefault(optionTicks.fontColor, globalDefaults.defaultFontColor);\n\t\tvar tickFont = parseFontOptions(optionTicks);\n\t\tvar majorTickFontColor = helpers.valueOrDefault(optionMajorTicks.fontColor, globalDefaults.defaultFontColor);\n\t\tvar majorTickFont = parseFontOptions(optionMajorTicks);\n\n\t\tvar tl = gridLines.drawTicks ? gridLines.tickMarkLength : 0;\n\n\t\tvar scaleLabelFontColor = helpers.valueOrDefault(scaleLabel.fontColor, globalDefaults.defaultFontColor);\n\t\tvar scaleLabelFont = parseFontOptions(scaleLabel);\n\t\tvar scaleLabelPadding = helpers.options.toPadding(scaleLabel.padding);\n\t\tvar labelRotationRadians = helpers.toRadians(me.labelRotation);\n\n\t\tvar itemsToDraw = [];\n\n\t\tvar axisWidth = me.options.gridLines.lineWidth;\n\t\tvar xTickStart = options.position === 'right' ? me.left : me.right - axisWidth - tl;\n\t\tvar xTickEnd = options.position === 'right' ? me.left + tl : me.right;\n\t\tvar yTickStart = options.position === 'bottom' ? me.top + axisWidth : me.bottom - tl - axisWidth;\n\t\tvar yTickEnd = options.position === 'bottom' ? me.top + axisWidth + tl : me.bottom + axisWidth;\n\n\t\thelpers.each(ticks, function(tick, index) {\n\t\t\t// autoskipper skipped this tick (#4635)\n\t\t\tif (helpers.isNullOrUndef(tick.label)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar label = tick.label;\n\t\t\tvar lineWidth, lineColor, borderDash, borderDashOffset;\n\t\t\tif (index === me.zeroLineIndex && options.offset === gridLines.offsetGridLines) {\n\t\t\t\t// Draw the first index specially\n\t\t\t\tlineWidth = gridLines.zeroLineWidth;\n\t\t\t\tlineColor = gridLines.zeroLineColor;\n\t\t\t\tborderDash = gridLines.zeroLineBorderDash;\n\t\t\t\tborderDashOffset = gridLines.zeroLineBorderDashOffset;\n\t\t\t} else {\n\t\t\t\tlineWidth = helpers.valueAtIndexOrDefault(gridLines.lineWidth, index);\n\t\t\t\tlineColor = helpers.valueAtIndexOrDefault(gridLines.color, index);\n\t\t\t\tborderDash = helpers.valueOrDefault(gridLines.borderDash, globalDefaults.borderDash);\n\t\t\t\tborderDashOffset = helpers.valueOrDefault(gridLines.borderDashOffset, globalDefaults.borderDashOffset);\n\t\t\t}\n\n\t\t\t// Common properties\n\t\t\tvar tx1, ty1, tx2, ty2, x1, y1, x2, y2, labelX, labelY;\n\t\t\tvar textAlign = 'middle';\n\t\t\tvar textBaseline = 'middle';\n\t\t\tvar tickPadding = optionTicks.padding;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tvar labelYOffset = tl + tickPadding;\n\n\t\t\t\tif (options.position === 'bottom') {\n\t\t\t\t\t// bottom\n\t\t\t\t\ttextBaseline = !isRotated ? 'top' : 'middle';\n\t\t\t\t\ttextAlign = !isRotated ? 'center' : 'right';\n\t\t\t\t\tlabelY = me.top + labelYOffset;\n\t\t\t\t} else {\n\t\t\t\t\t// top\n\t\t\t\t\ttextBaseline = !isRotated ? 'bottom' : 'middle';\n\t\t\t\t\ttextAlign = !isRotated ? 'center' : 'left';\n\t\t\t\t\tlabelY = me.bottom - labelYOffset;\n\t\t\t\t}\n\n\t\t\t\tvar xLineValue = getLineValue(me, index, gridLines.offsetGridLines && ticks.length > 1);\n\t\t\t\tif (xLineValue < me.left) {\n\t\t\t\t\tlineColor = 'rgba(0,0,0,0)';\n\t\t\t\t}\n\t\t\t\txLineValue += helpers.aliasPixel(lineWidth);\n\n\t\t\t\tlabelX = me.getPixelForTick(index) + optionTicks.labelOffset; // x values for optionTicks (need to consider offsetLabel option)\n\n\t\t\t\ttx1 = tx2 = x1 = x2 = xLineValue;\n\t\t\t\tty1 = yTickStart;\n\t\t\t\tty2 = yTickEnd;\n\t\t\t\ty1 = chartArea.top;\n\t\t\t\ty2 = chartArea.bottom + axisWidth;\n\t\t\t} else {\n\t\t\t\tvar isLeft = options.position === 'left';\n\t\t\t\tvar labelXOffset;\n\n\t\t\t\tif (optionTicks.mirror) {\n\t\t\t\t\ttextAlign = isLeft ? 'left' : 'right';\n\t\t\t\t\tlabelXOffset = tickPadding;\n\t\t\t\t} else {\n\t\t\t\t\ttextAlign = isLeft ? 'right' : 'left';\n\t\t\t\t\tlabelXOffset = tl + tickPadding;\n\t\t\t\t}\n\n\t\t\t\tlabelX = isLeft ? me.right - labelXOffset : me.left + labelXOffset;\n\n\t\t\t\tvar yLineValue = getLineValue(me, index, gridLines.offsetGridLines && ticks.length > 1);\n\t\t\t\tif (yLineValue < me.top) {\n\t\t\t\t\tlineColor = 'rgba(0,0,0,0)';\n\t\t\t\t}\n\t\t\t\tyLineValue += helpers.aliasPixel(lineWidth);\n\n\t\t\t\tlabelY = me.getPixelForTick(index) + optionTicks.labelOffset;\n\n\t\t\t\ttx1 = xTickStart;\n\t\t\t\ttx2 = xTickEnd;\n\t\t\t\tx1 = chartArea.left;\n\t\t\t\tx2 = chartArea.right + axisWidth;\n\t\t\t\tty1 = ty2 = y1 = y2 = yLineValue;\n\t\t\t}\n\n\t\t\titemsToDraw.push({\n\t\t\t\ttx1: tx1,\n\t\t\t\tty1: ty1,\n\t\t\t\ttx2: tx2,\n\t\t\t\tty2: ty2,\n\t\t\t\tx1: x1,\n\t\t\t\ty1: y1,\n\t\t\t\tx2: x2,\n\t\t\t\ty2: y2,\n\t\t\t\tlabelX: labelX,\n\t\t\t\tlabelY: labelY,\n\t\t\t\tglWidth: lineWidth,\n\t\t\t\tglColor: lineColor,\n\t\t\t\tglBorderDash: borderDash,\n\t\t\t\tglBorderDashOffset: borderDashOffset,\n\t\t\t\trotation: -1 * labelRotationRadians,\n\t\t\t\tlabel: label,\n\t\t\t\tmajor: tick.major,\n\t\t\t\ttextBaseline: textBaseline,\n\t\t\t\ttextAlign: textAlign\n\t\t\t});\n\t\t});\n\n\t\t// Draw all of the tick labels, tick marks, and grid lines at the correct places\n\t\thelpers.each(itemsToDraw, function(itemToDraw) {\n\t\t\tif (gridLines.display) {\n\t\t\t\tcontext.save();\n\t\t\t\tcontext.lineWidth = itemToDraw.glWidth;\n\t\t\t\tcontext.strokeStyle = itemToDraw.glColor;\n\t\t\t\tif (context.setLineDash) {\n\t\t\t\t\tcontext.setLineDash(itemToDraw.glBorderDash);\n\t\t\t\t\tcontext.lineDashOffset = itemToDraw.glBorderDashOffset;\n\t\t\t\t}\n\n\t\t\t\tcontext.beginPath();\n\n\t\t\t\tif (gridLines.drawTicks) {\n\t\t\t\t\tcontext.moveTo(itemToDraw.tx1, itemToDraw.ty1);\n\t\t\t\t\tcontext.lineTo(itemToDraw.tx2, itemToDraw.ty2);\n\t\t\t\t}\n\n\t\t\t\tif (gridLines.drawOnChartArea) {\n\t\t\t\t\tcontext.moveTo(itemToDraw.x1, itemToDraw.y1);\n\t\t\t\t\tcontext.lineTo(itemToDraw.x2, itemToDraw.y2);\n\t\t\t\t}\n\n\t\t\t\tcontext.stroke();\n\t\t\t\tcontext.restore();\n\t\t\t}\n\n\t\t\tif (optionTicks.display) {\n\t\t\t\t// Make sure we draw text in the correct color and font\n\t\t\t\tcontext.save();\n\t\t\t\tcontext.translate(itemToDraw.labelX, itemToDraw.labelY);\n\t\t\t\tcontext.rotate(itemToDraw.rotation);\n\t\t\t\tcontext.font = itemToDraw.major ? majorTickFont.font : tickFont.font;\n\t\t\t\tcontext.fillStyle = itemToDraw.major ? majorTickFontColor : tickFontColor;\n\t\t\t\tcontext.textBaseline = itemToDraw.textBaseline;\n\t\t\t\tcontext.textAlign = itemToDraw.textAlign;\n\n\t\t\t\tvar label = itemToDraw.label;\n\t\t\t\tif (helpers.isArray(label)) {\n\t\t\t\t\tvar lineCount = label.length;\n\t\t\t\t\tvar lineHeight = tickFont.size * 1.5;\n\t\t\t\t\tvar y = me.isHorizontal() ? 0 : -lineHeight * (lineCount - 1) / 2;\n\n\t\t\t\t\tfor (var i = 0; i < lineCount; ++i) {\n\t\t\t\t\t\t// We just make sure the multiline element is a string here..\n\t\t\t\t\t\tcontext.fillText('' + label[i], 0, y);\n\t\t\t\t\t\t// apply same lineSpacing as calculated @ L#320\n\t\t\t\t\t\ty += lineHeight;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tcontext.fillText(label, 0, 0);\n\t\t\t\t}\n\t\t\t\tcontext.restore();\n\t\t\t}\n\t\t});\n\n\t\tif (scaleLabel.display) {\n\t\t\t// Draw the scale label\n\t\t\tvar scaleLabelX;\n\t\t\tvar scaleLabelY;\n\t\t\tvar rotation = 0;\n\t\t\tvar halfLineHeight = parseLineHeight(scaleLabel) / 2;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tscaleLabelX = me.left + ((me.right - me.left) / 2); // midpoint of the width\n\t\t\t\tscaleLabelY = options.position === 'bottom'\n\t\t\t\t\t? me.bottom - halfLineHeight - scaleLabelPadding.bottom\n\t\t\t\t\t: me.top + halfLineHeight + scaleLabelPadding.top;\n\t\t\t} else {\n\t\t\t\tvar isLeft = options.position === 'left';\n\t\t\t\tscaleLabelX = isLeft\n\t\t\t\t\t? me.left + halfLineHeight + scaleLabelPadding.top\n\t\t\t\t\t: me.right - halfLineHeight - scaleLabelPadding.top;\n\t\t\t\tscaleLabelY = me.top + ((me.bottom - me.top) / 2);\n\t\t\t\trotation = isLeft ? -0.5 * Math.PI : 0.5 * Math.PI;\n\t\t\t}\n\n\t\t\tcontext.save();\n\t\t\tcontext.translate(scaleLabelX, scaleLabelY);\n\t\t\tcontext.rotate(rotation);\n\t\t\tcontext.textAlign = 'center';\n\t\t\tcontext.textBaseline = 'middle';\n\t\t\tcontext.fillStyle = scaleLabelFontColor; // render in correct colour\n\t\t\tcontext.font = scaleLabelFont.font;\n\t\t\tcontext.fillText(scaleLabel.labelString, 0, 0);\n\t\t\tcontext.restore();\n\t\t}\n\n\t\tif (gridLines.drawBorder) {\n\t\t\t// Draw the line at the edge of the axis\n\t\t\tcontext.lineWidth = helpers.valueAtIndexOrDefault(gridLines.lineWidth, 0);\n\t\t\tcontext.strokeStyle = helpers.valueAtIndexOrDefault(gridLines.color, 0);\n\t\t\tvar x1 = me.left;\n\t\t\tvar x2 = me.right + axisWidth;\n\t\t\tvar y1 = me.top;\n\t\t\tvar y2 = me.bottom + axisWidth;\n\n\t\t\tvar aliasPixel = helpers.aliasPixel(context.lineWidth);\n\t\t\tif (isHorizontal) {\n\t\t\t\ty1 = y2 = options.position === 'top' ? me.bottom : me.top;\n\t\t\t\ty1 += aliasPixel;\n\t\t\t\ty2 += aliasPixel;\n\t\t\t} else {\n\t\t\t\tx1 = x2 = options.position === 'left' ? me.right : me.left;\n\t\t\t\tx1 += aliasPixel;\n\t\t\t\tx2 += aliasPixel;\n\t\t\t}\n\n\t\t\tcontext.beginPath();\n\t\t\tcontext.moveTo(x1, y1);\n\t\t\tcontext.lineTo(x2, y2);\n\t\t\tcontext.stroke();\n\t\t}\n\t}\n});\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('layout',[_c('section',{staticClass:\"mainContent\"},[_c('div',{staticClass:\"card\"},[_c('div',{staticClass:\"card-header\"},[_vm._v(\"Overview\")]),_vm._v(\" \"),_c('div',{staticClass:\"card-body p-0\"},[_c('div',{staticClass:\"container-fluid\"},[_c('div',{staticClass:\"stats row\"},[_c('div',{staticClass:\"stat col-3 p-4\"},[_c('h2',{staticClass:\"stat-title\"},[_vm._v(\"Jobs Per Minute\")]),_vm._v(\" \"),_c('h3',{staticClass:\"stat-meta\"},[_vm._v(\" \")]),_vm._v(\" \"),_c('span',{staticClass:\"stat-value\"},[_vm._v(\"\\n \"+_vm._s(_vm.stats.jobsPerMinute ? _vm.stats.jobsPerMinute.toLocaleString() : 0)+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"stat col-3 p-4\"},[_c('h2',{staticClass:\"stat-title\",domProps:{\"textContent\":_vm._s(_vm.recentJobsPeriod)}}),_vm._v(\" \"),_c('h3',{staticClass:\"stat-meta\"},[_vm._v(\" \")]),_vm._v(\" \"),_c('span',{staticClass:\"stat-value\"},[_vm._v(\"\\n \"+_vm._s(_vm.stats.recentJobs ? _vm.stats.recentJobs.toLocaleString() : 0)+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"stat col-3 p-4\"},[_c('h2',{staticClass:\"stat-title\",domProps:{\"textContent\":_vm._s(_vm.recentlyFailedPeriod)}}),_vm._v(\" \"),_c('h3',{staticClass:\"stat-meta\"},[_vm._v(\" \")]),_vm._v(\" \"),_c('span',{staticClass:\"stat-value\"},[_vm._v(\"\\n \"+_vm._s(_vm.stats.recentlyFailed ? _vm.stats.recentlyFailed.toLocaleString() : 0)+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"stat col-3 p-4 border-right-0\"},[_c('h2',{staticClass:\"stat-title\"},[_vm._v(\"Status\")]),_vm._v(\" \"),_c('h3',{staticClass:\"stat-meta\"},[_vm._v(\" \")]),_vm._v(\" \"),_c('div',{staticClass:\"d-flex align-items-center\"},[(_vm.stats.status)?_c('status',{staticClass:\"mr-2\",attrs:{\"active\":_vm.stats.status == 'running',\"pending\":_vm.stats.status == 'paused'}}):_vm._e(),_vm._v(\" \"),_c('span',{staticClass:\"stat-value\"},[_vm._v(\"\\n \"+_vm._s({running: 'Active', paused: 'Paused', inactive:'Inactive'}[_vm.stats.status])+\"\\n \")])],1)]),_vm._v(\" \"),_c('div',{staticClass:\"stat col-3 p-4 border-bottom-0\"},[_c('h2',{staticClass:\"stat-title\"},[_vm._v(\"Total Processes\")]),_vm._v(\" \"),_c('h3',{staticClass:\"state-meta\"},[_vm._v(\" \")]),_vm._v(\" \"),_c('span',{staticClass:\"stat-value\"},[_vm._v(\"\\n \"+_vm._s(_vm.stats.processes ? _vm.stats.processes.toLocaleString() : 0)+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"stat col-3 p-4 border-bottom-0\"},[_c('h2',{staticClass:\"stat-title\"},[_vm._v(\"Max Wait Time\")]),_vm._v(\" \"),_c('h3',{staticClass:\"stat-meta\"},[_vm._v(\"\\n \"+_vm._s(_vm.stats.max_wait_queue || ' ')+\"\\n \")]),_vm._v(\" \"),_c('span',{staticClass:\"stat-value\"},[_vm._v(\"\\n \"+_vm._s(_vm.stats.max_wait_time ? _vm.humanTime(_vm.stats.max_wait_time) : '-')+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"stat col-3 p-4 border-bottom-0\"},[_c('h2',{staticClass:\"stat-title\"},[_vm._v(\"Max Runtime\")]),_vm._v(\" \"),_c('h3',{staticClass:\"state-meta\"},[_vm._v(\" \")]),_vm._v(\" \"),_c('span',{staticClass:\"stat-value\"},[_vm._v(\"\\n \"+_vm._s(_vm.stats.queueWithMaxRuntime ? _vm.stats.queueWithMaxRuntime : '-')+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"stat col-3 p-4 border-0\"},[_c('h2',{staticClass:\"stat-title\"},[_vm._v(\"Max Throughput\")]),_vm._v(\" \"),_c('h3',{staticClass:\"state-meta\"},[_vm._v(\" \")]),_vm._v(\" \"),_c('span',{staticClass:\"stat-value\"},[_vm._v(\"\\n \"+_vm._s(_vm.stats.queueWithMaxThroughput ? _vm.stats.queueWithMaxThroughput : '-')+\"\\n \")])])])])])]),_vm._v(\" \"),(_vm.workload.length)?_c('div',{staticClass:\"card mt-4\"},[_c('div',{staticClass:\"card-header\"},[_vm._v(\"Current Workload\")]),_vm._v(\" \"),_c('div',{staticClass:\"table-responsive\"},[_c('table',{staticClass:\"table card-table table-hover\"},[_c('thead',[_c('tr',[_c('th',[_vm._v(\"Queue\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Processes\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Jobs\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Wait\")])])]),_vm._v(\" \"),_c('tbody',_vm._l((_vm.workload),function(queue){return _c('tr',[_c('td',[_c('span',[_vm._v(_vm._s(queue.name.replace(/,/g, ', ')))])]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(queue.processes ? queue.processes.toLocaleString() : 0))]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(queue.length ? queue.length.toLocaleString() : 0))]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm.humanTime(queue.wait)))])])}),0)])])]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.workers),function(worker){return _c('div',{key:worker.name,staticClass:\"card mt-4\"},[_c('div',{staticClass:\"card-header\"},[_vm._v(_vm._s(worker.name))]),_vm._v(\" \"),_c('div',{staticClass:\"table-responsive\"},[_c('table',{staticClass:\"table card-table table-hover\"},[_c('thead',[_c('tr',[_c('th',[_vm._v(\"Supervisor\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Processes\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Queues\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Balancing\")])])]),_vm._v(\" \"),_c('tbody',_vm._l((worker.supervisors),function(supervisor){return _c('tr',[_c('td',{staticClass:\"ph2\"},[_c('span',{staticClass:\"fw7\"},[_vm._v(_vm._s(_vm.superVisorDisplayName(supervisor.name, worker.name)))])]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm.countProcesses(supervisor.processes)))]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(supervisor.options.queue.replace(/,/g, ', ')))]),_vm._v(\" \"),_c('td',{staticClass:\"d-flex align-items-center\"},[_c('status',{staticClass:\"mr-2\",attrs:{\"active\":supervisor.options.balance}}),_vm._v(\" \"),(supervisor.options.balance)?_c('span',[_vm._v(\"\\n (\"+_vm._s(supervisor.options.balance.charAt(0).toUpperCase() + supervisor.options.balance.slice(1))+\")\\n \")]):_vm._e()],1)])}),0)])])])})],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--4-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Dashboard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--4-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Dashboard.vue?vue&type=script&lang=js&\"","<script type=\"text/ecmascript-6\">\n import _ from 'lodash';\n import moment from 'moment';\n import Layout from '../layouts/MainLayout.vue';\n import Status from '../components/Status/Status.vue';\n\n export default {\n components: {Layout, Status},\n\n\n /**\n * The component's data.\n */\n data() {\n return {\n stats: {},\n workers: [],\n workload: [],\n ready: false,\n };\n },\n\n\n /**\n * Prepare the component.\n */\n mounted() {\n document.title = \"Horizon - Dashboard\";\n\n this.refreshStatsPeriodically();\n },\n\n\n /**\n * Clean after the component is destroyed.\n */\n destroyed() {\n clearTimeout(this.timeout);\n },\n\n\n computed: {\n /**\n * Determine the recent job period label.\n */\n recentJobsPeriod() {\n return ! this.ready\n ? 'Jobs past hour'\n : `Jobs past ${this.determinePeriod(this.stats.periods.recentJobs)}`;\n },\n\n\n /**\n * Determine the recently failed job period label.\n */\n recentlyFailedPeriod() {\n return ! this.ready\n ? 'Failed jobs past 7 days'\n : `Failed jobs past ${this.determinePeriod(this.stats.periods.recentlyFailed)}`;\n },\n },\n\n\n methods: {\n /**\n * Load the general stats.\n */\n loadStats() {\n return this.$http.get('/horizon/api/stats')\n .then(response => {\n this.stats = response.data;\n\n if (_.values(response.data.wait)[0]) {\n this.stats.max_wait_time = _.values(response.data.wait)[0];\n this.stats.max_wait_queue = _.keys(response.data.wait)[0].split(':')[1];\n }\n });\n },\n\n\n /**\n * Load the workers stats.\n */\n loadWorkers() {\n return this.$http.get('/horizon/api/masters')\n .then(response => {\n this.workers = response.data;\n });\n },\n\n\n /**\n * Load the workload stats.\n */\n loadWorkload() {\n this.loadingWorkload = !this.ready;\n\n return this.$http.get('/horizon/api/workload')\n .then(response => {\n this.workload = response.data;\n });\n },\n\n\n /**\n * Refresh the stats every period of time.\n */\n refreshStatsPeriodically() {\n Promise.all([\n this.loadStats(),\n this.loadWorkers(),\n this.loadWorkload(),\n ]).then(() => {\n this.ready = true;\n\n this.timeout = setTimeout(() => {\n this.refreshStatsPeriodically(false);\n }, 5000);\n });\n },\n\n\n /**\n * Count processes for the given supervisor.\n */\n countProcesses(processes) {\n return _.chain(processes).values().sum().value().toLocaleString()\n },\n\n\n /**\n * Format the Supervisor display name.\n */\n superVisorDisplayName(supervisor, worker) {\n return _.replace(supervisor, worker + ':', '');\n },\n\n\n /**\n *\n * @returns {string}\n */\n humanTime(time) {\n return moment.duration(time, \"seconds\").humanize().replace(/^(.)|\\s+(.)/g, function ($1) {\n return $1.toUpperCase();\n });\n },\n\n\n /**\n * Determine the unit for the given timeframe.\n */\n determinePeriod(minutes) {\n return moment.duration(moment().diff(moment().subtract(minutes, \"minutes\"))).humanize().replace(/^An?/i, '');\n }\n }\n }\n</script>\n\n<template>\n <layout>\n <section class=\"mainContent\">\n <div class=\"card\">\n <div class=\"card-header\">Overview</div>\n\n <div class=\"card-body p-0\">\n <div class=\"container-fluid\">\n <div class=\"stats row\">\n <div class=\"stat col-3 p-4\">\n <h2 class=\"stat-title\">Jobs Per Minute</h2>\n <h3 class=\"stat-meta\"> </h3>\n <span class=\"stat-value\">\n {{ stats.jobsPerMinute ? stats.jobsPerMinute.toLocaleString() : 0 }}\n </span>\n </div>\n <div class=\"stat col-3 p-4\">\n <h2 class=\"stat-title\" v-text=\"recentJobsPeriod\"></h2>\n <h3 class=\"stat-meta\"> </h3>\n <span class=\"stat-value\">\n {{ stats.recentJobs ? stats.recentJobs.toLocaleString() : 0 }}\n </span>\n </div>\n <div class=\"stat col-3 p-4\">\n <h2 class=\"stat-title\" v-text=\"recentlyFailedPeriod\"></h2>\n <h3 class=\"stat-meta\"> </h3>\n <span class=\"stat-value\">\n {{ stats.recentlyFailed ? stats.recentlyFailed.toLocaleString() : 0 }}\n </span>\n </div>\n <div class=\"stat col-3 p-4 border-right-0\">\n <h2 class=\"stat-title\">Status</h2>\n <h3 class=\"stat-meta\"> </h3>\n\n <div class=\"d-flex align-items-center\">\n <status v-if=\"stats.status\" :active=\"stats.status == 'running'\" :pending=\"stats.status == 'paused'\" class=\"mr-2\"/>\n <span class=\"stat-value\">\n {{ {running: 'Active', paused: 'Paused', inactive:'Inactive'}[stats.status] }}\n </span>\n </div>\n </div>\n\n <div class=\"stat col-3 p-4 border-bottom-0\">\n <h2 class=\"stat-title\">Total Processes</h2>\n <h3 class=\"state-meta\"> </h3>\n <span class=\"stat-value\">\n {{ stats.processes ? stats.processes.toLocaleString() : 0 }}\n </span>\n </div>\n\n <div class=\"stat col-3 p-4 border-bottom-0\">\n <h2 class=\"stat-title\">Max Wait Time</h2>\n <h3 class=\"stat-meta\">\n {{ stats.max_wait_queue || ' ' }}\n </h3>\n <span class=\"stat-value\">\n {{ stats.max_wait_time ? humanTime(stats.max_wait_time) : '-' }}\n </span>\n </div>\n\n <div class=\"stat col-3 p-4 border-bottom-0\">\n <h2 class=\"stat-title\">Max Runtime</h2>\n <h3 class=\"state-meta\"> </h3>\n <span class=\"stat-value\">\n {{ stats.queueWithMaxRuntime ? stats.queueWithMaxRuntime : '-' }}\n </span>\n </div>\n\n <div class=\"stat col-3 p-4 border-0\">\n <h2 class=\"stat-title\">Max Throughput</h2>\n <h3 class=\"state-meta\"> </h3>\n <span class=\"stat-value\">\n {{ stats.queueWithMaxThroughput ? stats.queueWithMaxThroughput : '-' }}\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"card mt-4\" v-if=\"workload.length\">\n <div class=\"card-header\">Current Workload</div>\n <div class=\"table-responsive\">\n <table class=\"table card-table table-hover\">\n <thead>\n <tr>\n <th>Queue</th>\n <th>Processes</th>\n <th>Jobs</th>\n <th>Wait</th>\n </tr>\n </thead>\n <tbody>\n <tr v-for=\"queue in workload\">\n <td>\n <span>{{ queue.name.replace(/,/g, ', ') }}</span>\n </td>\n <td>{{ queue.processes ? queue.processes.toLocaleString() : 0 }}</td>\n <td>{{ queue.length ? queue.length.toLocaleString() : 0 }}</td>\n <td>{{ humanTime(queue.wait) }}</td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n\n <div class=\"card mt-4\" v-for=\"worker in workers\" :key=\"worker.name\">\n <div class=\"card-header\">{{ worker.name }}</div>\n <div class=\"table-responsive\">\n <table class=\"table card-table table-hover\">\n <thead>\n <tr>\n <th>Supervisor</th>\n <th>Processes</th>\n <th>Queues</th>\n <th>Balancing</th>\n </tr>\n </thead>\n <tbody>\n <tr v-for=\"supervisor in worker.supervisors\">\n <td class=\"ph2\">\n <span class=\"fw7\">{{ superVisorDisplayName(supervisor.name, worker.name) }}</span>\n </td>\n <td>{{ countProcesses(supervisor.processes) }}</td>\n <td>{{ supervisor.options.queue.replace(/,/g, ', ') }}</td>\n <td class=\"d-flex align-items-center\">\n <status :active=\"supervisor.options.balance\" class=\"mr-2\"/>\n <span v-if=\"supervisor.options.balance\">\n ({{ supervisor.options.balance.charAt(0).toUpperCase() + supervisor.options.balance.slice(1) }})\n </span>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n </section>\n </layout>\n</template>\n","import { render, staticRenderFns } from \"./Dashboard.vue?vue&type=template&id=a325dc2c&\"\nimport script from \"./Dashboard.vue?vue&type=script&lang=js&\"\nexport * from \"./Dashboard.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/* global window: false */\n'use strict';\n\nvar defaults = require('./core.defaults');\nvar helpers = require('../helpers/index');\n\ndefaults._set('global', {\n\tanimation: {\n\t\tduration: 1000,\n\t\teasing: 'easeOutQuart',\n\t\tonProgress: helpers.noop,\n\t\tonComplete: helpers.noop\n\t}\n});\n\nmodule.exports = {\n\tframeDuration: 17,\n\tanimations: [],\n\tdropFrames: 0,\n\trequest: null,\n\n\t/**\n\t * @param {Chart} chart - The chart to animate.\n\t * @param {Chart.Animation} animation - The animation that we will animate.\n\t * @param {Number} duration - The animation duration in ms.\n\t * @param {Boolean} lazy - if true, the chart is not marked as animating to enable more responsive interactions\n\t */\n\taddAnimation: function(chart, animation, duration, lazy) {\n\t\tvar animations = this.animations;\n\t\tvar i, ilen;\n\n\t\tanimation.chart = chart;\n\n\t\tif (!lazy) {\n\t\t\tchart.animating = true;\n\t\t}\n\n\t\tfor (i = 0, ilen = animations.length; i < ilen; ++i) {\n\t\t\tif (animations[i].chart === chart) {\n\t\t\t\tanimations[i] = animation;\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tanimations.push(animation);\n\n\t\t// If there are no animations queued, manually kickstart a digest, for lack of a better word\n\t\tif (animations.length === 1) {\n\t\t\tthis.requestAnimationFrame();\n\t\t}\n\t},\n\n\tcancelAnimation: function(chart) {\n\t\tvar index = helpers.findIndex(this.animations, function(animation) {\n\t\t\treturn animation.chart === chart;\n\t\t});\n\n\t\tif (index !== -1) {\n\t\t\tthis.animations.splice(index, 1);\n\t\t\tchart.animating = false;\n\t\t}\n\t},\n\n\trequestAnimationFrame: function() {\n\t\tvar me = this;\n\t\tif (me.request === null) {\n\t\t\t// Skip animation frame requests until the active one is executed.\n\t\t\t// This can happen when processing mouse events, e.g. 'mousemove'\n\t\t\t// and 'mouseout' events will trigger multiple renders.\n\t\t\tme.request = helpers.requestAnimFrame.call(window, function() {\n\t\t\t\tme.request = null;\n\t\t\t\tme.startDigest();\n\t\t\t});\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\tstartDigest: function() {\n\t\tvar me = this;\n\t\tvar startTime = Date.now();\n\t\tvar framesToDrop = 0;\n\n\t\tif (me.dropFrames > 1) {\n\t\t\tframesToDrop = Math.floor(me.dropFrames);\n\t\t\tme.dropFrames = me.dropFrames % 1;\n\t\t}\n\n\t\tme.advance(1 + framesToDrop);\n\n\t\tvar endTime = Date.now();\n\n\t\tme.dropFrames += (endTime - startTime) / me.frameDuration;\n\n\t\t// Do we have more stuff to animate?\n\t\tif (me.animations.length > 0) {\n\t\t\tme.requestAnimationFrame();\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\tadvance: function(count) {\n\t\tvar animations = this.animations;\n\t\tvar animation, chart;\n\t\tvar i = 0;\n\n\t\twhile (i < animations.length) {\n\t\t\tanimation = animations[i];\n\t\t\tchart = animation.chart;\n\n\t\t\tanimation.currentStep = (animation.currentStep || 0) + count;\n\t\t\tanimation.currentStep = Math.min(animation.currentStep, animation.numSteps);\n\n\t\t\thelpers.callback(animation.render, [chart, animation], chart);\n\t\t\thelpers.callback(animation.onAnimationProgress, [animation], chart);\n\n\t\t\tif (animation.currentStep >= animation.numSteps) {\n\t\t\t\thelpers.callback(animation.onAnimationComplete, [animation], chart);\n\t\t\t\tchart.animating = false;\n\t\t\t\tanimations.splice(i, 1);\n\t\t\t} else {\n\t\t\t\t++i;\n\t\t\t}\n\t\t}\n\t}\n};\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('layout',[_c('section',{staticClass:\"main-content\"},[_c('div',{staticClass:\"card\"},[_c('div',{staticClass:\"card-header\"},[_vm._v(\"Recent Jobs\")]),_vm._v(\" \"),_c('job-table')],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--4-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Jobs.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--4-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Jobs.vue?vue&type=script&lang=js&\"","<script type=\"text/ecmascript-6\">\n import Status from '../../components/Status/Status.vue'\n\n export default {\n components: {Status},\n\n\n /**\n * The component's data.\n */\n data() {\n return {\n page: 1,\n perPage: 50,\n totalPages: 1,\n loadState: true,\n jobs: []\n };\n },\n\n\n /**\n * Prepare the component.\n */\n created() {\n this.loadJobs();\n\n this.refreshJobsPeriodically();\n },\n\n /**\n * Clean after the component is destroyed.\n */\n destroyed(){\n clearInterval(this.interval);\n },\n\n\n /**\n * Watch these properties for changes.\n */\n watch: {\n '$route'() {\n this.page = 1;\n\n this.loadJobs();\n }\n },\n\n\n methods: {\n /**\n * Load the jobs.\n */\n loadJobs(starting = -1, preload = true) {\n if (preload) {\n this.loadState = true;\n }\n\n return this.$http.get('/horizon/api/jobs/recent' + '?starting_at=' + starting + '&limit=' + this.perPage)\n .then(response => {\n this.jobs = response.data.jobs;\n\n this.totalPages = Math.ceil(response.data.total / this.perPage);\n\n this.loadState = false;\n\n return response.data.jobs;\n });\n },\n\n\n /**\n * Refresh the jobs every period of time.\n */\n refreshJobsPeriodically() {\n this.interval = setInterval(() => {\n if (this.page != 1) {\n return;\n }\n\n this.loadJobs(-1, false);\n }, 3000);\n },\n\n\n /**\n * Load the jobs for the previous page.\n */\n previous() {\n this.loadJobs(\n ((this.page - 2) * this.perPage) - 1\n );\n\n this.page -= 1;\n },\n\n\n /**\n * Load the jobs for the next page.\n */\n next() {\n this.loadJobs(\n (this.page * this.perPage) - 1\n );\n\n this.page += 1;\n }\n },\n }\n</script>\n\n<template>\n <div class=\"table-responsive\">\n <loader :yes=\"loadState\"/>\n\n <p class=\"text-center m-0 p-5\" v-if=\"!loadState && !jobs.length\">\n There aren't any recent jobs.\n </p>\n\n <table v-if=\"! loadState && jobs.length\" class=\"table card-table table-hover\">\n <thead>\n <tr>\n <th>Job</th>\n <th>On</th>\n <th>Tags</th>\n <th>Queued At</th>\n <th>Runtime</th>\n <th>Status</th>\n </tr>\n </thead>\n\n <tbody>\n <tr v-for=\"job in jobs\">\n <td>\n <router-link v-if=\"job.status === 'failed'\" data-toggle=\"tooltip\" :to=\"{ name: 'failed.detail', params: { jobId: job.id }}\" :title=\"job.name\">\n {{ jobBaseName(job.name) }}\n </router-link>\n <span data-toggle=\"tooltip\" :title=\"job.name\" v-else>{{ jobBaseName(job.name) }}</span>\n </td>\n <td>{{ job.queue }}</td>\n <td>\n <span data-toggle=\"tooltip\"\n :title=\"displayableTagsList(job.payload.tags, false)\">{{ displayableTagsList(job.payload.tags) }}</span>\n </td>\n <td class=\"text-nowrap\">{{ readableTimestamp(job.payload.pushedAt) }}</td>\n <td>\n <span v-if=\"job.status == 'failed'\">{{ job.failed_at ? (job.failed_at - job.reserved_at).toFixed(3)+'s' : '-' }}</span>\n <span v-else=\"\">{{ job.completed_at ? (job.completed_at - job.reserved_at).toFixed(3)+'s' : '-' }}</span>\n </td>\n <td>\n <status :active=\"job.status == 'completed'\" :pending=\"job.status == 'reserved' || job.status == 'pending'\"/>\n </td>\n </tr>\n </tbody>\n </table>\n\n <div v-if=\"! loadState && jobs.length\" class=\"p-3 mt-3 d-flex justify-content-between\">\n <button @click=\"previous\" class=\"btn btn-primary btn-md\" :disabled=\"page==1\">Previous</button>\n <button @click=\"next\" class=\"btn btn-primary btn-md\" :disabled=\"page>=totalPages\">Next</button>\n </div>\n </div>\n</template>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--4-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--4-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=js&\"","<script type=\"text/ecmascript-6\">\n import Layout from '../../layouts/MainLayout.vue'\n import JobTable from './Jobs.vue'\n\n export default {\n components: {JobTable, Layout},\n\n\n /**\n * Prepare the component.\n */\n mounted() {\n document.title = \"Horizon - Recent Jobs\";\n }\n }\n</script>\n\n<template>\n <layout>\n <section class=\"main-content\">\n <div class=\"card\">\n <div class=\"card-header\">Recent Jobs</div>\n\n <job-table/>\n </div>\n </section>\n </layout>\n</template>\n\n","import { render, staticRenderFns } from \"./Jobs.vue?vue&type=template&id=5be2ac54&\"\nimport script from \"./Jobs.vue?vue&type=script&lang=js&\"\nexport * from \"./Jobs.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"table-responsive\"},[_c('loader',{attrs:{\"yes\":_vm.loadState}}),_vm._v(\" \"),(!_vm.loadState && !_vm.jobs.length)?_c('p',{staticClass:\"text-center m-0 p-5\"},[_vm._v(\"\\n There aren't any recent jobs.\\n \")]):_vm._e(),_vm._v(\" \"),(! _vm.loadState && _vm.jobs.length)?_c('table',{staticClass:\"table card-table table-hover\"},[_vm._m(0),_vm._v(\" \"),_c('tbody',_vm._l((_vm.jobs),function(job){return _c('tr',[_c('td',[(job.status === 'failed')?_c('router-link',{attrs:{\"data-toggle\":\"tooltip\",\"to\":{ name: 'failed.detail', params: { jobId: job.id }},\"title\":job.name}},[_vm._v(\"\\n \"+_vm._s(_vm.jobBaseName(job.name))+\"\\n \")]):_c('span',{attrs:{\"data-toggle\":\"tooltip\",\"title\":job.name}},[_vm._v(_vm._s(_vm.jobBaseName(job.name)))])],1),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(job.queue))]),_vm._v(\" \"),_c('td',[_c('span',{attrs:{\"data-toggle\":\"tooltip\",\"title\":_vm.displayableTagsList(job.payload.tags, false)}},[_vm._v(_vm._s(_vm.displayableTagsList(job.payload.tags)))])]),_vm._v(\" \"),_c('td',{staticClass:\"text-nowrap\"},[_vm._v(_vm._s(_vm.readableTimestamp(job.payload.pushedAt)))]),_vm._v(\" \"),_c('td',[(job.status == 'failed')?_c('span',[_vm._v(_vm._s(job.failed_at ? (job.failed_at - job.reserved_at).toFixed(3)+'s' : '-'))]):_c('span',[_vm._v(_vm._s(job.completed_at ? (job.completed_at - job.reserved_at).toFixed(3)+'s' : '-'))])]),_vm._v(\" \"),_c('td',[_c('status',{attrs:{\"active\":job.status == 'completed',\"pending\":job.status == 'reserved' || job.status == 'pending'}})],1)])}),0)]):_vm._e(),_vm._v(\" \"),(! _vm.loadState && _vm.jobs.length)?_c('div',{staticClass:\"p-3 mt-3 d-flex justify-content-between\"},[_c('button',{staticClass:\"btn btn-primary btn-md\",attrs:{\"disabled\":_vm.page==1},on:{\"click\":_vm.previous}},[_vm._v(\"Previous\")]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-primary btn-md\",attrs:{\"disabled\":_vm.page>=_vm.totalPages},on:{\"click\":_vm.next}},[_vm._v(\"Next\")])]):_vm._e()],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('thead',[_c('tr',[_c('th',[_vm._v(\"Job\")]),_vm._v(\" \"),_c('th',[_vm._v(\"On\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Tags\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Queued At\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Runtime\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Status\")])])])}]\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./Index.vue?vue&type=template&id=6c7b9ccf&\"\nimport script from \"./Index.vue?vue&type=script&lang=js&\"\nexport * from \"./Index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","'use strict';\n\nvar helpers = require('../helpers/index');\n\nfunction filterByPosition(array, position) {\n\treturn helpers.where(array, function(v) {\n\t\treturn v.position === position;\n\t});\n}\n\nfunction sortByWeight(array, reverse) {\n\tarray.forEach(function(v, i) {\n\t\tv._tmpIndex_ = i;\n\t\treturn v;\n\t});\n\tarray.sort(function(a, b) {\n\t\tvar v0 = reverse ? b : a;\n\t\tvar v1 = reverse ? a : b;\n\t\treturn v0.weight === v1.weight ?\n\t\t\tv0._tmpIndex_ - v1._tmpIndex_ :\n\t\t\tv0.weight - v1.weight;\n\t});\n\tarray.forEach(function(v) {\n\t\tdelete v._tmpIndex_;\n\t});\n}\n\n/**\n * @interface ILayoutItem\n * @prop {String} position - The position of the item in the chart layout. Possible values are\n * 'left', 'top', 'right', 'bottom', and 'chartArea'\n * @prop {Number} weight - The weight used to sort the item. Higher weights are further away from the chart area\n * @prop {Boolean} fullWidth - if true, and the item is horizontal, then push vertical boxes down\n * @prop {Function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom)\n * @prop {Function} update - Takes two parameters: width and height. Returns size of item\n * @prop {Function} getPadding - Returns an object with padding on the edges\n * @prop {Number} width - Width of item. Must be valid after update()\n * @prop {Number} height - Height of item. Must be valid after update()\n * @prop {Number} left - Left edge of the item. Set by layout system and cannot be used in update\n * @prop {Number} top - Top edge of the item. Set by layout system and cannot be used in update\n * @prop {Number} right - Right edge of the item. Set by layout system and cannot be used in update\n * @prop {Number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update\n */\n\n// The layout service is very self explanatory. It's responsible for the layout within a chart.\n// Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need\n// It is this service's responsibility of carrying out that layout.\nmodule.exports = {\n\tdefaults: {},\n\n\t/**\n\t * Register a box to a chart.\n\t * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title.\n\t * @param {Chart} chart - the chart to use\n\t * @param {ILayoutItem} item - the item to add to be layed out\n\t */\n\taddBox: function(chart, item) {\n\t\tif (!chart.boxes) {\n\t\t\tchart.boxes = [];\n\t\t}\n\n\t\t// initialize item with default values\n\t\titem.fullWidth = item.fullWidth || false;\n\t\titem.position = item.position || 'top';\n\t\titem.weight = item.weight || 0;\n\n\t\tchart.boxes.push(item);\n\t},\n\n\t/**\n\t * Remove a layoutItem from a chart\n\t * @param {Chart} chart - the chart to remove the box from\n\t * @param {Object} layoutItem - the item to remove from the layout\n\t */\n\tremoveBox: function(chart, layoutItem) {\n\t\tvar index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n\t\tif (index !== -1) {\n\t\t\tchart.boxes.splice(index, 1);\n\t\t}\n\t},\n\n\t/**\n\t * Sets (or updates) options on the given `item`.\n\t * @param {Chart} chart - the chart in which the item lives (or will be added to)\n\t * @param {Object} item - the item to configure with the given options\n\t * @param {Object} options - the new item options.\n\t */\n\tconfigure: function(chart, item, options) {\n\t\tvar props = ['fullWidth', 'position', 'weight'];\n\t\tvar ilen = props.length;\n\t\tvar i = 0;\n\t\tvar prop;\n\n\t\tfor (; i < ilen; ++i) {\n\t\t\tprop = props[i];\n\t\t\tif (options.hasOwnProperty(prop)) {\n\t\t\t\titem[prop] = options[prop];\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Fits boxes of the given chart into the given size by having each box measure itself\n\t * then running a fitting algorithm\n\t * @param {Chart} chart - the chart\n\t * @param {Number} width - the width to fit into\n\t * @param {Number} height - the height to fit into\n\t */\n\tupdate: function(chart, width, height) {\n\t\tif (!chart) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar layoutOptions = chart.options.layout || {};\n\t\tvar padding = helpers.options.toPadding(layoutOptions.padding);\n\t\tvar leftPadding = padding.left;\n\t\tvar rightPadding = padding.right;\n\t\tvar topPadding = padding.top;\n\t\tvar bottomPadding = padding.bottom;\n\n\t\tvar leftBoxes = filterByPosition(chart.boxes, 'left');\n\t\tvar rightBoxes = filterByPosition(chart.boxes, 'right');\n\t\tvar topBoxes = filterByPosition(chart.boxes, 'top');\n\t\tvar bottomBoxes = filterByPosition(chart.boxes, 'bottom');\n\t\tvar chartAreaBoxes = filterByPosition(chart.boxes, 'chartArea');\n\n\t\t// Sort boxes by weight. A higher weight is further away from the chart area\n\t\tsortByWeight(leftBoxes, true);\n\t\tsortByWeight(rightBoxes, false);\n\t\tsortByWeight(topBoxes, true);\n\t\tsortByWeight(bottomBoxes, false);\n\n\t\t// Essentially we now have any number of boxes on each of the 4 sides.\n\t\t// Our canvas looks like the following.\n\t\t// The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and\n\t\t// B1 is the bottom axis\n\t\t// There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays\n\t\t// These locations are single-box locations only, when trying to register a chartArea location that is already taken,\n\t\t// an error will be thrown.\n\t\t//\n\t\t// |----------------------------------------------------|\n\t\t// | T1 (Full Width) |\n\t\t// |----------------------------------------------------|\n\t\t// | | | T2 | |\n\t\t// | |----|-------------------------------------|----|\n\t\t// | | | C1 | | C2 | |\n\t\t// | | |----| |----| |\n\t\t// | | | | |\n\t\t// | L1 | L2 | ChartArea (C0) | R1 |\n\t\t// | | | | |\n\t\t// | | |----| |----| |\n\t\t// | | | C3 | | C4 | |\n\t\t// | |----|-------------------------------------|----|\n\t\t// | | | B1 | |\n\t\t// |----------------------------------------------------|\n\t\t// | B2 (Full Width) |\n\t\t// |----------------------------------------------------|\n\t\t//\n\t\t// What we do to find the best sizing, we do the following\n\t\t// 1. Determine the minimum size of the chart area.\n\t\t// 2. Split the remaining width equally between each vertical axis\n\t\t// 3. Split the remaining height equally between each horizontal axis\n\t\t// 4. Give each layout the maximum size it can be. The layout will return it's minimum size\n\t\t// 5. Adjust the sizes of each axis based on it's minimum reported size.\n\t\t// 6. Refit each axis\n\t\t// 7. Position each axis in the final location\n\t\t// 8. Tell the chart the final location of the chart area\n\t\t// 9. Tell any axes that overlay the chart area the positions of the chart area\n\n\t\t// Step 1\n\t\tvar chartWidth = width - leftPadding - rightPadding;\n\t\tvar chartHeight = height - topPadding - bottomPadding;\n\t\tvar chartAreaWidth = chartWidth / 2; // min 50%\n\t\tvar chartAreaHeight = chartHeight / 2; // min 50%\n\n\t\t// Step 2\n\t\tvar verticalBoxWidth = (width - chartAreaWidth) / (leftBoxes.length + rightBoxes.length);\n\n\t\t// Step 3\n\t\tvar horizontalBoxHeight = (height - chartAreaHeight) / (topBoxes.length + bottomBoxes.length);\n\n\t\t// Step 4\n\t\tvar maxChartAreaWidth = chartWidth;\n\t\tvar maxChartAreaHeight = chartHeight;\n\t\tvar minBoxSizes = [];\n\n\t\tfunction getMinimumBoxSize(box) {\n\t\t\tvar minSize;\n\t\t\tvar isHorizontal = box.isHorizontal();\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tminSize = box.update(box.fullWidth ? chartWidth : maxChartAreaWidth, horizontalBoxHeight);\n\t\t\t\tmaxChartAreaHeight -= minSize.height;\n\t\t\t} else {\n\t\t\t\tminSize = box.update(verticalBoxWidth, maxChartAreaHeight);\n\t\t\t\tmaxChartAreaWidth -= minSize.width;\n\t\t\t}\n\n\t\t\tminBoxSizes.push({\n\t\t\t\thorizontal: isHorizontal,\n\t\t\t\tminSize: minSize,\n\t\t\t\tbox: box,\n\t\t\t});\n\t\t}\n\n\t\thelpers.each(leftBoxes.concat(rightBoxes, topBoxes, bottomBoxes), getMinimumBoxSize);\n\n\t\t// If a horizontal box has padding, we move the left boxes over to avoid ugly charts (see issue #2478)\n\t\tvar maxHorizontalLeftPadding = 0;\n\t\tvar maxHorizontalRightPadding = 0;\n\t\tvar maxVerticalTopPadding = 0;\n\t\tvar maxVerticalBottomPadding = 0;\n\n\t\thelpers.each(topBoxes.concat(bottomBoxes), function(horizontalBox) {\n\t\t\tif (horizontalBox.getPadding) {\n\t\t\t\tvar boxPadding = horizontalBox.getPadding();\n\t\t\t\tmaxHorizontalLeftPadding = Math.max(maxHorizontalLeftPadding, boxPadding.left);\n\t\t\t\tmaxHorizontalRightPadding = Math.max(maxHorizontalRightPadding, boxPadding.right);\n\t\t\t}\n\t\t});\n\n\t\thelpers.each(leftBoxes.concat(rightBoxes), function(verticalBox) {\n\t\t\tif (verticalBox.getPadding) {\n\t\t\t\tvar boxPadding = verticalBox.getPadding();\n\t\t\t\tmaxVerticalTopPadding = Math.max(maxVerticalTopPadding, boxPadding.top);\n\t\t\t\tmaxVerticalBottomPadding = Math.max(maxVerticalBottomPadding, boxPadding.bottom);\n\t\t\t}\n\t\t});\n\n\t\t// At this point, maxChartAreaHeight and maxChartAreaWidth are the size the chart area could\n\t\t// be if the axes are drawn at their minimum sizes.\n\t\t// Steps 5 & 6\n\t\tvar totalLeftBoxesWidth = leftPadding;\n\t\tvar totalRightBoxesWidth = rightPadding;\n\t\tvar totalTopBoxesHeight = topPadding;\n\t\tvar totalBottomBoxesHeight = bottomPadding;\n\n\t\t// Function to fit a box\n\t\tfunction fitBox(box) {\n\t\t\tvar minBoxSize = helpers.findNextWhere(minBoxSizes, function(minBox) {\n\t\t\t\treturn minBox.box === box;\n\t\t\t});\n\n\t\t\tif (minBoxSize) {\n\t\t\t\tif (box.isHorizontal()) {\n\t\t\t\t\tvar scaleMargin = {\n\t\t\t\t\t\tleft: Math.max(totalLeftBoxesWidth, maxHorizontalLeftPadding),\n\t\t\t\t\t\tright: Math.max(totalRightBoxesWidth, maxHorizontalRightPadding),\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tbottom: 0\n\t\t\t\t\t};\n\n\t\t\t\t\t// Don't use min size here because of label rotation. When the labels are rotated, their rotation highly depends\n\t\t\t\t\t// on the margin. Sometimes they need to increase in size slightly\n\t\t\t\t\tbox.update(box.fullWidth ? chartWidth : maxChartAreaWidth, chartHeight / 2, scaleMargin);\n\t\t\t\t} else {\n\t\t\t\t\tbox.update(minBoxSize.minSize.width, maxChartAreaHeight);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Update, and calculate the left and right margins for the horizontal boxes\n\t\thelpers.each(leftBoxes.concat(rightBoxes), fitBox);\n\n\t\thelpers.each(leftBoxes, function(box) {\n\t\t\ttotalLeftBoxesWidth += box.width;\n\t\t});\n\n\t\thelpers.each(rightBoxes, function(box) {\n\t\t\ttotalRightBoxesWidth += box.width;\n\t\t});\n\n\t\t// Set the Left and Right margins for the horizontal boxes\n\t\thelpers.each(topBoxes.concat(bottomBoxes), fitBox);\n\n\t\t// Figure out how much margin is on the top and bottom of the vertical boxes\n\t\thelpers.each(topBoxes, function(box) {\n\t\t\ttotalTopBoxesHeight += box.height;\n\t\t});\n\n\t\thelpers.each(bottomBoxes, function(box) {\n\t\t\ttotalBottomBoxesHeight += box.height;\n\t\t});\n\n\t\tfunction finalFitVerticalBox(box) {\n\t\t\tvar minBoxSize = helpers.findNextWhere(minBoxSizes, function(minSize) {\n\t\t\t\treturn minSize.box === box;\n\t\t\t});\n\n\t\t\tvar scaleMargin = {\n\t\t\t\tleft: 0,\n\t\t\t\tright: 0,\n\t\t\t\ttop: totalTopBoxesHeight,\n\t\t\t\tbottom: totalBottomBoxesHeight\n\t\t\t};\n\n\t\t\tif (minBoxSize) {\n\t\t\t\tbox.update(minBoxSize.minSize.width, maxChartAreaHeight, scaleMargin);\n\t\t\t}\n\t\t}\n\n\t\t// Let the left layout know the final margin\n\t\thelpers.each(leftBoxes.concat(rightBoxes), finalFitVerticalBox);\n\n\t\t// Recalculate because the size of each layout might have changed slightly due to the margins (label rotation for instance)\n\t\ttotalLeftBoxesWidth = leftPadding;\n\t\ttotalRightBoxesWidth = rightPadding;\n\t\ttotalTopBoxesHeight = topPadding;\n\t\ttotalBottomBoxesHeight = bottomPadding;\n\n\t\thelpers.each(leftBoxes, function(box) {\n\t\t\ttotalLeftBoxesWidth += box.width;\n\t\t});\n\n\t\thelpers.each(rightBoxes, function(box) {\n\t\t\ttotalRightBoxesWidth += box.width;\n\t\t});\n\n\t\thelpers.each(topBoxes, function(box) {\n\t\t\ttotalTopBoxesHeight += box.height;\n\t\t});\n\t\thelpers.each(bottomBoxes, function(box) {\n\t\t\ttotalBottomBoxesHeight += box.height;\n\t\t});\n\n\t\t// We may be adding some padding to account for rotated x axis labels\n\t\tvar leftPaddingAddition = Math.max(maxHorizontalLeftPadding - totalLeftBoxesWidth, 0);\n\t\ttotalLeftBoxesWidth += leftPaddingAddition;\n\t\ttotalRightBoxesWidth += Math.max(maxHorizontalRightPadding - totalRightBoxesWidth, 0);\n\n\t\tvar topPaddingAddition = Math.max(maxVerticalTopPadding - totalTopBoxesHeight, 0);\n\t\ttotalTopBoxesHeight += topPaddingAddition;\n\t\ttotalBottomBoxesHeight += Math.max(maxVerticalBottomPadding - totalBottomBoxesHeight, 0);\n\n\t\t// Figure out if our chart area changed. This would occur if the dataset layout label rotation\n\t\t// changed due to the application of the margins in step 6. Since we can only get bigger, this is safe to do\n\t\t// without calling `fit` again\n\t\tvar newMaxChartAreaHeight = height - totalTopBoxesHeight - totalBottomBoxesHeight;\n\t\tvar newMaxChartAreaWidth = width - totalLeftBoxesWidth - totalRightBoxesWidth;\n\n\t\tif (newMaxChartAreaWidth !== maxChartAreaWidth || newMaxChartAreaHeight !== maxChartAreaHeight) {\n\t\t\thelpers.each(leftBoxes, function(box) {\n\t\t\t\tbox.height = newMaxChartAreaHeight;\n\t\t\t});\n\n\t\t\thelpers.each(rightBoxes, function(box) {\n\t\t\t\tbox.height = newMaxChartAreaHeight;\n\t\t\t});\n\n\t\t\thelpers.each(topBoxes, function(box) {\n\t\t\t\tif (!box.fullWidth) {\n\t\t\t\t\tbox.width = newMaxChartAreaWidth;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\thelpers.each(bottomBoxes, function(box) {\n\t\t\t\tif (!box.fullWidth) {\n\t\t\t\t\tbox.width = newMaxChartAreaWidth;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tmaxChartAreaHeight = newMaxChartAreaHeight;\n\t\t\tmaxChartAreaWidth = newMaxChartAreaWidth;\n\t\t}\n\n\t\t// Step 7 - Position the boxes\n\t\tvar left = leftPadding + leftPaddingAddition;\n\t\tvar top = topPadding + topPaddingAddition;\n\n\t\tfunction placeBox(box) {\n\t\t\tif (box.isHorizontal()) {\n\t\t\t\tbox.left = box.fullWidth ? leftPadding : totalLeftBoxesWidth;\n\t\t\t\tbox.right = box.fullWidth ? width - rightPadding : totalLeftBoxesWidth + maxChartAreaWidth;\n\t\t\t\tbox.top = top;\n\t\t\t\tbox.bottom = top + box.height;\n\n\t\t\t\t// Move to next point\n\t\t\t\ttop = box.bottom;\n\n\t\t\t} else {\n\n\t\t\t\tbox.left = left;\n\t\t\t\tbox.right = left + box.width;\n\t\t\t\tbox.top = totalTopBoxesHeight;\n\t\t\t\tbox.bottom = totalTopBoxesHeight + maxChartAreaHeight;\n\n\t\t\t\t// Move to next point\n\t\t\t\tleft = box.right;\n\t\t\t}\n\t\t}\n\n\t\thelpers.each(leftBoxes.concat(topBoxes), placeBox);\n\n\t\t// Account for chart width and height\n\t\tleft += maxChartAreaWidth;\n\t\ttop += maxChartAreaHeight;\n\n\t\thelpers.each(rightBoxes, placeBox);\n\t\thelpers.each(bottomBoxes, placeBox);\n\n\t\t// Step 8\n\t\tchart.chartArea = {\n\t\t\tleft: totalLeftBoxesWidth,\n\t\t\ttop: totalTopBoxesHeight,\n\t\t\tright: totalLeftBoxesWidth + maxChartAreaWidth,\n\t\t\tbottom: totalTopBoxesHeight + maxChartAreaHeight\n\t\t};\n\n\t\t// Step 9\n\t\thelpers.each(chartAreaBoxes, function(box) {\n\t\t\tbox.left = chart.chartArea.left;\n\t\t\tbox.top = chart.chartArea.top;\n\t\t\tbox.right = chart.chartArea.right;\n\t\t\tbox.bottom = chart.chartArea.bottom;\n\n\t\t\tbox.update(maxChartAreaWidth, maxChartAreaHeight);\n\t\t});\n\t}\n};\n","'use strict';\n\nvar helpers = require('../helpers/index');\n\n/**\n * Namespace to hold static tick generation functions\n * @namespace Chart.Ticks\n */\nmodule.exports = {\n\t/**\n\t * Namespace to hold formatters for different types of ticks\n\t * @namespace Chart.Ticks.formatters\n\t */\n\tformatters: {\n\t\t/**\n\t\t * Formatter for value labels\n\t\t * @method Chart.Ticks.formatters.values\n\t\t * @param value the value to display\n\t\t * @return {String|Array} the label to display\n\t\t */\n\t\tvalues: function(value) {\n\t\t\treturn helpers.isArray(value) ? value : '' + value;\n\t\t},\n\n\t\t/**\n\t\t * Formatter for linear numeric ticks\n\t\t * @method Chart.Ticks.formatters.linear\n\t\t * @param tickValue {Number} the value to be formatted\n\t\t * @param index {Number} the position of the tickValue parameter in the ticks array\n\t\t * @param ticks {Array<Number>} the list of ticks being converted\n\t\t * @return {String} string representation of the tickValue parameter\n\t\t */\n\t\tlinear: function(tickValue, index, ticks) {\n\t\t\t// If we have lots of ticks, don't use the ones\n\t\t\tvar delta = ticks.length > 3 ? ticks[2] - ticks[1] : ticks[1] - ticks[0];\n\n\t\t\t// If we have a number like 2.5 as the delta, figure out how many decimal places we need\n\t\t\tif (Math.abs(delta) > 1) {\n\t\t\t\tif (tickValue !== Math.floor(tickValue)) {\n\t\t\t\t\t// not an integer\n\t\t\t\t\tdelta = tickValue - Math.floor(tickValue);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar logDelta = helpers.log10(Math.abs(delta));\n\t\t\tvar tickString = '';\n\n\t\t\tif (tickValue !== 0) {\n\t\t\t\tvar maxTick = Math.max(Math.abs(ticks[0]), Math.abs(ticks[ticks.length - 1]));\n\t\t\t\tif (maxTick < 1e-4) { // all ticks are small numbers; use scientific notation\n\t\t\t\t\tvar logTick = helpers.log10(Math.abs(tickValue));\n\t\t\t\t\ttickString = tickValue.toExponential(Math.floor(logTick) - Math.floor(logDelta));\n\t\t\t\t} else {\n\t\t\t\t\tvar numDecimal = -1 * Math.floor(logDelta);\n\t\t\t\t\tnumDecimal = Math.max(Math.min(numDecimal, 20), 0); // toFixed has a max of 20 decimal places\n\t\t\t\t\ttickString = tickValue.toFixed(numDecimal);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ttickString = '0'; // never show decimal places for 0\n\t\t\t}\n\n\t\t\treturn tickString;\n\t\t},\n\n\t\tlogarithmic: function(tickValue, index, ticks) {\n\t\t\tvar remain = tickValue / (Math.pow(10, Math.floor(helpers.log10(tickValue))));\n\n\t\t\tif (tickValue === 0) {\n\t\t\t\treturn '0';\n\t\t\t} else if (remain === 1 || remain === 2 || remain === 5 || index === 0 || index === ticks.length - 1) {\n\t\t\t\treturn tickValue.toExponential();\n\t\t\t}\n\t\t\treturn '';\n\t\t}\n\t}\n};\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"statusIcon\"},[(_vm.active)?_c('svg',{staticClass:\"fill-success\"},[_c('use',{attrs:{\"xmlns:xlink\":\"http://www.w3.org/1999/xlink\",\"xlink:href\":\"#zondicon-checkmark-outline\"}})]):(!_vm.pending)?_c('svg',{staticClass:\"fill-danger\"},[_c('use',{attrs:{\"xmlns:xlink\":\"http://www.w3.org/1999/xlink\",\"xlink:href\":\"#zondicon-close-outline\"}})]):_vm._e(),_vm._v(\" \"),(_vm.pending)?_c('svg',{staticClass:\"fill-warning\"},[_c('use',{attrs:{\"xmlns:xlink\":\"http://www.w3.org/1999/xlink\",\"xlink:href\":\"#zondicon-pause-outline\"}})]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--4-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Status.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--4-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Status.vue?vue&type=script&lang=js&\"","<script type=\"text/ecmascript-6\">\n export default {\n props: {\n active: {},\n pending: {},\n activeClass: {\n default: 'fsuccess'\n },\n },\n\n\n /**\n * The component's data.\n */\n data() {\n return {\n theActiveClass: this.activeClass\n }\n },\n }\n</script>\n\n<template>\n <div class=\"statusIcon\">\n <svg v-if=\"active\" class=\"fill-success\">\n <use xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#zondicon-checkmark-outline\"></use>\n </svg>\n <svg v-else-if=\"!pending\" class=\"fill-danger\">\n <use xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#zondicon-close-outline\"></use>\n </svg>\n <svg v-if=\"pending\" class=\"fill-warning\">\n <use xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#zondicon-pause-outline\"></use>\n </svg>\n </div>\n</template>\n\n","import { render, staticRenderFns } from \"./Status.vue?vue&type=template&id=29f6cb2b&\"\nimport script from \"./Status.vue?vue&type=script&lang=js&\"\nexport * from \"./Status.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","'use strict';\n\nvar helpers = require('../helpers/index');\nvar basic = require('./platform.basic');\nvar dom = require('./platform.dom');\n\n// @TODO Make possible to select another platform at build time.\nvar implementation = dom._enabled ? dom : basic;\n\n/**\n * @namespace Chart.platform\n * @see https://chartjs.gitbooks.io/proposals/content/Platform.html\n * @since 2.4.0\n */\nmodule.exports = helpers.extend({\n\t/**\n\t * @since 2.7.0\n\t */\n\tinitialize: function() {},\n\n\t/**\n\t * Called at chart construction time, returns a context2d instance implementing\n\t * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}.\n\t * @param {*} item - The native item from which to acquire context (platform specific)\n\t * @param {Object} options - The chart options\n\t * @returns {CanvasRenderingContext2D} context2d instance\n\t */\n\tacquireContext: function() {},\n\n\t/**\n\t * Called at chart destruction time, releases any resources associated to the context\n\t * previously returned by the acquireContext() method.\n\t * @param {CanvasRenderingContext2D} context - The context2d instance\n\t * @returns {Boolean} true if the method succeeded, else false\n\t */\n\treleaseContext: function() {},\n\n\t/**\n\t * Registers the specified listener on the given chart.\n\t * @param {Chart} chart - Chart from which to listen for event\n\t * @param {String} type - The ({@link IEvent}) type to listen for\n\t * @param {Function} listener - Receives a notification (an object that implements\n\t * the {@link IEvent} interface) when an event of the specified type occurs.\n\t */\n\taddEventListener: function() {},\n\n\t/**\n\t * Removes the specified listener previously registered with addEventListener.\n\t * @param {Chart} chart -Chart from which to remove the listener\n\t * @param {String} type - The ({@link IEvent}) type to remove\n\t * @param {Function} listener - The listener function to remove from the event target.\n\t */\n\tremoveEventListener: function() {}\n\n}, implementation);\n\n/**\n * @interface IPlatform\n * Allows abstracting platform dependencies away from the chart\n * @borrows Chart.platform.acquireContext as acquireContext\n * @borrows Chart.platform.releaseContext as releaseContext\n * @borrows Chart.platform.addEventListener as addEventListener\n * @borrows Chart.platform.removeEventListener as removeEventListener\n */\n\n/**\n * @interface IEvent\n * @prop {String} type - The event type name, possible values are:\n * 'contextmenu', 'mouseenter', 'mousedown', 'mousemove', 'mouseup', 'mouseout',\n * 'click', 'dblclick', 'keydown', 'keypress', 'keyup' and 'resize'\n * @prop {*} native - The original native event (null for emulated events, e.g. 'resize')\n * @prop {Number} x - The mouse x position, relative to the canvas (null for incompatible events)\n * @prop {Number} y - The mouse y position, relative to the canvas (null for incompatible events)\n */\n","'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.Radar = function(context, config) {\n\t\tconfig.type = 'radar';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n","'use strict';\n\nmodule.exports = {};\nmodule.exports.filler = require('./plugin.filler');\nmodule.exports.legend = require('./plugin.legend');\nmodule.exports.title = require('./plugin.title');\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","/* MIT license */\nvar colorNames = require('color-name');\n\nmodule.exports = {\n getRgba: getRgba,\n getHsla: getHsla,\n getRgb: getRgb,\n getHsl: getHsl,\n getHwb: getHwb,\n getAlpha: getAlpha,\n\n hexString: hexString,\n rgbString: rgbString,\n rgbaString: rgbaString,\n percentString: percentString,\n percentaString: percentaString,\n hslString: hslString,\n hslaString: hslaString,\n hwbString: hwbString,\n keyword: keyword\n}\n\nfunction getRgba(string) {\n if (!string) {\n return;\n }\n var abbr = /^#([a-fA-F0-9]{3})$/i,\n hex = /^#([a-fA-F0-9]{6})$/i,\n rgba = /^rgba?\\(\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i,\n per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i,\n keyword = /(\\w+)/;\n\n var rgb = [0, 0, 0],\n a = 1,\n match = string.match(abbr);\n if (match) {\n match = match[1];\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match[i] + match[i], 16);\n }\n }\n else if (match = string.match(hex)) {\n match = match[1];\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match.slice(i * 2, i * 2 + 2), 16);\n }\n }\n else if (match = string.match(rgba)) {\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match[i + 1]);\n }\n a = parseFloat(match[4]);\n }\n else if (match = string.match(per)) {\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n }\n a = parseFloat(match[4]);\n }\n else if (match = string.match(keyword)) {\n if (match[1] == \"transparent\") {\n return [0, 0, 0, 0];\n }\n rgb = colorNames[match[1]];\n if (!rgb) {\n return;\n }\n }\n\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = scale(rgb[i], 0, 255);\n }\n if (!a && a != 0) {\n a = 1;\n }\n else {\n a = scale(a, 0, 1);\n }\n rgb[3] = a;\n return rgb;\n}\n\nfunction getHsla(string) {\n if (!string) {\n return;\n }\n var hsl = /^hsla?\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n var match = string.match(hsl);\n if (match) {\n var alpha = parseFloat(match[4]);\n var h = scale(parseInt(match[1]), 0, 360),\n s = scale(parseFloat(match[2]), 0, 100),\n l = scale(parseFloat(match[3]), 0, 100),\n a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n return [h, s, l, a];\n }\n}\n\nfunction getHwb(string) {\n if (!string) {\n return;\n }\n var hwb = /^hwb\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n var match = string.match(hwb);\n if (match) {\n var alpha = parseFloat(match[4]);\n var h = scale(parseInt(match[1]), 0, 360),\n w = scale(parseFloat(match[2]), 0, 100),\n b = scale(parseFloat(match[3]), 0, 100),\n a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n return [h, w, b, a];\n }\n}\n\nfunction getRgb(string) {\n var rgba = getRgba(string);\n return rgba && rgba.slice(0, 3);\n}\n\nfunction getHsl(string) {\n var hsla = getHsla(string);\n return hsla && hsla.slice(0, 3);\n}\n\nfunction getAlpha(string) {\n var vals = getRgba(string);\n if (vals) {\n return vals[3];\n }\n else if (vals = getHsla(string)) {\n return vals[3];\n }\n else if (vals = getHwb(string)) {\n return vals[3];\n }\n}\n\n// generators\nfunction hexString(rgb) {\n return \"#\" + hexDouble(rgb[0]) + hexDouble(rgb[1])\n + hexDouble(rgb[2]);\n}\n\nfunction rgbString(rgba, alpha) {\n if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {\n return rgbaString(rgba, alpha);\n }\n return \"rgb(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2] + \")\";\n}\n\nfunction rgbaString(rgba, alpha) {\n if (alpha === undefined) {\n alpha = (rgba[3] !== undefined ? rgba[3] : 1);\n }\n return \"rgba(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2]\n + \", \" + alpha + \")\";\n}\n\nfunction percentString(rgba, alpha) {\n if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {\n return percentaString(rgba, alpha);\n }\n var r = Math.round(rgba[0]/255 * 100),\n g = Math.round(rgba[1]/255 * 100),\n b = Math.round(rgba[2]/255 * 100);\n\n return \"rgb(\" + r + \"%, \" + g + \"%, \" + b + \"%)\";\n}\n\nfunction percentaString(rgba, alpha) {\n var r = Math.round(rgba[0]/255 * 100),\n g = Math.round(rgba[1]/255 * 100),\n b = Math.round(rgba[2]/255 * 100);\n return \"rgba(\" + r + \"%, \" + g + \"%, \" + b + \"%, \" + (alpha || rgba[3] || 1) + \")\";\n}\n\nfunction hslString(hsla, alpha) {\n if (alpha < 1 || (hsla[3] && hsla[3] < 1)) {\n return hslaString(hsla, alpha);\n }\n return \"hsl(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%)\";\n}\n\nfunction hslaString(hsla, alpha) {\n if (alpha === undefined) {\n alpha = (hsla[3] !== undefined ? hsla[3] : 1);\n }\n return \"hsla(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%, \"\n + alpha + \")\";\n}\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\nfunction hwbString(hwb, alpha) {\n if (alpha === undefined) {\n alpha = (hwb[3] !== undefined ? hwb[3] : 1);\n }\n return \"hwb(\" + hwb[0] + \", \" + hwb[1] + \"%, \" + hwb[2] + \"%\"\n + (alpha !== undefined && alpha !== 1 ? \", \" + alpha : \"\") + \")\";\n}\n\nfunction keyword(rgb) {\n return reverseNames[rgb.slice(0, 3)];\n}\n\n// helpers\nfunction scale(num, min, max) {\n return Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n var str = num.toString(16).toUpperCase();\n return (str.length < 2) ? \"0\" + str : str;\n}\n\n\n//create a list of reverse color names\nvar reverseNames = {};\nfor (var name in colorNames) {\n reverseNames[colorNames[name]] = name;\n}\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar Element = require('../core/core.element');\nvar helpers = require('../helpers/index');\nvar layouts = require('../core/core.layouts');\n\nvar noop = helpers.noop;\n\ndefaults._set('global', {\n\ttitle: {\n\t\tdisplay: false,\n\t\tfontStyle: 'bold',\n\t\tfullWidth: true,\n\t\tlineHeight: 1.2,\n\t\tpadding: 10,\n\t\tposition: 'top',\n\t\ttext: '',\n\t\tweight: 2000 // by default greater than legend (1000) to be above\n\t}\n});\n\n/**\n * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required!\n */\nvar Title = Element.extend({\n\tinitialize: function(config) {\n\t\tvar me = this;\n\t\thelpers.extend(me, config);\n\n\t\t// Contains hit boxes for each dataset (in dataset order)\n\t\tme.legendHitBoxes = [];\n\t},\n\n\t// These methods are ordered by lifecycle. Utilities then follow.\n\n\tbeforeUpdate: noop,\n\tupdate: function(maxWidth, maxHeight, margins) {\n\t\tvar me = this;\n\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n\t\tme.beforeUpdate();\n\n\t\t// Absorb the master measurements\n\t\tme.maxWidth = maxWidth;\n\t\tme.maxHeight = maxHeight;\n\t\tme.margins = margins;\n\n\t\t// Dimensions\n\t\tme.beforeSetDimensions();\n\t\tme.setDimensions();\n\t\tme.afterSetDimensions();\n\t\t// Labels\n\t\tme.beforeBuildLabels();\n\t\tme.buildLabels();\n\t\tme.afterBuildLabels();\n\n\t\t// Fit\n\t\tme.beforeFit();\n\t\tme.fit();\n\t\tme.afterFit();\n\t\t//\n\t\tme.afterUpdate();\n\n\t\treturn me.minSize;\n\n\t},\n\tafterUpdate: noop,\n\n\t//\n\n\tbeforeSetDimensions: noop,\n\tsetDimensions: function() {\n\t\tvar me = this;\n\t\t// Set the unconstrained dimension before label rotation\n\t\tif (me.isHorizontal()) {\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.width = me.maxWidth;\n\t\t\tme.left = 0;\n\t\t\tme.right = me.width;\n\t\t} else {\n\t\t\tme.height = me.maxHeight;\n\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.top = 0;\n\t\t\tme.bottom = me.height;\n\t\t}\n\n\t\t// Reset padding\n\t\tme.paddingLeft = 0;\n\t\tme.paddingTop = 0;\n\t\tme.paddingRight = 0;\n\t\tme.paddingBottom = 0;\n\n\t\t// Reset minSize\n\t\tme.minSize = {\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t};\n\t},\n\tafterSetDimensions: noop,\n\n\t//\n\n\tbeforeBuildLabels: noop,\n\tbuildLabels: noop,\n\tafterBuildLabels: noop,\n\n\t//\n\n\tbeforeFit: noop,\n\tfit: function() {\n\t\tvar me = this;\n\t\tvar valueOrDefault = helpers.valueOrDefault;\n\t\tvar opts = me.options;\n\t\tvar display = opts.display;\n\t\tvar fontSize = valueOrDefault(opts.fontSize, defaults.global.defaultFontSize);\n\t\tvar minSize = me.minSize;\n\t\tvar lineCount = helpers.isArray(opts.text) ? opts.text.length : 1;\n\t\tvar lineHeight = helpers.options.toLineHeight(opts.lineHeight, fontSize);\n\t\tvar textSize = display ? (lineCount * lineHeight) + (opts.padding * 2) : 0;\n\n\t\tif (me.isHorizontal()) {\n\t\t\tminSize.width = me.maxWidth; // fill all the width\n\t\t\tminSize.height = textSize;\n\t\t} else {\n\t\t\tminSize.width = textSize;\n\t\t\tminSize.height = me.maxHeight; // fill all the height\n\t\t}\n\n\t\tme.width = minSize.width;\n\t\tme.height = minSize.height;\n\n\t},\n\tafterFit: noop,\n\n\t// Shared Methods\n\tisHorizontal: function() {\n\t\tvar pos = this.options.position;\n\t\treturn pos === 'top' || pos === 'bottom';\n\t},\n\n\t// Actually draw the title block on the canvas\n\tdraw: function() {\n\t\tvar me = this;\n\t\tvar ctx = me.ctx;\n\t\tvar valueOrDefault = helpers.valueOrDefault;\n\t\tvar opts = me.options;\n\t\tvar globalDefaults = defaults.global;\n\n\t\tif (opts.display) {\n\t\t\tvar fontSize = valueOrDefault(opts.fontSize, globalDefaults.defaultFontSize);\n\t\t\tvar fontStyle = valueOrDefault(opts.fontStyle, globalDefaults.defaultFontStyle);\n\t\t\tvar fontFamily = valueOrDefault(opts.fontFamily, globalDefaults.defaultFontFamily);\n\t\t\tvar titleFont = helpers.fontString(fontSize, fontStyle, fontFamily);\n\t\t\tvar lineHeight = helpers.options.toLineHeight(opts.lineHeight, fontSize);\n\t\t\tvar offset = lineHeight / 2 + opts.padding;\n\t\t\tvar rotation = 0;\n\t\t\tvar top = me.top;\n\t\t\tvar left = me.left;\n\t\t\tvar bottom = me.bottom;\n\t\t\tvar right = me.right;\n\t\t\tvar maxWidth, titleX, titleY;\n\n\t\t\tctx.fillStyle = valueOrDefault(opts.fontColor, globalDefaults.defaultFontColor); // render in correct colour\n\t\t\tctx.font = titleFont;\n\n\t\t\t// Horizontal\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\ttitleX = left + ((right - left) / 2); // midpoint of the width\n\t\t\t\ttitleY = top + offset;\n\t\t\t\tmaxWidth = right - left;\n\t\t\t} else {\n\t\t\t\ttitleX = opts.position === 'left' ? left + offset : right - offset;\n\t\t\t\ttitleY = top + ((bottom - top) / 2);\n\t\t\t\tmaxWidth = bottom - top;\n\t\t\t\trotation = Math.PI * (opts.position === 'left' ? -0.5 : 0.5);\n\t\t\t}\n\n\t\t\tctx.save();\n\t\t\tctx.translate(titleX, titleY);\n\t\t\tctx.rotate(rotation);\n\t\t\tctx.textAlign = 'center';\n\t\t\tctx.textBaseline = 'middle';\n\n\t\t\tvar text = opts.text;\n\t\t\tif (helpers.isArray(text)) {\n\t\t\t\tvar y = 0;\n\t\t\t\tfor (var i = 0; i < text.length; ++i) {\n\t\t\t\t\tctx.fillText(text[i], 0, y, maxWidth);\n\t\t\t\t\ty += lineHeight;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tctx.fillText(text, 0, 0, maxWidth);\n\t\t\t}\n\n\t\t\tctx.restore();\n\t\t}\n\t}\n});\n\nfunction createNewTitleBlockAndAttach(chart, titleOpts) {\n\tvar title = new Title({\n\t\tctx: chart.ctx,\n\t\toptions: titleOpts,\n\t\tchart: chart\n\t});\n\n\tlayouts.configure(chart, title, titleOpts);\n\tlayouts.addBox(chart, title);\n\tchart.titleBlock = title;\n}\n\nmodule.exports = {\n\tid: 'title',\n\n\t/**\n\t * Backward compatibility: since 2.1.5, the title is registered as a plugin, making\n\t * Chart.Title obsolete. To avoid a breaking change, we export the Title as part of\n\t * the plugin, which one will be re-exposed in the chart.js file.\n\t * https://github.com/chartjs/Chart.js/pull/2640\n\t * @private\n\t */\n\t_element: Title,\n\n\tbeforeInit: function(chart) {\n\t\tvar titleOpts = chart.options.title;\n\n\t\tif (titleOpts) {\n\t\t\tcreateNewTitleBlockAndAttach(chart, titleOpts);\n\t\t}\n\t},\n\n\tbeforeUpdate: function(chart) {\n\t\tvar titleOpts = chart.options.title;\n\t\tvar titleBlock = chart.titleBlock;\n\n\t\tif (titleOpts) {\n\t\t\thelpers.mergeIf(titleOpts, defaults.global.title);\n\n\t\t\tif (titleBlock) {\n\t\t\t\tlayouts.configure(chart, titleBlock, titleOpts);\n\t\t\t\ttitleBlock.options = titleOpts;\n\t\t\t} else {\n\t\t\t\tcreateNewTitleBlockAndAttach(chart, titleOpts);\n\t\t\t}\n\t\t} else if (titleBlock) {\n\t\t\tlayouts.removeBox(chart, titleBlock);\n\t\t\tdelete chart.titleBlock;\n\t\t}\n\t}\n};\n","'use strict';\n\nvar helpers = require('../helpers/index');\n\n/**\n * Helper function to get relative position for an event\n * @param {Event|IEvent} event - The event to get the position for\n * @param {Chart} chart - The chart\n * @returns {Point} the event position\n */\nfunction getRelativePosition(e, chart) {\n\tif (e.native) {\n\t\treturn {\n\t\t\tx: e.x,\n\t\t\ty: e.y\n\t\t};\n\t}\n\n\treturn helpers.getRelativePosition(e, chart);\n}\n\n/**\n * Helper function to traverse all of the visible elements in the chart\n * @param chart {chart} the chart\n * @param handler {Function} the callback to execute for each visible item\n */\nfunction parseVisibleItems(chart, handler) {\n\tvar datasets = chart.data.datasets;\n\tvar meta, i, j, ilen, jlen;\n\n\tfor (i = 0, ilen = datasets.length; i < ilen; ++i) {\n\t\tif (!chart.isDatasetVisible(i)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tmeta = chart.getDatasetMeta(i);\n\t\tfor (j = 0, jlen = meta.data.length; j < jlen; ++j) {\n\t\t\tvar element = meta.data[j];\n\t\t\tif (!element._view.skip) {\n\t\t\t\thandler(element);\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Helper function to get the items that intersect the event position\n * @param items {ChartElement[]} elements to filter\n * @param position {Point} the point to be nearest to\n * @return {ChartElement[]} the nearest items\n */\nfunction getIntersectItems(chart, position) {\n\tvar elements = [];\n\n\tparseVisibleItems(chart, function(element) {\n\t\tif (element.inRange(position.x, position.y)) {\n\t\t\telements.push(element);\n\t\t}\n\t});\n\n\treturn elements;\n}\n\n/**\n * Helper function to get the items nearest to the event position considering all visible items in teh chart\n * @param chart {Chart} the chart to look at elements from\n * @param position {Point} the point to be nearest to\n * @param intersect {Boolean} if true, only consider items that intersect the position\n * @param distanceMetric {Function} function to provide the distance between points\n * @return {ChartElement[]} the nearest items\n */\nfunction getNearestItems(chart, position, intersect, distanceMetric) {\n\tvar minDistance = Number.POSITIVE_INFINITY;\n\tvar nearestItems = [];\n\n\tparseVisibleItems(chart, function(element) {\n\t\tif (intersect && !element.inRange(position.x, position.y)) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar center = element.getCenterPoint();\n\t\tvar distance = distanceMetric(position, center);\n\n\t\tif (distance < minDistance) {\n\t\t\tnearestItems = [element];\n\t\t\tminDistance = distance;\n\t\t} else if (distance === minDistance) {\n\t\t\t// Can have multiple items at the same distance in which case we sort by size\n\t\t\tnearestItems.push(element);\n\t\t}\n\t});\n\n\treturn nearestItems;\n}\n\n/**\n * Get a distance metric function for two points based on the\n * axis mode setting\n * @param {String} axis the axis mode. x|y|xy\n */\nfunction getDistanceMetricForAxis(axis) {\n\tvar useX = axis.indexOf('x') !== -1;\n\tvar useY = axis.indexOf('y') !== -1;\n\n\treturn function(pt1, pt2) {\n\t\tvar deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n\t\tvar deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n\t\treturn Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n\t};\n}\n\nfunction indexMode(chart, e, options) {\n\tvar position = getRelativePosition(e, chart);\n\t// Default axis for index mode is 'x' to match old behaviour\n\toptions.axis = options.axis || 'x';\n\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\n\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\n\tvar elements = [];\n\n\tif (!items.length) {\n\t\treturn [];\n\t}\n\n\tchart.data.datasets.forEach(function(dataset, datasetIndex) {\n\t\tif (chart.isDatasetVisible(datasetIndex)) {\n\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\tvar element = meta.data[items[0]._index];\n\n\t\t\t// don't count items that are skipped (null data)\n\t\t\tif (element && !element._view.skip) {\n\t\t\t\telements.push(element);\n\t\t\t}\n\t\t}\n\t});\n\n\treturn elements;\n}\n\n/**\n * @interface IInteractionOptions\n */\n/**\n * If true, only consider items that intersect the point\n * @name IInterfaceOptions#boolean\n * @type Boolean\n */\n\n/**\n * Contains interaction related functions\n * @namespace Chart.Interaction\n */\nmodule.exports = {\n\t// Helper function for different modes\n\tmodes: {\n\t\tsingle: function(chart, e) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\tvar elements = [];\n\n\t\t\tparseVisibleItems(chart, function(element) {\n\t\t\t\tif (element.inRange(position.x, position.y)) {\n\t\t\t\t\telements.push(element);\n\t\t\t\t\treturn elements;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn elements.slice(0, 1);\n\t\t},\n\n\t\t/**\n\t\t * @function Chart.Interaction.modes.label\n\t\t * @deprecated since version 2.4.0\n\t\t * @todo remove at version 3\n\t\t * @private\n\t\t */\n\t\tlabel: indexMode,\n\n\t\t/**\n\t\t * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something\n\t\t * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item\n\t\t * @function Chart.Interaction.modes.index\n\t\t * @since v2.4.0\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @param options {IInteractionOptions} options to use during interaction\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tindex: indexMode,\n\n\t\t/**\n\t\t * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something\n\t\t * If the options.intersect is false, we find the nearest item and return the items in that dataset\n\t\t * @function Chart.Interaction.modes.dataset\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @param options {IInteractionOptions} options to use during interaction\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tdataset: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\toptions.axis = options.axis || 'xy';\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\n\t\t\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\n\n\t\t\tif (items.length > 0) {\n\t\t\t\titems = chart.getDatasetMeta(items[0]._datasetIndex).data;\n\t\t\t}\n\n\t\t\treturn items;\n\t\t},\n\n\t\t/**\n\t\t * @function Chart.Interaction.modes.x-axis\n\t\t * @deprecated since version 2.4.0. Use index mode and intersect == true\n\t\t * @todo remove at version 3\n\t\t * @private\n\t\t */\n\t\t'x-axis': function(chart, e) {\n\t\t\treturn indexMode(chart, e, {intersect: false});\n\t\t},\n\n\t\t/**\n\t\t * Point mode returns all elements that hit test based on the event position\n\t\t * of the event\n\t\t * @function Chart.Interaction.modes.intersect\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tpoint: function(chart, e) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\treturn getIntersectItems(chart, position);\n\t\t},\n\n\t\t/**\n\t\t * nearest mode returns the element closest to the point\n\t\t * @function Chart.Interaction.modes.intersect\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @param options {IInteractionOptions} options to use\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tnearest: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\toptions.axis = options.axis || 'xy';\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\n\t\t\tvar nearestItems = getNearestItems(chart, position, options.intersect, distanceMetric);\n\n\t\t\t// We have multiple items at the same distance from the event. Now sort by smallest\n\t\t\tif (nearestItems.length > 1) {\n\t\t\t\tnearestItems.sort(function(a, b) {\n\t\t\t\t\tvar sizeA = a.getArea();\n\t\t\t\t\tvar sizeB = b.getArea();\n\t\t\t\t\tvar ret = sizeA - sizeB;\n\n\t\t\t\t\tif (ret === 0) {\n\t\t\t\t\t\t// if equal sort by dataset index\n\t\t\t\t\t\tret = a._datasetIndex - b._datasetIndex;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn ret;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Return only 1 item\n\t\t\treturn nearestItems.slice(0, 1);\n\t\t},\n\n\t\t/**\n\t\t * x mode returns the elements that hit-test at the current x coordinate\n\t\t * @function Chart.Interaction.modes.x\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @param options {IInteractionOptions} options to use\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tx: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\tvar items = [];\n\t\t\tvar intersectsItem = false;\n\n\t\t\tparseVisibleItems(chart, function(element) {\n\t\t\t\tif (element.inXRange(position.x)) {\n\t\t\t\t\titems.push(element);\n\t\t\t\t}\n\n\t\t\t\tif (element.inRange(position.x, position.y)) {\n\t\t\t\t\tintersectsItem = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// If we want to trigger on an intersect and we don't have any items\n\t\t\t// that intersect the position, return nothing\n\t\t\tif (options.intersect && !intersectsItem) {\n\t\t\t\titems = [];\n\t\t\t}\n\t\t\treturn items;\n\t\t},\n\n\t\t/**\n\t\t * y mode returns the elements that hit-test at the current y coordinate\n\t\t * @function Chart.Interaction.modes.y\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @param options {IInteractionOptions} options to use\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\ty: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\tvar items = [];\n\t\t\tvar intersectsItem = false;\n\n\t\t\tparseVisibleItems(chart, function(element) {\n\t\t\t\tif (element.inYRange(position.y)) {\n\t\t\t\t\titems.push(element);\n\t\t\t\t}\n\n\t\t\t\tif (element.inRange(position.x, position.y)) {\n\t\t\t\t\tintersectsItem = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// If we want to trigger on an intersect and we don't have any items\n\t\t\t// that intersect the position, return nothing\n\t\t\tif (options.intersect && !intersectsItem) {\n\t\t\t\titems = [];\n\t\t\t}\n\t\t\treturn items;\n\t\t}\n\t}\n};\n","'use strict';\n\n// btoa polyfill for IE<10 courtesy https://github.com/davidchambers/Base64.js\n\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\nfunction E() {\n this.message = 'String contains an invalid character';\n}\nE.prototype = new Error;\nE.prototype.code = 5;\nE.prototype.name = 'InvalidCharacterError';\n\nfunction btoa(input) {\n var str = String(input);\n var output = '';\n for (\n // initialize result and counter\n var block, charCode, idx = 0, map = chars;\n // if the next str index does not exist:\n // change the mapping table to \"=\"\n // check if d has no fractional digits\n str.charAt(idx | 0) || (map = '=', idx % 1);\n // \"8 - idx % 1 * 8\" generates the sequence 2, 4, 6, 8\n output += map.charAt(63 & block >> 8 - idx % 1 * 8)\n ) {\n charCode = str.charCodeAt(idx += 3 / 4);\n if (charCode > 0xFF) {\n throw new E();\n }\n block = block << 8 | charCode;\n }\n return output;\n}\n\nmodule.exports = btoa;\n","/* global window: false */\n/* global document: false */\n'use strict';\n\nvar color = require('chartjs-color');\nvar defaults = require('./core.defaults');\nvar helpers = require('../helpers/index');\nvar scaleService = require('../core/core.scaleService');\n\nmodule.exports = function() {\n\n\t// -- Basic js utility methods\n\n\thelpers.configMerge = function(/* objects ... */) {\n\t\treturn helpers.merge(helpers.clone(arguments[0]), [].slice.call(arguments, 1), {\n\t\t\tmerger: function(key, target, source, options) {\n\t\t\t\tvar tval = target[key] || {};\n\t\t\t\tvar sval = source[key];\n\n\t\t\t\tif (key === 'scales') {\n\t\t\t\t\t// scale config merging is complex. Add our own function here for that\n\t\t\t\t\ttarget[key] = helpers.scaleMerge(tval, sval);\n\t\t\t\t} else if (key === 'scale') {\n\t\t\t\t\t// used in polar area & radar charts since there is only one scale\n\t\t\t\t\ttarget[key] = helpers.merge(tval, [scaleService.getScaleDefaults(sval.type), sval]);\n\t\t\t\t} else {\n\t\t\t\t\thelpers._merger(key, target, source, options);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t};\n\n\thelpers.scaleMerge = function(/* objects ... */) {\n\t\treturn helpers.merge(helpers.clone(arguments[0]), [].slice.call(arguments, 1), {\n\t\t\tmerger: function(key, target, source, options) {\n\t\t\t\tif (key === 'xAxes' || key === 'yAxes') {\n\t\t\t\t\tvar slen = source[key].length;\n\t\t\t\t\tvar i, type, scale;\n\n\t\t\t\t\tif (!target[key]) {\n\t\t\t\t\t\ttarget[key] = [];\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (i = 0; i < slen; ++i) {\n\t\t\t\t\t\tscale = source[key][i];\n\t\t\t\t\t\ttype = helpers.valueOrDefault(scale.type, key === 'xAxes' ? 'category' : 'linear');\n\n\t\t\t\t\t\tif (i >= target[key].length) {\n\t\t\t\t\t\t\ttarget[key].push({});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!target[key][i].type || (scale.type && scale.type !== target[key][i].type)) {\n\t\t\t\t\t\t\t// new/untyped scale or type changed: let's apply the new defaults\n\t\t\t\t\t\t\t// then merge source scale to correctly overwrite the defaults.\n\t\t\t\t\t\t\thelpers.merge(target[key][i], [scaleService.getScaleDefaults(type), scale]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// scales type are the same\n\t\t\t\t\t\t\thelpers.merge(target[key][i], scale);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\thelpers._merger(key, target, source, options);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t};\n\n\thelpers.where = function(collection, filterCallback) {\n\t\tif (helpers.isArray(collection) && Array.prototype.filter) {\n\t\t\treturn collection.filter(filterCallback);\n\t\t}\n\t\tvar filtered = [];\n\n\t\thelpers.each(collection, function(item) {\n\t\t\tif (filterCallback(item)) {\n\t\t\t\tfiltered.push(item);\n\t\t\t}\n\t\t});\n\n\t\treturn filtered;\n\t};\n\thelpers.findIndex = Array.prototype.findIndex ?\n\t\tfunction(array, callback, scope) {\n\t\t\treturn array.findIndex(callback, scope);\n\t\t} :\n\t\tfunction(array, callback, scope) {\n\t\t\tscope = scope === undefined ? array : scope;\n\t\t\tfor (var i = 0, ilen = array.length; i < ilen; ++i) {\n\t\t\t\tif (callback.call(scope, array[i], i, array)) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn -1;\n\t\t};\n\thelpers.findNextWhere = function(arrayToSearch, filterCallback, startIndex) {\n\t\t// Default to start of the array\n\t\tif (helpers.isNullOrUndef(startIndex)) {\n\t\t\tstartIndex = -1;\n\t\t}\n\t\tfor (var i = startIndex + 1; i < arrayToSearch.length; i++) {\n\t\t\tvar currentItem = arrayToSearch[i];\n\t\t\tif (filterCallback(currentItem)) {\n\t\t\t\treturn currentItem;\n\t\t\t}\n\t\t}\n\t};\n\thelpers.findPreviousWhere = function(arrayToSearch, filterCallback, startIndex) {\n\t\t// Default to end of the array\n\t\tif (helpers.isNullOrUndef(startIndex)) {\n\t\t\tstartIndex = arrayToSearch.length;\n\t\t}\n\t\tfor (var i = startIndex - 1; i >= 0; i--) {\n\t\t\tvar currentItem = arrayToSearch[i];\n\t\t\tif (filterCallback(currentItem)) {\n\t\t\t\treturn currentItem;\n\t\t\t}\n\t\t}\n\t};\n\n\t// -- Math methods\n\thelpers.isNumber = function(n) {\n\t\treturn !isNaN(parseFloat(n)) && isFinite(n);\n\t};\n\thelpers.almostEquals = function(x, y, epsilon) {\n\t\treturn Math.abs(x - y) < epsilon;\n\t};\n\thelpers.almostWhole = function(x, epsilon) {\n\t\tvar rounded = Math.round(x);\n\t\treturn (((rounded - epsilon) < x) && ((rounded + epsilon) > x));\n\t};\n\thelpers.max = function(array) {\n\t\treturn array.reduce(function(max, value) {\n\t\t\tif (!isNaN(value)) {\n\t\t\t\treturn Math.max(max, value);\n\t\t\t}\n\t\t\treturn max;\n\t\t}, Number.NEGATIVE_INFINITY);\n\t};\n\thelpers.min = function(array) {\n\t\treturn array.reduce(function(min, value) {\n\t\t\tif (!isNaN(value)) {\n\t\t\t\treturn Math.min(min, value);\n\t\t\t}\n\t\t\treturn min;\n\t\t}, Number.POSITIVE_INFINITY);\n\t};\n\thelpers.sign = Math.sign ?\n\t\tfunction(x) {\n\t\t\treturn Math.sign(x);\n\t\t} :\n\t\tfunction(x) {\n\t\t\tx = +x; // convert to a number\n\t\t\tif (x === 0 || isNaN(x)) {\n\t\t\t\treturn x;\n\t\t\t}\n\t\t\treturn x > 0 ? 1 : -1;\n\t\t};\n\thelpers.log10 = Math.log10 ?\n\t\tfunction(x) {\n\t\t\treturn Math.log10(x);\n\t\t} :\n\t\tfunction(x) {\n\t\t\tvar exponent = Math.log(x) * Math.LOG10E; // Math.LOG10E = 1 / Math.LN10.\n\t\t\t// Check for whole powers of 10,\n\t\t\t// which due to floating point rounding error should be corrected.\n\t\t\tvar powerOf10 = Math.round(exponent);\n\t\t\tvar isPowerOf10 = x === Math.pow(10, powerOf10);\n\n\t\t\treturn isPowerOf10 ? powerOf10 : exponent;\n\t\t};\n\thelpers.toRadians = function(degrees) {\n\t\treturn degrees * (Math.PI / 180);\n\t};\n\thelpers.toDegrees = function(radians) {\n\t\treturn radians * (180 / Math.PI);\n\t};\n\t// Gets the angle from vertical upright to the point about a centre.\n\thelpers.getAngleFromPoint = function(centrePoint, anglePoint) {\n\t\tvar distanceFromXCenter = anglePoint.x - centrePoint.x;\n\t\tvar distanceFromYCenter = anglePoint.y - centrePoint.y;\n\t\tvar radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n\n\t\tvar angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n\n\t\tif (angle < (-0.5 * Math.PI)) {\n\t\t\tangle += 2.0 * Math.PI; // make sure the returned angle is in the range of (-PI/2, 3PI/2]\n\t\t}\n\n\t\treturn {\n\t\t\tangle: angle,\n\t\t\tdistance: radialDistanceFromCenter\n\t\t};\n\t};\n\thelpers.distanceBetweenPoints = function(pt1, pt2) {\n\t\treturn Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n\t};\n\thelpers.aliasPixel = function(pixelWidth) {\n\t\treturn (pixelWidth % 2 === 0) ? 0 : 0.5;\n\t};\n\thelpers.splineCurve = function(firstPoint, middlePoint, afterPoint, t) {\n\t\t// Props to Rob Spencer at scaled innovation for his post on splining between points\n\t\t// http://scaledinnovation.com/analytics/splines/aboutSplines.html\n\n\t\t// This function must also respect \"skipped\" points\n\n\t\tvar previous = firstPoint.skip ? middlePoint : firstPoint;\n\t\tvar current = middlePoint;\n\t\tvar next = afterPoint.skip ? middlePoint : afterPoint;\n\n\t\tvar d01 = Math.sqrt(Math.pow(current.x - previous.x, 2) + Math.pow(current.y - previous.y, 2));\n\t\tvar d12 = Math.sqrt(Math.pow(next.x - current.x, 2) + Math.pow(next.y - current.y, 2));\n\n\t\tvar s01 = d01 / (d01 + d12);\n\t\tvar s12 = d12 / (d01 + d12);\n\n\t\t// If all points are the same, s01 & s02 will be inf\n\t\ts01 = isNaN(s01) ? 0 : s01;\n\t\ts12 = isNaN(s12) ? 0 : s12;\n\n\t\tvar fa = t * s01; // scaling factor for triangle Ta\n\t\tvar fb = t * s12;\n\n\t\treturn {\n\t\t\tprevious: {\n\t\t\t\tx: current.x - fa * (next.x - previous.x),\n\t\t\t\ty: current.y - fa * (next.y - previous.y)\n\t\t\t},\n\t\t\tnext: {\n\t\t\t\tx: current.x + fb * (next.x - previous.x),\n\t\t\t\ty: current.y + fb * (next.y - previous.y)\n\t\t\t}\n\t\t};\n\t};\n\thelpers.EPSILON = Number.EPSILON || 1e-14;\n\thelpers.splineCurveMonotone = function(points) {\n\t\t// This function calculates Bézier control points in a similar way than |splineCurve|,\n\t\t// but preserves monotonicity of the provided data and ensures no local extremums are added\n\t\t// between the dataset discrete points due to the interpolation.\n\t\t// See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\n\n\t\tvar pointsWithTangents = (points || []).map(function(point) {\n\t\t\treturn {\n\t\t\t\tmodel: point._model,\n\t\t\t\tdeltaK: 0,\n\t\t\t\tmK: 0\n\t\t\t};\n\t\t});\n\n\t\t// Calculate slopes (deltaK) and initialize tangents (mK)\n\t\tvar pointsLen = pointsWithTangents.length;\n\t\tvar i, pointBefore, pointCurrent, pointAfter;\n\t\tfor (i = 0; i < pointsLen; ++i) {\n\t\t\tpointCurrent = pointsWithTangents[i];\n\t\t\tif (pointCurrent.model.skip) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tpointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\n\t\t\tpointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\n\t\t\tif (pointAfter && !pointAfter.model.skip) {\n\t\t\t\tvar slopeDeltaX = (pointAfter.model.x - pointCurrent.model.x);\n\n\t\t\t\t// In the case of two points that appear at the same x pixel, slopeDeltaX is 0\n\t\t\t\tpointCurrent.deltaK = slopeDeltaX !== 0 ? (pointAfter.model.y - pointCurrent.model.y) / slopeDeltaX : 0;\n\t\t\t}\n\n\t\t\tif (!pointBefore || pointBefore.model.skip) {\n\t\t\t\tpointCurrent.mK = pointCurrent.deltaK;\n\t\t\t} else if (!pointAfter || pointAfter.model.skip) {\n\t\t\t\tpointCurrent.mK = pointBefore.deltaK;\n\t\t\t} else if (this.sign(pointBefore.deltaK) !== this.sign(pointCurrent.deltaK)) {\n\t\t\t\tpointCurrent.mK = 0;\n\t\t\t} else {\n\t\t\t\tpointCurrent.mK = (pointBefore.deltaK + pointCurrent.deltaK) / 2;\n\t\t\t}\n\t\t}\n\n\t\t// Adjust tangents to ensure monotonic properties\n\t\tvar alphaK, betaK, tauK, squaredMagnitude;\n\t\tfor (i = 0; i < pointsLen - 1; ++i) {\n\t\t\tpointCurrent = pointsWithTangents[i];\n\t\t\tpointAfter = pointsWithTangents[i + 1];\n\t\t\tif (pointCurrent.model.skip || pointAfter.model.skip) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (helpers.almostEquals(pointCurrent.deltaK, 0, this.EPSILON)) {\n\t\t\t\tpointCurrent.mK = pointAfter.mK = 0;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\talphaK = pointCurrent.mK / pointCurrent.deltaK;\n\t\t\tbetaK = pointAfter.mK / pointCurrent.deltaK;\n\t\t\tsquaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n\t\t\tif (squaredMagnitude <= 9) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\ttauK = 3 / Math.sqrt(squaredMagnitude);\n\t\t\tpointCurrent.mK = alphaK * tauK * pointCurrent.deltaK;\n\t\t\tpointAfter.mK = betaK * tauK * pointCurrent.deltaK;\n\t\t}\n\n\t\t// Compute control points\n\t\tvar deltaX;\n\t\tfor (i = 0; i < pointsLen; ++i) {\n\t\t\tpointCurrent = pointsWithTangents[i];\n\t\t\tif (pointCurrent.model.skip) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tpointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\n\t\t\tpointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\n\t\t\tif (pointBefore && !pointBefore.model.skip) {\n\t\t\t\tdeltaX = (pointCurrent.model.x - pointBefore.model.x) / 3;\n\t\t\t\tpointCurrent.model.controlPointPreviousX = pointCurrent.model.x - deltaX;\n\t\t\t\tpointCurrent.model.controlPointPreviousY = pointCurrent.model.y - deltaX * pointCurrent.mK;\n\t\t\t}\n\t\t\tif (pointAfter && !pointAfter.model.skip) {\n\t\t\t\tdeltaX = (pointAfter.model.x - pointCurrent.model.x) / 3;\n\t\t\t\tpointCurrent.model.controlPointNextX = pointCurrent.model.x + deltaX;\n\t\t\t\tpointCurrent.model.controlPointNextY = pointCurrent.model.y + deltaX * pointCurrent.mK;\n\t\t\t}\n\t\t}\n\t};\n\thelpers.nextItem = function(collection, index, loop) {\n\t\tif (loop) {\n\t\t\treturn index >= collection.length - 1 ? collection[0] : collection[index + 1];\n\t\t}\n\t\treturn index >= collection.length - 1 ? collection[collection.length - 1] : collection[index + 1];\n\t};\n\thelpers.previousItem = function(collection, index, loop) {\n\t\tif (loop) {\n\t\t\treturn index <= 0 ? collection[collection.length - 1] : collection[index - 1];\n\t\t}\n\t\treturn index <= 0 ? collection[0] : collection[index - 1];\n\t};\n\t// Implementation of the nice number algorithm used in determining where axis labels will go\n\thelpers.niceNum = function(range, round) {\n\t\tvar exponent = Math.floor(helpers.log10(range));\n\t\tvar fraction = range / Math.pow(10, exponent);\n\t\tvar niceFraction;\n\n\t\tif (round) {\n\t\t\tif (fraction < 1.5) {\n\t\t\t\tniceFraction = 1;\n\t\t\t} else if (fraction < 3) {\n\t\t\t\tniceFraction = 2;\n\t\t\t} else if (fraction < 7) {\n\t\t\t\tniceFraction = 5;\n\t\t\t} else {\n\t\t\t\tniceFraction = 10;\n\t\t\t}\n\t\t} else if (fraction <= 1.0) {\n\t\t\tniceFraction = 1;\n\t\t} else if (fraction <= 2) {\n\t\t\tniceFraction = 2;\n\t\t} else if (fraction <= 5) {\n\t\t\tniceFraction = 5;\n\t\t} else {\n\t\t\tniceFraction = 10;\n\t\t}\n\n\t\treturn niceFraction * Math.pow(10, exponent);\n\t};\n\t// Request animation polyfill - http://www.paulirish.com/2011/requestanimationframe-for-smart-animating/\n\thelpers.requestAnimFrame = (function() {\n\t\tif (typeof window === 'undefined') {\n\t\t\treturn function(callback) {\n\t\t\t\tcallback();\n\t\t\t};\n\t\t}\n\t\treturn window.requestAnimationFrame ||\n\t\t\twindow.webkitRequestAnimationFrame ||\n\t\t\twindow.mozRequestAnimationFrame ||\n\t\t\twindow.oRequestAnimationFrame ||\n\t\t\twindow.msRequestAnimationFrame ||\n\t\t\tfunction(callback) {\n\t\t\t\treturn window.setTimeout(callback, 1000 / 60);\n\t\t\t};\n\t}());\n\t// -- DOM methods\n\thelpers.getRelativePosition = function(evt, chart) {\n\t\tvar mouseX, mouseY;\n\t\tvar e = evt.originalEvent || evt;\n\t\tvar canvas = evt.target || evt.srcElement;\n\t\tvar boundingRect = canvas.getBoundingClientRect();\n\n\t\tvar touches = e.touches;\n\t\tif (touches && touches.length > 0) {\n\t\t\tmouseX = touches[0].clientX;\n\t\t\tmouseY = touches[0].clientY;\n\n\t\t} else {\n\t\t\tmouseX = e.clientX;\n\t\t\tmouseY = e.clientY;\n\t\t}\n\n\t\t// Scale mouse coordinates into canvas coordinates\n\t\t// by following the pattern laid out by 'jerryj' in the comments of\n\t\t// http://www.html5canvastutorials.com/advanced/html5-canvas-mouse-coordinates/\n\t\tvar paddingLeft = parseFloat(helpers.getStyle(canvas, 'padding-left'));\n\t\tvar paddingTop = parseFloat(helpers.getStyle(canvas, 'padding-top'));\n\t\tvar paddingRight = parseFloat(helpers.getStyle(canvas, 'padding-right'));\n\t\tvar paddingBottom = parseFloat(helpers.getStyle(canvas, 'padding-bottom'));\n\t\tvar width = boundingRect.right - boundingRect.left - paddingLeft - paddingRight;\n\t\tvar height = boundingRect.bottom - boundingRect.top - paddingTop - paddingBottom;\n\n\t\t// We divide by the current device pixel ratio, because the canvas is scaled up by that amount in each direction. However\n\t\t// the backend model is in unscaled coordinates. Since we are going to deal with our model coordinates, we go back here\n\t\tmouseX = Math.round((mouseX - boundingRect.left - paddingLeft) / (width) * canvas.width / chart.currentDevicePixelRatio);\n\t\tmouseY = Math.round((mouseY - boundingRect.top - paddingTop) / (height) * canvas.height / chart.currentDevicePixelRatio);\n\n\t\treturn {\n\t\t\tx: mouseX,\n\t\t\ty: mouseY\n\t\t};\n\n\t};\n\n\t// Private helper function to convert max-width/max-height values that may be percentages into a number\n\tfunction parseMaxStyle(styleValue, node, parentProperty) {\n\t\tvar valueInPixels;\n\t\tif (typeof styleValue === 'string') {\n\t\t\tvalueInPixels = parseInt(styleValue, 10);\n\n\t\t\tif (styleValue.indexOf('%') !== -1) {\n\t\t\t\t// percentage * size in dimension\n\t\t\t\tvalueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n\t\t\t}\n\t\t} else {\n\t\t\tvalueInPixels = styleValue;\n\t\t}\n\n\t\treturn valueInPixels;\n\t}\n\n\t/**\n\t * Returns if the given value contains an effective constraint.\n\t * @private\n\t */\n\tfunction isConstrainedValue(value) {\n\t\treturn value !== undefined && value !== null && value !== 'none';\n\t}\n\n\t// Private helper to get a constraint dimension\n\t// @param domNode : the node to check the constraint on\n\t// @param maxStyle : the style that defines the maximum for the direction we are using (maxWidth / maxHeight)\n\t// @param percentageProperty : property of parent to use when calculating width as a percentage\n\t// @see http://www.nathanaeljones.com/blog/2013/reading-max-width-cross-browser\n\tfunction getConstraintDimension(domNode, maxStyle, percentageProperty) {\n\t\tvar view = document.defaultView;\n\t\tvar parentNode = helpers._getParentNode(domNode);\n\t\tvar constrainedNode = view.getComputedStyle(domNode)[maxStyle];\n\t\tvar constrainedContainer = view.getComputedStyle(parentNode)[maxStyle];\n\t\tvar hasCNode = isConstrainedValue(constrainedNode);\n\t\tvar hasCContainer = isConstrainedValue(constrainedContainer);\n\t\tvar infinity = Number.POSITIVE_INFINITY;\n\n\t\tif (hasCNode || hasCContainer) {\n\t\t\treturn Math.min(\n\t\t\t\thasCNode ? parseMaxStyle(constrainedNode, domNode, percentageProperty) : infinity,\n\t\t\t\thasCContainer ? parseMaxStyle(constrainedContainer, parentNode, percentageProperty) : infinity);\n\t\t}\n\n\t\treturn 'none';\n\t}\n\t// returns Number or undefined if no constraint\n\thelpers.getConstraintWidth = function(domNode) {\n\t\treturn getConstraintDimension(domNode, 'max-width', 'clientWidth');\n\t};\n\t// returns Number or undefined if no constraint\n\thelpers.getConstraintHeight = function(domNode) {\n\t\treturn getConstraintDimension(domNode, 'max-height', 'clientHeight');\n\t};\n\t/**\n\t * @private\n \t */\n\thelpers._calculatePadding = function(container, padding, parentDimension) {\n\t\tpadding = helpers.getStyle(container, padding);\n\n\t\treturn padding.indexOf('%') > -1 ? parentDimension / parseInt(padding, 10) : parseInt(padding, 10);\n\t};\n\t/**\n\t * @private\n\t */\n\thelpers._getParentNode = function(domNode) {\n\t\tvar parent = domNode.parentNode;\n\t\tif (parent && parent.host) {\n\t\t\tparent = parent.host;\n\t\t}\n\t\treturn parent;\n\t};\n\thelpers.getMaximumWidth = function(domNode) {\n\t\tvar container = helpers._getParentNode(domNode);\n\t\tif (!container) {\n\t\t\treturn domNode.clientWidth;\n\t\t}\n\n\t\tvar clientWidth = container.clientWidth;\n\t\tvar paddingLeft = helpers._calculatePadding(container, 'padding-left', clientWidth);\n\t\tvar paddingRight = helpers._calculatePadding(container, 'padding-right', clientWidth);\n\n\t\tvar w = clientWidth - paddingLeft - paddingRight;\n\t\tvar cw = helpers.getConstraintWidth(domNode);\n\t\treturn isNaN(cw) ? w : Math.min(w, cw);\n\t};\n\thelpers.getMaximumHeight = function(domNode) {\n\t\tvar container = helpers._getParentNode(domNode);\n\t\tif (!container) {\n\t\t\treturn domNode.clientHeight;\n\t\t}\n\n\t\tvar clientHeight = container.clientHeight;\n\t\tvar paddingTop = helpers._calculatePadding(container, 'padding-top', clientHeight);\n\t\tvar paddingBottom = helpers._calculatePadding(container, 'padding-bottom', clientHeight);\n\n\t\tvar h = clientHeight - paddingTop - paddingBottom;\n\t\tvar ch = helpers.getConstraintHeight(domNode);\n\t\treturn isNaN(ch) ? h : Math.min(h, ch);\n\t};\n\thelpers.getStyle = function(el, property) {\n\t\treturn el.currentStyle ?\n\t\t\tel.currentStyle[property] :\n\t\t\tdocument.defaultView.getComputedStyle(el, null).getPropertyValue(property);\n\t};\n\thelpers.retinaScale = function(chart, forceRatio) {\n\t\tvar pixelRatio = chart.currentDevicePixelRatio = forceRatio || (typeof window !== 'undefined' && window.devicePixelRatio) || 1;\n\t\tif (pixelRatio === 1) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar canvas = chart.canvas;\n\t\tvar height = chart.height;\n\t\tvar width = chart.width;\n\n\t\tcanvas.height = height * pixelRatio;\n\t\tcanvas.width = width * pixelRatio;\n\t\tchart.ctx.scale(pixelRatio, pixelRatio);\n\n\t\t// If no style has been set on the canvas, the render size is used as display size,\n\t\t// making the chart visually bigger, so let's enforce it to the \"correct\" values.\n\t\t// See https://github.com/chartjs/Chart.js/issues/3575\n\t\tif (!canvas.style.height && !canvas.style.width) {\n\t\t\tcanvas.style.height = height + 'px';\n\t\t\tcanvas.style.width = width + 'px';\n\t\t}\n\t};\n\t// -- Canvas methods\n\thelpers.fontString = function(pixelSize, fontStyle, fontFamily) {\n\t\treturn fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n\t};\n\thelpers.longestText = function(ctx, font, arrayOfThings, cache) {\n\t\tcache = cache || {};\n\t\tvar data = cache.data = cache.data || {};\n\t\tvar gc = cache.garbageCollect = cache.garbageCollect || [];\n\n\t\tif (cache.font !== font) {\n\t\t\tdata = cache.data = {};\n\t\t\tgc = cache.garbageCollect = [];\n\t\t\tcache.font = font;\n\t\t}\n\n\t\tctx.font = font;\n\t\tvar longest = 0;\n\t\thelpers.each(arrayOfThings, function(thing) {\n\t\t\t// Undefined strings and arrays should not be measured\n\t\t\tif (thing !== undefined && thing !== null && helpers.isArray(thing) !== true) {\n\t\t\t\tlongest = helpers.measureText(ctx, data, gc, longest, thing);\n\t\t\t} else if (helpers.isArray(thing)) {\n\t\t\t\t// if it is an array lets measure each element\n\t\t\t\t// to do maybe simplify this function a bit so we can do this more recursively?\n\t\t\t\thelpers.each(thing, function(nestedThing) {\n\t\t\t\t\t// Undefined strings and arrays should not be measured\n\t\t\t\t\tif (nestedThing !== undefined && nestedThing !== null && !helpers.isArray(nestedThing)) {\n\t\t\t\t\t\tlongest = helpers.measureText(ctx, data, gc, longest, nestedThing);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tvar gcLen = gc.length / 2;\n\t\tif (gcLen > arrayOfThings.length) {\n\t\t\tfor (var i = 0; i < gcLen; i++) {\n\t\t\t\tdelete data[gc[i]];\n\t\t\t}\n\t\t\tgc.splice(0, gcLen);\n\t\t}\n\t\treturn longest;\n\t};\n\thelpers.measureText = function(ctx, data, gc, longest, string) {\n\t\tvar textWidth = data[string];\n\t\tif (!textWidth) {\n\t\t\ttextWidth = data[string] = ctx.measureText(string).width;\n\t\t\tgc.push(string);\n\t\t}\n\t\tif (textWidth > longest) {\n\t\t\tlongest = textWidth;\n\t\t}\n\t\treturn longest;\n\t};\n\thelpers.numberOfLabelLines = function(arrayOfThings) {\n\t\tvar numberOfLines = 1;\n\t\thelpers.each(arrayOfThings, function(thing) {\n\t\t\tif (helpers.isArray(thing)) {\n\t\t\t\tif (thing.length > numberOfLines) {\n\t\t\t\t\tnumberOfLines = thing.length;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn numberOfLines;\n\t};\n\n\thelpers.color = !color ?\n\t\tfunction(value) {\n\t\t\tconsole.error('Color.js not found!');\n\t\t\treturn value;\n\t\t} :\n\t\tfunction(value) {\n\t\t\t/* global CanvasGradient */\n\t\t\tif (value instanceof CanvasGradient) {\n\t\t\t\tvalue = defaults.global.defaultColor;\n\t\t\t}\n\n\t\t\treturn color(value);\n\t\t};\n\n\thelpers.getHoverColor = function(colorValue) {\n\t\t/* global CanvasPattern */\n\t\treturn (colorValue instanceof CanvasPattern) ?\n\t\t\tcolorValue :\n\t\t\thelpers.color(colorValue).saturate(0.5).darken(0.1).rgbString();\n\t};\n};\n","'use strict';\n\nvar helpers = require('../helpers/index');\nvar Scale = require('../core/core.scale');\n\n/**\n * Generate a set of linear ticks\n * @param generationOptions the options used to generate the ticks\n * @param dataRange the range of the data\n * @returns {Array<Number>} array of tick values\n */\nfunction generateTicks(generationOptions, dataRange) {\n\tvar ticks = [];\n\t// To get a \"nice\" value for the tick spacing, we will use the appropriately named\n\t// \"nice number\" algorithm. See http://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks\n\t// for details.\n\n\tvar factor;\n\tvar precision;\n\tvar spacing;\n\n\tif (generationOptions.stepSize && generationOptions.stepSize > 0) {\n\t\tspacing = generationOptions.stepSize;\n\t} else {\n\t\tvar niceRange = helpers.niceNum(dataRange.max - dataRange.min, false);\n\t\tspacing = helpers.niceNum(niceRange / (generationOptions.maxTicks - 1), true);\n\n\t\tprecision = generationOptions.precision;\n\t\tif (precision !== undefined) {\n\t\t\t// If the user specified a precision, round to that number of decimal places\n\t\t\tfactor = Math.pow(10, precision);\n\t\t\tspacing = Math.ceil(spacing * factor) / factor;\n\t\t}\n\t}\n\tvar niceMin = Math.floor(dataRange.min / spacing) * spacing;\n\tvar niceMax = Math.ceil(dataRange.max / spacing) * spacing;\n\n\t// If min, max and stepSize is set and they make an evenly spaced scale use it.\n\tif (!helpers.isNullOrUndef(generationOptions.min) && !helpers.isNullOrUndef(generationOptions.max) && generationOptions.stepSize) {\n\t\t// If very close to our whole number, use it.\n\t\tif (helpers.almostWhole((generationOptions.max - generationOptions.min) / generationOptions.stepSize, spacing / 1000)) {\n\t\t\tniceMin = generationOptions.min;\n\t\t\tniceMax = generationOptions.max;\n\t\t}\n\t}\n\n\tvar numSpaces = (niceMax - niceMin) / spacing;\n\t// If very close to our rounded value, use it.\n\tif (helpers.almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n\t\tnumSpaces = Math.round(numSpaces);\n\t} else {\n\t\tnumSpaces = Math.ceil(numSpaces);\n\t}\n\n\tprecision = 1;\n\tif (spacing < 1) {\n\t\tprecision = Math.pow(10, 1 - Math.floor(helpers.log10(spacing)));\n\t\tniceMin = Math.round(niceMin * precision) / precision;\n\t\tniceMax = Math.round(niceMax * precision) / precision;\n\t}\n\tticks.push(generationOptions.min !== undefined ? generationOptions.min : niceMin);\n\tfor (var j = 1; j < numSpaces; ++j) {\n\t\tticks.push(Math.round((niceMin + j * spacing) * precision) / precision);\n\t}\n\tticks.push(generationOptions.max !== undefined ? generationOptions.max : niceMax);\n\n\treturn ticks;\n}\n\nmodule.exports = function(Chart) {\n\n\tvar noop = helpers.noop;\n\n\tChart.LinearScaleBase = Scale.extend({\n\t\tgetRightValue: function(value) {\n\t\t\tif (typeof value === 'string') {\n\t\t\t\treturn +value;\n\t\t\t}\n\t\t\treturn Scale.prototype.getRightValue.call(this, value);\n\t\t},\n\n\t\thandleTickRangeOptions: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\n\t\t\t// If we are forcing it to begin at 0, but 0 will already be rendered on the chart,\n\t\t\t// do nothing since that would make the chart weird. If the user really wants a weird chart\n\t\t\t// axis, they can manually override it\n\t\t\tif (tickOpts.beginAtZero) {\n\t\t\t\tvar minSign = helpers.sign(me.min);\n\t\t\t\tvar maxSign = helpers.sign(me.max);\n\n\t\t\t\tif (minSign < 0 && maxSign < 0) {\n\t\t\t\t\t// move the top up to 0\n\t\t\t\t\tme.max = 0;\n\t\t\t\t} else if (minSign > 0 && maxSign > 0) {\n\t\t\t\t\t// move the bottom down to 0\n\t\t\t\t\tme.min = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar setMin = tickOpts.min !== undefined || tickOpts.suggestedMin !== undefined;\n\t\t\tvar setMax = tickOpts.max !== undefined || tickOpts.suggestedMax !== undefined;\n\n\t\t\tif (tickOpts.min !== undefined) {\n\t\t\t\tme.min = tickOpts.min;\n\t\t\t} else if (tickOpts.suggestedMin !== undefined) {\n\t\t\t\tif (me.min === null) {\n\t\t\t\t\tme.min = tickOpts.suggestedMin;\n\t\t\t\t} else {\n\t\t\t\t\tme.min = Math.min(me.min, tickOpts.suggestedMin);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (tickOpts.max !== undefined) {\n\t\t\t\tme.max = tickOpts.max;\n\t\t\t} else if (tickOpts.suggestedMax !== undefined) {\n\t\t\t\tif (me.max === null) {\n\t\t\t\t\tme.max = tickOpts.suggestedMax;\n\t\t\t\t} else {\n\t\t\t\t\tme.max = Math.max(me.max, tickOpts.suggestedMax);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (setMin !== setMax) {\n\t\t\t\t// We set the min or the max but not both.\n\t\t\t\t// So ensure that our range is good\n\t\t\t\t// Inverted or 0 length range can happen when\n\t\t\t\t// ticks.min is set, and no datasets are visible\n\t\t\t\tif (me.min >= me.max) {\n\t\t\t\t\tif (setMin) {\n\t\t\t\t\t\tme.max = me.min + 1;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tme.min = me.max - 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (me.min === me.max) {\n\t\t\t\tme.max++;\n\n\t\t\t\tif (!tickOpts.beginAtZero) {\n\t\t\t\t\tme.min--;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tgetTickLimit: noop,\n\t\thandleDirectionalChanges: noop,\n\n\t\tbuildTicks: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\n\t\t\t// Figure out what the max number of ticks we can support it is based on the size of\n\t\t\t// the axis area. For now, we say that the minimum tick spacing in pixels must be 50\n\t\t\t// We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\n\t\t\t// the graph. Make sure we always have at least 2 ticks\n\t\t\tvar maxTicks = me.getTickLimit();\n\t\t\tmaxTicks = Math.max(2, maxTicks);\n\n\t\t\tvar numericGeneratorOptions = {\n\t\t\t\tmaxTicks: maxTicks,\n\t\t\t\tmin: tickOpts.min,\n\t\t\t\tmax: tickOpts.max,\n\t\t\t\tprecision: tickOpts.precision,\n\t\t\t\tstepSize: helpers.valueOrDefault(tickOpts.fixedStepSize, tickOpts.stepSize)\n\t\t\t};\n\t\t\tvar ticks = me.ticks = generateTicks(numericGeneratorOptions, me);\n\n\t\t\tme.handleDirectionalChanges();\n\n\t\t\t// At this point, we need to update our max and min given the tick values since we have expanded the\n\t\t\t// range of the scale\n\t\t\tme.max = helpers.max(ticks);\n\t\t\tme.min = helpers.min(ticks);\n\n\t\t\tif (tickOpts.reverse) {\n\t\t\t\tticks.reverse();\n\n\t\t\t\tme.start = me.max;\n\t\t\t\tme.end = me.min;\n\t\t\t} else {\n\t\t\t\tme.start = me.min;\n\t\t\t\tme.end = me.max;\n\t\t\t}\n\t\t},\n\t\tconvertTicksToLabels: function() {\n\t\t\tvar me = this;\n\t\t\tme.ticksAsNumbers = me.ticks.slice();\n\t\t\tme.zeroLineIndex = me.ticks.indexOf(0);\n\n\t\t\tScale.prototype.convertTicksToLabels.call(me);\n\t\t}\n\t});\n};\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"table-responsive\"},[_c('loader',{attrs:{\"yes\":_vm.loadingJobs}}),_vm._v(\" \"),(!_vm.loadingJobs && !_vm.jobs.length)?_c('p',{staticClass:\"text-center m-0 p-5\"},[_vm._v(\"\\n There aren't any jobs.\\n \")]):_vm._e(),_vm._v(\" \"),(!_vm.loadingJobs && _vm.jobs.length)?_c('table',{staticClass:\"table card-table table-hover\"},[_vm._m(0),_vm._v(\" \"),_c('tbody',_vm._l((_vm.jobs),function(job){return _c('tr',[_c('td',[_c('router-link',{attrs:{\"to\":{ name: 'metrics.detail', params: { type: 'jobs', slug: job }}}},[_vm._v(_vm._s(job))])],1)])}),0)]):_vm._e()],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('thead',[_c('tr',[_c('th',[_vm._v(\"Job\")])])])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--4-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Jobs.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--4-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Jobs.vue?vue&type=script&lang=js&\"","<script type=\"text/ecmascript-6\">\n export default {\n components: {},\n\n\n /**\n * The component's data.\n */\n data() {\n return {\n loadingJobs: true,\n jobs: []\n };\n },\n\n\n /**\n * Prepare the component.\n */\n mounted() {\n this.loadJobs();\n },\n\n\n methods: {\n /**\n * Load the jobs.\n */\n loadJobs() {\n this.loadingJobs = true;\n\n this.$http.get('/horizon/api/metrics/jobs')\n .then(response => {\n this.jobs = response.data;\n\n this.loadingJobs = false;\n });\n }\n }\n }\n</script>\n\n<template>\n <div class=\"table-responsive\">\n <loader :yes=\"loadingJobs\"/>\n\n <p class=\"text-center m-0 p-5\" v-if=\"!loadingJobs && !jobs.length\">\n There aren't any jobs.\n </p>\n\n <table v-if=\"!loadingJobs && jobs.length\" class=\"table card-table table-hover\">\n <thead>\n <tr>\n <th>Job</th>\n </tr>\n </thead>\n <tbody>\n <tr v-for=\"job in jobs\">\n <td>\n <router-link :to=\"{ name: 'metrics.detail', params: { type: 'jobs', slug: job }}\">{{ job }}</router-link>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n</template>\n","import { render, staticRenderFns } from \"./Jobs.vue?vue&type=template&id=433750b0&\"\nimport script from \"./Jobs.vue?vue&type=script&lang=js&\"\nexport * from \"./Jobs.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/**\n * Chart.Platform implementation for targeting a web browser\n */\n\n'use strict';\n\nvar helpers = require('../helpers/index');\n\nvar EXPANDO_KEY = '$chartjs';\nvar CSS_PREFIX = 'chartjs-';\nvar CSS_RENDER_MONITOR = CSS_PREFIX + 'render-monitor';\nvar CSS_RENDER_ANIMATION = CSS_PREFIX + 'render-animation';\nvar ANIMATION_START_EVENTS = ['animationstart', 'webkitAnimationStart'];\n\n/**\n * DOM event types -> Chart.js event types.\n * Note: only events with different types are mapped.\n * @see https://developer.mozilla.org/en-US/docs/Web/Events\n */\nvar EVENT_TYPES = {\n\ttouchstart: 'mousedown',\n\ttouchmove: 'mousemove',\n\ttouchend: 'mouseup',\n\tpointerenter: 'mouseenter',\n\tpointerdown: 'mousedown',\n\tpointermove: 'mousemove',\n\tpointerup: 'mouseup',\n\tpointerleave: 'mouseout',\n\tpointerout: 'mouseout'\n};\n\n/**\n * The \"used\" size is the final value of a dimension property after all calculations have\n * been performed. This method uses the computed style of `element` but returns undefined\n * if the computed style is not expressed in pixels. That can happen in some cases where\n * `element` has a size relative to its parent and this last one is not yet displayed,\n * for example because of `display: none` on a parent node.\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\n * @returns {Number} Size in pixels or undefined if unknown.\n */\nfunction readUsedSize(element, property) {\n\tvar value = helpers.getStyle(element, property);\n\tvar matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n\treturn matches ? Number(matches[1]) : undefined;\n}\n\n/**\n * Initializes the canvas style and render size without modifying the canvas display size,\n * since responsiveness is handled by the controller.resize() method. The config is used\n * to determine the aspect ratio to apply in case no explicit height has been specified.\n */\nfunction initCanvas(canvas, config) {\n\tvar style = canvas.style;\n\n\t// NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it\n\t// returns null or '' if no explicit value has been set to the canvas attribute.\n\tvar renderHeight = canvas.getAttribute('height');\n\tvar renderWidth = canvas.getAttribute('width');\n\n\t// Chart.js modifies some canvas values that we want to restore on destroy\n\tcanvas[EXPANDO_KEY] = {\n\t\tinitial: {\n\t\t\theight: renderHeight,\n\t\t\twidth: renderWidth,\n\t\t\tstyle: {\n\t\t\t\tdisplay: style.display,\n\t\t\t\theight: style.height,\n\t\t\t\twidth: style.width\n\t\t\t}\n\t\t}\n\t};\n\n\t// Force canvas to display as block to avoid extra space caused by inline\n\t// elements, which would interfere with the responsive resize process.\n\t// https://github.com/chartjs/Chart.js/issues/2538\n\tstyle.display = style.display || 'block';\n\n\tif (renderWidth === null || renderWidth === '') {\n\t\tvar displayWidth = readUsedSize(canvas, 'width');\n\t\tif (displayWidth !== undefined) {\n\t\t\tcanvas.width = displayWidth;\n\t\t}\n\t}\n\n\tif (renderHeight === null || renderHeight === '') {\n\t\tif (canvas.style.height === '') {\n\t\t\t// If no explicit render height and style height, let's apply the aspect ratio,\n\t\t\t// which one can be specified by the user but also by charts as default option\n\t\t\t// (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2.\n\t\t\tcanvas.height = canvas.width / (config.options.aspectRatio || 2);\n\t\t} else {\n\t\t\tvar displayHeight = readUsedSize(canvas, 'height');\n\t\t\tif (displayWidth !== undefined) {\n\t\t\t\tcanvas.height = displayHeight;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn canvas;\n}\n\n/**\n * Detects support for options object argument in addEventListener.\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\n * @private\n */\nvar supportsEventListenerOptions = (function() {\n\tvar supports = false;\n\ttry {\n\t\tvar options = Object.defineProperty({}, 'passive', {\n\t\t\tget: function() {\n\t\t\t\tsupports = true;\n\t\t\t}\n\t\t});\n\t\twindow.addEventListener('e', null, options);\n\t} catch (e) {\n\t\t// continue regardless of error\n\t}\n\treturn supports;\n}());\n\n// Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events.\n// https://github.com/chartjs/Chart.js/issues/4287\nvar eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\n\nfunction addEventListener(node, type, listener) {\n\tnode.addEventListener(type, listener, eventListenerOptions);\n}\n\nfunction removeEventListener(node, type, listener) {\n\tnode.removeEventListener(type, listener, eventListenerOptions);\n}\n\nfunction createEvent(type, chart, x, y, nativeEvent) {\n\treturn {\n\t\ttype: type,\n\t\tchart: chart,\n\t\tnative: nativeEvent || null,\n\t\tx: x !== undefined ? x : null,\n\t\ty: y !== undefined ? y : null,\n\t};\n}\n\nfunction fromNativeEvent(event, chart) {\n\tvar type = EVENT_TYPES[event.type] || event.type;\n\tvar pos = helpers.getRelativePosition(event, chart);\n\treturn createEvent(type, chart, pos.x, pos.y, event);\n}\n\nfunction throttled(fn, thisArg) {\n\tvar ticking = false;\n\tvar args = [];\n\n\treturn function() {\n\t\targs = Array.prototype.slice.call(arguments);\n\t\tthisArg = thisArg || this;\n\n\t\tif (!ticking) {\n\t\t\tticking = true;\n\t\t\thelpers.requestAnimFrame.call(window, function() {\n\t\t\t\tticking = false;\n\t\t\t\tfn.apply(thisArg, args);\n\t\t\t});\n\t\t}\n\t};\n}\n\n// Implementation based on https://github.com/marcj/css-element-queries\nfunction createResizer(handler) {\n\tvar resizer = document.createElement('div');\n\tvar cls = CSS_PREFIX + 'size-monitor';\n\tvar maxSize = 1000000;\n\tvar style =\n\t\t'position:absolute;' +\n\t\t'left:0;' +\n\t\t'top:0;' +\n\t\t'right:0;' +\n\t\t'bottom:0;' +\n\t\t'overflow:hidden;' +\n\t\t'pointer-events:none;' +\n\t\t'visibility:hidden;' +\n\t\t'z-index:-1;';\n\n\tresizer.style.cssText = style;\n\tresizer.className = cls;\n\tresizer.innerHTML =\n\t\t'<div class=\"' + cls + '-expand\" style=\"' + style + '\">' +\n\t\t\t'<div style=\"' +\n\t\t\t\t'position:absolute;' +\n\t\t\t\t'width:' + maxSize + 'px;' +\n\t\t\t\t'height:' + maxSize + 'px;' +\n\t\t\t\t'left:0;' +\n\t\t\t\t'top:0\">' +\n\t\t\t'</div>' +\n\t\t'</div>' +\n\t\t'<div class=\"' + cls + '-shrink\" style=\"' + style + '\">' +\n\t\t\t'<div style=\"' +\n\t\t\t\t'position:absolute;' +\n\t\t\t\t'width:200%;' +\n\t\t\t\t'height:200%;' +\n\t\t\t\t'left:0; ' +\n\t\t\t\t'top:0\">' +\n\t\t\t'</div>' +\n\t\t'</div>';\n\n\tvar expand = resizer.childNodes[0];\n\tvar shrink = resizer.childNodes[1];\n\n\tresizer._reset = function() {\n\t\texpand.scrollLeft = maxSize;\n\t\texpand.scrollTop = maxSize;\n\t\tshrink.scrollLeft = maxSize;\n\t\tshrink.scrollTop = maxSize;\n\t};\n\tvar onScroll = function() {\n\t\tresizer._reset();\n\t\thandler();\n\t};\n\n\taddEventListener(expand, 'scroll', onScroll.bind(expand, 'expand'));\n\taddEventListener(shrink, 'scroll', onScroll.bind(shrink, 'shrink'));\n\n\treturn resizer;\n}\n\n// https://davidwalsh.name/detect-node-insertion\nfunction watchForRender(node, handler) {\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\n\tvar proxy = expando.renderProxy = function(e) {\n\t\tif (e.animationName === CSS_RENDER_ANIMATION) {\n\t\t\thandler();\n\t\t}\n\t};\n\n\thelpers.each(ANIMATION_START_EVENTS, function(type) {\n\t\taddEventListener(node, type, proxy);\n\t});\n\n\t// #4737: Chrome might skip the CSS animation when the CSS_RENDER_MONITOR class\n\t// is removed then added back immediately (same animation frame?). Accessing the\n\t// `offsetParent` property will force a reflow and re-evaluate the CSS animation.\n\t// https://gist.github.com/paulirish/5d52fb081b3570c81e3a#box-metrics\n\t// https://github.com/chartjs/Chart.js/issues/4737\n\texpando.reflow = !!node.offsetParent;\n\n\tnode.classList.add(CSS_RENDER_MONITOR);\n}\n\nfunction unwatchForRender(node) {\n\tvar expando = node[EXPANDO_KEY] || {};\n\tvar proxy = expando.renderProxy;\n\n\tif (proxy) {\n\t\thelpers.each(ANIMATION_START_EVENTS, function(type) {\n\t\t\tremoveEventListener(node, type, proxy);\n\t\t});\n\n\t\tdelete expando.renderProxy;\n\t}\n\n\tnode.classList.remove(CSS_RENDER_MONITOR);\n}\n\nfunction addResizeListener(node, listener, chart) {\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\n\n\t// Let's keep track of this added resizer and thus avoid DOM query when removing it.\n\tvar resizer = expando.resizer = createResizer(throttled(function() {\n\t\tif (expando.resizer) {\n\t\t\treturn listener(createEvent('resize', chart));\n\t\t}\n\t}));\n\n\t// The resizer needs to be attached to the node parent, so we first need to be\n\t// sure that `node` is attached to the DOM before injecting the resizer element.\n\twatchForRender(node, function() {\n\t\tif (expando.resizer) {\n\t\t\tvar container = node.parentNode;\n\t\t\tif (container && container !== resizer.parentNode) {\n\t\t\t\tcontainer.insertBefore(resizer, container.firstChild);\n\t\t\t}\n\n\t\t\t// The container size might have changed, let's reset the resizer state.\n\t\t\tresizer._reset();\n\t\t}\n\t});\n}\n\nfunction removeResizeListener(node) {\n\tvar expando = node[EXPANDO_KEY] || {};\n\tvar resizer = expando.resizer;\n\n\tdelete expando.resizer;\n\tunwatchForRender(node);\n\n\tif (resizer && resizer.parentNode) {\n\t\tresizer.parentNode.removeChild(resizer);\n\t}\n}\n\nfunction injectCSS(platform, css) {\n\t// http://stackoverflow.com/q/3922139\n\tvar style = platform._style || document.createElement('style');\n\tif (!platform._style) {\n\t\tplatform._style = style;\n\t\tcss = '/* Chart.js */\\n' + css;\n\t\tstyle.setAttribute('type', 'text/css');\n\t\tdocument.getElementsByTagName('head')[0].appendChild(style);\n\t}\n\n\tstyle.appendChild(document.createTextNode(css));\n}\n\nmodule.exports = {\n\t/**\n\t * This property holds whether this platform is enabled for the current environment.\n\t * Currently used by platform.js to select the proper implementation.\n\t * @private\n\t */\n\t_enabled: typeof window !== 'undefined' && typeof document !== 'undefined',\n\n\tinitialize: function() {\n\t\tvar keyframes = 'from{opacity:0.99}to{opacity:1}';\n\n\t\tinjectCSS(this,\n\t\t\t// DOM rendering detection\n\t\t\t// https://davidwalsh.name/detect-node-insertion\n\t\t\t'@-webkit-keyframes ' + CSS_RENDER_ANIMATION + '{' + keyframes + '}' +\n\t\t\t'@keyframes ' + CSS_RENDER_ANIMATION + '{' + keyframes + '}' +\n\t\t\t'.' + CSS_RENDER_MONITOR + '{' +\n\t\t\t\t'-webkit-animation:' + CSS_RENDER_ANIMATION + ' 0.001s;' +\n\t\t\t\t'animation:' + CSS_RENDER_ANIMATION + ' 0.001s;' +\n\t\t\t'}'\n\t\t);\n\t},\n\n\tacquireContext: function(item, config) {\n\t\tif (typeof item === 'string') {\n\t\t\titem = document.getElementById(item);\n\t\t} else if (item.length) {\n\t\t\t// Support for array based queries (such as jQuery)\n\t\t\titem = item[0];\n\t\t}\n\n\t\tif (item && item.canvas) {\n\t\t\t// Support for any object associated to a canvas (including a context2d)\n\t\t\titem = item.canvas;\n\t\t}\n\n\t\t// To prevent canvas fingerprinting, some add-ons undefine the getContext\n\t\t// method, for example: https://github.com/kkapsner/CanvasBlocker\n\t\t// https://github.com/chartjs/Chart.js/issues/2807\n\t\tvar context = item && item.getContext && item.getContext('2d');\n\n\t\t// `instanceof HTMLCanvasElement/CanvasRenderingContext2D` fails when the item is\n\t\t// inside an iframe or when running in a protected environment. We could guess the\n\t\t// types from their toString() value but let's keep things flexible and assume it's\n\t\t// a sufficient condition if the item has a context2D which has item as `canvas`.\n\t\t// https://github.com/chartjs/Chart.js/issues/3887\n\t\t// https://github.com/chartjs/Chart.js/issues/4102\n\t\t// https://github.com/chartjs/Chart.js/issues/4152\n\t\tif (context && context.canvas === item) {\n\t\t\tinitCanvas(item, config);\n\t\t\treturn context;\n\t\t}\n\n\t\treturn null;\n\t},\n\n\treleaseContext: function(context) {\n\t\tvar canvas = context.canvas;\n\t\tif (!canvas[EXPANDO_KEY]) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar initial = canvas[EXPANDO_KEY].initial;\n\t\t['height', 'width'].forEach(function(prop) {\n\t\t\tvar value = initial[prop];\n\t\t\tif (helpers.isNullOrUndef(value)) {\n\t\t\t\tcanvas.removeAttribute(prop);\n\t\t\t} else {\n\t\t\t\tcanvas.setAttribute(prop, value);\n\t\t\t}\n\t\t});\n\n\t\thelpers.each(initial.style || {}, function(value, key) {\n\t\t\tcanvas.style[key] = value;\n\t\t});\n\n\t\t// The canvas render size might have been changed (and thus the state stack discarded),\n\t\t// we can't use save() and restore() to restore the initial state. So make sure that at\n\t\t// least the canvas context is reset to the default state by setting the canvas width.\n\t\t// https://www.w3.org/TR/2011/WD-html5-20110525/the-canvas-element.html\n\t\tcanvas.width = canvas.width;\n\n\t\tdelete canvas[EXPANDO_KEY];\n\t},\n\n\taddEventListener: function(chart, type, listener) {\n\t\tvar canvas = chart.canvas;\n\t\tif (type === 'resize') {\n\t\t\t// Note: the resize event is not supported on all browsers.\n\t\t\taddResizeListener(canvas, listener, chart);\n\t\t\treturn;\n\t\t}\n\n\t\tvar expando = listener[EXPANDO_KEY] || (listener[EXPANDO_KEY] = {});\n\t\tvar proxies = expando.proxies || (expando.proxies = {});\n\t\tvar proxy = proxies[chart.id + '_' + type] = function(event) {\n\t\t\tlistener(fromNativeEvent(event, chart));\n\t\t};\n\n\t\taddEventListener(canvas, type, proxy);\n\t},\n\n\tremoveEventListener: function(chart, type, listener) {\n\t\tvar canvas = chart.canvas;\n\t\tif (type === 'resize') {\n\t\t\t// Note: the resize event is not supported on all browsers.\n\t\t\tremoveResizeListener(canvas, listener);\n\t\t\treturn;\n\t\t}\n\n\t\tvar expando = listener[EXPANDO_KEY] || {};\n\t\tvar proxies = expando.proxies || {};\n\t\tvar proxy = proxies[chart.id + '_' + type];\n\t\tif (!proxy) {\n\t\t\treturn;\n\t\t}\n\n\t\tremoveEventListener(canvas, type, proxy);\n\t}\n};\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use EventTarget.addEventListener instead.\n * EventTarget.addEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener\n * @function Chart.helpers.addEvent\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.addEvent = addEventListener;\n\n/**\n * Provided for backward compatibility, use EventTarget.removeEventListener instead.\n * EventTarget.removeEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener\n * @function Chart.helpers.removeEvent\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.removeEvent = removeEventListener;\n","'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.PolarArea = function(context, config) {\n\t\tconfig.type = 'polarArea';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('layout',[_c('section',{staticClass:\"main-content\"},[_c('div',{staticClass:\"card\"},[_c('div',{staticClass:\"card-header\"},[_vm._v(\"Metrics\")]),_vm._v(\" \"),_c('ul',{staticClass:\"nav nav-tabs card-tabs\"},[_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"to\":\"/metrics/jobs\",\"active-class\":\"active\"}},[_vm._v(\"Jobs\")])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"to\":\"/metrics/queues\",\"active-class\":\"active\"}},[_vm._v(\"Queues\")])],1)]),_vm._v(\" \"),_c('router-view')],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--4-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--4-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=js&\"","<script type=\"text/ecmascript-6\">\n import Layout from '../../layouts/MainLayout.vue'\n\n export default {\n components: {Layout},\n\n\n /**\n * Prepare the component.\n */\n created() {\n document.title = \"Horizon - Metrics\";\n }\n }\n</script>\n\n<template>\n <layout>\n <section class=\"main-content\">\n <div class=\"card\">\n <div class=\"card-header\">Metrics</div>\n\n <ul class=\"nav nav-tabs card-tabs\">\n <li class=\"nav-item\">\n <router-link to=\"/metrics/jobs\" active-class=\"active\" class=\"nav-link\">Jobs</router-link>\n </li>\n <li class=\"nav-item\">\n <router-link to=\"/metrics/queues\" active-class=\"active\" class=\"nav-link\">Queues</router-link>\n </li>\n </ul>\n\n <router-view/>\n </div>\n </section>\n </layout>\n</template>\n","import { render, staticRenderFns } from \"./Index.vue?vue&type=template&id=e43c89e0&\"\nimport script from \"./Index.vue?vue&type=script&lang=js&\"\nexport * from \"./Index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/* MIT license */\n\nmodule.exports = {\n rgb2hsl: rgb2hsl,\n rgb2hsv: rgb2hsv,\n rgb2hwb: rgb2hwb,\n rgb2cmyk: rgb2cmyk,\n rgb2keyword: rgb2keyword,\n rgb2xyz: rgb2xyz,\n rgb2lab: rgb2lab,\n rgb2lch: rgb2lch,\n\n hsl2rgb: hsl2rgb,\n hsl2hsv: hsl2hsv,\n hsl2hwb: hsl2hwb,\n hsl2cmyk: hsl2cmyk,\n hsl2keyword: hsl2keyword,\n\n hsv2rgb: hsv2rgb,\n hsv2hsl: hsv2hsl,\n hsv2hwb: hsv2hwb,\n hsv2cmyk: hsv2cmyk,\n hsv2keyword: hsv2keyword,\n\n hwb2rgb: hwb2rgb,\n hwb2hsl: hwb2hsl,\n hwb2hsv: hwb2hsv,\n hwb2cmyk: hwb2cmyk,\n hwb2keyword: hwb2keyword,\n\n cmyk2rgb: cmyk2rgb,\n cmyk2hsl: cmyk2hsl,\n cmyk2hsv: cmyk2hsv,\n cmyk2hwb: cmyk2hwb,\n cmyk2keyword: cmyk2keyword,\n\n keyword2rgb: keyword2rgb,\n keyword2hsl: keyword2hsl,\n keyword2hsv: keyword2hsv,\n keyword2hwb: keyword2hwb,\n keyword2cmyk: keyword2cmyk,\n keyword2lab: keyword2lab,\n keyword2xyz: keyword2xyz,\n\n xyz2rgb: xyz2rgb,\n xyz2lab: xyz2lab,\n xyz2lch: xyz2lch,\n\n lab2xyz: lab2xyz,\n lab2rgb: lab2rgb,\n lab2lch: lab2lch,\n\n lch2lab: lch2lab,\n lch2xyz: lch2xyz,\n lch2rgb: lch2rgb\n}\n\n\nfunction rgb2hsl(rgb) {\n var r = rgb[0]/255,\n g = rgb[1]/255,\n b = rgb[2]/255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n delta = max - min,\n h, s, l;\n\n if (max == min)\n h = 0;\n else if (r == max)\n h = (g - b) / delta;\n else if (g == max)\n h = 2 + (b - r) / delta;\n else if (b == max)\n h = 4 + (r - g)/ delta;\n\n h = Math.min(h * 60, 360);\n\n if (h < 0)\n h += 360;\n\n l = (min + max) / 2;\n\n if (max == min)\n s = 0;\n else if (l <= 0.5)\n s = delta / (max + min);\n else\n s = delta / (2 - max - min);\n\n return [h, s * 100, l * 100];\n}\n\nfunction rgb2hsv(rgb) {\n var r = rgb[0],\n g = rgb[1],\n b = rgb[2],\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n delta = max - min,\n h, s, v;\n\n if (max == 0)\n s = 0;\n else\n s = (delta/max * 1000)/10;\n\n if (max == min)\n h = 0;\n else if (r == max)\n h = (g - b) / delta;\n else if (g == max)\n h = 2 + (b - r) / delta;\n else if (b == max)\n h = 4 + (r - g) / delta;\n\n h = Math.min(h * 60, 360);\n\n if (h < 0)\n h += 360;\n\n v = ((max / 255) * 1000) / 10;\n\n return [h, s, v];\n}\n\nfunction rgb2hwb(rgb) {\n var r = rgb[0],\n g = rgb[1],\n b = rgb[2],\n h = rgb2hsl(rgb)[0],\n w = 1/255 * Math.min(r, Math.min(g, b)),\n b = 1 - 1/255 * Math.max(r, Math.max(g, b));\n\n return [h, w * 100, b * 100];\n}\n\nfunction rgb2cmyk(rgb) {\n var r = rgb[0] / 255,\n g = rgb[1] / 255,\n b = rgb[2] / 255,\n c, m, y, k;\n\n k = Math.min(1 - r, 1 - g, 1 - b);\n c = (1 - r - k) / (1 - k) || 0;\n m = (1 - g - k) / (1 - k) || 0;\n y = (1 - b - k) / (1 - k) || 0;\n return [c * 100, m * 100, y * 100, k * 100];\n}\n\nfunction rgb2keyword(rgb) {\n return reverseKeywords[JSON.stringify(rgb)];\n}\n\nfunction rgb2xyz(rgb) {\n var r = rgb[0] / 255,\n g = rgb[1] / 255,\n b = rgb[2] / 255;\n\n // assume sRGB\n r = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n g = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n b = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n var x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n var y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n var z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n return [x * 100, y *100, z * 100];\n}\n\nfunction rgb2lab(rgb) {\n var xyz = rgb2xyz(rgb),\n x = xyz[0],\n y = xyz[1],\n z = xyz[2],\n l, a, b;\n\n x /= 95.047;\n y /= 100;\n z /= 108.883;\n\n x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116);\n y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116);\n z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116);\n\n l = (116 * y) - 16;\n a = 500 * (x - y);\n b = 200 * (y - z);\n\n return [l, a, b];\n}\n\nfunction rgb2lch(args) {\n return lab2lch(rgb2lab(args));\n}\n\nfunction hsl2rgb(hsl) {\n var h = hsl[0] / 360,\n s = hsl[1] / 100,\n l = hsl[2] / 100,\n t1, t2, t3, rgb, val;\n\n if (s == 0) {\n val = l * 255;\n return [val, val, val];\n }\n\n if (l < 0.5)\n t2 = l * (1 + s);\n else\n t2 = l + s - l * s;\n t1 = 2 * l - t2;\n\n rgb = [0, 0, 0];\n for (var i = 0; i < 3; i++) {\n t3 = h + 1 / 3 * - (i - 1);\n t3 < 0 && t3++;\n t3 > 1 && t3--;\n\n if (6 * t3 < 1)\n val = t1 + (t2 - t1) * 6 * t3;\n else if (2 * t3 < 1)\n val = t2;\n else if (3 * t3 < 2)\n val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n else\n val = t1;\n\n rgb[i] = val * 255;\n }\n\n return rgb;\n}\n\nfunction hsl2hsv(hsl) {\n var h = hsl[0],\n s = hsl[1] / 100,\n l = hsl[2] / 100,\n sv, v;\n\n if(l === 0) {\n // no need to do calc on black\n // also avoids divide by 0 error\n return [0, 0, 0];\n }\n\n l *= 2;\n s *= (l <= 1) ? l : 2 - l;\n v = (l + s) / 2;\n sv = (2 * s) / (l + s);\n return [h, sv * 100, v * 100];\n}\n\nfunction hsl2hwb(args) {\n return rgb2hwb(hsl2rgb(args));\n}\n\nfunction hsl2cmyk(args) {\n return rgb2cmyk(hsl2rgb(args));\n}\n\nfunction hsl2keyword(args) {\n return rgb2keyword(hsl2rgb(args));\n}\n\n\nfunction hsv2rgb(hsv) {\n var h = hsv[0] / 60,\n s = hsv[1] / 100,\n v = hsv[2] / 100,\n hi = Math.floor(h) % 6;\n\n var f = h - Math.floor(h),\n p = 255 * v * (1 - s),\n q = 255 * v * (1 - (s * f)),\n t = 255 * v * (1 - (s * (1 - f))),\n v = 255 * v;\n\n switch(hi) {\n case 0:\n return [v, t, p];\n case 1:\n return [q, v, p];\n case 2:\n return [p, v, t];\n case 3:\n return [p, q, v];\n case 4:\n return [t, p, v];\n case 5:\n return [v, p, q];\n }\n}\n\nfunction hsv2hsl(hsv) {\n var h = hsv[0],\n s = hsv[1] / 100,\n v = hsv[2] / 100,\n sl, l;\n\n l = (2 - s) * v;\n sl = s * v;\n sl /= (l <= 1) ? l : 2 - l;\n sl = sl || 0;\n l /= 2;\n return [h, sl * 100, l * 100];\n}\n\nfunction hsv2hwb(args) {\n return rgb2hwb(hsv2rgb(args))\n}\n\nfunction hsv2cmyk(args) {\n return rgb2cmyk(hsv2rgb(args));\n}\n\nfunction hsv2keyword(args) {\n return rgb2keyword(hsv2rgb(args));\n}\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nfunction hwb2rgb(hwb) {\n var h = hwb[0] / 360,\n wh = hwb[1] / 100,\n bl = hwb[2] / 100,\n ratio = wh + bl,\n i, v, f, n;\n\n // wh + bl cant be > 1\n if (ratio > 1) {\n wh /= ratio;\n bl /= ratio;\n }\n\n i = Math.floor(6 * h);\n v = 1 - bl;\n f = 6 * h - i;\n if ((i & 0x01) != 0) {\n f = 1 - f;\n }\n n = wh + f * (v - wh); // linear interpolation\n\n switch (i) {\n default:\n case 6:\n case 0: r = v; g = n; b = wh; break;\n case 1: r = n; g = v; b = wh; break;\n case 2: r = wh; g = v; b = n; break;\n case 3: r = wh; g = n; b = v; break;\n case 4: r = n; g = wh; b = v; break;\n case 5: r = v; g = wh; b = n; break;\n }\n\n return [r * 255, g * 255, b * 255];\n}\n\nfunction hwb2hsl(args) {\n return rgb2hsl(hwb2rgb(args));\n}\n\nfunction hwb2hsv(args) {\n return rgb2hsv(hwb2rgb(args));\n}\n\nfunction hwb2cmyk(args) {\n return rgb2cmyk(hwb2rgb(args));\n}\n\nfunction hwb2keyword(args) {\n return rgb2keyword(hwb2rgb(args));\n}\n\nfunction cmyk2rgb(cmyk) {\n var c = cmyk[0] / 100,\n m = cmyk[1] / 100,\n y = cmyk[2] / 100,\n k = cmyk[3] / 100,\n r, g, b;\n\n r = 1 - Math.min(1, c * (1 - k) + k);\n g = 1 - Math.min(1, m * (1 - k) + k);\n b = 1 - Math.min(1, y * (1 - k) + k);\n return [r * 255, g * 255, b * 255];\n}\n\nfunction cmyk2hsl(args) {\n return rgb2hsl(cmyk2rgb(args));\n}\n\nfunction cmyk2hsv(args) {\n return rgb2hsv(cmyk2rgb(args));\n}\n\nfunction cmyk2hwb(args) {\n return rgb2hwb(cmyk2rgb(args));\n}\n\nfunction cmyk2keyword(args) {\n return rgb2keyword(cmyk2rgb(args));\n}\n\n\nfunction xyz2rgb(xyz) {\n var x = xyz[0] / 100,\n y = xyz[1] / 100,\n z = xyz[2] / 100,\n r, g, b;\n\n r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n // assume sRGB\n r = r > 0.0031308 ? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n : r = (r * 12.92);\n\n g = g > 0.0031308 ? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n : g = (g * 12.92);\n\n b = b > 0.0031308 ? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n : b = (b * 12.92);\n\n r = Math.min(Math.max(0, r), 1);\n g = Math.min(Math.max(0, g), 1);\n b = Math.min(Math.max(0, b), 1);\n\n return [r * 255, g * 255, b * 255];\n}\n\nfunction xyz2lab(xyz) {\n var x = xyz[0],\n y = xyz[1],\n z = xyz[2],\n l, a, b;\n\n x /= 95.047;\n y /= 100;\n z /= 108.883;\n\n x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116);\n y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116);\n z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116);\n\n l = (116 * y) - 16;\n a = 500 * (x - y);\n b = 200 * (y - z);\n\n return [l, a, b];\n}\n\nfunction xyz2lch(args) {\n return lab2lch(xyz2lab(args));\n}\n\nfunction lab2xyz(lab) {\n var l = lab[0],\n a = lab[1],\n b = lab[2],\n x, y, z, y2;\n\n if (l <= 8) {\n y = (l * 100) / 903.3;\n y2 = (7.787 * (y / 100)) + (16 / 116);\n } else {\n y = 100 * Math.pow((l + 16) / 116, 3);\n y2 = Math.pow(y / 100, 1/3);\n }\n\n x = x / 95.047 <= 0.008856 ? x = (95.047 * ((a / 500) + y2 - (16 / 116))) / 7.787 : 95.047 * Math.pow((a / 500) + y2, 3);\n\n z = z / 108.883 <= 0.008859 ? z = (108.883 * (y2 - (b / 200) - (16 / 116))) / 7.787 : 108.883 * Math.pow(y2 - (b / 200), 3);\n\n return [x, y, z];\n}\n\nfunction lab2lch(lab) {\n var l = lab[0],\n a = lab[1],\n b = lab[2],\n hr, h, c;\n\n hr = Math.atan2(b, a);\n h = hr * 360 / 2 / Math.PI;\n if (h < 0) {\n h += 360;\n }\n c = Math.sqrt(a * a + b * b);\n return [l, c, h];\n}\n\nfunction lab2rgb(args) {\n return xyz2rgb(lab2xyz(args));\n}\n\nfunction lch2lab(lch) {\n var l = lch[0],\n c = lch[1],\n h = lch[2],\n a, b, hr;\n\n hr = h / 360 * 2 * Math.PI;\n a = c * Math.cos(hr);\n b = c * Math.sin(hr);\n return [l, a, b];\n}\n\nfunction lch2xyz(args) {\n return lab2xyz(lch2lab(args));\n}\n\nfunction lch2rgb(args) {\n return lab2rgb(lch2lab(args));\n}\n\nfunction keyword2rgb(keyword) {\n return cssKeywords[keyword];\n}\n\nfunction keyword2hsl(args) {\n return rgb2hsl(keyword2rgb(args));\n}\n\nfunction keyword2hsv(args) {\n return rgb2hsv(keyword2rgb(args));\n}\n\nfunction keyword2hwb(args) {\n return rgb2hwb(keyword2rgb(args));\n}\n\nfunction keyword2cmyk(args) {\n return rgb2cmyk(keyword2rgb(args));\n}\n\nfunction keyword2lab(args) {\n return rgb2lab(keyword2rgb(args));\n}\n\nfunction keyword2xyz(args) {\n return rgb2xyz(keyword2rgb(args));\n}\n\nvar cssKeywords = {\n aliceblue: [240,248,255],\n antiquewhite: [250,235,215],\n aqua: [0,255,255],\n aquamarine: [127,255,212],\n azure: [240,255,255],\n beige: [245,245,220],\n bisque: [255,228,196],\n black: [0,0,0],\n blanchedalmond: [255,235,205],\n blue: [0,0,255],\n blueviolet: [138,43,226],\n brown: [165,42,42],\n burlywood: [222,184,135],\n cadetblue: [95,158,160],\n chartreuse: [127,255,0],\n chocolate: [210,105,30],\n coral: [255,127,80],\n cornflowerblue: [100,149,237],\n cornsilk: [255,248,220],\n crimson: [220,20,60],\n cyan: [0,255,255],\n darkblue: [0,0,139],\n darkcyan: [0,139,139],\n darkgoldenrod: [184,134,11],\n darkgray: [169,169,169],\n darkgreen: [0,100,0],\n darkgrey: [169,169,169],\n darkkhaki: [189,183,107],\n darkmagenta: [139,0,139],\n darkolivegreen: [85,107,47],\n darkorange: [255,140,0],\n darkorchid: [153,50,204],\n darkred: [139,0,0],\n darksalmon: [233,150,122],\n darkseagreen: [143,188,143],\n darkslateblue: [72,61,139],\n darkslategray: [47,79,79],\n darkslategrey: [47,79,79],\n darkturquoise: [0,206,209],\n darkviolet: [148,0,211],\n deeppink: [255,20,147],\n deepskyblue: [0,191,255],\n dimgray: [105,105,105],\n dimgrey: [105,105,105],\n dodgerblue: [30,144,255],\n firebrick: [178,34,34],\n floralwhite: [255,250,240],\n forestgreen: [34,139,34],\n fuchsia: [255,0,255],\n gainsboro: [220,220,220],\n ghostwhite: [248,248,255],\n gold: [255,215,0],\n goldenrod: [218,165,32],\n gray: [128,128,128],\n green: [0,128,0],\n greenyellow: [173,255,47],\n grey: [128,128,128],\n honeydew: [240,255,240],\n hotpink: [255,105,180],\n indianred: [205,92,92],\n indigo: [75,0,130],\n ivory: [255,255,240],\n khaki: [240,230,140],\n lavender: [230,230,250],\n lavenderblush: [255,240,245],\n lawngreen: [124,252,0],\n lemonchiffon: [255,250,205],\n lightblue: [173,216,230],\n lightcoral: [240,128,128],\n lightcyan: [224,255,255],\n lightgoldenrodyellow: [250,250,210],\n lightgray: [211,211,211],\n lightgreen: [144,238,144],\n lightgrey: [211,211,211],\n lightpink: [255,182,193],\n lightsalmon: [255,160,122],\n lightseagreen: [32,178,170],\n lightskyblue: [135,206,250],\n lightslategray: [119,136,153],\n lightslategrey: [119,136,153],\n lightsteelblue: [176,196,222],\n lightyellow: [255,255,224],\n lime: [0,255,0],\n limegreen: [50,205,50],\n linen: [250,240,230],\n magenta: [255,0,255],\n maroon: [128,0,0],\n mediumaquamarine: [102,205,170],\n mediumblue: [0,0,205],\n mediumorchid: [186,85,211],\n mediumpurple: [147,112,219],\n mediumseagreen: [60,179,113],\n mediumslateblue: [123,104,238],\n mediumspringgreen: [0,250,154],\n mediumturquoise: [72,209,204],\n mediumvioletred: [199,21,133],\n midnightblue: [25,25,112],\n mintcream: [245,255,250],\n mistyrose: [255,228,225],\n moccasin: [255,228,181],\n navajowhite: [255,222,173],\n navy: [0,0,128],\n oldlace: [253,245,230],\n olive: [128,128,0],\n olivedrab: [107,142,35],\n orange: [255,165,0],\n orangered: [255,69,0],\n orchid: [218,112,214],\n palegoldenrod: [238,232,170],\n palegreen: [152,251,152],\n paleturquoise: [175,238,238],\n palevioletred: [219,112,147],\n papayawhip: [255,239,213],\n peachpuff: [255,218,185],\n peru: [205,133,63],\n pink: [255,192,203],\n plum: [221,160,221],\n powderblue: [176,224,230],\n purple: [128,0,128],\n rebeccapurple: [102, 51, 153],\n red: [255,0,0],\n rosybrown: [188,143,143],\n royalblue: [65,105,225],\n saddlebrown: [139,69,19],\n salmon: [250,128,114],\n sandybrown: [244,164,96],\n seagreen: [46,139,87],\n seashell: [255,245,238],\n sienna: [160,82,45],\n silver: [192,192,192],\n skyblue: [135,206,235],\n slateblue: [106,90,205],\n slategray: [112,128,144],\n slategrey: [112,128,144],\n snow: [255,250,250],\n springgreen: [0,255,127],\n steelblue: [70,130,180],\n tan: [210,180,140],\n teal: [0,128,128],\n thistle: [216,191,216],\n tomato: [255,99,71],\n turquoise: [64,224,208],\n violet: [238,130,238],\n wheat: [245,222,179],\n white: [255,255,255],\n whitesmoke: [245,245,245],\n yellow: [255,255,0],\n yellowgreen: [154,205,50]\n};\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n reverseKeywords[JSON.stringify(cssKeywords[key])] = key;\n}\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar buildURL = require('./../helpers/buildURL');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\nvar btoa = (typeof window !== 'undefined' && window.btoa && window.btoa.bind(window)) || require('./../helpers/btoa');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n var loadEvent = 'onreadystatechange';\n var xDomain = false;\n\n // For IE 8/9 CORS support\n // Only supports POST and GET calls and doesn't returns the response headers.\n // DON'T do this for testing b/c XMLHttpRequest is mocked, not XDomainRequest.\n if (process.env.NODE_ENV !== 'test' &&\n typeof window !== 'undefined' &&\n window.XDomainRequest && !('withCredentials' in request) &&\n !isURLSameOrigin(config.url)) {\n request = new window.XDomainRequest();\n loadEvent = 'onload';\n xDomain = true;\n request.onprogress = function handleProgress() {};\n request.ontimeout = function handleTimeout() {};\n }\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password || '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // Listen for ready state\n request[loadEvent] = function handleLoad() {\n if (!request || (request.readyState !== 4 && !xDomain)) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n // IE sends 1223 instead of 204 (https://github.com/axios/axios/issues/201)\n status: request.status === 1223 ? 204 : request.status,\n statusText: request.status === 1223 ? 'No Content' : request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n var cookies = require('./../helpers/cookies');\n\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(config.url)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (config.withCredentials) {\n request.withCredentials = true;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (requestData === undefined) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar defaults = require('./core.defaults');\nvar helpers = require('../helpers/index');\nvar layouts = require('./core.layouts');\n\nmodule.exports = {\n\t// Scale registration object. Extensions can register new scale types (such as log or DB scales) and then\n\t// use the new chart options to grab the correct scale\n\tconstructors: {},\n\t// Use a registration function so that we can move to an ES6 map when we no longer need to support\n\t// old browsers\n\n\t// Scale config defaults\n\tdefaults: {},\n\tregisterScaleType: function(type, scaleConstructor, scaleDefaults) {\n\t\tthis.constructors[type] = scaleConstructor;\n\t\tthis.defaults[type] = helpers.clone(scaleDefaults);\n\t},\n\tgetScaleConstructor: function(type) {\n\t\treturn this.constructors.hasOwnProperty(type) ? this.constructors[type] : undefined;\n\t},\n\tgetScaleDefaults: function(type) {\n\t\t// Return the scale defaults merged with the global settings so that we always use the latest ones\n\t\treturn this.defaults.hasOwnProperty(type) ? helpers.merge({}, [defaults.scale, this.defaults[type]]) : {};\n\t},\n\tupdateScaleDefaults: function(type, additions) {\n\t\tvar me = this;\n\t\tif (me.defaults.hasOwnProperty(type)) {\n\t\t\tme.defaults[type] = helpers.extend(me.defaults[type], additions);\n\t\t}\n\t},\n\taddScalesToLayout: function(chart) {\n\t\t// Adds each scale to the chart.boxes array to be sized accordingly\n\t\thelpers.each(chart.scales, function(scale) {\n\t\t\t// Set ILayoutItem parameters for backwards compatibility\n\t\t\tscale.fullWidth = scale.options.fullWidth;\n\t\t\tscale.position = scale.options.position;\n\t\t\tscale.weight = scale.options.weight;\n\t\t\tlayouts.addBox(chart, scale);\n\t\t});\n\t}\n};\n","'use strict';\n\nvar helpers = require('./helpers.core');\n\n/**\n * Easing functions adapted from Robert Penner's easing equations.\n * @namespace Chart.helpers.easingEffects\n * @see http://www.robertpenner.com/easing/\n */\nvar effects = {\n\tlinear: function(t) {\n\t\treturn t;\n\t},\n\n\teaseInQuad: function(t) {\n\t\treturn t * t;\n\t},\n\n\teaseOutQuad: function(t) {\n\t\treturn -t * (t - 2);\n\t},\n\n\teaseInOutQuad: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t;\n\t\t}\n\t\treturn -0.5 * ((--t) * (t - 2) - 1);\n\t},\n\n\teaseInCubic: function(t) {\n\t\treturn t * t * t;\n\t},\n\n\teaseOutCubic: function(t) {\n\t\treturn (t = t - 1) * t * t + 1;\n\t},\n\n\teaseInOutCubic: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t * t;\n\t\t}\n\t\treturn 0.5 * ((t -= 2) * t * t + 2);\n\t},\n\n\teaseInQuart: function(t) {\n\t\treturn t * t * t * t;\n\t},\n\n\teaseOutQuart: function(t) {\n\t\treturn -((t = t - 1) * t * t * t - 1);\n\t},\n\n\teaseInOutQuart: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t * t * t;\n\t\t}\n\t\treturn -0.5 * ((t -= 2) * t * t * t - 2);\n\t},\n\n\teaseInQuint: function(t) {\n\t\treturn t * t * t * t * t;\n\t},\n\n\teaseOutQuint: function(t) {\n\t\treturn (t = t - 1) * t * t * t * t + 1;\n\t},\n\n\teaseInOutQuint: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t * t * t * t;\n\t\t}\n\t\treturn 0.5 * ((t -= 2) * t * t * t * t + 2);\n\t},\n\n\teaseInSine: function(t) {\n\t\treturn -Math.cos(t * (Math.PI / 2)) + 1;\n\t},\n\n\teaseOutSine: function(t) {\n\t\treturn Math.sin(t * (Math.PI / 2));\n\t},\n\n\teaseInOutSine: function(t) {\n\t\treturn -0.5 * (Math.cos(Math.PI * t) - 1);\n\t},\n\n\teaseInExpo: function(t) {\n\t\treturn (t === 0) ? 0 : Math.pow(2, 10 * (t - 1));\n\t},\n\n\teaseOutExpo: function(t) {\n\t\treturn (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1;\n\t},\n\n\teaseInOutExpo: function(t) {\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (t === 1) {\n\t\t\treturn 1;\n\t\t}\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * Math.pow(2, 10 * (t - 1));\n\t\t}\n\t\treturn 0.5 * (-Math.pow(2, -10 * --t) + 2);\n\t},\n\n\teaseInCirc: function(t) {\n\t\tif (t >= 1) {\n\t\t\treturn t;\n\t\t}\n\t\treturn -(Math.sqrt(1 - t * t) - 1);\n\t},\n\n\teaseOutCirc: function(t) {\n\t\treturn Math.sqrt(1 - (t = t - 1) * t);\n\t},\n\n\teaseInOutCirc: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn -0.5 * (Math.sqrt(1 - t * t) - 1);\n\t\t}\n\t\treturn 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\n\t},\n\n\teaseInElastic: function(t) {\n\t\tvar s = 1.70158;\n\t\tvar p = 0;\n\t\tvar a = 1;\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (t === 1) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (!p) {\n\t\t\tp = 0.3;\n\t\t}\n\t\tif (a < 1) {\n\t\t\ta = 1;\n\t\t\ts = p / 4;\n\t\t} else {\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\n\t\t}\n\t\treturn -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\n\t},\n\n\teaseOutElastic: function(t) {\n\t\tvar s = 1.70158;\n\t\tvar p = 0;\n\t\tvar a = 1;\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (t === 1) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (!p) {\n\t\t\tp = 0.3;\n\t\t}\n\t\tif (a < 1) {\n\t\t\ta = 1;\n\t\t\ts = p / 4;\n\t\t} else {\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\n\t\t}\n\t\treturn a * Math.pow(2, -10 * t) * Math.sin((t - s) * (2 * Math.PI) / p) + 1;\n\t},\n\n\teaseInOutElastic: function(t) {\n\t\tvar s = 1.70158;\n\t\tvar p = 0;\n\t\tvar a = 1;\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif ((t /= 0.5) === 2) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (!p) {\n\t\t\tp = 0.45;\n\t\t}\n\t\tif (a < 1) {\n\t\t\ta = 1;\n\t\t\ts = p / 4;\n\t\t} else {\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\n\t\t}\n\t\tif (t < 1) {\n\t\t\treturn -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\n\t\t}\n\t\treturn a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p) * 0.5 + 1;\n\t},\n\teaseInBack: function(t) {\n\t\tvar s = 1.70158;\n\t\treturn t * t * ((s + 1) * t - s);\n\t},\n\n\teaseOutBack: function(t) {\n\t\tvar s = 1.70158;\n\t\treturn (t = t - 1) * t * ((s + 1) * t + s) + 1;\n\t},\n\n\teaseInOutBack: function(t) {\n\t\tvar s = 1.70158;\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n\t\t}\n\t\treturn 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n\t},\n\n\teaseInBounce: function(t) {\n\t\treturn 1 - effects.easeOutBounce(1 - t);\n\t},\n\n\teaseOutBounce: function(t) {\n\t\tif (t < (1 / 2.75)) {\n\t\t\treturn 7.5625 * t * t;\n\t\t}\n\t\tif (t < (2 / 2.75)) {\n\t\t\treturn 7.5625 * (t -= (1.5 / 2.75)) * t + 0.75;\n\t\t}\n\t\tif (t < (2.5 / 2.75)) {\n\t\t\treturn 7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375;\n\t\t}\n\t\treturn 7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375;\n\t},\n\n\teaseInOutBounce: function(t) {\n\t\tif (t < 0.5) {\n\t\t\treturn effects.easeInBounce(t * 2) * 0.5;\n\t\t}\n\t\treturn effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5;\n\t}\n};\n\nmodule.exports = {\n\teffects: effects\n};\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.helpers.easing.effects instead.\n * @function Chart.helpers.easingEffects\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.easingEffects = effects;\n","var conversions = require(\"./conversions\");\n\nvar convert = function() {\n return new Converter();\n}\n\nfor (var func in conversions) {\n // export Raw versions\n convert[func + \"Raw\"] = (function(func) {\n // accept array or plain args\n return function(arg) {\n if (typeof arg == \"number\")\n arg = Array.prototype.slice.call(arguments);\n return conversions[func](arg);\n }\n })(func);\n\n var pair = /(\\w+)2(\\w+)/.exec(func),\n from = pair[1],\n to = pair[2];\n\n // export rgb2hsl and [\"rgb\"][\"hsl\"]\n convert[from] = convert[from] || {};\n\n convert[from][to] = convert[func] = (function(func) { \n return function(arg) {\n if (typeof arg == \"number\")\n arg = Array.prototype.slice.call(arguments);\n \n var val = conversions[func](arg);\n if (typeof val == \"string\" || val === undefined)\n return val; // keyword\n\n for (var i = 0; i < val.length; i++)\n val[i] = Math.round(val[i]);\n return val;\n }\n })(func);\n}\n\n\n/* Converter does lazy conversion and caching */\nvar Converter = function() {\n this.convs = {};\n};\n\n/* Either get the values for a space or\n set the values for a space, depending on args */\nConverter.prototype.routeSpace = function(space, args) {\n var values = args[0];\n if (values === undefined) {\n // color.rgb()\n return this.getValues(space);\n }\n // color.rgb(10, 10, 10)\n if (typeof values == \"number\") {\n values = Array.prototype.slice.call(args); \n }\n\n return this.setValues(space, values);\n};\n \n/* Set the values for a space, invalidating cache */\nConverter.prototype.setValues = function(space, values) {\n this.space = space;\n this.convs = {};\n this.convs[space] = values;\n return this;\n};\n\n/* Get the values for a space. If there's already\n a conversion for the space, fetch it, otherwise\n compute it */\nConverter.prototype.getValues = function(space) {\n var vals = this.convs[space];\n if (!vals) {\n var fspace = this.space,\n from = this.convs[fspace];\n vals = convert[fspace][space](from);\n\n this.convs[space] = vals;\n }\n return vals;\n};\n\n[\"rgb\", \"hsl\", \"hsv\", \"cmyk\", \"keyword\"].forEach(function(space) {\n Converter.prototype[space] = function(vals) {\n return this.routeSpace(space, arguments);\n }\n});\n\nmodule.exports = convert;","module.exports = require('./lib/axios');","/**\n * Plugin based on discussion from the following Chart.js issues:\n * @see https://github.com/chartjs/Chart.js/issues/2380#issuecomment-279961569\n * @see https://github.com/chartjs/Chart.js/issues/2440#issuecomment-256461897\n */\n\n'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar elements = require('../elements/index');\nvar helpers = require('../helpers/index');\n\ndefaults._set('global', {\n\tplugins: {\n\t\tfiller: {\n\t\t\tpropagate: true\n\t\t}\n\t}\n});\n\nvar mappers = {\n\tdataset: function(source) {\n\t\tvar index = source.fill;\n\t\tvar chart = source.chart;\n\t\tvar meta = chart.getDatasetMeta(index);\n\t\tvar visible = meta && chart.isDatasetVisible(index);\n\t\tvar points = (visible && meta.dataset._children) || [];\n\t\tvar length = points.length || 0;\n\n\t\treturn !length ? null : function(point, i) {\n\t\t\treturn (i < length && points[i]._view) || null;\n\t\t};\n\t},\n\n\tboundary: function(source) {\n\t\tvar boundary = source.boundary;\n\t\tvar x = boundary ? boundary.x : null;\n\t\tvar y = boundary ? boundary.y : null;\n\n\t\treturn function(point) {\n\t\t\treturn {\n\t\t\t\tx: x === null ? point.x : x,\n\t\t\t\ty: y === null ? point.y : y,\n\t\t\t};\n\t\t};\n\t}\n};\n\n// @todo if (fill[0] === '#')\nfunction decodeFill(el, index, count) {\n\tvar model = el._model || {};\n\tvar fill = model.fill;\n\tvar target;\n\n\tif (fill === undefined) {\n\t\tfill = !!model.backgroundColor;\n\t}\n\n\tif (fill === false || fill === null) {\n\t\treturn false;\n\t}\n\n\tif (fill === true) {\n\t\treturn 'origin';\n\t}\n\n\ttarget = parseFloat(fill, 10);\n\tif (isFinite(target) && Math.floor(target) === target) {\n\t\tif (fill[0] === '-' || fill[0] === '+') {\n\t\t\ttarget = index + target;\n\t\t}\n\n\t\tif (target === index || target < 0 || target >= count) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn target;\n\t}\n\n\tswitch (fill) {\n\t// compatibility\n\tcase 'bottom':\n\t\treturn 'start';\n\tcase 'top':\n\t\treturn 'end';\n\tcase 'zero':\n\t\treturn 'origin';\n\t// supported boundaries\n\tcase 'origin':\n\tcase 'start':\n\tcase 'end':\n\t\treturn fill;\n\t// invalid fill values\n\tdefault:\n\t\treturn false;\n\t}\n}\n\nfunction computeBoundary(source) {\n\tvar model = source.el._model || {};\n\tvar scale = source.el._scale || {};\n\tvar fill = source.fill;\n\tvar target = null;\n\tvar horizontal;\n\n\tif (isFinite(fill)) {\n\t\treturn null;\n\t}\n\n\t// Backward compatibility: until v3, we still need to support boundary values set on\n\t// the model (scaleTop, scaleBottom and scaleZero) because some external plugins and\n\t// controllers might still use it (e.g. the Smith chart).\n\n\tif (fill === 'start') {\n\t\ttarget = model.scaleBottom === undefined ? scale.bottom : model.scaleBottom;\n\t} else if (fill === 'end') {\n\t\ttarget = model.scaleTop === undefined ? scale.top : model.scaleTop;\n\t} else if (model.scaleZero !== undefined) {\n\t\ttarget = model.scaleZero;\n\t} else if (scale.getBasePosition) {\n\t\ttarget = scale.getBasePosition();\n\t} else if (scale.getBasePixel) {\n\t\ttarget = scale.getBasePixel();\n\t}\n\n\tif (target !== undefined && target !== null) {\n\t\tif (target.x !== undefined && target.y !== undefined) {\n\t\t\treturn target;\n\t\t}\n\n\t\tif (typeof target === 'number' && isFinite(target)) {\n\t\t\thorizontal = scale.isHorizontal();\n\t\t\treturn {\n\t\t\t\tx: horizontal ? target : null,\n\t\t\t\ty: horizontal ? null : target\n\t\t\t};\n\t\t}\n\t}\n\n\treturn null;\n}\n\nfunction resolveTarget(sources, index, propagate) {\n\tvar source = sources[index];\n\tvar fill = source.fill;\n\tvar visited = [index];\n\tvar target;\n\n\tif (!propagate) {\n\t\treturn fill;\n\t}\n\n\twhile (fill !== false && visited.indexOf(fill) === -1) {\n\t\tif (!isFinite(fill)) {\n\t\t\treturn fill;\n\t\t}\n\n\t\ttarget = sources[fill];\n\t\tif (!target) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (target.visible) {\n\t\t\treturn fill;\n\t\t}\n\n\t\tvisited.push(fill);\n\t\tfill = target.fill;\n\t}\n\n\treturn false;\n}\n\nfunction createMapper(source) {\n\tvar fill = source.fill;\n\tvar type = 'dataset';\n\n\tif (fill === false) {\n\t\treturn null;\n\t}\n\n\tif (!isFinite(fill)) {\n\t\ttype = 'boundary';\n\t}\n\n\treturn mappers[type](source);\n}\n\nfunction isDrawable(point) {\n\treturn point && !point.skip;\n}\n\nfunction drawArea(ctx, curve0, curve1, len0, len1) {\n\tvar i;\n\n\tif (!len0 || !len1) {\n\t\treturn;\n\t}\n\n\t// building first area curve (normal)\n\tctx.moveTo(curve0[0].x, curve0[0].y);\n\tfor (i = 1; i < len0; ++i) {\n\t\thelpers.canvas.lineTo(ctx, curve0[i - 1], curve0[i]);\n\t}\n\n\t// joining the two area curves\n\tctx.lineTo(curve1[len1 - 1].x, curve1[len1 - 1].y);\n\n\t// building opposite area curve (reverse)\n\tfor (i = len1 - 1; i > 0; --i) {\n\t\thelpers.canvas.lineTo(ctx, curve1[i], curve1[i - 1], true);\n\t}\n}\n\nfunction doFill(ctx, points, mapper, view, color, loop) {\n\tvar count = points.length;\n\tvar span = view.spanGaps;\n\tvar curve0 = [];\n\tvar curve1 = [];\n\tvar len0 = 0;\n\tvar len1 = 0;\n\tvar i, ilen, index, p0, p1, d0, d1;\n\n\tctx.beginPath();\n\n\tfor (i = 0, ilen = (count + !!loop); i < ilen; ++i) {\n\t\tindex = i % count;\n\t\tp0 = points[index]._view;\n\t\tp1 = mapper(p0, index, view);\n\t\td0 = isDrawable(p0);\n\t\td1 = isDrawable(p1);\n\n\t\tif (d0 && d1) {\n\t\t\tlen0 = curve0.push(p0);\n\t\t\tlen1 = curve1.push(p1);\n\t\t} else if (len0 && len1) {\n\t\t\tif (!span) {\n\t\t\t\tdrawArea(ctx, curve0, curve1, len0, len1);\n\t\t\t\tlen0 = len1 = 0;\n\t\t\t\tcurve0 = [];\n\t\t\t\tcurve1 = [];\n\t\t\t} else {\n\t\t\t\tif (d0) {\n\t\t\t\t\tcurve0.push(p0);\n\t\t\t\t}\n\t\t\t\tif (d1) {\n\t\t\t\t\tcurve1.push(p1);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tdrawArea(ctx, curve0, curve1, len0, len1);\n\n\tctx.closePath();\n\tctx.fillStyle = color;\n\tctx.fill();\n}\n\nmodule.exports = {\n\tid: 'filler',\n\n\tafterDatasetsUpdate: function(chart, options) {\n\t\tvar count = (chart.data.datasets || []).length;\n\t\tvar propagate = options.propagate;\n\t\tvar sources = [];\n\t\tvar meta, i, el, source;\n\n\t\tfor (i = 0; i < count; ++i) {\n\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\tel = meta.dataset;\n\t\t\tsource = null;\n\n\t\t\tif (el && el._model && el instanceof elements.Line) {\n\t\t\t\tsource = {\n\t\t\t\t\tvisible: chart.isDatasetVisible(i),\n\t\t\t\t\tfill: decodeFill(el, i, count),\n\t\t\t\t\tchart: chart,\n\t\t\t\t\tel: el\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tmeta.$filler = source;\n\t\t\tsources.push(source);\n\t\t}\n\n\t\tfor (i = 0; i < count; ++i) {\n\t\t\tsource = sources[i];\n\t\t\tif (!source) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tsource.fill = resolveTarget(sources, i, propagate);\n\t\t\tsource.boundary = computeBoundary(source);\n\t\t\tsource.mapper = createMapper(source);\n\t\t}\n\t},\n\n\tbeforeDatasetDraw: function(chart, args) {\n\t\tvar meta = args.meta.$filler;\n\t\tif (!meta) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar ctx = chart.ctx;\n\t\tvar el = meta.el;\n\t\tvar view = el._view;\n\t\tvar points = el._children || [];\n\t\tvar mapper = meta.mapper;\n\t\tvar color = view.backgroundColor || defaults.global.defaultColor;\n\n\t\tif (mapper && color && points.length) {\n\t\t\thelpers.canvas.clipArea(ctx, chart.chartArea);\n\t\t\tdoFill(ctx, points, mapper, view, color, el._loop);\n\t\t\thelpers.canvas.unclipArea(ctx);\n\t\t}\n\t}\n};\n","'use strict';\n\nmodule.exports = {};\nmodule.exports.Arc = require('./element.arc');\nmodule.exports.Line = require('./element.line');\nmodule.exports.Point = require('./element.point');\nmodule.exports.Rectangle = require('./element.rectangle');\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","//! moment.js\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks () {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback (callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return input != null && Object.prototype.toString.call(input) === '[object Object]';\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return (Object.getOwnPropertyNames(obj).length === 0);\n } else {\n var k;\n for (k in obj) {\n if (obj.hasOwnProperty(k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';\n }\n\n function isDate(input) {\n return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';\n }\n\n function map(arr, fn) {\n var res = [], i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty : false,\n unusedTokens : [],\n unusedInput : [],\n overflow : -2,\n charsLeftOver : 0,\n nullInput : false,\n invalidMonth : null,\n invalidFormat : false,\n userInvalidated : false,\n iso : false,\n parsedDateParts : [],\n meridiem : null,\n rfc2822 : false,\n weekdayMismatch : false\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this);\n var len = t.length >>> 0;\n\n for (var i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m);\n var parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n var isNowValid = !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid = isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n }\n else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid (flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n }\n else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = hooks.momentProperties = [];\n\n function copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i = 0; i < momentProperties.length; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n var updateInProgress = false;\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment (obj) {\n return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);\n }\n\n function absFloor (number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if ((dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n function warn(msg) {\n if (hooks.suppressDeprecationWarnings === false &&\n (typeof console !== 'undefined') && console.warn) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [];\n var arg;\n for (var i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (var key in arguments[0]) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(msg + '\\nArguments: ' + Array.prototype.slice.call(args).join('') + '\\n' + (new Error()).stack);\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n }\n\n function set (config) {\n var prop, i;\n for (i in config) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' + (/\\d{1,2}/).source);\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig), prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i, res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n };\n\n function calendar (key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n var defaultLongDateFormat = {\n LTS : 'h:mm:ss A',\n LT : 'h:mm A',\n L : 'MM/DD/YYYY',\n LL : 'MMMM D, YYYY',\n LLL : 'MMMM D, YYYY h:mm A',\n LLLL : 'dddd, MMMM D, YYYY h:mm A'\n };\n\n function longDateFormat (key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {\n return val.slice(1);\n });\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate () {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d';\n var defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal (number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n };\n\n function relativeTime (number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return (isFunction(output)) ?\n output(number, withoutSuffix, string, isFuture) :\n output.replace(/%d/i, number);\n }\n\n function pastFuture (diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias (unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [];\n for (var u in unitsObj) {\n units.push({unit: u, priority: priorities[u]});\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;\n }\n\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;\n\n var localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g;\n\n var formatFunctions = {};\n\n var formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken (token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(func.apply(this, arguments), token);\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens), i, length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '', i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var match1 = /\\d/; // 0 - 9\n var match2 = /\\d\\d/; // 00 - 99\n var match3 = /\\d{3}/; // 000 - 999\n var match4 = /\\d{4}/; // 0000 - 9999\n var match6 = /[+-]?\\d{6}/; // -999999 - 999999\n var match1to2 = /\\d\\d?/; // 0 - 99\n var match3to4 = /\\d\\d\\d\\d?/; // 999 - 9999\n var match5to6 = /\\d\\d\\d\\d\\d\\d?/; // 99999 - 999999\n var match1to3 = /\\d{1,3}/; // 0 - 999\n var match1to4 = /\\d{1,4}/; // 0 - 9999\n var match1to6 = /[+-]?\\d{1,6}/; // -999999 - 999999\n\n var matchUnsigned = /\\d+/; // 0 - inf\n var matchSigned = /[+-]?\\d+/; // -inf - inf\n\n var matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi; // +00:00 -00:00 +0000 -0000 or Z\n var matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n\n var matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\n\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n var matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i;\n\n var regexes = {};\n\n function addRegexToken (token, regex, strictRegex) {\n regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {\n return (isStrict && strictRegex) ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken (token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }));\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken (token, callback) {\n var i, func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken (token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0;\n var MONTH = 1;\n var DATE = 2;\n var HOUR = 3;\n var MINUTE = 4;\n var SECOND = 5;\n var MILLISECOND = 6;\n var WEEK = 7;\n var WEEKDAY = 8;\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? '' + y : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear () {\n return isLeapYear(this.year());\n }\n\n function makeGetSet (unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get (mom, unit) {\n return mom.isValid() ?\n mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;\n }\n\n function set$1 (mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month()));\n }\n else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet (units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n\n function stringSet (units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units);\n for (var i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1 ? (isLeapYear(year) ? 29 : 28) : (31 - modMonth % 7 % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/;\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');\n function localeMonths (m, format) {\n if (!m) {\n return isArray(this._months) ? this._months :\n this._months['standalone'];\n }\n return isArray(this._months) ? this._months[m.month()] :\n this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');\n function localeMonthsShort (m, format) {\n if (!m) {\n return isArray(this._monthsShort) ? this._monthsShort :\n this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort) ? this._monthsShort[m.month()] :\n this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i, ii, mom, llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse (monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');\n this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');\n }\n if (!strict && !this._monthsParse[i]) {\n regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n return i;\n } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth (mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth (value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth () {\n return daysInMonth(this.year(), this.month());\n }\n\n var defaultMonthsShortRegex = matchWord;\n function monthsShortRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict ?\n this._monthsShortStrictRegex : this._monthsShortRegex;\n }\n }\n\n var defaultMonthsRegex = matchWord;\n function monthsRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict ?\n this._monthsStrictRegex : this._monthsRegex;\n }\n }\n\n function computeMonthsParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n }\n\n function createDate (y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate (y) {\n var date;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n var args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear, resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek, resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n });\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek (mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek () {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear () {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek (input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek (input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays (ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');\n function localeWeekdays (m, format) {\n var weekdays = isArray(this._weekdays) ? this._weekdays :\n this._weekdays[(m && m !== true && this._weekdays.isFormat.test(format)) ? 'format' : 'standalone'];\n return (m === true) ? shiftWeekdays(weekdays, this._week.dow)\n : (m) ? weekdays[m.day()] : weekdays;\n }\n\n var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');\n function localeWeekdaysShort (m) {\n return (m === true) ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort;\n }\n\n var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');\n function localeWeekdaysMin (m) {\n return (m === true) ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i, ii, mom, llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse (weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$', 'i');\n }\n if (!this._weekdaysParse[i]) {\n regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n var defaultWeekdaysRegex = matchWord;\n function weekdaysRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict ?\n this._weekdaysStrictRegex : this._weekdaysRegex;\n }\n }\n\n var defaultWeekdaysShortRegex = matchWord;\n function weekdaysShortRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict ?\n this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n }\n }\n\n var defaultWeekdaysMinRegex = matchWord;\n function weekdaysMinRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict ?\n this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n }\n }\n\n\n function computeWeekdaysParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom, minp, shortp, longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = this.weekdaysMin(mom, '');\n shortp = this.weekdaysShort(mom, '');\n longp = this.weekdays(mom, '');\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 7; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n });\n\n function meridiem (token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem (isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM (input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return ((input + '').toLowerCase().charAt(0) === 'p');\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i;\n function localeMeridiem (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n\n // MOMENTS\n\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n var getSetHour = makeGetSet('Hours', true);\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse\n };\n\n // internal storage for locale config files\n var locales = {};\n var localeFamilies = {};\n var globalLocale;\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0, j, next, locale, split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function loadLocale(name) {\n var oldLocale = null;\n // TODO: Find a better way to register and load all the locales in Node\n if (!locales[name] && (typeof module !== 'undefined') &&\n module && module.exports) {\n try {\n oldLocale = globalLocale._abbr;\n var aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {}\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale (key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n }\n else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n }\n else {\n if ((typeof console !== 'undefined') && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn('Locale ' + key + ' not found. Did you forget to load it?');\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale (name, config) {\n if (config !== null) {\n var locale, parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple('defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale, tmpLocale, parentConfig = baseConfig;\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale (key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow (m) {\n var overflow;\n var a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :\n a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE :\n a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :\n a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :\n a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :\n a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :\n -1;\n\n if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray (config) {\n var i, date, input = [], currentDate, expectedWeekday, yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n var curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // iso 8601 regex\n // 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)\n var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n var basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n\n var tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/;\n\n var isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n // YYYYMM is NOT allowed by the standard\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/]\n ];\n\n // iso time formats and regexes\n var isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/]\n ];\n\n var aspNetJsonRegex = /^\\/?Date\\((\\-?\\d+)/i;\n\n // date from iso format\n function configFromISO(config) {\n var i, l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime, dateFormat, timeFormat, tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n var rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/;\n\n function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10)\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s.replace(/\\([^)]*\\)|[\\n\\t]/g, ' ').replace(/(\\s\\s+)/g, ' ').replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n var obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60\n };\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10);\n var m = hm % 100, h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i));\n if (match) {\n var parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]);\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from iso format or fallback\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged and will be removed in an upcoming major release. Please refer to ' +\n 'http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i, parsedInput, tokens, token, skipped,\n stringLength = string.length,\n totalParsedInputLength = 0;\n\n tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];\n // console.log('token', token, 'parsedInput', parsedInput,\n // 'regex', getParseRegexForToken(token, config));\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(string.indexOf(parsedInput) + parsedInput.length);\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n }\n else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n }\n else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n\n function meridiemFixWrap (locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n\n scoreToBeat,\n i,\n currentScore;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (!isValid(tempConfig)) {\n continue;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (scoreToBeat == null || currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i);\n config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {\n return obj && parseInt(obj, 10);\n });\n\n configFromArray(config);\n }\n\n function createFromConfig (config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig (config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({nullInput: true});\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC (input, format, locale, strict, isUTC) {\n var c = {};\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if ((isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n var prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +(new Date());\n };\n\n var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];\n\n function isDurationValid(m) {\n for (var key in m) {\n if (!(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) {\n return false;\n }\n }\n\n var unitHasDecimal = false;\n for (var i = 0; i < ordering.length; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration (duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds = +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days +\n weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months +\n quarters * 3 +\n years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration (obj) {\n return obj instanceof Duration;\n }\n\n function absRound (number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // FORMATTING\n\n function offset (token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset();\n var sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher);\n\n if (matches === null) {\n return null;\n }\n\n var chunk = matches[matches.length - 1] || [];\n var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n var minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ?\n 0 :\n parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset (m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset() / 15) * 15;\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset (input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(this, createDuration(input - offset, 'm'), 1, false);\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone (input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC (keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal (keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset () {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n }\n else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset (input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime () {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted () {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {};\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n var other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted = this.isValid() &&\n compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal () {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset () {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc () {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(\\-|\\+)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/;\n\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n var isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration (input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms : input._milliseconds,\n d : input._days,\n M : input._months\n };\n } else if (isNumber(input)) {\n duration = {};\n if (key) {\n duration[key] = input;\n } else {\n duration.milliseconds = input;\n }\n } else if (!!(match = aspNetRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : 0,\n d : toInt(match[DATE]) * sign,\n h : toInt(match[HOUR]) * sign,\n m : toInt(match[MINUTE]) * sign,\n s : toInt(match[SECOND]) * sign,\n ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match\n };\n } else if (!!(match = isoRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : parseIso(match[2], sign),\n M : parseIso(match[3], sign),\n w : parseIso(match[4], sign),\n d : parseIso(match[5], sign),\n h : parseIso(match[6], sign),\n m : parseIso(match[7], sign),\n s : parseIso(match[8], sign)\n };\n } else if (duration == null) {// checks for null or undefined\n duration = {};\n } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {\n diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso (inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months = other.month() - base.month() +\n (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +(base.clone().add(res.months, 'M'));\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return {milliseconds: 0, months: 0};\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');\n tmp = val; val = period; period = tmp;\n }\n\n val = typeof val === 'string' ? +val : val;\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract (mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add');\n var subtract = createAdder(-1, 'subtract');\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6 ? 'sameElse' :\n diff < -1 ? 'lastWeek' :\n diff < 0 ? 'lastDay' :\n diff < 1 ? 'sameDay' :\n diff < 2 ? 'nextDay' :\n diff < 7 ? 'nextWeek' : 'sameElse';\n }\n\n function calendar$1 (time, formats) {\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse';\n\n var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);\n\n return this.format(output || this.localeData().calendar(format, this, createLocal(now)));\n }\n\n function clone () {\n return new Moment(this);\n }\n\n function isAfter (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween (from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (inclusivity[0] === '(' ? this.isAfter(localFrom, units) : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')' ? this.isBefore(localTo, units) : !this.isAfter(localTo, units));\n }\n\n function isSame (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();\n }\n }\n\n function isSameOrAfter (input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore (input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff (input, units, asFloat) {\n var that,\n zoneDelta,\n output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year': output = monthDiff(this, that) / 12; break;\n case 'month': output = monthDiff(this, that); break;\n case 'quarter': output = monthDiff(this, that) / 3; break;\n case 'second': output = (this - that) / 1e3; break; // 1000\n case 'minute': output = (this - that) / 6e4; break; // 1000 * 60\n case 'hour': output = (this - that) / 36e5; break; // 1000 * 60 * 60\n case 'day': output = (this - that - zoneDelta) / 864e5; break; // 1000 * 60 * 60 * 24, negate dst\n case 'week': output = (this - that - zoneDelta) / 6048e5; break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default: output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff (a, b) {\n // difference in months\n var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2, adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString () {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true;\n var m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000).toISOString().replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect () {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment';\n var zone = '';\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n var prefix = '[' + func + '(\"]';\n var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY';\n var datetime = '-MM-DD[T]HH:mm:ss.SSS';\n var suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format (inputString) {\n if (!inputString) {\n inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow (withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow (withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale (key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData () {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000;\n var MS_PER_MINUTE = 60 * MS_PER_SECOND;\n var MS_PER_HOUR = 60 * MS_PER_MINUTE;\n var MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return (dividend % divisor + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf (units) {\n var time;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n var startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(this.year(), this.month() - this.month() % 3, 1);\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(this.year(), this.month(), this.date() - this.weekday());\n break;\n case 'isoWeek':\n time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1));\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR);\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf (units) {\n var time;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n var startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time = startOfDate(this.year(), this.month() - this.month() % 3 + 3, 1) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time = startOfDate(this.year(), this.month(), this.date() - this.weekday() + 7) - 1;\n break;\n case 'isoWeek':\n time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1) + 7) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time += MS_PER_HOUR - mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR) - 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf () {\n return this._d.valueOf() - ((this._offset || 0) * 60000);\n }\n\n function unix () {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate () {\n return new Date(this.valueOf());\n }\n\n function toArray () {\n var m = this;\n return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\n }\n\n function toObject () {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds()\n };\n }\n\n function toJSON () {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2 () {\n return isValid(this);\n }\n\n function parsingFlags () {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt () {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict\n };\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken (token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n });\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy);\n }\n\n function getSetISOWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input, this.isoWeek(), this.isoWeekday(), 1, 4);\n }\n\n function getISOWeeksInYear () {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getWeeksInYear () {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter (input) {\n return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict ?\n (locale._dayOfMonthOrdinalParse || locale._ordinalParse) :\n locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear (input) {\n var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;\n return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n // MOMENTS\n\n var getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr () {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName () {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\n proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\n proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\n proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\n proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\n\n function createUnix (input) {\n return createLocal(input * 1000);\n }\n\n function createInZone () {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat (string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1 (format, index, field, setter) {\n var locale = getLocale();\n var utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl (format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl (localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0;\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths (format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort (format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (toInt(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n }\n });\n\n // Side effect imports\n\n hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);\n hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);\n\n var mathAbs = Math.abs;\n\n function abs () {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1 (duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1 (input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1 (input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil (number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble () {\n var milliseconds = this._milliseconds;\n var days = this._days;\n var months = this._months;\n var data = this._data;\n var seconds, minutes, hours, years, monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0))) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths (days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return days * 4800 / 146097;\n }\n\n function monthsToDays (months) {\n // the reverse of daysToMonths\n return months * 146097 / 4800;\n }\n\n function as (units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days;\n var months;\n var milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month': return months;\n case 'quarter': return months / 3;\n case 'year': return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week' : return days / 7 + milliseconds / 6048e5;\n case 'day' : return days + milliseconds / 864e5;\n case 'hour' : return days * 24 + milliseconds / 36e5;\n case 'minute' : return days * 1440 + milliseconds / 6e4;\n case 'second' : return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond': return Math.floor(days * 864e5) + milliseconds;\n default: throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1 () {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs (alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms');\n var asSeconds = makeAs('s');\n var asMinutes = makeAs('m');\n var asHours = makeAs('h');\n var asDays = makeAs('d');\n var asWeeks = makeAs('w');\n var asMonths = makeAs('M');\n var asQuarters = makeAs('Q');\n var asYears = makeAs('y');\n\n function clone$1 () {\n return createDuration(this);\n }\n\n function get$2 (units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds');\n var seconds = makeGetter('seconds');\n var minutes = makeGetter('minutes');\n var hours = makeGetter('hours');\n var days = makeGetter('days');\n var months = makeGetter('months');\n var years = makeGetter('years');\n\n function weeks () {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round;\n var thresholds = {\n ss: 44, // a few seconds to seconds\n s : 45, // seconds to minute\n m : 45, // minutes to hour\n h : 22, // hours to day\n d : 26, // days to month\n M : 11 // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1 (posNegDuration, withoutSuffix, locale) {\n var duration = createDuration(posNegDuration).abs();\n var seconds = round(duration.as('s'));\n var minutes = round(duration.as('m'));\n var hours = round(duration.as('h'));\n var days = round(duration.as('d'));\n var months = round(duration.as('M'));\n var years = round(duration.as('y'));\n\n var a = seconds <= thresholds.ss && ['s', seconds] ||\n seconds < thresholds.s && ['ss', seconds] ||\n minutes <= 1 && ['m'] ||\n minutes < thresholds.m && ['mm', minutes] ||\n hours <= 1 && ['h'] ||\n hours < thresholds.h && ['hh', hours] ||\n days <= 1 && ['d'] ||\n days < thresholds.d && ['dd', days] ||\n months <= 1 && ['M'] ||\n months < thresholds.M && ['MM', months] ||\n years <= 1 && ['y'] || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding (roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof(roundingFunction) === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold (threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize (withSuffix) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var locale = this.localeData();\n var output = relativeTime$1(this, !withSuffix, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return ((x > 0) - (x < 0)) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000;\n var days = abs$1(this._days);\n var months = abs$1(this._months);\n var minutes, hours, years;\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n var Y = years;\n var M = months;\n var D = days;\n var h = hours;\n var m = minutes;\n var s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n var total = this.asSeconds();\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n var totalSign = total < 0 ? '-' : '';\n var ymSign = sign(this._months) !== sign(total) ? '-' : '';\n var daysSign = sign(this._days) !== sign(total) ? '-' : '';\n var hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return totalSign + 'P' +\n (Y ? ymSign + Y + 'Y' : '') +\n (M ? ymSign + M + 'M' : '') +\n (D ? daysSign + D + 'D' : '') +\n ((h || m || s) ? 'T' : '') +\n (h ? hmsSign + h + 'H' : '') +\n (m ? hmsSign + m + 'M' : '') +\n (s ? hmsSign + s + 'S' : '');\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);\n proto$2.lang = lang;\n\n // Side effect imports\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input, 10) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n // Side effect imports\n\n\n hooks.version = '2.24.0';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n TIME: 'HH:mm', // <input type=\"time\" />\n TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n MONTH: 'YYYY-MM' // <input type=\"month\" />\n };\n\n return hooks;\n\n})));\n","'use strict';\n\nvar defaults = require('./core.defaults');\nvar Element = require('./core.element');\nvar helpers = require('../helpers/index');\n\ndefaults._set('global', {\n\ttooltips: {\n\t\tenabled: true,\n\t\tcustom: null,\n\t\tmode: 'nearest',\n\t\tposition: 'average',\n\t\tintersect: true,\n\t\tbackgroundColor: 'rgba(0,0,0,0.8)',\n\t\ttitleFontStyle: 'bold',\n\t\ttitleSpacing: 2,\n\t\ttitleMarginBottom: 6,\n\t\ttitleFontColor: '#fff',\n\t\ttitleAlign: 'left',\n\t\tbodySpacing: 2,\n\t\tbodyFontColor: '#fff',\n\t\tbodyAlign: 'left',\n\t\tfooterFontStyle: 'bold',\n\t\tfooterSpacing: 2,\n\t\tfooterMarginTop: 6,\n\t\tfooterFontColor: '#fff',\n\t\tfooterAlign: 'left',\n\t\tyPadding: 6,\n\t\txPadding: 6,\n\t\tcaretPadding: 2,\n\t\tcaretSize: 5,\n\t\tcornerRadius: 6,\n\t\tmultiKeyBackground: '#fff',\n\t\tdisplayColors: true,\n\t\tborderColor: 'rgba(0,0,0,0)',\n\t\tborderWidth: 0,\n\t\tcallbacks: {\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tbeforeTitle: helpers.noop,\n\t\t\ttitle: function(tooltipItems, data) {\n\t\t\t\t// Pick first xLabel for now\n\t\t\t\tvar title = '';\n\t\t\t\tvar labels = data.labels;\n\t\t\t\tvar labelCount = labels ? labels.length : 0;\n\n\t\t\t\tif (tooltipItems.length > 0) {\n\t\t\t\t\tvar item = tooltipItems[0];\n\n\t\t\t\t\tif (item.xLabel) {\n\t\t\t\t\t\ttitle = item.xLabel;\n\t\t\t\t\t} else if (labelCount > 0 && item.index < labelCount) {\n\t\t\t\t\t\ttitle = labels[item.index];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn title;\n\t\t\t},\n\t\t\tafterTitle: helpers.noop,\n\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tbeforeBody: helpers.noop,\n\n\t\t\t// Args are: (tooltipItem, data)\n\t\t\tbeforeLabel: helpers.noop,\n\t\t\tlabel: function(tooltipItem, data) {\n\t\t\t\tvar label = data.datasets[tooltipItem.datasetIndex].label || '';\n\n\t\t\t\tif (label) {\n\t\t\t\t\tlabel += ': ';\n\t\t\t\t}\n\t\t\t\tlabel += tooltipItem.yLabel;\n\t\t\t\treturn label;\n\t\t\t},\n\t\t\tlabelColor: function(tooltipItem, chart) {\n\t\t\t\tvar meta = chart.getDatasetMeta(tooltipItem.datasetIndex);\n\t\t\t\tvar activeElement = meta.data[tooltipItem.index];\n\t\t\t\tvar view = activeElement._view;\n\t\t\t\treturn {\n\t\t\t\t\tborderColor: view.borderColor,\n\t\t\t\t\tbackgroundColor: view.backgroundColor\n\t\t\t\t};\n\t\t\t},\n\t\t\tlabelTextColor: function() {\n\t\t\t\treturn this._options.bodyFontColor;\n\t\t\t},\n\t\t\tafterLabel: helpers.noop,\n\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tafterBody: helpers.noop,\n\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tbeforeFooter: helpers.noop,\n\t\t\tfooter: helpers.noop,\n\t\t\tafterFooter: helpers.noop\n\t\t}\n\t}\n});\n\nvar positioners = {\n\t/**\n\t * Average mode places the tooltip at the average position of the elements shown\n\t * @function Chart.Tooltip.positioners.average\n\t * @param elements {ChartElement[]} the elements being displayed in the tooltip\n\t * @returns {Point} tooltip position\n\t */\n\taverage: function(elements) {\n\t\tif (!elements.length) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar i, len;\n\t\tvar x = 0;\n\t\tvar y = 0;\n\t\tvar count = 0;\n\n\t\tfor (i = 0, len = elements.length; i < len; ++i) {\n\t\t\tvar el = elements[i];\n\t\t\tif (el && el.hasValue()) {\n\t\t\t\tvar pos = el.tooltipPosition();\n\t\t\t\tx += pos.x;\n\t\t\t\ty += pos.y;\n\t\t\t\t++count;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tx: Math.round(x / count),\n\t\t\ty: Math.round(y / count)\n\t\t};\n\t},\n\n\t/**\n\t * Gets the tooltip position nearest of the item nearest to the event position\n\t * @function Chart.Tooltip.positioners.nearest\n\t * @param elements {Chart.Element[]} the tooltip elements\n\t * @param eventPosition {Point} the position of the event in canvas coordinates\n\t * @returns {Point} the tooltip position\n\t */\n\tnearest: function(elements, eventPosition) {\n\t\tvar x = eventPosition.x;\n\t\tvar y = eventPosition.y;\n\t\tvar minDistance = Number.POSITIVE_INFINITY;\n\t\tvar i, len, nearestElement;\n\n\t\tfor (i = 0, len = elements.length; i < len; ++i) {\n\t\t\tvar el = elements[i];\n\t\t\tif (el && el.hasValue()) {\n\t\t\t\tvar center = el.getCenterPoint();\n\t\t\t\tvar d = helpers.distanceBetweenPoints(eventPosition, center);\n\n\t\t\t\tif (d < minDistance) {\n\t\t\t\t\tminDistance = d;\n\t\t\t\t\tnearestElement = el;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (nearestElement) {\n\t\t\tvar tp = nearestElement.tooltipPosition();\n\t\t\tx = tp.x;\n\t\t\ty = tp.y;\n\t\t}\n\n\t\treturn {\n\t\t\tx: x,\n\t\t\ty: y\n\t\t};\n\t}\n};\n\n/**\n * Helper method to merge the opacity into a color\n */\nfunction mergeOpacity(colorString, opacity) {\n\tvar color = helpers.color(colorString);\n\treturn color.alpha(opacity * color.alpha()).rgbaString();\n}\n\n// Helper to push or concat based on if the 2nd parameter is an array or not\nfunction pushOrConcat(base, toPush) {\n\tif (toPush) {\n\t\tif (helpers.isArray(toPush)) {\n\t\t\t// base = base.concat(toPush);\n\t\t\tArray.prototype.push.apply(base, toPush);\n\t\t} else {\n\t\t\tbase.push(toPush);\n\t\t}\n\t}\n\n\treturn base;\n}\n\n/**\n * Returns array of strings split by newline\n * @param {String} value - The value to split by newline.\n * @returns {Array} value if newline present - Returned from String split() method\n * @function\n */\nfunction splitNewlines(str) {\n\tif ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n\t\treturn str.split('\\n');\n\t}\n\treturn str;\n}\n\n\n// Private helper to create a tooltip item model\n// @param element : the chart element (point, arc, bar) to create the tooltip item for\n// @return : new tooltip item\nfunction createTooltipItem(element) {\n\tvar xScale = element._xScale;\n\tvar yScale = element._yScale || element._scale; // handle radar || polarArea charts\n\tvar index = element._index;\n\tvar datasetIndex = element._datasetIndex;\n\n\treturn {\n\t\txLabel: xScale ? xScale.getLabelForIndex(index, datasetIndex) : '',\n\t\tyLabel: yScale ? yScale.getLabelForIndex(index, datasetIndex) : '',\n\t\tindex: index,\n\t\tdatasetIndex: datasetIndex,\n\t\tx: element._model.x,\n\t\ty: element._model.y\n\t};\n}\n\n/**\n * Helper to get the reset model for the tooltip\n * @param tooltipOpts {Object} the tooltip options\n */\nfunction getBaseModel(tooltipOpts) {\n\tvar globalDefaults = defaults.global;\n\tvar valueOrDefault = helpers.valueOrDefault;\n\n\treturn {\n\t\t// Positioning\n\t\txPadding: tooltipOpts.xPadding,\n\t\tyPadding: tooltipOpts.yPadding,\n\t\txAlign: tooltipOpts.xAlign,\n\t\tyAlign: tooltipOpts.yAlign,\n\n\t\t// Body\n\t\tbodyFontColor: tooltipOpts.bodyFontColor,\n\t\t_bodyFontFamily: valueOrDefault(tooltipOpts.bodyFontFamily, globalDefaults.defaultFontFamily),\n\t\t_bodyFontStyle: valueOrDefault(tooltipOpts.bodyFontStyle, globalDefaults.defaultFontStyle),\n\t\t_bodyAlign: tooltipOpts.bodyAlign,\n\t\tbodyFontSize: valueOrDefault(tooltipOpts.bodyFontSize, globalDefaults.defaultFontSize),\n\t\tbodySpacing: tooltipOpts.bodySpacing,\n\n\t\t// Title\n\t\ttitleFontColor: tooltipOpts.titleFontColor,\n\t\t_titleFontFamily: valueOrDefault(tooltipOpts.titleFontFamily, globalDefaults.defaultFontFamily),\n\t\t_titleFontStyle: valueOrDefault(tooltipOpts.titleFontStyle, globalDefaults.defaultFontStyle),\n\t\ttitleFontSize: valueOrDefault(tooltipOpts.titleFontSize, globalDefaults.defaultFontSize),\n\t\t_titleAlign: tooltipOpts.titleAlign,\n\t\ttitleSpacing: tooltipOpts.titleSpacing,\n\t\ttitleMarginBottom: tooltipOpts.titleMarginBottom,\n\n\t\t// Footer\n\t\tfooterFontColor: tooltipOpts.footerFontColor,\n\t\t_footerFontFamily: valueOrDefault(tooltipOpts.footerFontFamily, globalDefaults.defaultFontFamily),\n\t\t_footerFontStyle: valueOrDefault(tooltipOpts.footerFontStyle, globalDefaults.defaultFontStyle),\n\t\tfooterFontSize: valueOrDefault(tooltipOpts.footerFontSize, globalDefaults.defaultFontSize),\n\t\t_footerAlign: tooltipOpts.footerAlign,\n\t\tfooterSpacing: tooltipOpts.footerSpacing,\n\t\tfooterMarginTop: tooltipOpts.footerMarginTop,\n\n\t\t// Appearance\n\t\tcaretSize: tooltipOpts.caretSize,\n\t\tcornerRadius: tooltipOpts.cornerRadius,\n\t\tbackgroundColor: tooltipOpts.backgroundColor,\n\t\topacity: 0,\n\t\tlegendColorBackground: tooltipOpts.multiKeyBackground,\n\t\tdisplayColors: tooltipOpts.displayColors,\n\t\tborderColor: tooltipOpts.borderColor,\n\t\tborderWidth: tooltipOpts.borderWidth\n\t};\n}\n\n/**\n * Get the size of the tooltip\n */\nfunction getTooltipSize(tooltip, model) {\n\tvar ctx = tooltip._chart.ctx;\n\n\tvar height = model.yPadding * 2; // Tooltip Padding\n\tvar width = 0;\n\n\t// Count of all lines in the body\n\tvar body = model.body;\n\tvar combinedBodyLength = body.reduce(function(count, bodyItem) {\n\t\treturn count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length;\n\t}, 0);\n\tcombinedBodyLength += model.beforeBody.length + model.afterBody.length;\n\n\tvar titleLineCount = model.title.length;\n\tvar footerLineCount = model.footer.length;\n\tvar titleFontSize = model.titleFontSize;\n\tvar bodyFontSize = model.bodyFontSize;\n\tvar footerFontSize = model.footerFontSize;\n\n\theight += titleLineCount * titleFontSize; // Title Lines\n\theight += titleLineCount ? (titleLineCount - 1) * model.titleSpacing : 0; // Title Line Spacing\n\theight += titleLineCount ? model.titleMarginBottom : 0; // Title's bottom Margin\n\theight += combinedBodyLength * bodyFontSize; // Body Lines\n\theight += combinedBodyLength ? (combinedBodyLength - 1) * model.bodySpacing : 0; // Body Line Spacing\n\theight += footerLineCount ? model.footerMarginTop : 0; // Footer Margin\n\theight += footerLineCount * (footerFontSize); // Footer Lines\n\theight += footerLineCount ? (footerLineCount - 1) * model.footerSpacing : 0; // Footer Line Spacing\n\n\t// Title width\n\tvar widthPadding = 0;\n\tvar maxLineWidth = function(line) {\n\t\twidth = Math.max(width, ctx.measureText(line).width + widthPadding);\n\t};\n\n\tctx.font = helpers.fontString(titleFontSize, model._titleFontStyle, model._titleFontFamily);\n\thelpers.each(model.title, maxLineWidth);\n\n\t// Body width\n\tctx.font = helpers.fontString(bodyFontSize, model._bodyFontStyle, model._bodyFontFamily);\n\thelpers.each(model.beforeBody.concat(model.afterBody), maxLineWidth);\n\n\t// Body lines may include some extra width due to the color box\n\twidthPadding = model.displayColors ? (bodyFontSize + 2) : 0;\n\thelpers.each(body, function(bodyItem) {\n\t\thelpers.each(bodyItem.before, maxLineWidth);\n\t\thelpers.each(bodyItem.lines, maxLineWidth);\n\t\thelpers.each(bodyItem.after, maxLineWidth);\n\t});\n\n\t// Reset back to 0\n\twidthPadding = 0;\n\n\t// Footer width\n\tctx.font = helpers.fontString(footerFontSize, model._footerFontStyle, model._footerFontFamily);\n\thelpers.each(model.footer, maxLineWidth);\n\n\t// Add padding\n\twidth += 2 * model.xPadding;\n\n\treturn {\n\t\twidth: width,\n\t\theight: height\n\t};\n}\n\n/**\n * Helper to get the alignment of a tooltip given the size\n */\nfunction determineAlignment(tooltip, size) {\n\tvar model = tooltip._model;\n\tvar chart = tooltip._chart;\n\tvar chartArea = tooltip._chart.chartArea;\n\tvar xAlign = 'center';\n\tvar yAlign = 'center';\n\n\tif (model.y < size.height) {\n\t\tyAlign = 'top';\n\t} else if (model.y > (chart.height - size.height)) {\n\t\tyAlign = 'bottom';\n\t}\n\n\tvar lf, rf; // functions to determine left, right alignment\n\tvar olf, orf; // functions to determine if left/right alignment causes tooltip to go outside chart\n\tvar yf; // function to get the y alignment if the tooltip goes outside of the left or right edges\n\tvar midX = (chartArea.left + chartArea.right) / 2;\n\tvar midY = (chartArea.top + chartArea.bottom) / 2;\n\n\tif (yAlign === 'center') {\n\t\tlf = function(x) {\n\t\t\treturn x <= midX;\n\t\t};\n\t\trf = function(x) {\n\t\t\treturn x > midX;\n\t\t};\n\t} else {\n\t\tlf = function(x) {\n\t\t\treturn x <= (size.width / 2);\n\t\t};\n\t\trf = function(x) {\n\t\t\treturn x >= (chart.width - (size.width / 2));\n\t\t};\n\t}\n\n\tolf = function(x) {\n\t\treturn x + size.width + model.caretSize + model.caretPadding > chart.width;\n\t};\n\torf = function(x) {\n\t\treturn x - size.width - model.caretSize - model.caretPadding < 0;\n\t};\n\tyf = function(y) {\n\t\treturn y <= midY ? 'top' : 'bottom';\n\t};\n\n\tif (lf(model.x)) {\n\t\txAlign = 'left';\n\n\t\t// Is tooltip too wide and goes over the right side of the chart.?\n\t\tif (olf(model.x)) {\n\t\t\txAlign = 'center';\n\t\t\tyAlign = yf(model.y);\n\t\t}\n\t} else if (rf(model.x)) {\n\t\txAlign = 'right';\n\n\t\t// Is tooltip too wide and goes outside left edge of canvas?\n\t\tif (orf(model.x)) {\n\t\t\txAlign = 'center';\n\t\t\tyAlign = yf(model.y);\n\t\t}\n\t}\n\n\tvar opts = tooltip._options;\n\treturn {\n\t\txAlign: opts.xAlign ? opts.xAlign : xAlign,\n\t\tyAlign: opts.yAlign ? opts.yAlign : yAlign\n\t};\n}\n\n/**\n * Helper to get the location a tooltip needs to be placed at given the initial position (via the vm) and the size and alignment\n */\nfunction getBackgroundPoint(vm, size, alignment, chart) {\n\t// Background Position\n\tvar x = vm.x;\n\tvar y = vm.y;\n\n\tvar caretSize = vm.caretSize;\n\tvar caretPadding = vm.caretPadding;\n\tvar cornerRadius = vm.cornerRadius;\n\tvar xAlign = alignment.xAlign;\n\tvar yAlign = alignment.yAlign;\n\tvar paddingAndSize = caretSize + caretPadding;\n\tvar radiusAndPadding = cornerRadius + caretPadding;\n\n\tif (xAlign === 'right') {\n\t\tx -= size.width;\n\t} else if (xAlign === 'center') {\n\t\tx -= (size.width / 2);\n\t\tif (x + size.width > chart.width) {\n\t\t\tx = chart.width - size.width;\n\t\t}\n\t\tif (x < 0) {\n\t\t\tx = 0;\n\t\t}\n\t}\n\n\tif (yAlign === 'top') {\n\t\ty += paddingAndSize;\n\t} else if (yAlign === 'bottom') {\n\t\ty -= size.height + paddingAndSize;\n\t} else {\n\t\ty -= (size.height / 2);\n\t}\n\n\tif (yAlign === 'center') {\n\t\tif (xAlign === 'left') {\n\t\t\tx += paddingAndSize;\n\t\t} else if (xAlign === 'right') {\n\t\t\tx -= paddingAndSize;\n\t\t}\n\t} else if (xAlign === 'left') {\n\t\tx -= radiusAndPadding;\n\t} else if (xAlign === 'right') {\n\t\tx += radiusAndPadding;\n\t}\n\n\treturn {\n\t\tx: x,\n\t\ty: y\n\t};\n}\n\n/**\n * Helper to build before and after body lines\n */\nfunction getBeforeAfterBodyLines(callback) {\n\treturn pushOrConcat([], splitNewlines(callback));\n}\n\nvar exports = module.exports = Element.extend({\n\tinitialize: function() {\n\t\tthis._model = getBaseModel(this._options);\n\t\tthis._lastActive = [];\n\t},\n\n\t// Get the title\n\t// Args are: (tooltipItem, data)\n\tgetTitle: function() {\n\t\tvar me = this;\n\t\tvar opts = me._options;\n\t\tvar callbacks = opts.callbacks;\n\n\t\tvar beforeTitle = callbacks.beforeTitle.apply(me, arguments);\n\t\tvar title = callbacks.title.apply(me, arguments);\n\t\tvar afterTitle = callbacks.afterTitle.apply(me, arguments);\n\n\t\tvar lines = [];\n\t\tlines = pushOrConcat(lines, splitNewlines(beforeTitle));\n\t\tlines = pushOrConcat(lines, splitNewlines(title));\n\t\tlines = pushOrConcat(lines, splitNewlines(afterTitle));\n\n\t\treturn lines;\n\t},\n\n\t// Args are: (tooltipItem, data)\n\tgetBeforeBody: function() {\n\t\treturn getBeforeAfterBodyLines(this._options.callbacks.beforeBody.apply(this, arguments));\n\t},\n\n\t// Args are: (tooltipItem, data)\n\tgetBody: function(tooltipItems, data) {\n\t\tvar me = this;\n\t\tvar callbacks = me._options.callbacks;\n\t\tvar bodyItems = [];\n\n\t\thelpers.each(tooltipItems, function(tooltipItem) {\n\t\t\tvar bodyItem = {\n\t\t\t\tbefore: [],\n\t\t\t\tlines: [],\n\t\t\t\tafter: []\n\t\t\t};\n\t\t\tpushOrConcat(bodyItem.before, splitNewlines(callbacks.beforeLabel.call(me, tooltipItem, data)));\n\t\t\tpushOrConcat(bodyItem.lines, callbacks.label.call(me, tooltipItem, data));\n\t\t\tpushOrConcat(bodyItem.after, splitNewlines(callbacks.afterLabel.call(me, tooltipItem, data)));\n\n\t\t\tbodyItems.push(bodyItem);\n\t\t});\n\n\t\treturn bodyItems;\n\t},\n\n\t// Args are: (tooltipItem, data)\n\tgetAfterBody: function() {\n\t\treturn getBeforeAfterBodyLines(this._options.callbacks.afterBody.apply(this, arguments));\n\t},\n\n\t// Get the footer and beforeFooter and afterFooter lines\n\t// Args are: (tooltipItem, data)\n\tgetFooter: function() {\n\t\tvar me = this;\n\t\tvar callbacks = me._options.callbacks;\n\n\t\tvar beforeFooter = callbacks.beforeFooter.apply(me, arguments);\n\t\tvar footer = callbacks.footer.apply(me, arguments);\n\t\tvar afterFooter = callbacks.afterFooter.apply(me, arguments);\n\n\t\tvar lines = [];\n\t\tlines = pushOrConcat(lines, splitNewlines(beforeFooter));\n\t\tlines = pushOrConcat(lines, splitNewlines(footer));\n\t\tlines = pushOrConcat(lines, splitNewlines(afterFooter));\n\n\t\treturn lines;\n\t},\n\n\tupdate: function(changed) {\n\t\tvar me = this;\n\t\tvar opts = me._options;\n\n\t\t// Need to regenerate the model because its faster than using extend and it is necessary due to the optimization in Chart.Element.transition\n\t\t// that does _view = _model if ease === 1. This causes the 2nd tooltip update to set properties in both the view and model at the same time\n\t\t// which breaks any animations.\n\t\tvar existingModel = me._model;\n\t\tvar model = me._model = getBaseModel(opts);\n\t\tvar active = me._active;\n\n\t\tvar data = me._data;\n\n\t\t// In the case where active.length === 0 we need to keep these at existing values for good animations\n\t\tvar alignment = {\n\t\t\txAlign: existingModel.xAlign,\n\t\t\tyAlign: existingModel.yAlign\n\t\t};\n\t\tvar backgroundPoint = {\n\t\t\tx: existingModel.x,\n\t\t\ty: existingModel.y\n\t\t};\n\t\tvar tooltipSize = {\n\t\t\twidth: existingModel.width,\n\t\t\theight: existingModel.height\n\t\t};\n\t\tvar tooltipPosition = {\n\t\t\tx: existingModel.caretX,\n\t\t\ty: existingModel.caretY\n\t\t};\n\n\t\tvar i, len;\n\n\t\tif (active.length) {\n\t\t\tmodel.opacity = 1;\n\n\t\t\tvar labelColors = [];\n\t\t\tvar labelTextColors = [];\n\t\t\ttooltipPosition = positioners[opts.position].call(me, active, me._eventPosition);\n\n\t\t\tvar tooltipItems = [];\n\t\t\tfor (i = 0, len = active.length; i < len; ++i) {\n\t\t\t\ttooltipItems.push(createTooltipItem(active[i]));\n\t\t\t}\n\n\t\t\t// If the user provided a filter function, use it to modify the tooltip items\n\t\t\tif (opts.filter) {\n\t\t\t\ttooltipItems = tooltipItems.filter(function(a) {\n\t\t\t\t\treturn opts.filter(a, data);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// If the user provided a sorting function, use it to modify the tooltip items\n\t\t\tif (opts.itemSort) {\n\t\t\t\ttooltipItems = tooltipItems.sort(function(a, b) {\n\t\t\t\t\treturn opts.itemSort(a, b, data);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Determine colors for boxes\n\t\t\thelpers.each(tooltipItems, function(tooltipItem) {\n\t\t\t\tlabelColors.push(opts.callbacks.labelColor.call(me, tooltipItem, me._chart));\n\t\t\t\tlabelTextColors.push(opts.callbacks.labelTextColor.call(me, tooltipItem, me._chart));\n\t\t\t});\n\n\n\t\t\t// Build the Text Lines\n\t\t\tmodel.title = me.getTitle(tooltipItems, data);\n\t\t\tmodel.beforeBody = me.getBeforeBody(tooltipItems, data);\n\t\t\tmodel.body = me.getBody(tooltipItems, data);\n\t\t\tmodel.afterBody = me.getAfterBody(tooltipItems, data);\n\t\t\tmodel.footer = me.getFooter(tooltipItems, data);\n\n\t\t\t// Initial positioning and colors\n\t\t\tmodel.x = Math.round(tooltipPosition.x);\n\t\t\tmodel.y = Math.round(tooltipPosition.y);\n\t\t\tmodel.caretPadding = opts.caretPadding;\n\t\t\tmodel.labelColors = labelColors;\n\t\t\tmodel.labelTextColors = labelTextColors;\n\n\t\t\t// data points\n\t\t\tmodel.dataPoints = tooltipItems;\n\n\t\t\t// We need to determine alignment of the tooltip\n\t\t\ttooltipSize = getTooltipSize(this, model);\n\t\t\talignment = determineAlignment(this, tooltipSize);\n\t\t\t// Final Size and Position\n\t\t\tbackgroundPoint = getBackgroundPoint(model, tooltipSize, alignment, me._chart);\n\t\t} else {\n\t\t\tmodel.opacity = 0;\n\t\t}\n\n\t\tmodel.xAlign = alignment.xAlign;\n\t\tmodel.yAlign = alignment.yAlign;\n\t\tmodel.x = backgroundPoint.x;\n\t\tmodel.y = backgroundPoint.y;\n\t\tmodel.width = tooltipSize.width;\n\t\tmodel.height = tooltipSize.height;\n\n\t\t// Point where the caret on the tooltip points to\n\t\tmodel.caretX = tooltipPosition.x;\n\t\tmodel.caretY = tooltipPosition.y;\n\n\t\tme._model = model;\n\n\t\tif (changed && opts.custom) {\n\t\t\topts.custom.call(me, model);\n\t\t}\n\n\t\treturn me;\n\t},\n\n\tdrawCaret: function(tooltipPoint, size) {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\t\tvar caretPosition = this.getCaretPosition(tooltipPoint, size, vm);\n\n\t\tctx.lineTo(caretPosition.x1, caretPosition.y1);\n\t\tctx.lineTo(caretPosition.x2, caretPosition.y2);\n\t\tctx.lineTo(caretPosition.x3, caretPosition.y3);\n\t},\n\tgetCaretPosition: function(tooltipPoint, size, vm) {\n\t\tvar x1, x2, x3, y1, y2, y3;\n\t\tvar caretSize = vm.caretSize;\n\t\tvar cornerRadius = vm.cornerRadius;\n\t\tvar xAlign = vm.xAlign;\n\t\tvar yAlign = vm.yAlign;\n\t\tvar ptX = tooltipPoint.x;\n\t\tvar ptY = tooltipPoint.y;\n\t\tvar width = size.width;\n\t\tvar height = size.height;\n\n\t\tif (yAlign === 'center') {\n\t\t\ty2 = ptY + (height / 2);\n\n\t\t\tif (xAlign === 'left') {\n\t\t\t\tx1 = ptX;\n\t\t\t\tx2 = x1 - caretSize;\n\t\t\t\tx3 = x1;\n\n\t\t\t\ty1 = y2 + caretSize;\n\t\t\t\ty3 = y2 - caretSize;\n\t\t\t} else {\n\t\t\t\tx1 = ptX + width;\n\t\t\t\tx2 = x1 + caretSize;\n\t\t\t\tx3 = x1;\n\n\t\t\t\ty1 = y2 - caretSize;\n\t\t\t\ty3 = y2 + caretSize;\n\t\t\t}\n\t\t} else {\n\t\t\tif (xAlign === 'left') {\n\t\t\t\tx2 = ptX + cornerRadius + (caretSize);\n\t\t\t\tx1 = x2 - caretSize;\n\t\t\t\tx3 = x2 + caretSize;\n\t\t\t} else if (xAlign === 'right') {\n\t\t\t\tx2 = ptX + width - cornerRadius - caretSize;\n\t\t\t\tx1 = x2 - caretSize;\n\t\t\t\tx3 = x2 + caretSize;\n\t\t\t} else {\n\t\t\t\tx2 = vm.caretX;\n\t\t\t\tx1 = x2 - caretSize;\n\t\t\t\tx3 = x2 + caretSize;\n\t\t\t}\n\t\t\tif (yAlign === 'top') {\n\t\t\t\ty1 = ptY;\n\t\t\t\ty2 = y1 - caretSize;\n\t\t\t\ty3 = y1;\n\t\t\t} else {\n\t\t\t\ty1 = ptY + height;\n\t\t\t\ty2 = y1 + caretSize;\n\t\t\t\ty3 = y1;\n\t\t\t\t// invert drawing order\n\t\t\t\tvar tmp = x3;\n\t\t\t\tx3 = x1;\n\t\t\t\tx1 = tmp;\n\t\t\t}\n\t\t}\n\t\treturn {x1: x1, x2: x2, x3: x3, y1: y1, y2: y2, y3: y3};\n\t},\n\n\tdrawTitle: function(pt, vm, ctx, opacity) {\n\t\tvar title = vm.title;\n\n\t\tif (title.length) {\n\t\t\tctx.textAlign = vm._titleAlign;\n\t\t\tctx.textBaseline = 'top';\n\n\t\t\tvar titleFontSize = vm.titleFontSize;\n\t\t\tvar titleSpacing = vm.titleSpacing;\n\n\t\t\tctx.fillStyle = mergeOpacity(vm.titleFontColor, opacity);\n\t\t\tctx.font = helpers.fontString(titleFontSize, vm._titleFontStyle, vm._titleFontFamily);\n\n\t\t\tvar i, len;\n\t\t\tfor (i = 0, len = title.length; i < len; ++i) {\n\t\t\t\tctx.fillText(title[i], pt.x, pt.y);\n\t\t\t\tpt.y += titleFontSize + titleSpacing; // Line Height and spacing\n\n\t\t\t\tif (i + 1 === title.length) {\n\t\t\t\t\tpt.y += vm.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tdrawBody: function(pt, vm, ctx, opacity) {\n\t\tvar bodyFontSize = vm.bodyFontSize;\n\t\tvar bodySpacing = vm.bodySpacing;\n\t\tvar body = vm.body;\n\n\t\tctx.textAlign = vm._bodyAlign;\n\t\tctx.textBaseline = 'top';\n\t\tctx.font = helpers.fontString(bodyFontSize, vm._bodyFontStyle, vm._bodyFontFamily);\n\n\t\t// Before Body\n\t\tvar xLinePadding = 0;\n\t\tvar fillLineOfText = function(line) {\n\t\t\tctx.fillText(line, pt.x + xLinePadding, pt.y);\n\t\t\tpt.y += bodyFontSize + bodySpacing;\n\t\t};\n\n\t\t// Before body lines\n\t\tctx.fillStyle = mergeOpacity(vm.bodyFontColor, opacity);\n\t\thelpers.each(vm.beforeBody, fillLineOfText);\n\n\t\tvar drawColorBoxes = vm.displayColors;\n\t\txLinePadding = drawColorBoxes ? (bodyFontSize + 2) : 0;\n\n\t\t// Draw body lines now\n\t\thelpers.each(body, function(bodyItem, i) {\n\t\t\tvar textColor = mergeOpacity(vm.labelTextColors[i], opacity);\n\t\t\tctx.fillStyle = textColor;\n\t\t\thelpers.each(bodyItem.before, fillLineOfText);\n\n\t\t\thelpers.each(bodyItem.lines, function(line) {\n\t\t\t\t// Draw Legend-like boxes if needed\n\t\t\t\tif (drawColorBoxes) {\n\t\t\t\t\t// Fill a white rect so that colours merge nicely if the opacity is < 1\n\t\t\t\t\tctx.fillStyle = mergeOpacity(vm.legendColorBackground, opacity);\n\t\t\t\t\tctx.fillRect(pt.x, pt.y, bodyFontSize, bodyFontSize);\n\n\t\t\t\t\t// Border\n\t\t\t\t\tctx.lineWidth = 1;\n\t\t\t\t\tctx.strokeStyle = mergeOpacity(vm.labelColors[i].borderColor, opacity);\n\t\t\t\t\tctx.strokeRect(pt.x, pt.y, bodyFontSize, bodyFontSize);\n\n\t\t\t\t\t// Inner square\n\t\t\t\t\tctx.fillStyle = mergeOpacity(vm.labelColors[i].backgroundColor, opacity);\n\t\t\t\t\tctx.fillRect(pt.x + 1, pt.y + 1, bodyFontSize - 2, bodyFontSize - 2);\n\t\t\t\t\tctx.fillStyle = textColor;\n\t\t\t\t}\n\n\t\t\t\tfillLineOfText(line);\n\t\t\t});\n\n\t\t\thelpers.each(bodyItem.after, fillLineOfText);\n\t\t});\n\n\t\t// Reset back to 0 for after body\n\t\txLinePadding = 0;\n\n\t\t// After body lines\n\t\thelpers.each(vm.afterBody, fillLineOfText);\n\t\tpt.y -= bodySpacing; // Remove last body spacing\n\t},\n\n\tdrawFooter: function(pt, vm, ctx, opacity) {\n\t\tvar footer = vm.footer;\n\n\t\tif (footer.length) {\n\t\t\tpt.y += vm.footerMarginTop;\n\n\t\t\tctx.textAlign = vm._footerAlign;\n\t\t\tctx.textBaseline = 'top';\n\n\t\t\tctx.fillStyle = mergeOpacity(vm.footerFontColor, opacity);\n\t\t\tctx.font = helpers.fontString(vm.footerFontSize, vm._footerFontStyle, vm._footerFontFamily);\n\n\t\t\thelpers.each(footer, function(line) {\n\t\t\t\tctx.fillText(line, pt.x, pt.y);\n\t\t\t\tpt.y += vm.footerFontSize + vm.footerSpacing;\n\t\t\t});\n\t\t}\n\t},\n\n\tdrawBackground: function(pt, vm, ctx, tooltipSize, opacity) {\n\t\tctx.fillStyle = mergeOpacity(vm.backgroundColor, opacity);\n\t\tctx.strokeStyle = mergeOpacity(vm.borderColor, opacity);\n\t\tctx.lineWidth = vm.borderWidth;\n\t\tvar xAlign = vm.xAlign;\n\t\tvar yAlign = vm.yAlign;\n\t\tvar x = pt.x;\n\t\tvar y = pt.y;\n\t\tvar width = tooltipSize.width;\n\t\tvar height = tooltipSize.height;\n\t\tvar radius = vm.cornerRadius;\n\n\t\tctx.beginPath();\n\t\tctx.moveTo(x + radius, y);\n\t\tif (yAlign === 'top') {\n\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t}\n\t\tctx.lineTo(x + width - radius, y);\n\t\tctx.quadraticCurveTo(x + width, y, x + width, y + radius);\n\t\tif (yAlign === 'center' && xAlign === 'right') {\n\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t}\n\t\tctx.lineTo(x + width, y + height - radius);\n\t\tctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);\n\t\tif (yAlign === 'bottom') {\n\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t}\n\t\tctx.lineTo(x + radius, y + height);\n\t\tctx.quadraticCurveTo(x, y + height, x, y + height - radius);\n\t\tif (yAlign === 'center' && xAlign === 'left') {\n\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t}\n\t\tctx.lineTo(x, y + radius);\n\t\tctx.quadraticCurveTo(x, y, x + radius, y);\n\t\tctx.closePath();\n\n\t\tctx.fill();\n\n\t\tif (vm.borderWidth > 0) {\n\t\t\tctx.stroke();\n\t\t}\n\t},\n\n\tdraw: function() {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\n\t\tif (vm.opacity === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar tooltipSize = {\n\t\t\twidth: vm.width,\n\t\t\theight: vm.height\n\t\t};\n\t\tvar pt = {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y\n\t\t};\n\n\t\t// IE11/Edge does not like very small opacities, so snap to 0\n\t\tvar opacity = Math.abs(vm.opacity < 1e-3) ? 0 : vm.opacity;\n\n\t\t// Truthy/falsey value for empty tooltip\n\t\tvar hasTooltipContent = vm.title.length || vm.beforeBody.length || vm.body.length || vm.afterBody.length || vm.footer.length;\n\n\t\tif (this._options.enabled && hasTooltipContent) {\n\t\t\t// Draw Background\n\t\t\tthis.drawBackground(pt, vm, ctx, tooltipSize, opacity);\n\n\t\t\t// Draw Title, Body, and Footer\n\t\t\tpt.x += vm.xPadding;\n\t\t\tpt.y += vm.yPadding;\n\n\t\t\t// Titles\n\t\t\tthis.drawTitle(pt, vm, ctx, opacity);\n\n\t\t\t// Body\n\t\t\tthis.drawBody(pt, vm, ctx, opacity);\n\n\t\t\t// Footer\n\t\t\tthis.drawFooter(pt, vm, ctx, opacity);\n\t\t}\n\t},\n\n\t/**\n\t * Handle an event\n\t * @private\n\t * @param {IEvent} event - The event to handle\n\t * @returns {Boolean} true if the tooltip changed\n\t */\n\thandleEvent: function(e) {\n\t\tvar me = this;\n\t\tvar options = me._options;\n\t\tvar changed = false;\n\n\t\tme._lastActive = me._lastActive || [];\n\n\t\t// Find Active Elements for tooltips\n\t\tif (e.type === 'mouseout') {\n\t\t\tme._active = [];\n\t\t} else {\n\t\t\tme._active = me._chart.getElementsAtEventForMode(e, options.mode, options);\n\t\t}\n\n\t\t// Remember Last Actives\n\t\tchanged = !helpers.arrayEquals(me._active, me._lastActive);\n\n\t\t// Only handle target event on tooltip change\n\t\tif (changed) {\n\t\t\tme._lastActive = me._active;\n\n\t\t\tif (options.enabled || options.custom) {\n\t\t\t\tme._eventPosition = {\n\t\t\t\t\tx: e.x,\n\t\t\t\t\ty: e.y\n\t\t\t\t};\n\n\t\t\t\tme.update(true);\n\t\t\t\tme.pivot();\n\t\t\t}\n\t\t}\n\n\t\treturn changed;\n\t}\n});\n\n/**\n * @namespace Chart.Tooltip.positioners\n */\nexports.positioners = positioners;\n\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\nvar isBuffer = require('is-buffer');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && navigator.product === 'ReactNative') {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = merge(result[key], val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","'use strict';\n\nvar defaults = require('./core.defaults');\n\ndefaults._set('global', {\n\tresponsive: true,\n\tresponsiveAnimationDuration: 0,\n\tmaintainAspectRatio: true,\n\tevents: ['mousemove', 'mouseout', 'click', 'touchstart', 'touchmove'],\n\thover: {\n\t\tonHover: null,\n\t\tmode: 'nearest',\n\t\tintersect: true,\n\t\tanimationDuration: 400\n\t},\n\tonClick: null,\n\tdefaultColor: 'rgba(0,0,0,0.1)',\n\tdefaultFontColor: '#666',\n\tdefaultFontFamily: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n\tdefaultFontSize: 12,\n\tdefaultFontStyle: 'normal',\n\tshowLines: true,\n\n\t// Element defaults defined in element extensions\n\telements: {},\n\n\t// Layout options such as padding\n\tlayout: {\n\t\tpadding: {\n\t\t\ttop: 0,\n\t\t\tright: 0,\n\t\t\tbottom: 0,\n\t\t\tleft: 0\n\t\t}\n\t}\n});\n\nmodule.exports = function() {\n\n\t// Occupy the global variable of Chart, and create a simple base class\n\tvar Chart = function(item, config) {\n\t\tthis.construct(item, config);\n\t\treturn this;\n\t};\n\n\tChart.Chart = Chart;\n\n\treturn Chart;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(utils.merge(defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n"],"sourceRoot":""} |