{"version":3,"sources":["webpack:///FormsV2.chunk.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/pickadate/lib/compressed/picker.date.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/pickadate/lib/compressed/picker.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/nouislider/distribute/nouislider.js","webpack:///./js/forms/v2/decorators/FloatingPlaceholder.decorator.js","webpack:///./js/forms/v2/constants/Identifiers.const.js","webpack:///./js/forms/v2/services/Forms.service.js","webpack:///./js/forms/v2/Form.controller.js","webpack:///./js/forms/v2/controller/FormElement.controller.js","webpack:///./js/forms/v2/controller/Datepicker.controller.js","webpack:///./js/forms/v2/controller/Password.controller.js","webpack:///./js/forms/v2/controller/ValueSlider.controller.js","webpack:///./js/forms/v2/controller/Autocomplete.controller.js","webpack:///./js/forms/v2/controller/InlineEditing.controller.js","webpack:///./js/forms/v2/controller/ClearInput.controller.js","webpack:///./js/forms/v2/controller/Select.controller.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/babel-runtime/regenerator/index.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/babel-runtime/node_modules/regenerator-runtime/runtime-module.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/babel-runtime/node_modules/regenerator-runtime/runtime.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/babel-runtime/helpers/asyncToGenerator.js","webpack:///./js/forms/v2/controller/FileUpload.controller.js","webpack:///./js/modules/Base.module.js","webpack:///./js/modules/forms/v2/index.js","webpack:///./js/modules/repositories/Keycode.repository.js"],"names":["webpackJsonp","1031","module","exports","__webpack_require__","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","a","undefined","apply","b","c","this","d","$node","e","value","f","data","g","h","formatSubmit","format","i","currentStyle","direction","getComputedStyle","$root","settings","queue","min","max","now","select","highlight","view","disable","enable","item","clear","slice","shift","set","defaultValue","key","40","38","39","37","go","Date","year","month","date","interval","render","on","find","klass","selectMonth","get","trigger","selectYear","disabled","buttonToday","attr","_","prototype","split","map","pop","match","create","isPlainObject","isInteger","pick","obj","isArray","isDate","normalize","getFullYear","getMonth","getDate","day","getDay","getTime","createRange","from","to","withinRange","overlapRanges","rel","setDate","navigate","j","k","nav","setHours","measure","parse","viewset","validate","l","m","n","o","p","filter","length","Math","abs","firstDay","inverted","formats","toArray","replace","substr","yyyy","yy","mm","dd","indexOf","digits","lead","ddd","weekdaysShort","dddd","weekdaysFull","mmm","monthsShort","mmmm","monthsFull","toString","join","isDateExact","isDateOverlap","flipEnable","deactivate","push","activate","nodes","node","group","weekdays","showWeekdaysFull","navDisabled","ariaAttr","role","controls","id","labelMonthNext","labelMonthPrev","q","showMonthsShort","selectMonths","labelMonthSelect","r","selectYears","labelYearSelect","header","infocus","outfocus","selected","highlighted","label","val","activedescendant","table","readonly","today","buttonClear","close","buttonClose","footer","defaults","closeOnSelect","closeOnClear","navPrev","navNext","klasses","picker","extend","1032","B","component","w","open","y","box","wrap","frame","holder","z","addClass","input","x","editable","preventDefault","u","haspopup","expanded","owns","$holder","keydown","focus.toOpen","t","blur","removeClass","target","focusin","focused","stopPropagation","mousedown click","type","is","focus","hasClass","href","contains","hiddenName","name","hiddenPrefix","hiddenSuffix","_hidden","s","v","one","keyCode","test","random","A","start","constructor","methods","autofocus","readOnly","appendTo","containerHidden","append","after","container","onStart","onRender","stop","onStop","onOpen","onClose","onSet","html","parentNode","removeChild","remove","removeData","setTimeout","off","active","opened","css","document","which","click","muted","arguments","namesCount","window","height","offsetWidth","setAttribute","attribute","activeElement","documentElement","style","transition","call","fn","each","1033","factory","unique","array","closest","round","offset","elem","rect","getBoundingClientRect","doc","ownerDocument","docElem","pageOffset","getPageOffset","navigator","userAgent","top","clientTop","left","clientLeft","isNumeric","isNaN","isFinite","addClassFor","element","className","duration","limit","asArray","Array","countDecimals","numStr","pieces","el","classList","add","RegExp","supportPageOffset","pageXOffset","isCSS1Compat","compatMode","scrollLeft","body","pageYOffset","scrollTop","getActions","pointerEnabled","move","end","msPointerEnabled","subRangeRatio","pa","pb","fromPercentage","range","toPercentage","isPercentage","getJ","arr","toStepping","xVal","xPct","va","vb","fromStepping","getStep","xSteps","snap","handleEntryPoint","index","that","percentage","Object","Error","parseFloat","handleStepPoint","Spectrum","entry","singleStep","xNumSteps","ordered","hasOwnProperty","sort","testStep","parsed","testRange","spectrum","dir","testStart","handles","testSnap","testAnimate","animate","testAnimationDuration","animationDuration","testConnect","connect","testOrientation","ort","testMargin","margin","getMargin","testLimit","testDirection","testBehaviour","tap","drag","fixed","hover","events","testTooltips","tooltips","forEach","formatter","testFormat","testCssPrefix","cssPrefix","testCssClasses","cssClasses","testOptions","options","tests","defaultFormatter","step","orientation","behaviour","base","origin","handle","handleLower","handleUpper","horizontal","vertical","background","ltr","rtl","draggable","stacking","tooltip","pips","pipsHorizontal","pipsVertical","marker","markerHorizontal","markerVertical","markerNormal","markerLarge","markerSub","valueHorizontal","valueVertical","valueNormal","valueLarge","valueSub","keys","closure","originalOptions","getPositions","delimit","fixEvent","touch","mouse","pointer","event","changedTouches","pageX","pageY","clientX","clientY","points","cursor","addHandle","createElement","classModifier","reverse","appendChild","addTooltip","firstChild","getGroup","mode","values","stepped","scope_Spectrum","spread","generateSpread","density","safeIncrement","increment","toFixed","originalSpectrumDirection","indexes","firstInRange","lastInRange","ignoreFirst","ignoreLast","prevPct","unshift","current","newPct","pctDifference","pctPos","steps","realSteps","stepsize","low","high","addMarking","filterFunc","getClasses","source","orientationClasses","valueOrientationClasses","markerOrientationClasses","sizeClasses","valueSizeClasses","markerSizeClasses","getTags","addSpread","out","innerHTML","grid","scope_Target","baseSize","scope_Base","alt","width","fireEvent","handleNumber","scope_Locations","scope_Events","targetEvent","eventType","callback","scope_Self","valueGet","inSliderOrder","scope_Values","attach","method","hasAttribute","actions","buttons","calcPoint","eventName","addEventListener","appVersion","buttonsProperty","positions","scope_Handles","state","proposal","setHandle","querySelector","removeEventListener","noUiListener","noUiListeners","documentLeave","nodeName","relatedTarget","children","moveEvent","endEvent","outEvent","concat","location","total","noLimitOption","lowerMargin","upperMargin","lowerLimit","upperLimit","requestAnimationFrame","previousSibling","setValues","count","String","valueSet","fireSetEvent","retour","destroy","noUiSlider","getCurrentStep","getApplicableStep","stepDecimals","prev","Number","bindEvent","namespacedEvent","removeEvent","namespace","substring","bind","tEvent","tNamespace","updateOptions","optionsToUpdate","newOptions","div","nrHandles","tips","initialize","slider","convert","1034","_interopRequireDefault","__esModule","default","setupFloatingPlaceholder","_this","placeholder","$input","siblings","cls","checkApplyFloatingPlaceholder","$scope","floatingPlaceholderDecoratorInit","descriptor","original","_len","args","_key","result","defineProperty","floatingPlaceholderClass","_class","_getOwnPropertyDescriptor","_getOwnPropertyDescriptor2","_classCallCheck2","_classCallCheck3","_mixins","init","property","decorators","context","desc","enumerable","configurable","initializer","writable","reduce","decorator","1108","IDENTIFIERS","FORM_ELEMENT","FORM","ROOT","SELECT","AUTOCOMPLETE","INLINE_EDITING","FILE_UPLOAD","1429","checkLoadStyles","formLoaderMeta","getAttribute","thePath","BASE_PATH","_StyleInjector2","injectImmediate","PREFIX","initController","$el","_jquery2","parent","logger","info","controllerMap","reInit","warn","controller","_Form2","log","initSingleController","$form","formID","reInitSingleController","initSingle","receiveMessage","message","EVENTS","FORMREADY","receiveMessageSingle","FORMREINITSINGLE","_getIterator2","_getIterator3","_possibleConstructorReturn2","_possibleConstructorReturn3","_inherits2","_inherits3","_jquery","_Debug","_Debug2","_WindowGateway","_WindowGateway2","_Bucket","_Bucket2","_Form","_Identifiers","_StyleInjector","Forms","_DebugController","debug","formReady","size","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","next","done","err","return","$formRoots","gateway","messageEvent","subscribe","instance","1430","controllerInstance","subController","_keys2","componentControllerMap","componentControllerSelectors","config","_frontendLogger2","_FormElement2","destroyController","destroySingleController","_keys","_Abstract","_Abstract2","_FormElement","_Tooltip","_Tooltip2","_FileUpload","_FileUpload2","_Identifiers2","_frontendLogger","fileUpload","TOOLTIP","FormController","_AbstractController","_this2","$dataTPL","1431","checkFeatures","datePicker","_Datepicker2","featureControllerMap","isDatepicker","_Password2","password","isPassword","valueSlider","_ValueSlider2","isValueSlider","autocomplete","_Autocomplete2","isAutocomplete","_InlineEditing2","inlineEditing","isInlineEditing","_Select2","selectReplace","isSelectReplace","_ClearInput2","clearInput","isClearInput","addHandler","_AbstractController2","_AbstractController3","_Datepicker","_Password","_ValueSlider","_Autocomplete","_InlineEditing","_ClearInput","_Select","_FloatingPlaceholder","FormElementController","1432","checkMobile","useragent","isMobile","_promise2","reject","_fasterdom","fasterdomPromised","mutateInstant","isDestroyed","pickadate","createEvent","initEvent","dispatchEvent","then","$trigger","calculateVerticalPositioning","calculateHorizontalPositioning","_device","ScrollService","toElement","_assign","_assign2","_promise","UserAgent","Datepicker","_ret","_this3","_uid","setDestroyed","_this4","setInitialized","removeDestroyed","measureInstant","offScreenContent","OFF_SCREEN","CONTENT","maxDate","_this5","leftOffset","pickerHolder","ResizeService","getCurrent","_this6","displayAbove","pickerHeight","outerHeight","1433","handleToggleClick","isHidden","_fasterdom2","removeAttr","handleInput","isEmpty","PasswordController","1434","_nouislider","_nouislider2","ValueSliderController","valueSliderInput","parseInt","1435","hideSuggestions","visible","clickoutside","mutate","showSuggestions","_clickoutside2","handleClickOnSuggestion","text","_selectSuggestion","makeSuggestions","emitBlur","madeSuggestion","handleEnter","$selectedSuggestion","$suggestions","selectOptionByKeyboard","totalSuggestions","newIndex","eq","handleKeydown","_Keycode2","UP","DOWN","ENTER","showEmptyMessage","empty","emptyMessage","_clickoutside","_lodash","_lodash2","_Keycode","AutocompleteController","autoSelectOne","_autoSelectOne","query","getSuggestions","suggestions","catch","emptyMsg","1436","prop","toggleState","InlineEditingController","1437","inputValue","ClearInputController","not","1438","refreshCustomSelectText","newText","$customSelect","handleChange","selectedOptions","$nativeSelect","hideCustomSelectOptions","isDisabled","isOpen","showCustomSelectOptions","viewportPosition","viewportHeight","difference","$customOptionsWrapper","$customOptions","validateSelectKey","nextSelectedKey","optionCount","newSelectedKey","$options","buildSelectedOptionsString","addSelectedOption","selectedIndex","$selectedCustomOption","$selectedNativeOption","removeSelectedOption","selectOption","isMultiSelect","multipleSelectOption","$selectedOptions","$clickedCustomOption","$clickedNativeOption","nativeChangeEvent","$selectedOption","selectedKey","TAB","handleMousedown","handleClick","handleCustomOptionClick","$clickedOption","generateCustomOptions","_this7","option","$option","$customOpt","_regenerator","_regenerator2","_asyncToGenerator2","_asyncToGenerator3","_ref","mark","_callee","_context","_x","SelectController","_this9","scope","1439","1440","Function","hadRuntime","regeneratorRuntime","getOwnPropertyNames","oldRuntime","1441","global","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","Context","_invoke","makeInvokeMethod","tryCatch","arg","GeneratorFunction","GeneratorFunctionPrototype","defineIteratorMethods","AsyncIterator","invoke","resolve","record","hasOwn","Promise","__await","unwrapped","enqueue","callInvokeWithMethodAndArg","previousPromise","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","GenStateSuspendedYield","iterator","TypeError","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","iteratorSymbol","Op","$Symbol","Symbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","inModule","runtime","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","Gp","displayName","isGeneratorFunction","genFun","ctor","setPrototypeOf","__proto__","awrap","async","iter","object","skipTempReset","charAt","rootEntry","rootRecord","rval","exception","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","1442","gen","error","1443","FileUploadController","579","BaseModule","moduleConfig","identifier","getIdentifier","720","_Base","_Base2","_Forms","_Forms2","FormV2","_BaseModule","766"],"mappings":";;;;;;AAMAA,cAAc,IAERC,KACA,SAAUC,EAAQC,EAASC,GCTjC,GAAAC,GAAAC,EAAAC;;;;CAIA,SAAAC,GAAaF,GAAAF,EAAA,MAAAA,EAAA,KAAAC,EAAA,MAAAI,MAAAF,EAAA,kBAAAF,KAAAK,MAAAP,EAAAG,GAAAD,KAAAH,EAAAC,QAAAI,IAAyK,SAAAC,EAAAG,GAAe,QAAAC,GAAAJ,EAAAG,GAAgB,GAAAC,GAAAC,KAAAC,EAAAN,EAAAO,MAAA,GAAAC,EAAAF,EAAAG,MAAAC,EAAAV,EAAAO,MAAAI,KAAA,SAAAC,EAAAF,GAAAF,EAAAK,EAAAH,EAAAP,EAAAW,aAAAX,EAAAY,OAAAC,EAAA,WAA0G,MAAAV,GAAAW,aAAA,OAAAX,EAAAW,aAAAC,UAAA,OAAAC,iBAAAnB,EAAAoB,MAAA,IAAAF,UAAqGd,GAAAiB,SAAAlB,EAAAC,EAAAG,MAAAP,EAAAO,MAAAH,EAAAkB,OAAsCC,IAAA,iBAAAC,IAAA,iBAAAC,IAAA,aAAAC,OAAA,wBAAAC,UAAA,iCAAAC,KAAA,gCAAAC,QAAA,aAAAC,OAAA,YAAiN1B,EAAA2B,QAAU3B,EAAA2B,KAAAC,MAAA,KAAA5B,EAAA2B,KAAAF,SAAA1B,EAAA0B,aAAAI,MAAA,GAAA7B,EAAA2B,KAAAD,QAAA,SAAA9B,GAAsF,WAAAA,EAAA,GAAAA,EAAAkC,SAAA,GAA8B9B,EAAA2B,KAAAF,SAAAzB,EAAA+B,IAAA,MAAAhC,EAAAoB,KAAAY,IAAA,MAAAhC,EAAAqB,KAAAW,IAAA,OAAAvB,EAAAR,EAAA+B,IAAA,SAAAvB,GAAoFG,OAAAF,EAAAuB,cAAA,IAAyBhC,EAAA+B,IAAA,eAAAA,IAAA,YAAA/B,EAAA2B,KAAAN,KAAArB,EAAAiC,KAA0DC,GAAA,EAAAC,IAAA,EAAAC,GAAA,WAAyB,MAAAxB,MAAA,KAAgByB,GAAA,WAAe,MAAAzB,KAAA,MAAgB0B,GAAA,SAAA1C,GAAgB,GAAAG,GAAAC,EAAA2B,KAAAJ,UAAArB,EAAA,GAAAqC,MAAAxC,EAAAyC,KAAAzC,EAAA0C,MAAA1C,EAAA2C,KAAA9C,EAA2DI,GAAA+B,IAAA,YAAA7B,GAAqByC,SAAA/C,IAAWK,KAAA2C,WAAiBhD,EAAAiD,GAAA,oBAA0BjD,EAAAoB,MAAA8B,KAAA,IAAA/C,EAAAgD,MAAAC,aAAAH,GAAA,oBAA6D,GAAA7C,GAAAC,KAAAI,KAAiBL,KAAAJ,EAAAmC,IAAA,aAAAnC,EAAAqD,IAAA,QAAAT,KAAAxC,EAAAJ,EAAAqD,IAAA,aAAAP,OAAA9C,EAAAoB,MAAA8B,KAAA,IAAA/C,EAAAgD,MAAAC,aAAAE,QAAA,YAA8HtD,EAAAoB,MAAA8B,KAAA,IAAA/C,EAAAgD,MAAAI,YAAAN,GAAA,oBAA8D,GAAA7C,GAAAC,KAAAI,KAAiBL,KAAAJ,EAAAmC,IAAA,aAAA/B,EAAAJ,EAAAqD,IAAA,QAAAR,MAAA7C,EAAAqD,IAAA,aAAAP,OAAA9C,EAAAoB,MAAA8B,KAAA,IAAA/C,EAAAgD,MAAAI,YAAAD,QAAA,aAAgI,GAAAL,GAAA,kBAAyB,GAAA3C,GAAA,EAASF,GAAAoD,SAAApD,EAAAiD,IAAA,UAAA/C,EAAA,SAAAH,EAAAgD,MAAAM,YAAA,KAAAzD,EAAAoB,MAAA8B,KAAA,SAAA5C,EAAA,YAAAoD,KAAA,gBAAuH,GAAAT,GAAA,mBAA0BjD,EAAAoB,MAAA8B,KAAA,kBAAAQ,KAAA,gBAAmD,GAAI,GAAAhD,GAAAV,EAAA2D,CAAkBvD,GAAAwD,UAAAzB,IAAA,SAAAnC,EAAAG,EAAAC,GAAgC,GAAAE,GAAAD,KAAAG,EAAAF,EAAAyB,IAAoB,eAAA5B,GAAA,SAAAH,MAAA,UAAAQ,EAAAR,GAAAG,EAAAG,IAAAE,EAAA,UAAAR,EAAA,kBAAAA,EAAA,SAAAA,GAAAM,EAAAgB,MAAAtB,GAAA6D,MAAA,KAAAC,IAAA,SAAAtD,GAAyI,MAAAL,GAAAG,EAAAE,GAAAR,EAAAG,EAAAC,KAAqB2D,MAAA,UAAA/D,EAAAM,EAAA6B,IAAA,YAAA3B,EAAAkB,OAAAtB,GAAA,aAAAJ,EAAAM,EAAA6B,IAAA,OAAA3B,EAAAmB,UAAAvB,GAAAJ,EAAAgE,MAAA,qCAAAxD,EAAAkB,QAAApB,EAAAkD,SAAAhD,EAAAkB,SAAApB,EAAA6B,IAAA,SAAA3B,EAAAkB,OAAAtB,GAAAI,EAAAmB,WAAArB,EAAAkD,SAAAhD,EAAAmB,YAAArB,EAAA6B,IAAA,YAAA3B,EAAAmB,UAAAvB,IAAAE,IAAgRF,EAAAwD,UAAAP,IAAA,SAAArD,GAA6B,MAAAK,MAAA0B,KAAA/B,IAAoBI,EAAAwD,UAAAK,OAAA,SAAAjE,EAAAI,EAAAE,GAAoC,GAAAE,GAAAI,EAAAP,IAAa,OAAAD,OAAA,KAAAA,EAAAJ,EAAAI,MAAA,KAAAA,GAAA,IAAAI,EAAAJ,EAAAD,EAAA+D,cAAA9D,IAAAM,EAAAyD,UAAA/D,EAAAgE,MAAAhE,IAAAiE,IAAAlE,EAAAmE,QAAAlE,MAAA,GAAAuC,MAAAvC,EAAA,GAAAA,EAAA,GAAAA,EAAA,IAAAA,EAAAM,EAAA6D,OAAAnE,KAAAQ,EAAAqD,SAAAI,KAAAjE,EAAAM,EAAAyD,UAAA/D,IAAAM,EAAA6D,OAAAnE,GAAAQ,EAAA4D,UAAA,GAAA7B,MAAAvC,GAAAE,GAAAM,EAAAa,IAAAzB,EAAAI,EAAAE,IAA8OsC,KAAApC,GAAAJ,EAAAqE,cAAA5B,MAAArC,GAAAJ,EAAAsE,WAAA5B,KAAAtC,GAAAJ,EAAAuE,UAAAC,IAAApE,GAAAJ,EAAAyE,SAAAR,IAAA7D,GAAAJ,EAAAgE,KAAA5D,GAAAJ,EAAA0E,YAAkH1E,EAAAwD,UAAAmB,YAAA,SAAA/E,EAAAI,GAAuC,GAAAE,GAAAD,KAAAG,EAAA,SAAAR,GAAyB,WAAAA,GAAAG,EAAAmE,QAAAtE,IAAAU,EAAA6D,OAAAvE,GAAAM,EAAA2D,OAAAjE,KAAwD,OAAAU,GAAAyD,UAAAnE,OAAAQ,EAAAR,IAAAU,EAAAyD,UAAA/D,OAAAI,EAAAJ,IAAAM,EAAAyD,UAAAnE,IAAAG,EAAA+D,cAAA9D,GAAAJ,GAAAI,EAAAwC,KAAAxC,EAAAyC,MAAAzC,EAAA0C,KAAA9C,GAAAU,EAAAyD,UAAA/D,IAAAD,EAAA+D,cAAAlE,KAAAI,GAAAJ,EAAA4C,KAAA5C,EAAA6C,MAAA7C,EAAA8C,KAAA1C,KAA2L4E,KAAAxE,EAAAR,GAAAiF,GAAAzE,EAAAJ,KAAmBA,EAAAwD,UAAAsB,YAAA,SAAAlF,EAAAG,GAAuC,MAAAH,GAAAK,KAAA0E,YAAA/E,EAAAgF,KAAAhF,EAAAiF,IAAA9E,EAAAiE,MAAApE,EAAAgF,KAAAZ,MAAAjE,EAAAiE,MAAApE,EAAAiF,GAAAb,MAA8EhE,EAAAwD,UAAAuB,cAAA,SAAAnF,EAAAG,GAAyC,GAAAC,GAAAC,IAAW,OAAAL,GAAAI,EAAA2E,YAAA/E,EAAAgF,KAAAhF,EAAAiF,IAAA9E,EAAAC,EAAA2E,YAAA5E,EAAA6E,KAAA7E,EAAA8E,IAAA7E,EAAA8E,YAAAlF,EAAAG,EAAA6E,OAAA5E,EAAA8E,YAAAlF,EAAAG,EAAA8E,KAAA7E,EAAA8E,YAAA/E,EAAAH,EAAAgF,OAAA5E,EAAA8E,YAAA/E,EAAAH,EAAAiF,KAAgK7E,EAAAwD,UAAAnC,IAAA,SAAAzB,EAAAG,EAAAC,GAAiC,MAAAD,GAAA,GAAAwC,MAAAvC,KAAAgF,KAAAjF,EAAAkF,QAAAlF,EAAAwE,UAAAvE,EAAAgF,KAAA/E,KAAAmE,UAAArE,EAAAC,IAA6EA,EAAAwD,UAAA0B,SAAA,SAAAtF,EAAAI,EAAAE,GAAsC,GAAAE,GAAAE,EAAAE,EAAAC,EAAAG,EAAAb,EAAAmE,QAAAlE,GAAAmF,EAAApF,EAAA+D,cAAA9D,GAAAoF,EAAAnF,KAAA0B,KAAAH,IAAiE,IAAAZ,GAAAuE,EAAA,CAAS,IAAAA,GAAA7E,EAAAN,EAAAwC,KAAAhC,EAAAR,EAAAyC,MAAAhC,EAAAT,EAAA0C,OAAApC,GAAAN,EAAA,GAAAQ,GAAAR,EAAA,GAAAS,GAAAT,EAAA,IAAAE,KAAAmF,KAAAD,KAAA3C,QAAAjC,IAAAF,EAAA8E,EAAA5C,KAAAhC,EAAA4E,EAAA3C,OAAArC,EAAA,GAAAmC,MAAAjC,EAAAE,GAAAN,KAAAmF,IAAAnF,EAAAmF,IAAA,MAAA/E,EAAAF,EAAAiE,cAAA7D,EAAAJ,EAAAkE,WAAmL,GAAA/B,MAAAjC,EAAAE,EAAAC,GAAA6D,aAAA9D,GAA+BC,GAAA,CAAMT,IAAAM,EAAAE,EAAAC,GAAU,MAAAT,IAASA,EAAAwD,UAAAY,UAAA,SAAAxE,GAAmC,MAAAA,GAAA0F,SAAA,SAAA1F,GAA6BI,EAAAwD,UAAA+B,QAAA,SAAA3F,EAAAG,GAAmC,GAAAC,GAAAC,IAAW,OAAAF,GAAA,gBAAAA,KAAAC,EAAAwF,MAAA5F,EAAAG,GAAAO,EAAAyD,UAAAhE,OAAAC,EAAAqB,IAAAzB,EAAAG,GAAyEiF,IAAAjF,KAAMA,EAAA,OAAAH,GAAA,QAAAG,GAA2BC,EAAAwD,UAAAiC,QAAA,SAAA7F,EAAAG,GAAmC,MAAAE,MAAA4D,QAAA9D,EAAAyC,KAAAzC,EAAA0C,MAAA,KAAuCzC,EAAAwD,UAAAkC,SAAA,SAAA9F,EAAAI,EAAAE,GAAsC,GAAAE,GAAAI,EAAAC,EAAAG,EAAAuE,EAAAlF,KAAAmF,EAAApF,EAAA2F,EAAAzF,KAAAyC,SAAAzC,EAAAyC,SAAA,EAAAiD,GAAA,IAAAT,EAAAxD,KAAAD,OAAAmE,EAAAV,EAAAxD,KAAAR,IAAA2E,EAAAX,EAAAxD,KAAAP,IAAA2E,EAAAH,GAAAT,EAAAxD,KAAAF,QAAAuE,OAAA,SAAApG,GAA0I,GAAAG,EAAAmE,QAAAtE,GAAA,CAAiB,GAAAM,GAAAiF,EAAAtB,OAAAjE,GAAAoE,IAAuB9D,GAAAF,EAAAgE,KAAA5D,GAAA,EAAAF,EAAAF,EAAAgE,OAAAxD,GAAA,GAA+B,MAAAF,GAAAyD,UAAAnE,KAAsBqG,MAAS,MAAA/F,MAAAmF,MAAAnF,EAAA8B,iBAAA4D,GAAAT,EAAA/B,SAAApD,IAAA4F,GAAAT,EAAA/B,SAAApD,KAAA+F,GAAA3F,GAAAI,KAAAoF,IAAA5F,EAAAgE,MAAA6B,EAAA7B,MAAAhE,EAAAgE,MAAA8B,EAAA9B,OAAA,IAAA4B,IAAAG,KAAAvF,GAAAmF,EAAA,IAAAvF,GAAA,EAAAuF,SAAA,GAAgKR,EAAA/B,SAAApD,KAAAkG,KAAAC,IAAAR,GAAA,IAAA3F,EAAAyC,MAAA2C,EAAA3C,OAAAzC,EAAAyC,MAAA2C,EAAA3C,SAAAzC,EAAAoF,EAAAO,IAAA,QAAA3F,EAAAgE,MAAA6B,EAAA7B,MAAAvD,GAAA,EAAAkF,EAAA,EAAA3F,EAAAmF,EAAAtB,QAAAgC,EAAArD,KAAAqD,EAAApD,MAAAoD,EAAAnD,MAAA1C,EAAAgE,OAAA6B,EAAA7B,KAAA,SAAAhE,EAAAgE,MAAA8B,EAAA9B,OAAApD,GAAA,EAAA+E,GAAA,EAAA3F,EAAAmF,EAAAtB,QAAAiC,EAAAtD,KAAAsD,EAAArD,MAAAqD,EAAApD,MAAA1C,EAAAgE,OAAA8B,EAAA9B,KAAA,SAAAvD,IAAAG,IAAuQZ,EAAAmF,EAAAtB,QAAA7D,EAAAwC,KAAAxC,EAAAyC,MAAAzC,EAAA0C,KAAAiD,GAAuC,OAAA3F,IAASA,EAAAwD,UAAAJ,SAAA,SAAAxD,GAAkC,GAAAI,GAAAC,KAAAC,EAAAF,EAAA2B,KAAAF,QAAAuE,OAAA,SAAA9F,GAA+C,MAAAI,GAAAyD,UAAA7D,GAAAN,EAAA4E,OAAAxE,EAAAiB,SAAAmF,SAAAlG,IAAA,KAAAH,EAAAmE,QAAAhE,IAAAI,EAAA6D,OAAAjE,GAAAN,EAAAoE,OAAAhE,EAAA6D,OAAA3D,GAAA8D,KAAAjE,EAAA+D,cAAA5D,GAAAF,EAAA8E,YAAA5E,EAAAN,OAAA,IAA+J,OAAAM,KAAA+F,SAAA/F,EAAA8F,OAAA,SAAApG,GAAyC,MAAAG,GAAAmE,QAAAtE,IAAA,YAAAA,EAAA,IAAAG,EAAA+D,cAAAlE,MAAAyG,WAAsEJ,QAAA,IAAAjG,EAAA2B,KAAAD,QAAAxB,KAAAN,EAAAoE,KAAAhE,EAAA2B,KAAAR,IAAA6C,MAAApE,EAAAoE,KAAAhE,EAAA2B,KAAAP,IAAA4C,MAAiFhE,EAAAwD,UAAAgC,MAAA,SAAA5F,EAAAG,EAAAC,GAAmC,GAAAE,GAAAD,KAAAG,IAAgB,OAAAL,IAAA,gBAAAA,IAAAC,KAAAW,SAAAX,QAAmDA,EAAAW,OAAAT,EAAAe,SAAAN,QAAAT,EAAAoG,QAAAC,QAAAvG,EAAAW,QAAA+C,IAAA,SAAA9D,GAAyE,GAAAI,GAAAE,EAAAoG,QAAA1G,GAAAY,EAAAR,EAAAM,EAAA4C,QAAAlD,EAAAE,GAAAH,EAAAK,IAAAR,EAAA4G,QAAA,SAAAP,MAAsEjG,KAAAI,EAAAR,GAAAG,EAAA0G,OAAA,EAAAjG,IAAAT,IAAA0G,OAAAjG,MAAsCJ,EAAAsG,MAAAtG,EAAAuG,KAAAvG,EAAAwG,IAAAxG,EAAAwF,GAAA,EAAAxF,EAAAyG,IAAAzG,EAAAF,IAAAH,GAA6CC,EAAAwD,UAAA8C,QAAA,WAAgC,QAAA1G,KAAAG,EAAAC,GAAkB,GAAAE,GAAAN,EAAAgE,MAAA,uBAAsC,OAAA5D,GAAA4G,IAAA5G,EAAA4F,IAAA5F,EAAA4F,EAAA7F,EAAA+G,QAAA5G,GAAA,GAAAA,EAAA+F,OAAgD,QAAAlG,GAAAH,GAAc,MAAAA,GAAAgE,MAAA,UAAAqC,OAAgC,OAAO/F,EAAA,SAAAN,EAAAG,GAAgB,MAAAH,GAAAU,EAAAyG,OAAAnH,GAAAG,EAAA2C,MAA4BmE,GAAA,SAAAjH,EAAAG,GAAkB,MAAAH,GAAA,EAAAU,EAAA0G,KAAAjH,EAAA2C,OAA0BuE,IAAA,SAAArH,EAAAI,GAAmB,MAAAJ,GAAAG,EAAAH,GAAAK,KAAAgB,SAAAiG,cAAAlH,EAAAwE,MAAiD2C,KAAA,SAAAvH,EAAAI,GAAoB,MAAAJ,GAAAG,EAAAH,GAAAK,KAAAgB,SAAAmG,aAAApH,EAAAwE,MAAgDoB,EAAA,SAAAhG,EAAAG,GAAiB,MAAAH,GAAAU,EAAAyG,OAAAnH,GAAAG,EAAA0C,MAAA,GAA+BmE,GAAA,SAAAhH,EAAAG,GAAkB,MAAAH,GAAA,EAAAU,EAAA0G,KAAAjH,EAAA0C,MAAA,IAA6B4E,IAAA,SAAAtH,EAAAC,GAAmB,GAAAE,GAAAD,KAAAgB,SAAAqG,WAAgC,OAAAvH,GAAAH,EAAAG,EAAAG,EAAAF,GAAAE,EAAAF,EAAAyC,QAA6B8E,KAAA,SAAAxH,EAAAC,GAAoB,GAAAE,GAAAD,KAAAgB,SAAAuG,UAA+B,OAAAzH,GAAAH,EAAAG,EAAAG,EAAAF,GAAAE,EAAAF,EAAAyC,QAA6BkE,GAAA,SAAA/G,EAAAG,GAAkB,MAAAH,GAAA,MAAAG,EAAAyC,MAAAX,MAAA,IAAgC6E,KAAA,SAAA9G,EAAAG,GAAoB,MAAAH,GAAA,EAAAG,EAAAyC,MAAkB+D,QAAA,SAAA3G,GAAqB,MAAAA,GAAA6D,MAAA,gCAA8CgE,SAAA,SAAA7H,EAAAG,GAAwB,GAAAC,GAAAC,IAAW,OAAAD,GAAAsG,QAAAC,QAAA3G,GAAA8D,IAAA,SAAA9D,GAA4C,MAAAU,GAAA4C,QAAAlD,EAAAsG,QAAA1G,GAAAI,GAAA,EAAAD,KAAAH,EAAA4G,QAAA,WAA2DkB,KAAA,SAAa1H,EAAAwD,UAAAmE,YAAA,SAAA/H,EAAAI,GAAyC,GAAAE,GAAAD,IAAW,OAAAK,GAAAyD,UAAAnE,IAAAU,EAAAyD,UAAA/D,IAAA,iBAAAJ,IAAA,iBAAAI,GAAAJ,IAAAI,GAAAM,EAAA6D,OAAAvE,IAAAG,EAAAmE,QAAAtE,MAAAU,EAAA6D,OAAAnE,IAAAD,EAAAmE,QAAAlE,IAAAE,EAAA2D,OAAAjE,GAAAoE,OAAA9D,EAAA2D,OAAA7D,GAAAgE,QAAAjE,EAAA+D,cAAAlE,KAAAG,EAAA+D,cAAA9D,MAAAE,EAAAyH,YAAA/H,EAAAgF,KAAA5E,EAAA4E,OAAA1E,EAAAyH,YAAA/H,EAAAiF,GAAA7E,EAAA6E,MAAoR7E,EAAAwD,UAAAoE,cAAA,SAAAhI,EAAAI,GAAyC,GAAAE,GAAAD,KAAAG,EAAAF,EAAAe,SAAAmF,SAAA,GAAqC,OAAA9F,GAAAyD,UAAAnE,KAAAU,EAAA6D,OAAAnE,IAAAD,EAAAmE,QAAAlE,KAAAJ,IAAA,EAAAQ,KAAAF,EAAA2D,OAAA7D,GAAAwE,IAAA,EAAAlE,EAAAyD,UAAA/D,KAAAM,EAAA6D,OAAAvE,IAAAG,EAAAmE,QAAAtE,KAAAI,IAAA,EAAAI,KAAAF,EAAA2D,OAAAjE,GAAA4E,IAAA,KAAAzE,EAAA+D,cAAAlE,KAAAG,EAAA+D,cAAA9D,KAAAE,EAAA6E,cAAAnF,EAAAI,IAA8NA,EAAAwD,UAAAqE,WAAA,SAAAjI,GAAoC,GAAAG,GAAAE,KAAA0B,IAAgB5B,GAAA2B,OAAA9B,KAAA,GAAAG,EAAA2B,OAAA,OAAgC1B,EAAAwD,UAAAsE,WAAA,SAAAlI,EAAAI,GAAsC,GAAAE,GAAAD,KAAAG,EAAAF,EAAAyB,KAAAF,QAAAI,MAAA,EAAqC,eAAA7B,EAAAE,EAAA2H,cAAA,IAAA7H,GAAAE,EAAA2H,WAAA,GAAAzH,OAAA,IAAAJ,GAAAE,EAAA2H,YAAA,GAAAzH,MAAAJ,EAAA0D,IAAA,SAAA9D,GAA8G,OAAAI,GAAAQ,EAAA,EAAcA,EAAAJ,EAAA6F,OAAWzF,GAAA,KAAAN,EAAAyH,YAAA/H,EAAAQ,EAAAI,IAAA,CAA+BR,GAAA,CAAK,OAAMA,IAAAM,EAAAyD,UAAAnE,IAAAU,EAAA6D,OAAAvE,IAAAG,EAAAmE,QAAAtE,IAAAG,EAAA+D,cAAAlE,MAAAgF,MAAAhF,EAAAiF,KAAAzE,EAAA2H,KAAAnI,KAA4FQ,GAAIJ,EAAAwD,UAAAwE,SAAA,SAAApI,EAAAI,GAAoC,GAAAE,GAAAD,KAAAG,EAAAF,EAAAyB,KAAAF,QAAAjB,EAAAJ,EAAA6F,MAAuC,eAAAjG,EAAAE,EAAA2H,cAAA,IAAA7H,GAAAE,EAAA2H,WAAA,GAAAzH,OAAA,IAAAJ,GAAAE,EAAA2H,YAAA,GAAAzH,MAAAJ,EAAA0D,IAAA,SAAA9D,GAA8G,GAAAI,GAAAS,EAAAG,EAAAuE,CAAY,KAAAvE,EAAA,EAAQJ,EAAAI,EAAIA,GAAA,GAAM,GAAAH,EAAAL,EAAAQ,GAAAV,EAAAyH,YAAAlH,EAAAb,GAAA,CAA8BI,EAAAI,EAAAQ,GAAA,KAAAuE,GAAA,CAAiB,OAAM,GAAAjF,EAAA0H,cAAAnH,EAAAb,GAAA,CAAyBG,EAAA+D,cAAAlE,MAAAyG,UAAA,EAAArG,EAAAJ,GAAAG,EAAAmE,QAAAtE,IAAAI,EAAAJ,EAAAI,EAAA,IAAAA,EAAA+H,KAAA,aAAAzH,EAAA6D,OAAAvE,KAAAI,GAAAJ,EAAAyE,cAAAzE,EAAA0E,WAAA1E,EAAA2E,UAAA,YAA0J,QAAO,GAAAvE,EAAA,IAAAY,EAAA,EAAaJ,EAAAI,EAAIA,GAAA,KAAAV,EAAAyH,YAAAvH,EAAAQ,GAAAhB,GAAA,CAA+BQ,EAAAQ,GAAA,IAAU,OAAM,GAAAuE,EAAA,IAAAvE,EAAA,EAAaJ,EAAAI,EAAIA,GAAA,KAAAV,EAAA0H,cAAAxH,EAAAQ,GAAAhB,GAAA,CAAiCQ,EAAAQ,GAAA,IAAU,OAAMZ,GAAAI,EAAA2H,KAAA/H,KAAaI,EAAA4F,OAAA,SAAApG,GAAuB,aAAAA,KAAiBI,EAAAwD,UAAAyE,MAAA,SAAArI,GAA+B,GAAAG,GAAAE,KAAAD,EAAAD,EAAAkB,SAAAT,EAAAT,EAAA4B,KAAAlB,EAAAD,EAAAa,IAAAT,EAAAJ,EAAAc,OAAA6D,EAAA3E,EAAAe,UAAA6D,EAAA5E,EAAAgB,KAAAmE,EAAAnF,EAAAiB,QAAAmE,EAAApF,EAAAW,IAAA0E,EAAArF,EAAAY,IAAA0E,EAAA,SAAAlG,EAAAG,GAAuH,MAAAC,GAAAoG,WAAAxG,EAAAmI,KAAAnI,EAAAkC,SAAA/B,EAAAgI,KAAAhI,EAAA+B,UAAAxB,EAAA4H,KAAA,QAAA5H,EAAA4H,KAAA,KAAA5H,EAAA6H,OAA6FhH,IAAA,EAAAC,IAAAlB,EAAAU,EAAA,EAAAsH,KAAA,KAAAvG,KAAA,SAAAzB,GAA6C,OAAAN,EAAAM,GAAAF,EAAA+C,MAAAqF,SAAA,oBAAArI,EAAAG,GAAA,YAAgEF,EAAAqI,iBAAArI,EAAAoH,aAAApH,EAAAkH,eAAArF,MAAA,GAAA7B,EAAAoH,aAAAvF,MAAA,IAAAkE,EAAA,SAAAnG,GAAqG,MAAAU,GAAA4H,KAAA,UAAAlI,EAAA+C,MAAA,OAAAnD,EAAA,iBAAAA,GAAAwF,EAAA5C,MAAAqD,EAAArD,MAAA4C,EAAA3C,OAAAoD,EAAApD,QAAA7C,GAAAwF,EAAA5C,MAAAoD,EAAApD,MAAA4C,EAAA3C,OAAAmD,EAAAnD,MAAA,IAAAzC,EAAA+C,MAAAuF,YAAA,iBAAA1I,IAAA,OAAAU,EAAAiI,UAAoMC,KAAA,SAAAC,SAAA1I,EAAAI,MAAA,GAAAuI,GAAA,WAA8C,YAAA9I,EAAAI,EAAA2I,eAAA3I,EAAA4I,gBAAA,MAAwDC,EAAA,WAAc,GAAA3I,GAAAF,EAAA8I,gBAAA9I,EAAAsH,YAAAtH,EAAAwH,UAAmD,OAAAxH,GAAA+I,aAAAzI,EAAA4H,KAAA,SAAA5H,EAAA6H,OAA+ChH,IAAA,EAAAC,IAAA,GAAAR,EAAA,EAAAsH,KAAA,SAAAvG,KAAA,SAAA/B,GAAgD,OAAAM,EAAAN,GAAA,WAAAA,GAAAwF,EAAA3C,OAAA7C,EAAA,iBAAAwF,EAAA5C,MAAAoD,EAAApD,MAAA5C,EAAAgG,EAAAnD,OAAA2C,EAAA5C,MAAAqD,EAAArD,MAAA5C,EAAAiG,EAAApD,MAAA,oBAA6HzC,EAAA+C,MAAAC,aAAApD,EAAA,mBAAAU,EAAAiI,UAAwDE,SAAA1I,EAAAI,MAAA,GAAAuI,GAAA,WAAgC,WAAA1I,EAAAgJ,iBAAA,KAAA1I,EAAA4H,KAAA,MAAAhI,EAAAkF,EAAA3C,OAAAzC,EAAA+C,MAAAN,QAA4EwG,EAAA,WAAc,GAAA/I,GAAAkF,EAAA5C,KAAApC,GAAA,IAAAJ,EAAAkJ,YAAA,KAAAlJ,EAAAkJ,YAAA,EAAwD,IAAA9I,EAAA,CAAM,GAAAI,GAAAoF,EAAApD,KAAA/B,EAAAoF,EAAArD,KAAA5B,EAAAV,EAAAE,EAAA+E,EAAAjF,EAAAE,CAAkC,IAAAI,EAAAI,IAAAuE,GAAA3E,EAAAI,IAAAJ,GAAA2E,EAAA1E,EAAA,CAA0B,GAAAkF,GAAA/E,EAAAJ,EAAAsF,EAAAX,EAAA1E,CAAgBG,IAAA+E,EAAAG,IAAAH,EAAAR,EAAA1E,EAAe,MAAAH,GAAA4H,KAAA,SAAA5H,EAAA6H,OAAgChH,IAAAP,EAAAQ,IAAA+D,EAAAvE,EAAA,EAAAsH,KAAA,SAAAvG,KAAA,SAAA/B,GAA+C,OAAAA,EAAA,WAAAA,GAAAM,GAAAN,EAAA,oBAA8CI,EAAA+C,MAAAI,YAAAvD,EAAA,mBAAAU,EAAAiI,UAAuDE,SAAA1I,EAAAI,MAAA,GAAAuI,GAAA,WAAgC,WAAA1I,EAAAmJ,gBAAA,KAAoC,MAAA7I,GAAA4H,KAAA,MAAAhI,EAAAF,EAAA+C,MAAAP,MAAqC,OAAAlC,GAAA4H,KAAA,OAAAlI,EAAAkJ,YAAAD,IAAAJ,QAAAI,KAAAlD,MAAA,GAAA/F,EAAA+C,MAAAqG,QAAA9I,EAAA4H,KAAA,QAAApC,EAAAxF,EAAA4H,KAAA,QAAA5H,EAAA6H,OAAsHhH,IAAA,EAAAC,IAAAhB,EAAAQ,EAAA,EAAAsH,KAAA,KAAAvG,KAAA,SAAA/B,GAA6C,GAAAQ,GAAAJ,EAAAoG,UAAA,IAAArG,EAAA8D,QAAAuB,EAAA5C,KAAA4C,EAAA3C,MAAA,IAAA+B,KAAA,GAA4D,QAAAlE,EAAA6H,OAAgBhH,IAAvuQ,EAAuuQvB,EAAAwF,EAAAZ,IAAApE,EAAA,EAAAgB,IAAA,WAAiC,MAAAnB,MAAAkB,IAAxwQ,EAAwwQ,GAAoBP,EAAA,EAAAsH,KAAA,KAAAvG,KAAA,SAAA/B,GAAgCA,EAAAG,EAAA8D,QAAAuB,EAAA5C,KAAA4C,EAAA3C,MAAA7C,GAAAI,EAAAoG,SAAA,MAAgD,IAAAlG,GAAAU,KAAAoD,MAAApE,EAAAoE,KAAA5D,EAAA+E,KAAAnB,MAAApE,EAAAoE,KAAAxD,EAAAmF,GAAA5F,EAAAqD,SAAAxD,MAAAoE,KAAA4B,EAAA5B,MAAApE,EAAAoE,KAAA6B,EAAA7B,KAAA8B,EAAAxF,EAAA4C,QAAAnD,EAAAuG,QAAAmB,SAAA1H,GAAAC,EAAAW,OAAAf,GAA4I,QAAAU,EAAA4H,KAAA,MAAAtI,EAAA8C,KAAA,SAAA3C,GAAuC,MAAAA,GAAAgI,KAAA3C,EAAA3C,OAAA7C,EAAA6C,MAAAzC,EAAA+C,MAAAsG,QAAArJ,EAAA+C,MAAAuG,UAAA7I,EAAAuD,MAAApE,EAAAoE,MAAAjE,EAAAgI,KAAA/H,EAAA+C,MAAA1B,KAAAnB,GAAAH,EAAAgI,KAAA/H,EAAA+C,MAAAwG,UAAAnJ,GAAAL,EAAAgI,KAAA/H,EAAA+C,MAAAyG,aAAAhJ,GAAAT,EAAAgI,KAAA/H,EAAA+C,MAAAK,UAAArD,EAAA2H,KAAA,OAAwM1H,EAAA+C,MAAAyB,MAAA,aAAA5E,EAAAoE,KAAA,IAAA1D,EAAAiI,UAAoDC,KAAA,WAAAiB,MAAA3D,EAAAyD,YAAArJ,GAAAH,EAAAI,MAAAuJ,QAAA5D,IAAA,KAAA6D,mBAAAvJ,GAAA,KAAAgD,WAAA5C,GAAA,QAA4G,GAAAF,EAAAiI,UAAkBC,KAAA,0BAA4BxI,EAAA+C,MAAA6G,MAAA,OAAA7J,EAAAI,MAAA,GAAAuI,GAAA,WAAApI,EAAAiI,UAA6DC,KAAA,OAAAC,SAAA1I,EAAAI,MAAA,GAAAuI,GAAAmB,UAAA,KAA+CvJ,EAAA4H,KAAA,MAAA5H,EAAA4H,KAAA,SAAAlI,EAAA8J,MAAA9J,EAAA+C,MAAAM,YAAA,yBAAA5C,EAAAuD,MAAApE,IAAAG,EAAAqD,SAAA3C,GAAA,oBAAAH,EAAAiI,UAA+IE,SAAA1I,EAAAI,MAAA,GAAAuI,MAAuBpI,EAAA4H,KAAA,SAAAlI,EAAA4B,MAAA5B,EAAA+C,MAAAgH,YAAA,4BAAAnK,EAAA,oBAAAU,EAAAiI,UAA6GE,SAAA1I,EAAAI,MAAA,GAAAuI,MAAuBpI,EAAA4H,KAAA,SAAAlI,EAAAgK,MAAAhK,EAAA+C,MAAAkH,YAAA,gCAAArK,EAAA,oBAAAU,EAAAiI,UAAiHE,SAAA1I,EAAAI,MAAA,GAAAuI,MAAuB1I,EAAA+C,MAAAmH,SAAmBlK,EAAAmK,SAAA,SAAAvK,GAAwB,OAAO+I,eAAA,aAAAC,eAAA,iBAAAI,iBAAA,iBAAAG,gBAAA,gBAAA3B,YAAA,+GAAAF,aAAA,yEAAAF,cAAA,wEAAAF,eAAA,2CAAA4C,MAAA,QAAAlI,MAAA,QAAAoI,MAAA,QAAAI,eAAA,EAAAC,cAAA,EAAA1J,OAAA,eAAAoC,OAAukB6G,MAAAhK,EAAA,QAAAwJ,OAAAxJ,EAAA,SAAA0K,QAAA1K,EAAA,YAAA2K,QAAA3K,EAAA,YAAA0I,YAAA1I,EAAA,gBAAA6C,MAAA7C,EAAA,QAAA4C,KAAA5C,EAAA,OAAAoD,YAAApD,EAAA,gBAAAuD,WAAAvD,EAAA,eAAAwI,SAAAxI,EAAA,UAAA4E,IAAA5E,EAAA,MAAAwD,SAAAxD,EAAA,gBAAA2J,SAAA3J,EAAA,gBAAA4J,YAAA5J,EAAA,mBAAAyB,IAAAzB,EAAA,aAAAyJ,QAAAzJ,EAAA,eAAA0J,SAAA1J,EAAA,gBAAAsK,OAAAtK,EAAA,SAAAmK,YAAAnK,EAAA,gBAAAyD,YAAAzD,EAAA,gBAAAqK,YAAArK,EAAA,mBAAifA,EAAA4K,UAAAC,OAAA,MAAA7K,EAAA8K,OAAA,YAAA1K,MDkB11Y2K,KACA,SAAUrL,EAAQC,EAASC,GEvBjC,GAAAC,GAAAC,EAAAC;;;;;;CAMA,SAAAC,GAAaF,GAAAF,EAAA,KAAAC,EAAA,MAAAI,MAAAF,EAAA,kBAAAF,KAAAK,MAAAP,EAAAG,GAAAD,KAAAH,EAAAC,QAAAI,IAAuJ,SAAAC,GAAa,QAAAG,GAAAO,EAAAE,EAAAI,EAAAgF,GAAoB,QAAAC,KAAa,MAAA9F,GAAAwD,EAAA2E,KAAA,MAAAnI,EAAAwD,EAAA2E,KAAA,MAAAnI,EAAAwD,EAAA2E,KAAA,MAAAnI,EAAAwD,EAAA2E,KAAA,MAAA0C,EAAAC,UAAA5C,MAAA6C,EAAAC,MAAAC,EAAAC,KAAAD,EAAAE,MAAAF,EAAAG,OAAAH,EAAAI,OAAA,iBAA+I,QAAAtF,KAAauF,EAAA9K,KAAAC,EAAAoK,GAAAU,SAAAN,EAAAO,OAAA7B,IAAA2B,EAAA9K,KAAA,SAAAqK,EAAA3H,IAAA,SAAAuI,EAAA7K,QAAAL,EAAAD,OAAAmL,EAAAC,UAAAJ,EAAAxI,GAAA,SAAAiI,EAAApC,GAAA,UAAAoC,EAAApC,GAAA,SAAA9I,GAA8IA,EAAA8L,iBAAAd,EAAAG,SAA4BlI,GAAA,WAAAiI,EAAApC,GAAAiD,GAAAvL,EAAAE,GAA6BsL,UAAA,EAAAC,UAAA,EAAAhC,UAAA,EAAAiC,KAAAxL,EAAAoI,GAAA,UAAwD,QAAA3C,KAAa3F,EAAAwK,EAAA5J,MAAA,gBAA0B,QAAA6H,KAAa+B,EAAAmB,QAAAlJ,IAAcmJ,QAAAL,EAAAM,eAAAC,EAAAC,KAAA,WAA2Cd,EAAAe,YAAApB,EAAAqB,SAAwBC,QAAA,SAAA1M,GAAqBgL,EAAA5J,MAAAoL,YAAApB,EAAAuB,SAAA3M,EAAA4M,mBAAmDC,kBAAA,SAAA1M,GAA+B,GAAAC,GAAAD,EAAAsM,MAAerM,IAAA4K,EAAAmB,QAAA,KAAAhM,EAAAyM,kBAAA,aAAAzM,EAAA2M,MAAA9M,EAAAI,GAAA2M,GAAA,6CAAA5M,EAAA2L,iBAAAd,EAAAmB,QAAA,GAAAa,aAA2J/J,GAAA,yEAA8E,GAAA9C,GAAAH,EAAAK,MAAAD,EAAAD,EAAAQ,OAAAL,EAAAH,EAAA8M,SAAA7B,EAAA1C,cAAAvI,EAAA8M,SAAA7B,EAAA5H,UAAAhD,EAAAK,GAAmFL,SAAAsM,MAAAtM,EAAA0M,OAAA5M,GAAAE,IAAAR,EAAAmN,SAAAnC,EAAA5J,MAAA,GAAAZ,KAAAwK,EAAAmB,QAAA,GAAAa,SAAA1M,GAAAF,EAAAqF,IAAAuF,EAAA7I,IAAA,YAAA6I,EAAAC,UAAAlJ,KAAAJ,WAAsI8D,IAAArF,EAAAqF,OAAUnF,GAAA,QAAAF,IAAA4K,EAAA7I,IAAA,SAAA/B,EAAAgE,MAAAwH,EAAApB,eAAAQ,EAAAZ,OAAA,IAAAhK,EAAA4B,OAAAgJ,EAAAhJ,QAAA4J,EAAAnB,cAAAO,EAAAZ,OAAA,IAAAhK,EAAAgK,OAAAY,EAAAZ,OAAA,KAA8I,QAAAf,KAAa,GAAAlJ,IAAM,IAAAyL,EAAAwB,YAAAjN,EAAAO,EAAA2M,KAAA3M,EAAA2M,KAAA,KAAAlN,GAAA,gBAAAyL,GAAA0B,aAAA1B,EAAA0B,aAAA,mBAAA1B,GAAA2B,aAAA3B,EAAA2B,aAAA,WAAApN,IAAA,GAAAO,EAAA2M,KAAAlN,EAAA,IAAA6K,EAAAwC,QAAAxN,EAAA,4BAAAG,EAAA,KAAAsL,EAAA9K,KAAA,UAAAD,EAAAD,MAAA,WAAAuK,EAAA3H,IAAA,SAAAuI,EAAA9K,cAAA,gBAAA2K,EAAAxI,GAAA,UAAAiI,EAAApC,GAAA,WAA4UkC,EAAAwC,QAAA/M,MAAAC,EAAAD,MAAAuK,EAAA3H,IAAA,SAAAuI,EAAA9K,cAAA,KAA4D,QAAA2M,KAAaC,GAAA3H,EAAAiF,EAAAmB,QAAAjJ,KAAA,IAAAkI,EAAAG,OAAAoC,IAAA,2BAAgE3C,EAAAmB,QAAA,GAAAa,UAAqBhC,EAAAmB,QAAA,GAAAa,QAAuB,QAAAV,GAAAtM,GAAcA,EAAA4M,kBAAAnB,EAAAC,SAAAN,EAAAqB,QAAAzB,EAAA5J,MAAAsK,SAAAN,EAAAuB,SAAA3B,EAAAG,OAA8E,QAAAY,GAAA/L,GAAc,GAAAG,GAAAH,EAAA4N,QAAAxN,EAAA,WAAAyN,KAAA1N,EAAqC,YAAAA,GAAA6K,EAAAZ,OAAA,iBAAAjK,GAAAC,IAAA8K,EAAAC,MAAAH,EAAAC,UAAA5I,IAAAlC,MAAAH,EAAA8L,iBAAA9L,EAAA4M,kBAAAxM,EAAA4K,EAAAhJ,QAAAoI,QAAAY,EAAAG,SAAmJ,IAAAzK,EAAA,MAAAP,EAAe,IAAAuN,IAAA,EAAAxC,GAAYpC,GAAApI,EAAAoI,IAAA,IAAAxC,KAAAC,OAAAD,KAAAwH,SAAA,GAAAnL,SAAkDiJ,EAAA5K,EAAAhB,EAAA8K,QAAA,KAAmB9J,EAAAuJ,SAAAvE,SAAoBoF,EAAApL,EAAA8K,UAAc3K,EAAAyK,UAAAgB,EAAAzI,OAAAsI,EAAAzL,EAAAU,GAAAqN,EAAA,WAA0C,MAAA1N,MAAA2N,SAAoBhD,EAAA+C,EAAAnK,WAAgBqK,YAAAF,EAAAxN,MAAAkL,EAAAuC,MAAA,WAAuC,MAAA9C,MAAA8C,MAAAhD,GAAAE,EAAAgD,WAAiChD,EAAA8C,OAAA,EAAA9C,EAAAC,MAAA,EAAAD,EAAA4B,KAAApM,EAAAoM,KAAApM,EAAAyN,UAAAzN,GAAAG,IAAAH,EAAA0N,UAAAxC,EAAAC,SAAAnL,EAAAoI,GAAApI,EAAAoI,IAAAoC,EAAApC,GAAA,QAAApI,EAAAoM,OAAApM,EAAAoM,KAAA,QAAA9B,EAAAC,UAAA,GAAAjK,GAAAgK,EAAAY,GAAAZ,EAAA5J,MAAApB,EAAA,eAAAoL,EAAAP,OAAA,SAAAnK,EAAAoI,GAAA,aAAA3C,IAAA6E,EAAAmB,QAAAnM,EAAAiG,KAAAoI,SAAArD,EAAA5J,OAAA6H,IAAA2C,EAAA9K,cAAAuI,IAAAnD,IAAA0F,EAAA0C,gBAAAtO,EAAA4L,EAAA0C,iBAAAC,OAAAvD,EAAAwC,SAAA/B,EAAA+C,MAAAxD,EAAAwC,SAAA5B,EAAA6C,UAAAzO,EAAA4L,EAAA6C,WAAAF,OAAAvD,EAAA5J,OAAAqK,EAAA+C,MAAAxD,EAAA5J,OAAA4J,EAAA/H,IAAma+K,MAAAhD,EAAAC,UAAAyD,QAAA1L,OAAAgI,EAAAC,UAAA0D,SAAAC,KAAA5D,EAAAC,UAAA4D,OAAA1D,KAAAH,EAAAC,UAAA6D,OAAA1E,MAAAY,EAAAC,UAAA8D,QAAA5M,IAAA6I,EAAAC,UAAA+D,QAAsJ/L,IAAM+K,MAAApC,EAAA8C,QAAA1L,OAAA4I,EAAA+C,SAAAC,KAAAhD,EAAAiD,OAAA1D,KAAAS,EAAAkD,OAAA1E,MAAAwB,EAAAmD,QAAA5M,IAAAyJ,EAAAoD,QAA0FtB,EAAAtN,EAAA4K,EAAAmB,QAAA,IAAAzL,EAAAyN,WAAAnD,EAAAG,OAAAH,EAAA1H,QAAA,SAAAA,QAAA,YAAgFN,OAAA,SAAA7C,GAAoB,MAAAA,IAAA6K,EAAAmB,QAAAnM,EAAAiG,KAAAgD,IAAA+B,EAAA5J,MAAA6N,KAAAjE,EAAAmB,UAAAnB,EAAA5J,MAAA8B,KAAA,IAAAkI,EAAAC,KAAA4D,KAAAjE,EAAAC,UAAA5C,MAAA6C,EAAAC,OAAAH,EAAA1H,QAAA,WAAoIsL,KAAA,WAAiB,MAAA1D,GAAA8C,OAAAhD,EAAAZ,QAAAY,EAAAwC,SAAAxC,EAAAwC,QAAA0B,WAAAC,YAAAnE,EAAAwC,SAAAxC,EAAA5J,MAAAgO,SAAA3D,EAAAe,YAAApB,EAAAO,OAAA0D,WAAAzO,GAAA0O,WAAA,WAA6J7D,EAAA8D,IAAA,IAAArE,EAAApC,KAAgB,GAAApI,EAAAoM,KAAA5B,EAAA4B,KAAApM,EAAA0N,UAAA,EAAApD,EAAA1H,QAAA,QAAA4H,EAAAgD,WAA8DhD,EAAA8C,OAAA,EAAAhD,MAAiBG,KAAA,SAAA/K,GAAkB,MAAA8K,GAAAC,KAAAH,GAAAS,EAAAC,SAAAN,EAAAoE,QAAAhP,EAAAE,EAAA,eAAA4O,WAAA,WAA+EtE,EAAA5J,MAAAsK,SAAAN,EAAAqE,QAAAjP,EAAAwK,EAAA5J,MAAA,iBAAqD,QAAAhB,IAAA8K,EAAAC,MAAA,EAAAuC,GAAAlI,EAAAkK,IAAA,qBAAAA,IAAA,qBAAApP,KAAAmN,IAAAlI,EAAAtC,GAAA,SAAAiI,EAAApC,GAAA,YAAAoC,EAAApC,GAAA,SAAA9I,GAAuI,GAAAG,GAAAH,EAAAyM,MAAetM,IAAAO,GAAAP,GAAAwP,UAAA,GAAA3P,EAAA4P,OAAA5E,EAAAZ,MAAAjK,IAAA6K,EAAAmB,QAAA,MAAyDlJ,GAAA,WAAAiI,EAAApC,GAAA,SAAA1I,GAAiC,GAAAE,GAAAF,EAAAwN,QAAApN,EAAAwK,EAAAC,UAAA5I,IAAA/B,GAAAI,EAAAN,EAAAqM,MAAgD,KAAAnM,EAAA0K,EAAAZ,OAAA,GAAA1J,GAAAsK,EAAAmB,QAAA,KAAA3L,GAAA,IAAAF,EAAAN,EAAAmN,SAAAnC,EAAA5J,MAAA,GAAAV,IAAA,IAAAJ,IAAAF,EAAA0L,iBAAApL,EAAAmP,UAAAzP,EAAA0L,iBAAAtL,EAAAL,EAAAwD,EAAAL,QAAA0H,EAAAC,UAAA5I,IAAAK,GAAAsI,GAAA7K,EAAAwD,EAAAL,QAAA9C,KAAAwK,EAAA5J,MAAA8B,KAAA,IAAAkI,EAAAxB,aAAAqD,SAAA7B,EAAA5H,YAAAwH,EAAA7I,IAAA,SAAA6I,EAAAC,UAAAlJ,KAAAJ,WAAAiK,EAAApB,eAAAQ,EAAAZ,OAAA,QAAuTY,EAAA1H,QAAA,UAAsB8G,MAAA,SAAApK,GAAmB,MAAAA,KAAA4L,EAAAC,SAAAnL,EAAAsM,SAAAhC,EAAAmB,QAAAoD,IAAA,gBAAAvC,QAAAsC,WAAA,WAA6FtE,EAAAmB,QAAAlJ,GAAA,eAAAqJ,IAA+B,KAAAb,EAAAe,YAAApB,EAAAoE,QAAAhP,EAAAE,EAAA,eAAA4O,WAAA,WAAuEtE,EAAA5J,MAAAoL,YAAApB,EAAAqE,OAAA,IAAArE,EAAAuB,SAAAnM,EAAAwK,EAAA5J,MAAA,iBAAsE,GAAA8J,EAAAC,MAAAD,EAAAC,MAAA,EAAAuC,GAAAlI,EAAAkK,IAAA,eAAAA,IAAA,qBAAApP,KAAAiF,EAAAgK,IAAA,IAAArE,EAAApC,IAAAkC,EAAA1H,QAAA,UAAA0H,GAAkHhJ,MAAA,SAAAhC,GAAmB,MAAAgL,GAAA7I,IAAA,aAAAnC,IAA6BmC,IAAA,SAAAhC,EAAAC,EAAAE,GAAqB,GAAAE,GAAAE,EAAAE,EAAAZ,EAAAkE,cAAA/D,GAAAU,EAAAD,EAAAT,IAAsC,IAAAG,EAAAM,GAAAZ,EAAAkE,cAAA9D,KAAAE,MAAkCH,EAAA,CAAIS,IAAAC,EAAAV,GAAAC,EAAY,KAAAI,IAAAK,GAAAH,EAAAG,EAAAL,OAAAwK,GAAAC,UAAAlJ,WAAA,KAAArB,MAAA,MAAAsK,EAAAC,UAAA9I,IAAA3B,EAAAE,EAAAJ,KAAA,UAAAE,GAAA,SAAAA,IAAAiL,EAAA3B,IAAA,SAAAtJ,EAAA,GAAAwK,EAAA3H,IAAA7C,EAAAoL,EAAA7K,SAAAuC,QAAA,SAA2K0H,GAAAhI,SAAW,MAAA1C,GAAAwP,MAAA9E,IAAA1H,QAAA,MAAAzC,IAAoCwC,IAAA,SAAArD,EAAAI,GAAmB,GAAAJ,KAAA,cAAAkL,EAAAlL,GAAA,MAAAkL,GAAAlL,EAAuC,mBAAAA,EAAA,CAAqB,GAAAgL,EAAAwC,QAAA,MAAAxC,GAAAwC,QAAA/M,KAAoCT,GAAA,QAAU,YAAAA,EAAA,MAAAU,GAAAD,KAA6B,IAAAT,IAAAgL,GAAAC,UAAAlJ,KAAA,CAA0B,mBAAA3B,GAAA,CAAuB,GAAAE,GAAA0K,EAAAC,UAAA5H,IAAArD,EAAyB,OAAAM,GAAAH,EAAAwD,EAAAL,QAAA0H,EAAAC,UAAAvE,QAAAmB,SAAAmD,EAAAC,WAAA7K,EAAAE,IAAA,GAAwE,MAAA0K,GAAAC,UAAA5H,IAAArD,KAA2BiD,GAAA,SAAA9C,EAAAC,EAAAE,GAAoB,GAAAE,GAAAE,EAAAE,EAAAZ,EAAAkE,cAAA/D,GAAAU,EAAAD,EAAAT,IAAsC,IAAAA,EAAA,CAAMS,IAAAC,EAAAV,GAAAC,EAAY,KAAAI,IAAAK,GAAAH,EAAAG,EAAAL,GAAAF,IAAAE,EAAA,IAAAA,GAAA0K,EAAAgD,QAAA1N,GAAA0K,EAAAgD,QAAA1N,OAAA0K,EAAAgD,QAAA1N,GAAA2H,KAAAzH,GAAkF,MAAAsK,IAASuE,IAAA,WAAgB,GAAAvP,GAAAG,EAAAC,EAAA2P,SAAoB,KAAA/P,EAAA,EAAAgQ,WAAA5P,EAAAiG,OAA4BrG,EAAAgQ,WAAahQ,GAAA,GAAAG,EAAAC,EAAAJ,KAAAkL,GAAAgD,eAAAhD,GAAAgD,QAAA/N,EAAgD,OAAA6K,IAAS1H,QAAA,SAAAtD,EAAAI,GAAuB,GAAAE,GAAA,SAAAN,GAAkB,GAAAM,GAAA4K,EAAAgD,QAAAlO,EAAmBM,MAAAwD,IAAA,SAAA9D,GAAqBG,EAAAwD,EAAAL,QAAAtD,EAAAgL,GAAA5K,MAAwB,OAAAE,GAAA,IAAAN,GAAAM,EAAAN,GAAAgL,GAAyB,WAAA+C,GAAa,QAAA3N,GAAAJ,GAAc,GAAAG,GAAAC,EAAA,UAAmB,OAAAJ,GAAAiB,aAAAd,EAAAH,EAAAiB,aAAAb,GAAA6P,OAAA9O,mBAAAhB,EAAAgB,iBAAAnB,GAAAI,IAAA,SAAAD,EAAyG,QAAAG,KAAa,GAAAkF,EAAA0K,UAAAlP,EAAAkP,SAAA,QAAmC,IAAA/P,GAAAH,EAAA,iDAAuCqO,SAAA,QAAAjO,EAAAD,EAAA,GAAAgQ,WAAsDhQ,GAAAuP,IAAA,oBAA2B,IAAApP,GAAAN,EAAA,8BAAAqO,SAAAlO,GAAAK,EAAAF,EAAA,GAAA6P,WAAqE,OAAAhQ,GAAAiP,SAAAhP,EAAAI,EAAsB,QAAAA,GAAAL,EAAAC,EAAAE,GAAkB,GAAAN,EAAAkE,cAAA9D,GAAA,OAAAI,KAAAJ,GAAAM,EAAAP,EAAAK,EAAAJ,EAAAI,QAAiDE,GAAAP,EAAAC,EAAAE,GAAc,QAAAI,GAAAV,EAAAG,EAAAC,GAAkBJ,EAAAoQ,cAAA,QAAAjQ,EAAA,YAAAA,EAAAC,GAA2C,QAAAQ,GAAAT,EAAAC,GAAgBJ,EAAAkE,cAAA/D,QAAwBkQ,UAAAjQ,IAAYA,EAAA,EAAO,QAAAE,KAAAH,GAAA,CAAgB,GAAAK,IAAA,QAAAF,EAAA,YAAAA,CAAsCF,IAAA,MAAtCD,EAAAG,GAAsC,GAAAE,EAAA,KAAAL,EAAAG,GAAA,IAA8B,MAAAF,GAAS,QAAAS,KAAa,IAAI,MAAA8O,UAAAW,cAA8B,MAAAtQ,KAAW,GAAAgB,GAAAhB,EAAAiQ,QAAA1K,EAAAvF,EAAA2P,UAAAnK,EAAAxF,EAAA2P,SAAAY,iBAAAxK,EAAA,MAAA4J,SAAAY,gBAAAC,MAAAC,UAA8G,OAAAtQ,GAAAyK,QAAA,SAAA5K,GAA6B,MAAAA,MAAA,UAAsB6K,OAAA7K,EAAAyP,OAAAzP,EAAA,WAAA2M,QAAA3M,EAAA,YAAA2L,MAAA3L,EAAA,UAAAwP,OAAAxP,EAAA,kBAAAyM,OAAAzM,EAAA,kBAAAwL,OAAAxL,EAAA,WAAAuL,MAAAvL,EAAA,UAAAsL,KAAAtL,EAAA,SAAAqL,IAAArL,EAAA,UAAgMG,EAAAwD,GAAM4E,MAAA,SAAAvI,GAAkB,OAAAI,GAAAE,EAAA,GAAAE,EAAAL,EAAAwD,EAAAL,QAAAtD,EAAAuB,IAAAvB,GAAsCQ,GAAAL,EAAAwD,EAAAL,QAAAtD,EAAAwB,IAAAxB,GAAAQ,IAA4BA,GAAAR,EAAAgB,EAAAZ,EAAAD,EAAAwD,EAAAL,QAAAtD,EAAA+B,KAAA/B,GAAAQ,IAAAF,GAAAH,EAAAwD,EAAA2E,KAAAtI,EAAAsI,KAAAlI,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAsE,OAAAE,IAASgI,KAAA,SAAAnI,EAAAC,EAAAE,EAAAE,GAAwB,MAAAJ,MAAAJ,EAAAsE,QAAAlE,KAAA0H,KAAA,IAAA1H,EAAAE,IAAA,WAAAA,EAAA,OAAAE,IAAA,IAAAA,EAAA,OAAAL,EAAAG,EAAAE,EAAA,IAAAJ,EAAA,KAAAD,EAAA,SAA0GiH,KAAA,SAAApH,GAAkB,UAAAA,EAAA,QAAAA,GAAsBsD,QAAA,SAAAtD,EAAAG,EAAAC,GAAyB,wBAAAJ,KAAAE,MAAAC,EAAAC,OAAAJ,GAA8CmH,OAAA,SAAAnH,GAAoB,WAAA6N,KAAA7N,EAAA,SAA0BuE,OAAA,SAAAvE,GAAoB,SAAQ6H,SAAA6I,KAAA1Q,GAAAkH,QAAA,YAAA7G,KAAA8D,UAAAnE,EAAA2E,YAAkER,UAAA,SAAAnE,GAAuB,SAAQ6H,SAAA6I,KAAA1Q,GAAAkH,QAAA,cAAAlH,EAAA,MAAgD2I,SAAA/H,GAAYT,EAAA2K,OAAA,SAAA1K,EAAAE,GAAwBN,EAAA2Q,GAAAvQ,GAAA,SAAAI,EAAAE,GAAsB,GAAAE,GAAAP,KAAAM,KAAAP,EAAmB,iBAAAI,EAAAI,KAAA,gBAAAJ,GAAAL,EAAAwD,EAAAL,QAAA1C,EAAAJ,GAAAI,GAAAF,IAAAL,KAAAuQ,KAAA,WAAuF5Q,EAAAK,MAAcM,KAAAP,IAAA,GAAAD,GAAAE,KAAAD,EAAAE,EAAAE,MAA+BR,EAAA2Q,GAAAvQ,GAAAmK,SAAAjK,EAAAiK,UAA6BpK,KFgCp1P0Q,KACA,SAAUnR,EAAQC,EAASC,GGvCjC,GAAAC,GAAAC,EAAAC;CAEA,SAAA+Q,GAKAhR,KAAAD,EAAA,MAAAI,MAAAF,EAAA,kBAAAF,KAAAK,MAAAP,EAAAG,GAAAD,KAAAH,EAAAC,QAAAI,IAaC,WAED,YAIA,SAAAgR,GAAAC,GACA,MAAAA,GAAA5K,OAAA,SAAApG,GACA,OAAAK,KAAAL,KAAAK,KAAAL,IAAA,QAKA,QAAAiR,GAAAxQ,EAAAwE,GACA,MAAAqB,MAAA4K,MAAAzQ,EAAAwE,KAIA,QAAAkM,GAAAC,GAEA,GAAAC,GAAAD,EAAAE,wBACAC,EAAAH,EAAAI,cACAC,EAAAF,EAAAhB,gBACAmB,EAAAC,GASA,OAJA,0BAAA9D,KAAA+D,UAAAC,aACAH,EAAA9F,EAAA,IAIAkG,IAAAT,EAAAS,IAAAJ,EAAAtG,EAAAqG,EAAAM,UACAC,KAAAX,EAAAW,KAAAN,EAAA9F,EAAA6F,EAAAQ,YAKA,QAAAC,GAAAlS,GACA,sBAAAA,KAAAmS,MAAAnS,IAAAoS,SAAApS,GAIA,QAAAqS,GAAAC,EAAAC,EAAAC,GACA9G,EAAA4G,EAAAC,GACAjD,WAAA,WACA9C,EAAA8F,EAAAC,IACGC,GAIH,QAAAC,GAAAzS,GACA,MAAAsG,MAAA9E,IAAA8E,KAAA/E,IAAAvB,EAAA,QAIA,QAAA0S,GAAA1S,GACA,MAAA2S,OAAArO,QAAAtE,SAIA,QAAA4S,GAAAC,GACA,GAAAC,GAAAD,EAAAhP,MAAA,IACA,OAAAiP,GAAAzM,OAAA,EAAAyM,EAAA,GAAAzM,OAAA,EAIA,QAAAqF,GAAAqH,EAAAR,GACAQ,EAAAC,UACAD,EAAAC,UAAAC,IAAAV,GAEAQ,EAAAR,WAAA,IAAAA,EAKA,QAAA/F,GAAAuG,EAAAR,GACAQ,EAAAC,UACAD,EAAAC,UAAA5D,OAAAmD,GAEAQ,EAAAR,UAAAQ,EAAAR,UAAA3L,QAAA,GAAAsM,QAAA,UAAAX,EAAA1O,MAAA,KAAAiE,KAAA,0BAKA,QAAAmF,GAAA8F,EAAAR,GACA,MAAAQ,GAAAC,UAAAD,EAAAC,UAAA7F,SAAAoF,GAAA,GAAAW,QAAA,MAAAX,EAAA,OAAA1E,KAAAkF,EAAAR,WAIA,QAAAZ,KAEA,GAAAwB,OAAAlT,KAAAgQ,OAAAmD,YACAC,EAAA,gBAAA1D,SAAA2D,YAAA,GAIA,QACA1H,EAJAuH,EAAAlD,OAAAmD,YAAAC,EAAA1D,SAAAY,gBAAAgD,WAAA5D,SAAA6D,KAAAD,WAKAnI,EAJA+H,EAAAlD,OAAAwD,YAAAJ,EAAA1D,SAAAY,gBAAAmD,UAAA/D,SAAA6D,KAAAE,WAWA,QAAAC,KAIA,MAAA1D,QAAA2B,UAAAgC,gBACA5F,MAAA,cACA6F,KAAA,cACAC,IAAA,aACG7D,OAAA2B,UAAAmC,kBACH/F,MAAA,gBACA6F,KAAA,gBACAC,IAAA,gBAEA9F,MAAA,uBACA6F,KAAA,sBACAC,IAAA,oBAQA,QAAAE,GAAAC,EAAAC,GACA,YAAAA,EAAAD,GAIA,QAAAE,GAAAC,EAAA3T,GACA,WAAAA,GAAA2T,EAAA,GAAAA,EAAA,IAIA,QAAAC,GAAAD,EAAA3T,GACA,MAAA0T,GAAAC,IAAA,KACA3T,EAAA6F,KAAAC,IAAA6N,EAAA,IACA3T,EAAA2T,EAAA,IAIA,QAAAE,GAAAF,EAAA3T,GACA,MAAAA,IAAA2T,EAAA,GAAAA,EAAA,QAAAA,EAAA,GAMA,QAAAG,GAAA9T,EAAA+T,GAIA,IAFA,GAAAjP,GAAA,EAEA9E,GAAA+T,EAAAjP,IACAA,GAAA,CAGA,OAAAA,GAIA,QAAAkP,GAAAC,EAAAC,EAAAlU,GAEA,GAAAA,GAAAiU,EAAAzS,OAAA,MACA,UAGA,IAAA2S,GAAAC,EAAAZ,EAAAC,EAAA3O,EAAAgP,EAAA9T,EAAAiU,EAOA,OALAE,GAAAF,EAAAnP,EAAA,GACAsP,EAAAH,EAAAnP,GACA0O,EAAAU,EAAApP,EAAA,GACA2O,EAAAS,EAAApP,GAEA0O,EAAAI,GAAAO,EAAAC,GAAApU,GAAAuT,EAAAC,EAAAC,GAIA,QAAAY,GAAAJ,EAAAC,EAAAlU,GAGA,GAAAA,GAAA,IACA,MAAAiU,GAAAzS,OAAA,KAGA,IAAA2S,GAAAC,EAAAZ,EAAAC,EAAA3O,EAAAgP,EAAA9T,EAAAkU,EAOA,OALAC,GAAAF,EAAAnP,EAAA,GACAsP,EAAAH,EAAAnP,GACA0O,EAAAU,EAAApP,EAAA,GACA2O,EAAAS,EAAApP,GAEA+O,GAAAM,EAAAC,IAAApU,EAAAwT,GAAAD,EAAAC,EAAAC,IAIA,QAAAa,GAAAJ,EAAAK,EAAAC,EAAAxU,GAEA,SAAAA,EACA,MAAAA,EAGA,IAAAT,GAAAG,EAAAoF,EAAAgP,EAAA9T,EAAAkU,EAGA,OAAAM,IAEAjV,EAAA2U,EAAApP,EAAA,GACApF,EAAAwU,EAAApP,GAGA9E,EAAAT,GAAAG,EAAAH,GAAA,EACAG,EAGAH,GAGAgV,EAAAzP,EAAA,GAIAoP,EAAApP,EAAA,GAAA0L,EACAxQ,EAAAkU,EAAApP,EAAA,GACAyP,EAAAzP,EAAA,IALA9E,EAYA,QAAAyU,GAAAC,EAAA1U,EAAA2U,GAEA,GAAAC,EAQA,IALA,gBAAA5U,KACAA,OAIA,mBAAA6U,OAAA1R,UAAAiE,SAAA6I,KAAAjQ,GACA,SAAA8U,OAAA,8CAaA,IARAF,EADA,QAAAF,EACA,EACG,QAAAA,EACH,IAEAK,WAAAL,IAIAjD,EAAAmD,KAAAnD,EAAAzR,EAAA,IACA,SAAA8U,OAAA,2CAIAH,GAAAT,KAAAxM,KAAAkN,GACAD,EAAAV,KAAAvM,KAAA1H,EAAA,IAKA4U,EAKAD,EAAAJ,OAAA7M,MAAAgK,MAAA1R,EAAA,KAAAA,EAAA,IAJA0R,MAAA1R,EAAA,MACA2U,EAAAJ,OAAA,GAAAvU,EAAA,IAOA,QAAAgV,GAAAzU,EAAAiF,EAAAmP,GAGA,IAAAnP,EACA,QAIAmP,GAAAJ,OAAAhU,GAAAmT,GACAiB,EAAAV,KAAA1T,GACAoU,EAAAV,KAAA1T,EAAA,IACAiF,GAAA+N,EACAoB,EAAAT,KAAA3T,GACAoU,EAAAT,KAAA3T,EAAA,IASA,QAAA0U,GAAAC,EAAAV,EAAA/T,EAAA0U,GAEAvV,KAAAsU,QACAtU,KAAAqU,QACArU,KAAA2U,QAAAY,IAAA,GACAvV,KAAAwV,YAAA,GAEAxV,KAAA4U,OACA5U,KAAAa,WAEA,IAAAiU,GAAAW,IAGA,KAAAX,IAAAQ,GACAA,EAAAI,eAAAZ,IACAW,EAAA3N,MAAAwN,EAAAR,MAaA,KARAW,EAAAzP,QAAA,gBAAAyP,GAAA,MACAA,EAAAE,KAAA,SAAAhW,EAAAG,GAAgC,MAAAH,GAAA,MAAAG,EAAA,QAEhC2V,EAAAE,KAAA,SAAAhW,EAAAG,GAAgC,MAAAH,GAAA,GAAAG,EAAA,KAKhCgV,EAAA,EAAkBA,EAAAW,EAAAzP,OAAwB8O,IAC1CD,EAAAY,EAAAX,GAAA,GAAAW,EAAAX,GAAA,GAAA9U,KAQA,KAHAA,KAAAwV,UAAAxV,KAAA2U,OAAA/S,MAAA,GAGAkT,EAAA,EAAkBA,EAAA9U,KAAAwV,UAAAxP,OAA+B8O,IACjDM,EAAAN,EAAA9U,KAAAwV,UAAAV,GAAA9U,MA4EA,QAAA4V,GAAAC,EAAAP,GAEA,IAAAzD,EAAAyD,GACA,SAAAJ,OAAA,qCAKAW,GAAAN,WAAAD,EAGA,QAAAQ,GAAAD,EAAAP,GAGA,mBAAAA,IAAAhD,MAAArO,QAAAqR,GACA,SAAAJ,OAAA,wCAIA,QAAAtV,KAAA0V,EAAApU,SAAAtB,KAAA0V,EAAAnU,IACA,SAAA+T,OAAA,iDAIA,IAAAI,EAAApU,MAAAoU,EAAAnU,IACA,SAAA+T,OAAA,uDAGAW,GAAAE,SAAA,GAAAV,GAAAC,EAAAO,EAAAjB,KAAAiB,EAAAG,IAAAH,EAAAN,YAGA,QAAAU,GAAAJ,EAAAP,GAMA,GAJAA,EAAAjD,EAAAiD,IAIAhD,MAAArO,QAAAqR,OAAAtP,QAAAsP,EAAAtP,OAAA,EACA,SAAAkP,OAAA,2CAIAW,GAAAK,QAAAZ,EAAAtP,OAIA6P,EAAAlI,MAAA2H,EAGA,QAAAa,GAAAN,EAAAP,GAKA,GAFAO,EAAAjB,KAAAU,EAEA,iBAAAA,GACA,SAAAJ,OAAA,gDAIA,QAAAkB,GAAAP,EAAAP,GAKA,GAFAO,EAAAQ,QAAAf,EAEA,iBAAAA,GACA,SAAAJ,OAAA,mDAIA,QAAAoB,GAAAT,EAAAP,GAIA,GAFAO,EAAAU,kBAAAjB,EAEA,gBAAAA,GACA,SAAAJ,OAAA,4DAIA,QAAAsB,GAAAX,EAAAP,GAEA,aAAAA,GAAA,IAAAO,EAAAK,QACAL,EAAAY,QAAA,MACG,cAAAnB,GAAA,IAAAO,EAAAK,QACHL,EAAAY,QAAA,MACG,SAAAnB,GAAA,IAAAO,EAAAK,QACHL,EAAAY,QAAA,MACG,SAAAnB,EAGH,SAAAJ,OAAA,2DAFAW,GAAAY,QAAA,GAMA,QAAAC,GAAAb,EAAAP,GAIA,OAAAA,GACA,iBACAO,EAAAc,IAAA,CACA,MACA,gBACAd,EAAAc,IAAA,CACA,MACA,SACA,SAAAzB,OAAA,iDAIA,QAAA0B,GAAAf,EAAAP,GAEA,IAAAzD,EAAAyD,GACA,SAAAJ,OAAA,+CAIA,QAAAI,IAIAO,EAAAgB,OAAAhB,EAAAE,SAAAe,UAAAxB,IAEAO,EAAAgB,QACA,SAAA3B,OAAA,oEAIA,QAAA6B,GAAAlB,EAAAP,GAEA,IAAAzD,EAAAyD,GACA,SAAAJ,OAAA,8CAKA,IAFAW,EAAAzD,MAAAyD,EAAAE,SAAAe,UAAAxB,IAEAO,EAAAzD,MACA,SAAA8C,OAAA,mEAIA,QAAA8B,GAAAnB,EAAAP,GAKA,OAAAA,GACA,UACAO,EAAAG,IAAA,CACA,MACA,WACAH,EAAAG,IAAA,EACAH,EAAAY,SAAA,SAAAZ,EAAAY,QACA,MACA,SACA,SAAAvB,OAAA,uDAIA,QAAA+B,GAAApB,EAAAP,GAGA,mBAAAA,GACA,SAAAJ,OAAA,+DAKA,IAAAgC,GAAA5B,EAAAzO,QAAA,UACAsQ,EAAA7B,EAAAzO,QAAA,WACAuQ,EAAA9B,EAAAzO,QAAA,YACA+N,EAAAU,EAAAzO,QAAA,WACAwQ,EAAA/B,EAAAzO,QAAA,WAGA,IAAAsQ,IAAAtB,EAAAY,QACA,SAAAvB,OAAA,kEAGAW,GAAAyB,QACAJ,OAAAtC,EACAuC,OACAC,QACAxC,OACAyC,SAIA,QAAAE,GAAA1B,EAAAP,GAEA,GAAA3U,EAEA,SAAA2U,EAEG,QAAAA,EAIH,IAFAO,EAAA2B,YAEA7W,EAAA,EAAeA,EAAAkV,EAAAK,QAAoBvV,IACnCkV,EAAA2B,SAAA1P,MAAA,OAGG,CAIH,GAFA+N,EAAA2B,SAAAnF,EAAAiD,GAEAO,EAAA2B,SAAAxR,SAAA6P,EAAAK,QACA,SAAAhB,OAAA,qDAGAW,GAAA2B,SAAAC,QAAA,SAAAC,GACA,oBAAAA,KAAA,gBAAAA,IAAA,kBAAAA,GAAA9S,IACA,SAAAsQ,OAAA,oEAMA,QAAAyC,GAAA9B,EAAAP,GAKA,GAHAO,EAAAnV,OAAA4U,EAGA,kBAAAA,GAAA1Q,IAAA,kBAAA0Q,GAAA3Q,KACA,QAGA,UAAAuQ,OAAA,0DAGA,QAAA0C,GAAA/B,EAAAP,GAEA,OAAA1V,KAAA0V,GAAA,gBAAAA,KAAA,IAAAA,EACA,SAAAJ,OAAA,uDAGAW,GAAAgC,UAAAvC,EAGA,QAAAwC,GAAAjC,EAAAP,GAEA,OAAA1V,KAAA0V,GAAA,gBAAAA,GACA,SAAAJ,OAAA,8CAGA,oBAAAW,GAAAgC,UAAA,CACAhC,EAAAkC,aAEA,QAAA/V,KAAAsT,GACAA,EAAAI,eAAA1T,KAEA6T,EAAAkC,WAAA/V,GAAA6T,EAAAgC,UAAAvC,EAAAtT,QAGA6T,GAAAkC,WAAAzC,EAKA,QAAA0C,GAAAC,GAMA,GAMGC,GANHrC,GACAgB,OAAA,EACAzE,MAAA,EACAiE,SAAA,EACAE,kBAAA,IACA7V,OAAAyX,EAIAD,IACAE,MAAYpP,GAAA,EAAAiD,EAAA2J,GACZjI,OAAa3E,GAAA,EAAAiD,EAAAgK,GACbQ,SAAezN,GAAA,EAAAiD,EAAAuK,GACf3V,WAAiBmI,GAAA,EAAAiD,EAAA+K,GACjBpC,MAAY5L,GAAA,EAAAiD,EAAAkK,GACZE,SAAerN,GAAA,EAAAiD,EAAAmK,GACfG,mBAAyBvN,GAAA,EAAAiD,EAAAqK,GACzBvC,OAAa/K,GAAA,EAAAiD,EAAA6J,GACbuC,aAAmBrP,GAAA,EAAAiD,EAAAyK,GACnBG,QAAc7N,GAAA,EAAAiD,EAAA2K,GACdxE,OAAapJ,GAAA,EAAAiD,EAAA8K,GACbuB,WAAiBtP,GAAA,EAAAiD,EAAAgL,GACjBvW,QAAcsI,GAAA,EAAAiD,EAAA0L,GACdH,UAAgBxO,GAAA,EAAAiD,EAAAsL,GAChBM,WAAiB7O,GAAA,EAAAiD,EAAA2L,GACjBG,YAAkB/O,GAAA,EAAAiD,EAAA6L,GAGlB,IAAA5N,IACAuM,SAAA,EACA5V,UAAA,MACAyX,UAAA,MACAD,YAAA,aACAR,UAAA,QACAE,YACA3L,OAAA,SACAmM,KAAA,OACAC,OAAA,SACAC,OAAA,SACAC,YAAA,eACAC,YAAA,eACAC,WAAA,aACAC,SAAA,WACAC,WAAA,aACArC,QAAA,UACAsC,IAAA,MACAC,IAAA,MACAC,UAAA,YACA9B,KAAA,aACAD,IAAA,YACA/H,OAAA,SACA+J,SAAA,WACAC,QAAA,UACAC,KAAA,OACAC,eAAA,kBACAC,aAAA,gBACAC,OAAA,SACAC,iBAAA,oBACAC,eAAA,kBACAC,aAAA,gBACAC,YAAA,eACAC,UAAA,aACAxZ,MAAA,QACAyZ,gBAAA,mBACAC,cAAA,iBACAC,YAAA,eACAC,WAAA,cACAC,SAAA,aA4BA,OArBAhF,QAAAiF,KAAAhC,GAAAT,QAAA,SAAAzK,GAGA,OAAApN,KAAAqY,EAAAjL,QAAApN,KAAAsK,EAAA8C,GAAA,CAEA,GAAAkL,EAAAlL,GAAAhE,EACA,SAAAkM,OAAA,gBAAAlI,EAAA,iBAGA,UAGAkL,EAAAlL,GAAAf,EAAA4J,MAAAjW,KAAAqY,EAAAjL,GAAA9C,EAAA8C,GAAAiL,EAAAjL,MAIA6I,EAAAuD,KAAAnB,EAAAmB,KAGAvD,EAAA1F,MAAA0F,EAAAc,IAAA,aAEAd,EAIA,QAAAsE,GAAA/N,EAAA6L,EAAAmC,GAeA,QAAAC,GAAA1a,EAAAG,EAAAwa,GAGA,GAAAva,GAAAJ,EAAAG,EAAA,GAAAG,EAAAN,EAAAG,EAAA,EAIA,OAAAwa,IACAva,EAAA,IACAE,GAAAgG,KAAAC,IAAAnG,IAEAE,EAAA,MACAF,GAAAE,EAAA,MAIAmS,EAAArS,GAAAqS,EAAAnS,MAGAF,EAAAE,GAIA,QAAAsa,GAAApa,EAAAkR,GAIAlR,EAAAsL,gBAKA,IAGAF,GAAAR,EAHAyP,EAAA,IAAAra,EAAAsM,KAAA5F,QAAA,SACA4T,EAAA,IAAAta,EAAAsM,KAAA5F,QAAA,SACA6T,EAAA,IAAAva,EAAAsM,KAAA5F,QAAA,WACA8T,EAAAxa,CAyBA,OAtBA,KAAAA,EAAAsM,KAAA5F,QAAA,eACA6T,GAAA,GAGAF,IAGAjP,EAAApL,EAAAya,eAAA,GAAAC,MACA9P,EAAA5K,EAAAya,eAAA,GAAAE,OAGAzJ,KAAAC,KAEAmJ,GAAAC,KACAnP,EAAApL,EAAA4a,QAAA1J,EAAA9F,EACAR,EAAA5K,EAAA6a,QAAA3J,EAAAtG,GAGA4P,EAAAtJ,aACAsJ,EAAAM,QAAA1P,EAAAR,GACA4P,EAAAO,OAAAT,GAAAC,EAEAC,EAIA,QAAAQ,GAAAta,EAAAiU,GAEA,GAAA0D,GAAAlJ,SAAA8L,cAAA,OACA3C,EAAAnJ,SAAA8L,cAAA,OACAC,GAAApD,EAAAF,WAAAW,YAAAT,EAAAF,WAAAY,YAYA,OAVA9X,IACAwa,EAAAC,UAGAjQ,EAAAoN,EAAAR,EAAAF,WAAAU,QACApN,EAAAoN,EAAA4C,EAAAvG,IAEAzJ,EAAAmN,EAAAP,EAAAF,WAAAS,QACAA,EAAA+C,YAAA9C,GAEAD,EA+DA,QAAAgD,GAAA/C,EAAA3D,GAEA,IAAAmD,EAAAT,SAAA1C,GACA,QAGA,IAAA7C,GAAA3C,SAAA8L,cAAA,MAEA,OADAnJ,GAAAC,UAAA+F,EAAAF,WAAAoB,QACAV,EAAAgD,WAAAF,YAAAtJ,GA0BA,QAAAyJ,GAAAC,EAAAC,EAAAC,GAGA,aAAAF,GAAA,UAAAA,EACA,MAAAG,GAAAzH,IAGA,cAAAsH,EAAA,CAGA,GAAAtO,GAAA0O,EAAA,KAAAH,EAAA,GAAAjb,EAAA,CAIA,KAHAib,MAGAvO,EAAA1M,IAAAob,IAAA,KACAH,EAAA9T,KAAAuF,EAGAsO,GAAA,YAGA,oBAAAA,EAGAC,EAAAnY,IAAA,SAAArD,GACA,MAAA0b,GAAArH,aAAAoH,EAAAC,EAAApH,QAAAtU,QAIA,WAAAub,EAGAE,EAEAD,EAAAnY,IAAA,SAAArD,GAGA,MAAA0b,GAAArH,aAAAqH,EAAApH,QAAAoH,EAAA1H,WAAAhU,OAMAwb,MAdA,GAkBA,QAAAI,GAAAC,EAAAN,EAAAzT,GAEA,QAAAgU,GAAA9b,EAAA+b,GAEA,OAAA/b,EAAA+b,GAAAC,QAAA,KAGA,GAAAC,GAAAP,EAAAjb,UACAyb,KACAC,EAAAT,EAAAzH,KAAA,GACAmI,EAAAV,EAAAzH,KAAAyH,EAAAzH,KAAArO,OAAA,GACAyW,GAAA,EACAC,GAAA,EACAC,EAAA,CAkGA,OA7FAb,GAAAjb,UAAA,EAGAqH,EAAAwI,EAAAxI,EAAAtG,QAAA+T,KAAA,SAAAhW,EAAAG,GAAmD,MAAAH,GAAAG,KAGnDoI,EAAA,KAAAqU,IACArU,EAAA0U,QAAAL,GACAE,GAAA,GAIAvU,IAAAlC,OAAA,KAAAwW,IACAtU,EAAAJ,KAAA0U,GACAE,GAAA,GAGAxU,EAAAuP,QAAA,SAAAoF,EAAA/H,GAGA,GAAAsD,GAAAzX,EAAAiI,EAGAkU,EAAAC,EAAAC,EAAAvQ,EACAwQ,EAAAC,EAAAC,EAHAC,EAAAP,EACAQ,EAAAnV,EAAA4M,EAAA,EAiBA,IAXA,UAAA6G,IACAvD,EAAA0D,EAAAtG,UAAAV,IAIAsD,IACAA,EAAAiF,EAAAD,IAKA,IAAAA,OAAAxd,KAAAyd,EAKA,IAAA1c,EAAAyc,EAAiBzc,GAAA0c,EAAW1c,EAAAub,EAAAvb,EAAAyX,GAAA,CAkB5B,IAdA0E,EAAAhB,EAAA1H,WAAAzT,GACAoc,EAAAD,EAAAH,EAEAM,EAAAF,EAAAd,EACAiB,EAAAjX,KAAA4K,MAAAoM,GAMAE,EAAAJ,EAAAG,EAIAtU,EAAA,EAAgBA,GAAAsU,EAAgBtU,GAAA,EAMhCoU,EAAAL,EAAA/T,EAAAuU,EACAb,EAAAU,EAAAZ,QAAA,WAIA3P,GAAAvE,EAAArB,QAAAlG,IAAA,cAAAgb,EAAA,KAGA7G,GAAA2H,IACAhQ,EAAA,GAGA9L,IAAA0c,GAAAX,IAEAJ,EAAAQ,EAAAV,QAAA,KAAAzb,EAAA8L,IAIAkQ,EAAAG,KAKAhB,EAAAjb,UAAAwb,EAEAC,EAGA,QAAAgB,GAAAvB,EAAAwB,EAAA7F,GA0BA,QAAA8F,GAAA/Q,EAAAgR,GACA,GAAA9d,GAAA8d,IAAAxF,EAAAF,WAAA3X,MACAsd,EAAA/d,EAAAge,EAAAC,EACAC,EAAAle,EAAAme,EAAAC,CAEA,OAAAN,GAAA,IAAAC,EAAAzF,EAAAtB,KAAA,IAAAkH,EAAApR,GAGA,QAAAuR,GAAAlN,EAAA2M,EAAA7B,GACA,gBAAA4B,EAAA5B,EAAA,GAAA6B,GAAA,YAAAxF,EAAA9H,MAAA,KAAAW,EAAA,KAGA,QAAAmN,GAAAnN,EAAA8K,GAEAE,EAAAjb,YACAiQ,EAAA,IAAAA,GAIA8K,EAAA,GAAAA,EAAA,IAAA2B,IAAA3B,EAAA,GAAAA,EAAA,IAAAA,EAAA,GAGAsC,GAAA,QAAAF,EAAAlN,EAAAmH,EAAAF,WAAAwB,OAAAqC,GAAA,UAGAA,EAAA,KACAsC,GAAA,QAAAF,EAAAlN,EAAAmH,EAAAF,WAAA3X,MAAAwb,GAAA,IAAAlE,EAAA9S,GAAAgX,EAAA,cAlDA,GAAA3J,GAAA3C,SAAA8L,cAAA,OACA8C,EAAA,GACAJ,GACA7F,EAAAF,WAAAgC,YACA9B,EAAAF,WAAAiC,WACA/B,EAAAF,WAAAkC,UAEA8D,GACA9F,EAAAF,WAAA2B,aACAzB,EAAAF,WAAA4B,YACA1B,EAAAF,WAAA6B,WAEA+D,GACA1F,EAAAF,WAAA8B,gBACA5B,EAAAF,WAAA+B,eAEA8D,GACA3F,EAAAF,WAAAyB,iBACAvB,EAAAF,WAAA0B,eA2CA,OAxCApO,GAAA4G,EAAAgG,EAAAF,WAAAqB,MACA/N,EAAA4G,EAAA,IAAAgG,EAAAtB,IAAAsB,EAAAF,WAAAsB,eAAApB,EAAAF,WAAAuB,cAiCArE,OAAAiF,KAAA6B,GAAAtE,QAAA,SAAA9X,GACAse,EAAAte,EAAAoc,EAAApc,MAGAsS,EAAAkM,UAAAD,EAEAjM,EAGA,QAAAmH,GAAAgF,GAEA,GAAAzC,GAAAyC,EAAAzC,KACAM,EAAAmC,EAAAnC,SAAA,EACAlW,EAAAqY,EAAArY,SAAA,EACA6V,EAAAwC,EAAAxC,SAAA,EACAC,EAAAuC,EAAAvC,UAAA,EACA3T,EAAAwT,EAAAC,EAAAC,EAAAC,GACAE,EAAAC,EAAAC,EAAAN,EAAAzT,GACAxH,EAAA0d,EAAA1d,SACAkE,GAAAqB,KAAA4K,MAGA,OAAAwN,GAAA9C,YAAA+B,EACAvB,EACAhW,EACArF,IAMA,QAAA4d,KACA,GAAAtN,GAAAuN,EAAAtN,wBAAAuN,EAAA,4BAAAvG,EAAAtB,IACA,YAAAsB,EAAAtB,IAAA3F,EAAAyN,OAAAF,EAAAC,GAAAxN,EAAAnB,QAAA0O,EAAAC,GAIA,QAAAE,GAAA/D,EAAAgE,EAAAzH,GAEA,GAAAvW,EAGA,KAAAA,EAAA,EAAcA,EAAAsX,EAAA/B,QAAqBvV,IACnC,QAAAie,EAAAje,GACA,WAIAf,KAAA+e,GAAA,IAAA1G,EAAA/B,UACAyI,EAAA1Y,KAAAC,IAAAyY,EAAA1G,EAAAjC,MAGAf,OAAAiF,KAAA2E,GAAApH,QAAA,SAAAqH,GAEA,GAAAC,GAAAD,EAAAtb,MAAA,OAEAmX,KAAAoE,GACAF,EAAAC,GAAArH,QAAA,SAAAuH,GAEAA,EAAA3O,KAEA4O,EAEA5M,EAAA6M,KAEAP,EAEAtM,EAAA8M,EAAA7M,MAAA/O,UAAA3B,MAAAyO,KAAA+O,KAEAlI,IAAA,EAEA0H,OAQA,QAAAO,GAAAvD,GAGA,WAAAA,EAAA5V,OACA4V,EAAA,GAGA3D,EAAAjC,IACA4F,EAAAN,UAGAM,EAKA,QAAAyD,GAAA/H,EAAArF,EAAA+M,EAAA1e,GAKA,GAAAgf,GAAA,SAAAnf,GAEA,OAAAke,EAAAkB,aAAA,eAKA3S,EAAAyR,EAAApG,EAAAF,WAAAb,OAIA/W,EAAAoa,EAAApa,EAAAG,EAAA+Q,cAGAiG,IAAAkI,EAAA7R,WAAA/N,KAAAO,EAAAsf,SAAAtf,EAAAsf,QAAA,OAKAnf,EAAA+W,QAAAlX,EAAAsf,WAIAtf,EAAAuf,UAAAvf,EAAA8a,OAAAhD,EAAAtB,SAGAqI,GAAA7e,EAAAG,QAEGuN,IAQH,OALAyJ,GAAA9T,MAAA,KAAAiU,QAAA,SAAAkI,GACA1N,EAAA2N,iBAAAD,EAAAL,GAAA,GACAzR,EAAA/F,MAAA6X,EAAAL,MAGAzR,EAIA,QAAA2F,GAAAmH,EAAAra,GAOA,QAAAiR,UAAAsO,WAAAhZ,QAAA,eAAA8T,EAAA8E,SAAA,IAAAnf,EAAAwf,gBACA,MAAArM,GAAAkH,EAAAra,EAGA,IAAAyf,GAEApf,EAFAuV,EAAA5V,EAAA4V,SAAA8J,EAAAC,GAAA,EACAC,EAAA,KAAAvF,EAAA+E,UAAApf,EAAAqN,OAAArN,EAAAge,SACAK,EAAAzI,EAAA,KAAA8J,EAAA,MAOA,IAJAD,EAAA1F,EAAA6F,EAAA5f,EAAAyf,UAAA7J,EAAAlQ,OAAA,GAEAia,EAAAE,EAAAjK,EAAA,GAAA6J,EAAApB,GAAA,IAAAzI,EAAAlQ,QAEAkQ,EAAAlQ,OAAA,GAIA,GAFAia,EAAAE,EAAAjK,EAAA,GAAA6J,EAAApB,EAAA,UAAAsB,EAIA,IAAAtf,EAAA,EAAgBA,EAAAL,EAAA4V,QAAAlQ,OAAyBrF,IACzC+d,EAAA,QAAA/d,OAGGsf,IAEHvB,EAAA,QAAAC,GAKA,QAAAlL,GAAAkH,EAAAra,GAGA,GAAA6O,GAAAoP,EAAA6B,cAAA,IAAAnI,EAAAF,WAAA5I,QACAwP,EAAAre,EAAA4V,QAAA,KAAA8J,EAAA,MAEA,QAAA7Q,GACAhD,EAAAgD,EAAA8I,EAAAF,WAAA5I,QAIAwL,EAAAO,SACA5L,SAAA6D,KAAAhD,MAAA+K,OAAA,GACA5L,SAAA6D,KAAAkN,oBAAA,cAAA/Q,SAAA6D,KAAAmN,cAGA,IAAArgB,GAAAqP,SAAAY,eAGAjQ,GAAAsgB,cAAA9I,QAAA,SAAA1X,GACAE,EAAAogB,oBAAAtgB,EAAA,GAAAA,EAAA,MAIAoM,EAAAkS,EAAApG,EAAAF,WAAAZ,MAGAuH,EAAA,MAAAC,GACAD,EAAA,SAAAC,OAGA/e,KAAAU,EAAAqe,cACAD,EAAA,MAAApe,EAAAqe,cAKA,QAAA6B,GAAA7F,EAAAra,GACA,aAAAqa,EAAAlO,MAAA,SAAAkO,EAAAvO,OAAAqU,UAAA,OAAA9F,EAAA+F,eACAjN,EAAAkH,EAAAra,GAKA,QAAAqN,GAAAgN,EAAAra,GAEA,GAAAL,GAAAqP,SAAAY,eAGA,QAAA5P,EAAA4V,QAAAlQ,OAAA,CAEA,GAAA1F,EAAA4V,QAAA,GAAAqJ,aAAA,YACA,QAGAlU,GAAA/K,EAAA4V,QAAA,GAAAyK,SAAA,GAAA1I,EAAAF,WAAA5I,QAIAwL,EAAAlP,iBAGAkP,EAAApO,iBAGA,IAAAqU,GAAAvB,EAAAG,EAAAhM,KAAAvT,EAAAuT,GACA7F,MAAAgN,EAAA+E,UACApB,aACAjN,WAAAsJ,EAAAtJ,WACA6E,QAAA5V,EAAA4V,QACAyI,aAAAre,EAAAqe,aACAmB,gBAAAnF,EAAA8E,QACAM,WACAnB,EAAA,GACAA,EAAAoB,EAAAha,OAAA,MAEG6a,EAAAxB,EAAAG,EAAA/L,IAAAxT,EAAAwT,GACHyC,QAAA5V,EAAA4V,QACAyI,aAAAre,EAAAqe,eAGAmC,EAAAzB,EAAA,WAAApf,EAAAugB,GACAtK,QAAA5V,EAAA4V,QACAyI,aAAAre,EAAAqe,cAOA,IAJA1e,EAAAsgB,cAAAK,EAAAG,OAAAF,EAAAC,GAIAnG,EAAAO,OAAA,CAGA5L,SAAA6D,KAAAhD,MAAA+K,OAAApa,iBAAA6Z,EAAAvO,QAAA8O,OAGA8E,EAAAha,OAAA,GACAqF,EAAAgT,EAAApG,EAAAF,WAAAZ,KAGA,IAAA9W,GAAA,WACA,SAGAiP,UAAA6D,KAAAmN,aAAAjgB,EAGAiP,SAAA6D,KAAAyM,iBAAA,cAAAvf,GAAA,OAGAT,KAAAU,EAAAqe,cACAD,EAAA,QAAApe,EAAAqe,cAKA,QAAAzH,GAAAyD,GAEA,GAAAgE,GAAA/Z,EAAAoc,EAAArG,EAAA+E,UAAAuB,EAAA,CA8BA,IA3BAtG,EAAApO,kBAGAyT,EAAAvI,QAAA,SAAA9X,GACAshB,GAAAnQ,EAAAnR,GAAAsY,EAAA9H,SAIAwO,EAAAqC,EAAAC,EAAA,OAAAjB,EAAAha,OAAA,IAGAga,EAAArB,GAAAY,aAAA,cACAZ,IAAA,KAGAqC,GAAAlQ,EAAAyN,GAAAtG,EAAA9H,OAGAvL,EAAA,IAAAoc,EAAA1C,IAEArG,EAAAX,OAAA1C,MAGA5C,EAAAqM,EAAApG,EAAAF,WAAAb,IAAAe,EAAA1B,mBAIAyJ,EAAArB,GAAAY,aAAA,YACA,QAKAY,GAAAH,EAAArB,GAAA/Z,GAEA8Z,EAAA,QAAAC,GAAA,GACAD,EAAA,MAAAC,GAAA,GACAD,EAAA,SAAAC,GAAA,GAEA1G,EAAAX,OAAA1C,MACAjH,EAAAgN,GAAiBzE,SAAA8J,EAAArB,MAKjB,QAAAtH,GAAAsD,GAEA,GAAAqG,GAAArG,EAAA+E,UAAA5O,EAAAyN,GAAAtG,EAAA9H,OACAvL,EAAAkX,EAAApH,QAAA,IAAAsM,EAAA1C,KACAle,EAAA0b,EAAArH,aAAA7P,EAEAqQ,QAAAiF,KAAA2E,GAAApH,QAAA,SAAAqH,GACA,UAAAA,EAAAtb,MAAA,SACAqb,EAAAC,GAAArH,QAAA,SAAAuH,GACAA,EAAA3O,KAAA4O,EAAA7e,OA4DA,QAAA+f,GAAA1H,EAAA7T,EAAAsc,GAEA,GAAAje,GAAAwV,IAAAuH,EAAA,OACAmB,EAAAvC,EAAA,GAAA3G,EAAApB,OACAuK,EAAAxC,EAAA,GAAA3G,EAAApB,OACAwK,EAAAzC,EAAA,GAAA3G,EAAA7F,MACAkP,EAAA1C,EAAA,GAAA3G,EAAA7F,KAwBA,OAnBA4N,GAAAha,OAAA,IACApB,EAAA3B,EAAAgD,KAAA9E,IAAAyD,EAAAuc,GAAAlb,KAAA/E,IAAA0D,EAAAwc,KAOA,IAAAF,GAAAjJ,EAAA7F,OAAA4N,EAAAha,OAAA,IACApB,EAAA3B,EAAAgD,KAAA/E,IAAA0D,EAAAyc,GAAApb,KAAA9E,IAAAyD,EAAA0c,IAIA1c,EAAAkX,EAAApH,QAAA9P,IAGAA,EAAAwN,EAAAxN,MAGAga,EAAA3b,KAQA2M,OAAA2R,sBACA3R,OAAA2R,sBAAA,WACA9I,EAAAtI,MAAA8H,EAAA9H,OAAAvL,EAAA,MAGA6T,EAAAtI,MAAA8H,EAAA9H,OAAAvL,EAAA,IAIA6T,EAAA+I,kBACArV,EAAAsM,EAAAR,EAAAF,WAAAmB,UACAtU,EAAA,IACAyG,EAAAoN,EAAAR,EAAAF,WAAAmB,WAKA0F,EAAA3b,GAAA2B,EAGAwa,EAAAnc,GAAA6Y,EAAArH,aAAA7P,GAEA8Z,EAAA,SAAAzb,IAEA,GAIA,QAAAwe,GAAAC,EAAA9F,GAEA,GAAAjb,GAAAsC,EAAA2B,CAUA,KAPAqT,EAAA7F,QACAsP,GAAA,GAMA/gB,EAAA,EAAcA,EAAA+gB,EAAW/gB,GAAA,EAEzBsC,EAAAtC,EAAA,EAOA,QAJAiE,EAAAgX,EAAA3Y,MAIA,IAAA2B,IAGA,gBAAAA,KACAA,EAAA+c,OAAA/c,MAOA,KAJAA,EAAAqT,EAAAvX,OAAAiE,KAAAC,KAIAkN,MAAAlN,KAAA,IAAAub,EAAAH,EAAA/c,GAAA6Y,EAAA1H,WAAAxP,GAAAjE,IAAA,EAAAsX,EAAAjC,OACA0I,EAAA,SAAAzb,IAOA,QAAA2e,GAAAtW,EAAAuW,GAEA,GAAAH,GAAA/gB,EAAAib,EAAAvJ,EAAA/G,EA2BA,KAxBAuW,MAAAjiB,KAAAiiB,OAIA5J,EAAAjC,KAAAiC,EAAA/B,QAAA,GACA0F,EAAAN,UAKArD,EAAA5B,UAAA,IAAAuI,EAAA,IACA5M,EAAAqM,EAAApG,EAAAF,WAAAb,IAAAe,EAAA1B,mBAIAmL,EAAA1B,EAAAha,OAAA,MAEA,IAAA4V,EAAA5V,SACA0b,EAAA,GAGAD,EAAAC,EAAA9F,GAGAjb,EAAA,EAAcA,EAAAqf,EAAAha,OAA0BrF,IAGxC,OAAAib,EAAAjb,IAAAkhB,GACAnD,EAAA,MAAA/d,GAMA,QAAAue,KAEA,GAAAve,GAAAmhB,IAGA,KAAAnhB,EAAA,EAAcA,EAAAsX,EAAA/B,QAAqBvV,GAAA,EACnCmhB,EAAAnhB,GAAAsX,EAAAvX,OAAAkE,GAAAwa,EAAAze,GAGA,OAAAwe,GAAA2C,GAIA,QAAAC,KAEA,OAAA/f,KAAAiW,GAAAF,WACAE,EAAAF,WAAArC,eAAA1T,IACAmK,EAAAkS,EAAApG,EAAAF,WAAA/V,GAGA,MAAAqc,EAAA5C,YACA4C,EAAAvP,YAAAuP,EAAA5C,kBAGA4C,GAAA2D,WAIA,QAAAC,KA+BA,MAAA9C,GA3BAP,EAAAnb,IAAA,SAAAud,EAAAlM,GAEA,GAAAsD,GAAA0D,EAAAoG,kBAAAlB,GAIAmB,EAAA5P,EAAAoP,OAAAvJ,EAAA,KAGAhY,EAAAgf,EAAAtK,GAIAqH,EAAA,MAAA6E,EAAA,KAAA5I,EAAA,GAIAgK,EAAAC,QAAAjiB,EAAAgY,EAAA,IAAAgE,QAAA+F,GAMA,QAFA,IAAAnB,EAAA,KAAAoB,GAAAhK,EAAA,GAAAA,EAAA,GAAAA,EAAA,OAEA+D,MAQA,QAAAmG,GAAAC,EAAAvD,GACAH,EAAA0D,GAAA1D,EAAA0D,OACA1D,EAAA0D,GAAAza,KAAAkX,GAGA,WAAAuD,EAAA/e,MAAA,SACAwc,EAAAvI,QAAA,SAAA9X,EAAAmV,GACA4J,EAAA,SAAA5J,KAMA,QAAA0N,GAAAD,GAEA,GAAA5H,GAAA4H,KAAA/e,MAAA,QACAif,EAAA9H,GAAA4H,EAAAG,UAAA/H,EAAA3U,OAEAiP,QAAAiF,KAAA2E,GAAApH,QAAA,SAAAkL,GAEA,GAAAC,GAAAD,EAAAnf,MAAA,QACAqf,EAAAF,EAAAD,UAAAE,EAAA5c,OAEA2U,QAAAiI,GAAAH,OAAAI,SACAhE,GAAA8D,KAMA,QAAAG,GAAAC,EAAAlB,GAKA,GAAAxU,GAAA6R,IAAA8D,EAAAhL,GACArK,OAAA,KACAkJ,OAAAkM,EAAAlM,OACAzE,MAAA2Q,EAAA3Q,MACAgG,SAAAxY,KAAAmjB,EAAA3K,KAAAH,EAAA1C,WAAAwN,EAAA3K,KACArE,MAAAgP,EAAAhP,MACAsC,QAAA0M,EAAA1M,QACAzB,SAAAhV,KAAAmjB,EAAAnO,KAAAqD,EAAArD,KAAAmO,EAAAnO,QAGA,oCAAA6C,QAAA,SAAAzK,OAGApN,KAAAmjB,EAAA/V,KACAiL,EAAAjL,GAAA+V,EAAA/V,MAMAgW,EAAAjN,SAAAlV,UAAAib,EAAAjb,UACAib,EAAAkH,EAAAjN,SAGA6I,IAAA,MACAgD,EAAAmB,EAAApV,OAAAN,EAAAwU,GAjkCA,GAKAtD,GACAyB,EAIAf,EATAO,EAAAlM,IAEA+K,EAAAjS,EACAwS,IAAA,MAGA9C,EAAA7D,EAAAlC,SACAqJ,KACAP,IA6jCA,IAAAR,EAAA2D,WACA,SAAA9M,OAAA,kCAmCA,OA9BAqJ,GAv8BA,SAAA1d,EAAAwX,EAAAjM,GAGAf,EAAAe,EAAA6L,EAAAF,WAAA3L,QAEA,IAAAvL,EACAwK,EAAAe,EAAA6L,EAAAF,WAAAgB,KAEA1N,EAAAe,EAAA6L,EAAAF,WAAAiB,KAGA,IAAAX,EACAhN,EAAAe,EAAA6L,EAAAF,WAAAa,YAEAvN,EAAAe,EAAA6L,EAAAF,WAAAc,SAGA,IAAAoK,GAAA3T,SAAA8L,cAAA,MAGA,OAFA/P,GAAA4X,EAAAhL,EAAAF,WAAAQ,MACAnM,EAAAmP,YAAA0H,GACAA,GAm7BAhL,EAAAjC,IAAAiC,EAAAtB,IAAA0H,GACA2B,EAv9BA,SAAAkD,EAAAriB,EAAA0X,GAEA,GAAAzD,GAAAoB,IAGA,KAAApB,EAAA,EAAkBA,EAAAoO,EAAmBpO,GAAA,EAGrCoB,EAAApO,KAAAyQ,EAAAgD,YAAAJ,EAAAta,EAAAiU,IAGA,OAAAoB,IA48BA+B,EAAA/B,QAAA+B,EAAAjC,IAAAuI,GA3+BA,SAAA9H,EAAArK,EAAA8J,GAMA,OAAAO,GACA,OAAApL,EAAAe,EAAA6L,EAAAF,WAAAtB,SACApL,EAAA6K,EAAA,GAAA+B,EAAAF,WAAAe,WACA,MACA,QAAAzN,EAAA6K,EAAA,GAAA+B,EAAAF,WAAAe,WAEA,QAAAzN,EAAA6K,EAAA,GAAA+B,EAAAF,WAAAtB,QAEA,QAAApL,EAAAe,EAAA6L,EAAAF,WAAAe,cAg+BAb,EAAAxB,QAAA4H,EAAA2B,GAEA/H,EAAAmB,MACAA,EAAAnB,EAAAmB,MAGAnB,EAAAT,UA76BA,WAEAS,EAAAjC,KACAiC,EAAAT,SAAA8D,SAIA,IAAA6H,GAAAnD,EAAAvc,IAAA+X,EAEAvD,GAAAjC,MACAmN,EAAA7H,UACArD,EAAAT,SAAA8D,WAGAgH,EAAA,kBAAAjiB,EAAAwF,EAAAmD,GACAma,EAAAtd,KACAsd,EAAAtd,GAAAsY,WAAA,IAAAlG,EAAAT,SAAA3R,GAAAxF,EAAAwF,GAAAoS,EAAAT,SAAA3R,GAAAjB,GAAAoE,EAAAnD,UAi6BAoZ,GACA8C,UACA9E,MAAAgF,EACArf,GAAA0f,EACApT,IAAAsT,EACAxf,IAAAkc,EACApd,IAAA8f,EACAkB,gBACA7K,QAAAmC,EACAhO,OAAAiS,EACAjF,QApWA,SAAAd,GA8BA,GA3BAA,EAAAlB,OAEA4I,EAAAvI,QAAA,SAAAgB,EAAA3D,GAIAuK,EAAAG,EAAA7R,MAAA8K,EAAAkI,SAAA,GAAAhT,GACAuI,SAAAuC,GACAkG,aAAA7J,MAMAwD,EAAApB,KAEAmI,EAAAG,EAAA7R,MAAA4Q,EAAArH,GACAhB,QAAA8J,IAKA1H,EAAAjB,OACAgI,EAAAG,EAAAhM,KAAA+K,EAAAlH,GAA8CA,OAAA,IAI9CiB,EAAAnB,KAAA,CAEA,GAAAA,IAAAoH,EAAA6B,cAAA,IAAAnI,EAAAF,WAAAtB,SACApL,GAAA8L,EAAA,GAAAc,EAAAF,WAAAkB,WAMAX,EAAAlB,OACAD,EAAArP,KAAAkY,EAAA7I,EAAA,KAAA6I,EAAA,QAAAW,SAAA,IAGAxJ,EAAAM,QAAA,SAAAxF,GACAoN,EAAAG,EAAA7R,MAAAsE,EAAAtE,GACAuI,QAAA8J,QA2TA/H,EAAAX,QAEA2H,EAMA,QAAAmE,GAAAhX,EAAAgO,GAEA,IAAAhO,EAAAqU,SACA,SAAAvL,OAAA,+CAIA,IAAA+C,GAAAD,EAAAoC,EAAAhO,GACAiX,EAAAlJ,EAAA/N,EAAA6L,EAAAmC,EAMA,OAHAiJ,GAAAvhB,IAAAmW,EAAAtK,OAEAvB,EAAA4V,WAAAqB,EACAA,EAljDAhO,EAAA9R,UAAAuT,UAAA,SAAA1W,GACA,WAAAJ,KAAAsU,KAAAtO,QAAA8N,EAAA9T,KAAAqU,KAAAjU,IAGAiV,EAAA9R,UAAA6Q,WAAA,SAAAhU,GASA,MAPAA,GAAAgU,EAAApU,KAAAqU,KAAArU,KAAAsU,KAAAlU,GAGAJ,KAAAa,YACAT,EAAA,IAAAA,GAGAA,GAGAiV,EAAA9R,UAAAkR,aAAA,SAAArU,GAOA,MAJAJ,MAAAa,YACAT,EAAA,IAAAA,GAGAqU,EAAAzU,KAAAqU,KAAArU,KAAAsU,KAAAlU,IAGAiV,EAAA9R,UAAAmR,QAAA,SAAAtU,GAcA,MAVAJ,MAAAa,YACAT,EAAA,IAAAA,GAGAA,EAAAsU,EAAA1U,KAAAsU,KAAAtU,KAAA2U,OAAA3U,KAAA4U,KAAAxU,GAEAJ,KAAAa,YACAT,EAAA,IAAAA,GAGAA,GAGAiV,EAAA9R,UAAA2e,kBAAA,SAAA9hB,GAGA,GAAA8E,GAAAgP,EAAA9T,EAAAJ,KAAAsU,MAAAxD,EAAA,MAAA1Q,EAAA,GACA,QAAAJ,KAAAwV,UAAAtQ,EAAA,GAAAlF,KAAAqU,KAAAnP,EAAA4L,GAAA9Q,KAAAwV,UAAAtQ,EAAA4L,KAIAuE,EAAA9R,UAAA+f,QAAA,SAAAljB,GACA,MAAAJ,MAAA0U,QAAA1U,KAAAoU,WAAAhU,IAgBA,IAAA+X,IAAyBvT,GAAA,SAAAxE,GACzB,WAAAR,KAAAQ,KAAAgc,QAAA,IACEzX,KAAA0d,OAg/CF,QACAze,OAAAwf,MHmDMG,KACA,SAAUlkB,EAAQC,EAASC,GAEjC,YAsBA,SAASikB,GAAuBxf,GAAO,MAAOA,IAAOA,EAAIyf,WAAazf,GAAQ0f,QAAS1f,GIr9DvF,QAAS2f,KAA4B,GAAAC,GAAA5jB,KAEnC6jB,EAAc7jB,KAAK8jB,OAAOC,SAAU,SAAWC,EAEhDhkB,MAAK8jB,OAAOlhB,GAAI,QAAS,SAAAzC,GACxB0jB,EAAYxY,SAAU,cAGvBrL,KAAK8jB,OAAOlhB,GAAI,OAAQ,SAAAzC,GACjByjB,EAAKE,OAAOra,OACjBoa,EAAY1X,YAAa,cAI3B0X,EAAYjhB,GAAI,QAAS,SAAAzC,GAAA,MAAKyjB,GAAKE,OAAO7gB,QAAS,WAGpD,QAASghB,KACHjkB,KAAKkkB,OAAOtX,SAAUoX,IACpBL,EAANtT,KAAArQ,MAIF,QAASmkB,GAAmC/X,EAAQY,EAAMoX,GACzD,GACCC,GAAWD,EAAWhkB,KAcvB,OAZwB,kBAAbikB,KACVD,EAAWhkB,MAAQ,WAClB,IAAI,OAAAkkB,GAAA5U,UAAA1J,OAD4Bue,EAC5BjS,MAAAgS,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAD4BD,EAC5BC,GAAA9U,UAAA8U,EACH,IAAMC,GAASJ,EAASxkB,MAAOG,KAAMukB,EAErC,OADMN,GAAN5T,KAAArQ,MACOykB,EACN,MAAOtkB,GACR,KAAMA,MAKFikB,EJ25DRnP,OAAOyP,eAAeplB,EAAS,cAC9Bc,OAAO,IAERd,EAAQqlB,yBAA2BrlB,EAAQ6kB,qCAAmCvkB,EAE9E,IAQmBglB,GARfC,EAA4BtlB,EAAoB,KAEhDulB,EAA6BtB,EAAuBqB,GAEpDE,EAAmBxlB,EAAoB,GAEvCylB,EAAmBxB,EAAuBuB,GIv+D9CE,EAAA1lB,EAAA,KAwBCykB,GJq9DcR,EAAuByB,GIr9D/B,wBA4CDN,GJihE0BC,EAAS,WACxC,QAASD,MACR,EAAIK,EAAiBtB,SAAS1jB,KAAM2kB,GAQrC,MALAA,GAAyBphB,UIphEzB2hB,KJohE0C,SIphEpChB,GACLlkB,KAAKkkB,OAASA,EACdlkB,KAAK8jB,OAAS9jB,KAAKkkB,OAAOrhB,KAAM,UJuhE1B8hB,KA9GR,SAAmCvY,EAAQ+Y,EAAUC,EAAYhB,EAAYiB,GAC5E,GAAIC,KAyBJ,OAxBArQ,QAAkB,KAAEmP,GAAY3M,QAAQ,SAAUzV,GACjDsjB,EAAKtjB,GAAOoiB,EAAWpiB,KAExBsjB,EAAKC,aAAeD,EAAKC,WACzBD,EAAKE,eAAiBF,EAAKE,cAEvB,SAAWF,IAAQA,EAAKG,eAC3BH,EAAKI,UAAW,GAGjBJ,EAAOF,EAAWxjB,QAAQ0Z,UAAUqK,OAAO,SAAUL,EAAMM,GAC1D,MAAOA,GAAUxZ,EAAQ+Y,EAAUG,IAASA,GAC1CA,GAECD,OAAgC,KAArBC,EAAKG,cACnBH,EAAKllB,MAAQklB,EAAKG,YAAcH,EAAKG,YAAYpV,KAAKgV,OAAW,GACjEC,EAAKG,gBAAc7lB,QAGK,KAArB0lB,EAAKG,cACRxQ,OAA4B,eAAE7I,EAAQ+Y,EAAUG,GAChDA,EAAO,MAGDA,GAqFwBV,EAAOrhB,UAAW,QI3hEhD4gB,IJ2hE4F,EAAIW,EAA2BpB,SAASkB,EAAOrhB,UAAW,QAASqhB,EAAOrhB,WAAaqhB,EAIrLtlB,GIvhES6kB,mCJwhET7kB,EIxhE2CqlB,4BJ4hErCkB,KACA,SAAUxmB,EAAQC,EAASC,GAEjC,YAGA0V,QAAOyP,eAAeplB,EAAS,cAC9Bc,OAAO,GKhnEK0lB,gBACZC,aAAe,sDACfC,MACCC,KAAO,oBAERC,QACCD,KAAO,qBAERE,cACCF,KAAO,iBAERG,gBACCH,KAAO,+BAERI,aACCJ,KAAO,8BLwnEHK,KACA,SAAUjnB,EAAQC,EAASC,GAEjC,YAiDA,SAASikB,GAAuBxf,GAAO,MAAOA,IAAOA,EAAIyf,WAAazf,GAAQ0f,QAAS1f,GMroEvF,QAASuiB,KACR,GACCC,GAAiBlX,SAAS8Q,cAAe,0BAE1C,KAAMoG,GAAoBA,GAA+D,SAA7CA,EAAeC,aAAc,WAA2B,CAEnG,GACCC,GAAUC,CAENH,IAAkBA,EAAeC,aAAc,UACnDC,EAAUF,EAAeC,aAAc,SAExCG,EAAAlD,QAAcmD,gBAAiBH,EAAUI,EAAQA,IASnD,QAASC,GAAiBte,GACzB,GAAMue,IAAM,EAAAC,EAAAvD,SAAG,IAAMjb,EAErB,KAAMue,EAAIta,GAAI,uBAAwE,IAA9Csa,EAAIE,OAAQ,sBAAuBlhB,OAE1E,WADAhG,MAAKmnB,OAAOC,KAAM,mCAMnB,IAFMb,EAANlW,KAAArQ,MAEKgnB,EAAIhhB,OAAS,EACjB,GAAMqhB,EAAc3R,eAAgBjN,GAOnC4e,EAAe5e,GAAK6e,OAAQN,GAC5BhnB,KAAKmnB,OAAOI,KAAM,iCAAkCP,OARV,CAC1C,GAAMQ,GAAa,GAAAC,GAAA/D,OAEnB8D,GAAWtC,KAAM8B,GACjBK,EAAe5e,GAAO+e,EACtBxnB,KAAKmnB,OAAOO,IAAK,+BAAgCV,OAMlDhnB,MAAKmnB,OAAOI,KAAM,yBAA0B9e,GAI9C,QAASkf,GAAuBlf,GAC/B,GACCue,IAAM,EAAAC,EAAAvD,SAAG,IAAMjb,GACfmf,EAAQZ,EAAIpW,QAAS,sBACrBiX,EAASD,EAAMvkB,KAAM,KAEtB,IAAK2jB,EAAIhhB,OAAS,EACjB,GAAMqhB,EAAc3R,eAAgBmS,GAM7B,CACN,GACCL,GAAaH,EAAeQ,EAE7BL,GAAWM,uBAAwBd,OAVW,CAC9C,GACCQ,GAAa,GAAAC,GAAA/D,OAEd8D,GAAWO,WAAYf,GACvBK,EAAeQ,GAAWL,GAgB7B,QAASQ,GAAiBC,GACzBjoB,KAAKmnB,OAAOO,IAAK,0CAA2CO,GAEvDA,EAAQxb,OAASyb,EAAOC,WAAaF,EAAQ3nB,KAAKoV,eAAgB,OAEtEqR,EAAe1W,KAAMrQ,KAAMioB,EAAQ3nB,KAAKmI,IAI1C,QAAS2f,GAAuBH,GAC/BjoB,KAAKmnB,OAAOO,IAAK,0CAA2CO,GAEvDA,EAAQxb,OAASyb,EAAOG,kBAAoBJ,EAAQ3nB,KAAKoV,eAAgB,OAE7EiS,EAAqBtX,KAAMrQ,KAAMioB,EAAQ3nB,KAAKmI,IN8/DhDwM,OAAOyP,eAAeplB,EAAS,cAC9Bc,OAAO,GAGR,IAAIkoB,GAAgB/oB,EAAoB,KAEpCgpB,EAAgB/E,EAAuB8E,GAEvCvD,EAAmBxlB,EAAoB,GAEvCylB,EAAmBxB,EAAuBuB,GAE1CyD,EAA8BjpB,EAAoB,IAElDkpB,EAA8BjF,EAAuBgF,GAErDE,EAAanpB,EAAoB,IAEjCopB,EAAanF,EAAuBkF,GM/pExCE,EAAArpB,EAAA,INmqEI0nB,EAAWzD,EAAuBoF,GMjqEtCC,EAAAtpB,EAAA,KNqqEIupB,EAAUtF,EAAuBqF,GMpqErCE,EAAAxpB,EAAA,KNwqEIypB,EAAkBxF,EAAuBuF,GMvqE7CE,EAAA1pB,EAAA,KN2qEI2pB,EAAW1F,EAAuByF,GMzqEtCE,EAAA5pB,EAAA,MN6qEIkoB,EAASjE,EAAuB2F,GM5qEpCC,EAAA7pB,EAAA,MAEA8pB,EAAA9pB,EAAA,KNgrEIqnB,EAAkBpD,EAAuB6F,GM7qEvChC,KACAa,GACCC,UAAY,YACZE,iBAAmB,6BAEvB1B,EAAgB,QACbG,EAAgB,WAuIhBwC,EN+qEM,SAAUC,GAGrB,QAASD,KAER,OADA,EAAItE,EAAiBtB,SAAS1jB,KAAMspB,IAC7B,EAAIb,EAA4B/E,SAAS1jB,KAAMupB,EAAiB1pB,MAAMG,KAAM0P,YA+DpF,OAnEA,EAAIiZ,EAAWjF,SAAS4F,EAAOC,GAO/BD,EAAM/lB,UMrrEN2hB,KNqrEuB,WMlrEtB,GAFAllB,KAAKwpB,OAAQ,EAERN,EAAAxF,QAAO+F,UAAUC,KAAO,EAAI,CAChC1pB,KAAKmnB,OAAOI,KAAM,wCAAyC2B,EAAAxF,QAAO+F,UADlC,IAAAE,IAAA,EAAAC,GAAA,EAAAC,MAAAjqB,EAAA,KAGhC,OAAAkqB,GAAAC,GAAA,EAAAxB,EAAA7E,SAAkBwF,EAAAxF,QAAO+F,aAAzBE,GAAAG,EAAAC,EAAAC,QAAAC,MAAAN,GAAA,EAAqC,IAAzBlhB,GAAyBqhB,EAAA1pB,KACpC2mB,GAAe1W,KAAMrQ,KAAMyI,IAJI,MAAAyhB,GAAAN,GAAA,EAAAC,EAAAK,EAAA,aAAAP,GAAAI,EAAAI,QAAAJ,EAAAI,SAAA,WAAAP,EAAA,KAAAC,SAM1B,CACN,GACCO,IAAa,EAAAnD,EAAAvD,SAAG0F,EAAAtD,YAAYE,KAAKC,KAE7BmE,GAAWpkB,QACTugB,EAANlW,KAAArQ,MAGDinB,EAAAvD,QAAEnT,KAAM6Z,EAAY,YACQ,GAAA3C,GAAA/D,SAERwB,MAAM,EAAA+B,EAAAvD,SAAG1jB,SAI9BA,KAAKqqB,QAAU,GAAArB,GAAAtF,QACf1jB,KAAKqqB,QAAQC,aAAaC,UAAWvC,EAAerF,KAAM3iB,OAC1DA,KAAKqqB,QAAQC,aAAaC,UAAWnC,EAAqBzF,KAAM3iB,QNutE1DspB,GACNR,EAAQpF,SM1sEJ8G,EAAW,GAAIlB,EN8sErBhqB,GAAQokB,QM5sEO8G,GNgtETC,KACA,SAAUprB,EAAQC,EAASC,GAEjC,YAmDA,SAASikB,GAAuBxf,GAAO,MAAOA,IAAOA,EAAIyf,WAAazf,GAAQ0f,QAAS1f,GO/6EvF,QAAS+iB,KAAkB,GAAAnD,GAAA5jB,IAC1BA,MAAKkkB,OAAOrhB,KAAMumB,EAAAtD,YAAuBC,cAAexV,KAAM,SAAE5P,EAAG+R,GAClE,GACCsU,GAAqBtU,uBAAkBA,GAAK,EAAAuU,EAAAvD,SAAGhR,GAC/CgY,EAAqB/C,EAAsBX,EAE5CpD,GAAK+G,cAAc7iB,KAAM4iB,MAG1B,EAAAE,EAAAlH,SAAamH,GAAyBpT,QAAS,SAAEpK,EAAG1M,GACnD,IAAMmqB,EAA8Bzd,GACnC,KAAM,IAAI6H,OAAO,uDAGlB0O,GAAKM,OAAOrhB,KAAMioB,EAA8Bzd,IAAMkD,KAAM,SAAErL,EAAGwN,GAChE,GAAMsU,GAAatU,uBAAkBA,GAAK,EAAAuU,EAAAvD,SAAGhR,GACvCjG,GAAe,SAAU,MAAO,WAAY1G,OAAQ,SAAAL,GAAA,QAAOshB,EAAI1mB,KAAMoF,KAAO,GAC5EqlB,EAAa/D,EAAI1mB,KAAMmM,EAAO,eAC9Bie,EAAqB,GAAIG,GAAwBxd,EAEvDqd,GAAmBxF,KAAM8B,EAAK+D,GAC9BnH,EAAK+G,cAAc7iB,KAAM4iB,OAI3BM,EAAAtH,QAAO6D,KAAM,0BAA2BvnB,KAAK2qB,eAG9C,QAAShD,GAAuBX,GAC/B,GACC+D,GAAqB/D,EAAI1mB,KAAM,sBAC/BoqB,EAAqB,GAAAO,GAAAvH,OAItB,OAFAgH,GAAmBxF,KAAM8B,EAAK+D,GAEvBL,EAOR,QAASQ,KACR,IAAM,GAAIvqB,GAAIX,KAAK2qB,cAAc3kB,OAAS,EAAGrF,GAAK,EAAGA,IACJ,kBAApCX,MAAK2qB,cAAehqB,GAAIohB,SACnC/hB,KAAK2qB,cAAehqB,GAAIohB,UAEzB/hB,KAAK2qB,cAAehqB,GAAM,WACnBX,MAAK2qB,cAAehqB,EAG5BX,MAAK2qB,iBACLK,EAAAtH,QAAO6D,KAAM,wBAAyBvnB,KAAK2qB,eAG5C,QAASQ,GAA0BnE,GAClC,IAAM,GAAIrmB,GAAIX,KAAK2qB,cAAc3kB,OAAS,EAAGrF,GAAK,EAAGA,IAAM,CAE5CX,KAAK2qB,cAAehqB,GAElBujB,OAAOxX,GAAIsa,KACsB,kBAApChnB,MAAK2qB,cAAehqB,GAAIohB,SACnC/hB,KAAK2qB,cAAehqB,GAAIohB,UAEzB/hB,KAAK2qB,cAAehqB,GAAM,WACnBX,MAAK2qB,cAAehqB,KP8zE9BsU,OAAOyP,eAAeplB,EAAS,cAC9Bc,OAAO,GAGR,IAAI2kB,GAAmBxlB,EAAoB,GAEvCylB,EAAmBxB,EAAuBuB,GAE1CyD,EAA8BjpB,EAAoB,IAElDkpB,EAA8BjF,EAAuBgF,GAErDE,EAAanpB,EAAoB,IAEjCopB,EAAanF,EAAuBkF,GAEpC0C,EAAQ7rB,EAAoB,KAE5BqrB,EAASpH,EAAuB4H,GO76EpCC,EAAA9rB,EAAA,IPi7EI+rB,EAAa9H,EAAuB6H,GOh7ExCE,EAAAhsB,EAAA,MPo7EI0rB,EAAgBzH,EAAuB+H,GOl7E3CnC,EAAA7pB,EAAA,MAGAisB,EAAAjsB,EAAA,KPq7EIksB,EAAYjI,EAAuBgI,GOp7EvCE,EAAAnsB,EAAA,MPw7EIosB,EAAenI,EAAuBkI,GOt7E1CE,EAAArsB,EAAA,KAEAssB,EAAAtsB,EAAA,KP07EIyrB,EAAmBxH,EAAuBqI,GOz7E9CjD,EAAArpB,EAAA,IP67EI0nB,EAAWzD,EAAuBoF,GO17EpCiC,GACA1R,kBACA2S,sBAEDhB,GACC3R,QAAayS,EAAA9F,YAAqBiG,QAAQ9F,KAC1C6F,WAAa1C,EAAAtD,YAAuBO,YAAYJ,MA+F5C+F,EPo8Ee,SAAUC,GOl8E9B,QAAAD,MAAe,EAAAhH,EAAAtB,SAAA1jB,KAAAgsB,EAAA,IAAAE,IAAA,EAAAzD,EAAA/E,SAAA1jB,KACdisB,EAAA5b,KAAArQ,MADc,OAGdksB,GAAKhI,OAAyB,KAC9BgI,EAAKvB,iBAJSuB,EPigFf,OA9DA,EAAIvD,EAAWjF,SAASsI,EAAgBC,GAqBxCD,EAAezoB,UO18Ef2hB,KP08EgC,SO18EzBnkB,GACN,GAAIorB,GAAWprB,CAETA,GAAM2L,GAAI0c,EAAAtD,YAAuBE,KAAKC,QAC3CkG,EAAWprB,EAAM6P,QAASwY,EAAAtD,YAAuBE,KAAKC,OAGlDkG,EAAS7rB,KAAM,UAIpBN,KAAKkkB,OAASnjB,EAGdgmB,EAAe1W,KAAMrQ,QPu9EtBgsB,EAAezoB,UO58Ef+jB,OP48EkC,SO58EzBvmB,GACRmqB,EAAkB7a,KAAMrQ,MACxBA,KAAKklB,KAAMnkB,IP+8EZirB,EAAezoB,UO58EfwkB,WP48EsC,SO58EzBf,GACZhnB,KAAK2qB,cAAc7iB,KAAM6f,EAAsBX,KP+8EhDgF,EAAezoB,UO58EfukB,uBP48EkD,SO58EzBd,GACxBmE,EAAwB9a,KAAMrQ,MAC9BA,KAAK+nB,WAAYf,IP+8EXgF,GACNV,EAAW5H,QAEbpkB,GAAQokB,QO98EOsI,GPk9ETI,KACA,SAAU/sB,EAAQC,EAASC,GAEjC,YA2DA,SAASikB,GAAuBxf,GAAO,MAAOA,IAAOA,EAAIyf,WAAazf,GAAQ0f,QAAS1f,GQ/qFvF,QAASqoB,KACR,GAAKrsB,KAAKkkB,OAAOtX,SAAU,cAAiB,CAC3C,IAAM5M,KAAK+qB,OAAOuB,WACjB,KAAM,IAAIpX,OAAO,6CAElB,IAAMwV,IAAqB,GAAA6B,GAAA7I,SAA2BwB,KAAMllB,KAAKkkB,OAAQlkB,KAAK+qB,OAAOuB,WAErFtsB,MAAKwsB,qBAAqB1kB,KAAM4iB,GAChC1qB,KAAKigB,MAAMwM,cAAe,EAG3B,GAAKzsB,KAAKkkB,OAAOtX,SAAU,YAAe,CACzC,GAAM8d,IAAqB,GAAAgC,GAAAhJ,SAAyBwB,KAAMllB,KAAKkkB,OAAQlkB,KAAK+qB,OAAO4B,aAEnF3sB,MAAKwsB,qBAAqB1kB,KAAM4iB,GAChC1qB,KAAKigB,MAAM2M,YAAa,EAGzB,GAAK5sB,KAAKkkB,OAAOtX,SAAU,gBAAmB,CAC7C,IAAM5M,KAAK+qB,OAAO8B,YACjB,KAAM,IAAI3X,OAAO,8CAElB,IAAMwV,IAAqB,GAAAoC,GAAApJ,SAA4BwB,KAAMllB,KAAKkkB,OAAQlkB,KAAK+qB,OAAO8B,YAEtF7sB,MAAKwsB,qBAAqB1kB,KAAM4iB,GAChC1qB,KAAKigB,MAAM8M,eAAgB,EAG5B,GAAK/sB,KAAKkkB,OAAOtX,SAAU,gBAAmB,CAC7C,IAAM5M,KAAK+qB,OAAOiC,aACjB,KAAM,IAAI9X,OAAO,+CAElB,IAAMwV,IAAqB,GAAAuC,GAAAvJ,SAA6BwB,KAAMllB,KAAKkkB,OAAQlkB,KAAK+qB,OAAOiC,aAEvFhtB,MAAKwsB,qBAAqB1kB,KAAM4iB,GAChC1qB,KAAKigB,MAAMiN,gBAAiB,EAG7B,GAAKltB,KAAKkkB,OAAOtX,SAAU,kBAAqB,CAC/C,GAAM8d,IAAqB,GAAAyC,GAAAzJ,SAA8BwB,KAAMllB,KAAKkkB,OAAQlkB,KAAK+qB,OAAOqC,kBAExFptB,MAAKwsB,qBAAqB1kB,KAAM4iB,GAChC1qB,KAAKigB,MAAMoN,iBAAkB,EAG9B,GAAKrtB,KAAKkkB,OAAOtX,SAAU,kBAAqB,CAC/C,GAAM8d,IAAqB,GAAA4C,GAAA5J,SAA8BwB,KAAMllB,KAAKkkB,OAAQlkB,KAAK+qB,OAAOwC,kBAExFvtB,MAAKwsB,qBAAqB1kB,KAAM4iB,GAChC1qB,KAAKigB,MAAMuN,iBAAkB,EAG9B,GAAKxtB,KAAKkkB,OAAOtX,SAAU,eAAkB,CAC5C,GAAM8d,IAAqB,GAAA+C,GAAA/J,SAA2BwB,KAAMllB,KAAKkkB,OAAQlkB,KAAK+qB,OAAO2C,eAErF1tB,MAAKwsB,qBAAqB1kB,KAAM4iB,GAChC1qB,KAAKigB,MAAM0N,cAAe,GAI5B,QAASC,KAAc,GAAAhK,GAAA5jB,IACtBA,MAAK8jB,OAAOlhB,GAAI,OAAQ,WACvBghB,EAAKM,OAAOjhB,QAAS,URyjFvBgS,OAAOyP,eAAeplB,EAAS,cAC9Bc,OAAO,GAGR,IAgBmBwkB,GAhBfC,EAA4BtlB,EAAoB,KAEhDulB,EAA6BtB,EAAuBqB,GAEpDE,EAAmBxlB,EAAoB,GAEvCylB,EAAmBxB,EAAuBuB,GAE1CyD,EAA8BjpB,EAAoB,IAElDkpB,EAA8BjF,EAAuBgF,GAErDE,EAAanpB,EAAoB,IAEjCopB,EAAanF,EAAuBkF,GQtpFxCmF,EAAAtuB,EAAA,IR4pFIuuB,EAAuBtK,EAAuBqK,GQ1pFlDE,EAAAxuB,EAAA,MR8pFIgtB,EAAe/I,EAAuBuK,GQ7pF1CC,EAAAzuB,EAAA,MRiqFImtB,EAAalJ,EAAuBwK,GQhqFxCC,EAAA1uB,EAAA,MRoqFIutB,EAAgBtJ,EAAuByK,GQnqF3CC,EAAA3uB,EAAA,MRuqFI0tB,EAAiBzJ,EAAuB0K,GQtqF5CC,EAAA5uB,EAAA,MR0qFI4tB,EAAkB3J,EAAuB2K,GQzqF7CC,EAAA7uB,EAAA,MR6qFIkuB,EAAejK,EAAuB4K,GQ5qF1CC,EAAA9uB,EAAA,MRgrFI+tB,EAAW9J,EAAuB6K,GQ/qFtCC,EAAA/uB,EAAA,MAuEMgvB,GRitFuB3J,EAAS,SAAUqH,GQ/sF/C,QAAAsC,MAAe,EAAAvJ,EAAAtB,SAAA1jB,KAAAuuB,EAAA,IAAArC,IAAA,EAAAzD,EAAA/E,SAAA1jB,KACdisB,EAAA5b,KAAArQ,MADc,OAGdksB,GAAKjM,SACLiM,EAAKM,wBAJSN,ERovFf,OApCA,EAAIvD,EAAWjF,SAAS6K,EAAuBtC,GAY/CsC,EAAsBhrB,UQptFtB2hB,KRotFuC,SQptFhCnkB,GAAqB,GAAdgqB,GAAcrb,UAAA1J,OAAA,OAAApG,KAAA8P,UAAA,GAAAA,UAAA,KAC3B1P,MAAKkkB,OAASnjB,EACdf,KAAK+qB,OAASA,EAEd/qB,KAAK8jB,OAAS9jB,KAAKkkB,OAAOrhB,KAAM,SAEhCwpB,EAAchc,KAAMrQ,MACpB4tB,EAAWvd,KAAMrQ,ORytFlBuuB,EAAsBhrB,UQttFtBwe,QRstF0C,WQrtFzC,IAAM,GAAIphB,GAAI,EAAGA,EAAIX,KAAKwsB,qBAAqBxmB,OAAQrF,IAAM,CAC5D,GACC6mB,GAAaxnB,KAAKwsB,qBAAsB7rB,EAEpC6mB,IAA4C,kBAAvBA,GAAWzF,SACpCyF,EAAWzF,UAGb/hB,KAAKigB,SACLjgB,KAAKwsB,yBRwtFC+B,GACNT,EAAqBpK,SAzIvB,SAAmCtX,EAAQ+Y,EAAUC,EAAYhB,EAAYiB,GAC5E,GAAIC,KAyBJ,OAxBArQ,QAAkB,KAAEmP,GAAY3M,QAAQ,SAAUzV,GACjDsjB,EAAKtjB,GAAOoiB,EAAWpiB,KAExBsjB,EAAKC,aAAeD,EAAKC,WACzBD,EAAKE,eAAiBF,EAAKE,cAEvB,SAAWF,IAAQA,EAAKG,eAC3BH,EAAKI,UAAW,GAGjBJ,EAAOF,EAAWxjB,QAAQ0Z,UAAUqK,OAAO,SAAUL,EAAMM,GAC1D,MAAOA,GAAUxZ,EAAQ+Y,EAAUG,IAASA,GAC1CA,GAECD,OAAgC,KAArBC,EAAKG,cACnBH,EAAKllB,MAAQklB,EAAKG,YAAcH,EAAKG,YAAYpV,KAAKgV,OAAW,GACjEC,EAAKG,gBAAc7lB,QAGK,KAArB0lB,EAAKG,cACRxQ,OAA4B,eAAE7I,EAAQ+Y,EAAUG,GAChDA,EAAO,MAGDA,GA+GoDV,EAAOrhB,UAAW,QAAS+qB,EAAqBnK,mCAAmC,EAAIW,EAA2BpB,SAASkB,EAAOrhB,UAAW,QAASqhB,EAAOrhB,WAAaqhB,EACtOtlB,GAAQokB,QQrtFO6K,GRytFTC,KACA,SAAUnvB,EAAQC,EAASC,GAEjC,YA2CA,SAASikB,GAAuBxf,GAAO,MAAOA,IAAOA,EAAIyf,WAAazf,GAAQ0f,QAAS1f,GS72FvF,QAASyqB,KAAe,GAAA7K,GAAA5jB,IACvB,OAAM0uB,GAAUC,SAoBRC,EAAAlL,QAAQmL,SAnBRC,EAAAC,kBAAUC,cAAe,WAC1BpL,EAAK3D,MAAMgP,cAIhBrL,EAAKE,OAAOzgB,KAAM,OAAQ,QAC1BugB,EAAKE,OAAOoL,UAAWtL,EAAKmH,QAC5BnH,EAAKpZ,OAASoZ,EAAKE,OAAOoL,UAAW,UACrCtL,EAAKzgB,UAAW,EAChBygB,EAAKpZ,OAAO5H,GAAI,MAAO,SAAEyiB,GACxB,GAAKA,GAAWA,EAAQhkB,OAAS,CAChC,GAAMlB,GAAImP,SAAS6f,YAAY,aAE/BhvB,GAAEivB,UAAU,UAAU,GAAO,GAC7BxL,EAAKM,OAAO,GAAGmL,cAAclvB,SASlC,QAASytB,KAAc,GAAA1B,GAAAlsB,IAEnByuB,GADHpe,KAAArQ,MAEEsvB,KAAM,WACApD,EAAK/oB,UAAa+oB,EAAKjM,MAAMgP,cAAe/C,EAAKqD,WACtDrD,EAAK1hB,OAAO5H,GAAI,OAAUspB,EAAKsD,6BAA/B7M,KAAAuJ,IACAA,EAAK1hB,OAAO5H,GAAI,OAAUspB,EAAKuD,+BAA/B9M,KAAAuJ,IACAA,EAAK1hB,OAAO5H,GAAI,OAAQ,iBAAM8sB,GAAAC,cAAcC,UAAW1D,EAAKhI,UAC5DgI,EAAKqD,SAAS3sB,GAAI,QAAS,SAAEzC,GAC5BA,EAAEoM,mBACF,EAAA0a,EAAAvD,SAAG,iBAAkBzgB,QAAS,SAEzBipB,EAAK1hB,OAAOxH,IAAK,QACrBkpB,EAAK1hB,OAAOT,QAEZmiB,EAAK1hB,OAAOM,YT6xFlBmK,OAAOyP,eAAeplB,EAAS,cAC9Bc,OAAO,GAGR,IAAIyvB,GAAUtwB,EAAoB,KAE9BuwB,EAAWtM,EAAuBqM,GAElC9K,EAAmBxlB,EAAoB,GAEvCylB,EAAmBxB,EAAuBuB,GAE1CyD,EAA8BjpB,EAAoB,IAElDkpB,EAA8BjF,EAAuBgF,GAErDE,EAAanpB,EAAoB,IAEjCopB,EAAanF,EAAuBkF,GAEpCqH,EAAWxwB,EAAoB,IAE/BqvB,EAAYpL,EAAuBuM,GSx2FvCnH,EAAArpB,EAAA,IT42FI0nB,EAAWzD,EAAuBoF,GS12FtCyC,EAAA9rB,EAAA,IT82FI+rB,EAAa9H,EAAuB6H,ES52FxC9rB,GAAA,KAEA,IAAAuvB,GAAAvvB,EAAA,IAEA6pB,EAAA7pB,EAAA,KACAmwB,EAAAnwB,EAAA,IAEMmvB,EAAY9e,OAAOogB,UAkDnBC,ETs3FW,SAAUhE,GSn3F1B,QAAAgE,KAAe,GAAAC,IAAA,EAAAlL,EAAAtB,SAAA1jB,KAAAiwB,EAAA,IAAAE,IAAA,EAAA1H,EAAA/E,SAAA1jB,KACdisB,EAAA5b,KAAArQ,MAIA,OALcmwB,GAFf3G,OAAQ,EAKP2G,EAAKhtB,UAAW,EAEhB+sB,EAAAC,GAAA,EAAA1H,EAAA/E,SAAAyM,EAAAD,GTs/FD,OAvIA,EAAIvH,EAAWjF,SAASuM,EAAYhE,GAiBpCgE,EAAW1sB,US73FXwe,QT63F+B,WS53F9B/hB,KAAKmnB,OAAOO,IAAK,WAAa1nB,KAAKowB,MACnCpwB,KAAKigB,MAAMoQ,eAENrwB,KAAKwK,SACTxK,KAAKwK,OAAO+D,OACZvO,KAAK8jB,OAAOzgB,KAAM,OAAQ,SAE3BrD,KAAKuvB,SAASrgB,IAAK,UTg4FpB+gB,EAAW1sB,US73FX2hB,KT63F4B,SS73FrBhB,EAAQ6G,GAAS,GAAAuF,GAAAtwB,IACvB,KAAKkkB,EAAO5jB,KAAM,QAAlB,CAIAN,KAAKmnB,OAAOO,IAAK,QACjB1nB,KAAKigB,MAAMsQ,iBACXvwB,KAAKigB,MAAMuQ,kBAEXxwB,KAAKkkB,OAASA,EACdlkB,KAAK8jB,OAAS9jB,KAAKkkB,OAAOrhB,KAAM,oBAChC7C,KAAKuvB,SAAWvvB,KAAKkkB,OAAOrhB,KAAK,mBAAqB7C,KAAK8jB,OAAOzgB,KAAK,MAAQ,MAE/EyrB,EAAAC,kBAAU0B,eAAgB,WACzBH,EAAKI,kBAAmB,EAAAzJ,EAAAvD,SAAG0F,EAAAtD,YAAsB6K,WAAWC,UAG7D,IAAI3nB,IAAc,CAQlB,IANK8hB,EAAO7pB,MAAQ6pB,EAAO9hB,YAC1BA,GAAgB8hB,EAAO5pB,IAAM4pB,EAAO5pB,IAAK,IAAQ,GAAImB,OAAS8B,eAAkB2mB,EAAO7pB,IAAK,GACjF6pB,EAAO9hB,cAClBA,EAAc8hB,EAAO9hB,aAGjB8hB,EAAO5pB,KAAOmR,MAAMrO,QAAS8mB,EAAO5pB,KAAQ,CAChD,GAAM0vB,GAAU,GAAIvuB,MAAMyoB,EAAO5pB,IAAK,GAAK4pB,EAAO5pB,IAAK,GAAK4pB,EAAO5pB,IAAK,IACrE0I,EAAU,GAAIvH,KAEZuuB,GAAQpsB,UAAYoF,EAAMpF,WAC9BqqB,EAAAC,kBAAUC,cAAe,WACxBsB,EAAKf,SAASlkB,SAAU,wBAsB3B,WAjB6B,KAAjB0f,EAAOlhB,OAA0BkhB,EAAOlhB,OACnDilB,EAAAC,kBAAUC,cAAe,WACxBsB,EAAKpM,OAAO7Y,SAAU,iCAIxBrL,KAAK+qB,QAAS,EAAA+E,EAAApM,YAAmBqH,GAChC9hB,YAAeA,EACfH,cAAe,EACfnH,OAAe,EACfoI,OAAe,EACfyB,UAAe,IAIVoiB,EAANvd,KAAArQ,MAEOA,OTk4FRiwB,EAAW1sB,US/3FXksB,+BT+3FsD,SS/3FrBtvB,GAAI,GAAA2wB,GAAA9wB,KAC/B+wB,SACAtS,SACEuS,EAAehxB,KAAKkkB,OAAOrhB,MAAM,EAAAokB,EAAAvD,SAAE,mBAEzCoL,GAAAC,kBAAU0B,eAAgB,WACxBM,EAAaC,EAAalgB,SAASa,KACnC8M,EAAQuS,EAAavS,QAEfuS,EAAatkB,GAAI,aACrBkD,OAAOX,WAAY,WACjBygB,EAAAuB,cAAcC,aAAa5B,KAAQwB,EAAKrB,+BAAxC9M,KAAAmO,KACC,OAIPhC,EAAAC,kBAAUC,cAAe,WAElB+B,EAAa,GAChBC,EAAa9J,SAAS7b,SAAU,gBAAiBc,YAAa,oBTs4FpE8jB,EAAW1sB,US/3FXisB,6BT+3FoD,SS/3FrBrvB,GAAI,GAAAgxB,GAAAnxB,KAC9BoxB,GAAe,CAEnBtC,GAAAC,kBAAU0B,eAAgB,WACzB,GACCY,GAAeF,EAAKjN,OAAOrhB,KAAM,kBAAmByuB,aAClCH,GAAKjN,OAAOpT,SAASW,IAAM0f,EAAKjN,OAAOoN,cAEnCD,EAAeF,EAAKT,iBAAiBY,gBAC3DF,GAAe,KAIjBtC,EAAAC,kBAAU0B,eAAgB,WACpBW,EACJD,EAAKjN,OAAO7Y,SAAU,mBAEtB8lB,EAAKjN,OAAO/X,YAAa,sBTq4FrB8jB,GACN3E,EAAW5H,QAEbpkB,GAAQokB,QSj4FOuM,GTq4FTsB,KACA,SAAUlyB,EAAQC,EAASC,GAEjC,YA2BA,SAASikB,GAAuBxf,GAAO,MAAOA,IAAOA,EAAIyf,WAAazf,GAAQ0f,QAAS1f,GUzlGvF,QAASwtB,KAAqB,GAAA5N,GAAA5jB,IACxBA,MAAKyxB,SACTC,EAAAhO,QAAIsL,cAAe,WAClBpL,EAAKE,OAAOzgB,KAAM,OAAQ,QAC1BugB,EAAK2L,SAASlsB,KAAM,gBAAiB,IACrCugB,EAAK6N,UAAW,IAGjBC,EAAAhO,QAAIsL,cAAe,WAClBpL,EAAKE,OAAOzgB,KAAM,OAAQ,YAC1BugB,EAAK2L,SAASoC,WAAY,iBAC1B/N,EAAK6N,UAAW,IAWnB,QAASG,KAAe,GAAA1F,GAAAlsB,IACvB0xB,GAAAhO,QAAI+M,eAAgB,WACnBvE,EAAK2F,SAAW3F,EAAKpI,OAAOra,QAG7BioB,EAAAhO,QAAIsL,cAAe,WACb9C,EAAK2F,QACT3F,EAAKpI,OAAOzY,SAAU,SAEtB6gB,EAAKpI,OAAO3X,YAAa,WAS5B,QAASyhB,KACR5tB,KAAKuvB,SAAS3sB,GAAI,QAAS4uB,EAAkB7O,KAAM3iB,OACnDA,KAAK8jB,OAAOlhB,GAAI,SAAUgvB,EAAYjP,KAAM3iB,OVuhG7CiV,OAAOyP,eAAeplB,EAAS,cAC9Bc,OAAO,GAGR,IAAI2kB,GAAmBxlB,EAAoB,GAEvCylB,EAAmBxB,EAAuBuB,GAE1CyD,EAA8BjpB,EAAoB,IAElDkpB,EAA8BjF,EAAuBgF,GAErDE,EAAanpB,EAAoB,IAEjCopB,EAAanF,EAAuBkF,GUtlGxCmF,EAAAtuB,EAAA,IV0lGIuuB,EAAuBtK,EAAuBqK,GUzlGlDiB,EAAAvvB,EAAA,IV6lGImyB,EAAclO,EAAuBsL,GUtiGnCgD,EVomGmB,SAAU7F,GUlmGlC,QAAA6F,KAAe,SAAA9M,EAAAtB,SAAA1jB,KAAA8xB,IAAA,EAAArJ,EAAA/E,SAAA1jB,KACdisB,EAAA5b,KAAArQ,OV6nGD,OA3BA,EAAI2oB,EAAWjF,SAASoO,EAAoB7F,GAO5C6F,EAAmBvuB,UUtmGnB2hB,KVsmGoC,SUtmG7BnkB,GAAqB,GAAdgqB,GAAcrb,UAAA1J,OAAA,OAAApG,KAAA8P,UAAA,GAAAA,UAAA,KAC3B,KAAK3O,EAAMT,KAAM,QAcjB,MAVAN,MAAKkkB,OAASnjB,EACdf,KAAK+qB,OAASA,EAEd/qB,KAAK8jB,OAAW9jB,KAAKkkB,OAAOrhB,KAAM,wBAClC7C,KAAKuvB,SAAWvvB,KAAKkkB,OAAOrhB,KAAM,qBAClC7C,KAAKyxB,UAAW,EAEhBG,EAAYvhB,KAAMrQ,MAClB4tB,EAAWvd,KAAMrQ,MAEVA,MV2mGD8xB,GACNhE,EAAqBpK,QAEvBpkB,GAAQokB,QU1mGOoO,GV8mGTC,KACA,SAAU1yB,EAAQC,EAASC,GAEjC,YA2BA,SAASikB,GAAuBxf,GAAO,MAAOA,IAAOA,EAAIyf,WAAazf,GAAQ0f,QAAS1f,GAxBvFiR,OAAOyP,eAAeplB,EAAS,cAC9Bc,OAAO,GAGR,IAAI2kB,GAAmBxlB,EAAoB,GAEvCylB,EAAmBxB,EAAuBuB,GAE1CyD,EAA8BjpB,EAAoB,IAElDkpB,EAA8BjF,EAAuBgF,GAErDE,EAAanpB,EAAoB,IAEjCopB,EAAanF,EAAuBkF,GWntGxCmF,EAAAtuB,EAAA,IXutGIuuB,EAAuBtK,EAAuBqK,GWrtGlDmE,EAAAzyB,EAAA,MXytGI0yB,EAAezO,EAAuBwO,GWnsGpCE,EX4tGsB,SAAUjG,GW1tGrC,QAAAiG,MAAe,EAAAlN,EAAAtB,SAAA1jB,KAAAkyB,EAAA,IAAAtO,IAAA,EAAA6E,EAAA/E,SAAA1jB,KACdisB,EAAA5b,KAAArQ,MADc,OAGd4jB,GAAKM,OAAS,KAEdN,EAAKiJ,YAAmB,KACxBjJ,EAAKuO,iBAAmB,KANVvO,EX6xGf,OAlEA,EAAI+E,EAAWjF,SAASwO,EAAuBjG,GA0B/CiG,EAAsB3uB,UWluGtB2hB,KXkuGuC,SWluGhCnkB,GAAQ,GAAAmrB,GAAAlsB,IACTe,GAAMT,KAAM,UAIjBN,KAAKkkB,OAASnjB,EAEdf,KAAK6sB,YAAmB7sB,KAAKkkB,OAAOrhB,KAAM,2BAA4BG,IAAK,GAC3EhD,KAAKmyB,iBAAmBnyB,KAAKkkB,OAAOrhB,KAAM,SAE1CovB,EAAAvO,QAAW9f,OAAQ5D,KAAK6sB,aACvBlf,MAASykB,SAAUpyB,KAAKmyB,iBAAiB1oB,QAAW,EACpD2O,KAAS,GACTrE,OACC7S,IAAQ,EACRC,IAAQ,KAETT,QACCkE,GAAO,SAAWxE,GACjB,MAAOgyB,UAAUhyB,GAAU,OAE5BuE,KAAO,SAAWvE,GACjB,MAAOgyB,UAAUhyB,OAKpBJ,KAAK6sB,YAAY7K,WAAWpf,GAAI,SAAU,SAAEgZ,EAAQnD,GACnDyT,EAAKiG,iBAAiB1oB,IAAKmS,EAAQnD,MAGpCzY,KAAKmyB,iBAAiBvvB,GAAI,SAAU,SAAEzC,GAErC,GAAMkN,GAAI+kB,SAAUlG,EAAKiG,iBAAiB1oB,QAAW,CACrDyiB,GAAKW,YAAY7K,WAAWlgB,KAAOuL,QXwuG9B6kB,GACNpE,EAAqBpK,QAQvBpkB,GAAQokB,QWvuGOwO,GX2uGTG,KACA,SAAUhzB,EAAQC,EAASC,GAEjC,YA2CA,SAASikB,GAAuBxf,GAAO,MAAOA,IAAOA,EAAIyf,WAAazf,GAAQ0f,QAAS1f,GYt2GvF,QAASsuB,KAAmB,GAAA1O,GAAA5jB,IACrBA,MAAKuyB,UAIXvyB,KAAKwyB,aAAazQ,UAElB2P,EAAAhO,QAAU+O,OAAQ,WACjB7O,EAAK2O,SAAU,EACf3O,EAAKM,OAAO/X,YAAa,uBAQ3B,QAASumB,KAAmB,GAAAxG,GAAAlsB,IACtBA,MAAKuyB,UAIVvyB,KAAKwyB,aAAe,GAAAG,GAAAjP,QAAkB1jB,KAAKkkB,OAAQoO,EAAgB3P,KAAM3iB,OAEzE0xB,EAAAhO,QAAU+O,OAAQ,WACjBvG,EAAKqG,SAAU,EACfrG,EAAKhI,OAAO7Y,SAAU,uBASxB,QAASunB,GAA0BzyB,GAClC,GAAM0yB,IAAO,EAAA5L,EAAAvD,SAAGvjB,EAAEiM,QAASymB,QAEtB,EAAA5L,EAAAvD,SAAGvjB,EAAEiM,QAASM,GAAI,mBAIvB1M,KAAK8yB,kBAAmBD,GAQzB,QAASjB,GAAczxB,GAGtB,GAFmBA,EAAEiM,OAAOhM,MAEZ4F,OAAS,EAKxB,YAJKhG,KAAKuyB,SACTD,EAAgBjiB,KAAMrQ,MAMxBA,MAAK+yB,kBAQN,QAASC,GAAW7yB,GACdH,KAAKizB,iBACTjzB,KAAKkkB,OAAOjhB,QAAS,QACrBjD,KAAKizB,gBAAiB,GAQxB,QAASC,KACR,GAAMC,GAAsBnzB,KAAKozB,aAAavwB,KAAM,aAC9CgwB,EAAsBM,EAAoBN,MAEhD7yB,MAAK8yB,kBAAmBD,GAQzB,QAASQ,GAAyBxyB,GACjC,GAAMsyB,GAAsBnzB,KAAKozB,aAAavwB,KAAM,aAC9CywB,EAAsBtzB,KAAKozB,aAAazS,WAAW3a,MAEzDmtB,GAAoBhnB,YAAa,WACjC,IAAIonB,GAAWJ,EAAoBre,QAAUjU,CAExC0yB,IAAYD,IAChBC,EAAW,GAGPA,EAAW,IACfA,EAAWD,EAAmB,GAG1BH,EAAoBntB,OACxBhG,KAAKozB,aAAazS,WAAW6S,GAAID,GAAWloB,SAAU,YAEtDrL,KAAKozB,aAAazS,WAAW6S,GAAI,GAAInoB,SAAU,YAUjD,QAASooB,GAAgBtzB,GAQxB,OAPgBA,EAAEoN,SAAWpN,EAAEoP,OAQ9B,IAAKmkB,GAAAhQ,QAAUiQ,GACdN,EAAuBhjB,KAAMrQ,MAAO,GACpCG,EAAEsL,gBACF,MACD,KAAKioB,GAAAhQ,QAAUkQ,KACdP,EAAuBhjB,KAAMrQ,KAAM,GACnCG,EAAEsL,gBACF,MACD,KAAKioB,GAAAhQ,QAAUmQ,MACdX,EAAY7iB,KAAMrQ,MAClBG,EAAEsL,kBAOL,QAASqoB,KACR9zB,KAAKozB,aAAaW,SAElB,EAAA9M,EAAAvD,SAAG,+BAAgCmP,KAAM7yB,KAAKg0B,cAAehmB,SAAUhO,KAAKozB,cAE5EV,EAAgBriB,KAAMrQ,MZuqGvBiV,OAAOyP,eAAeplB,EAAS,cAC9Bc,OAAO,GAGR,IAAI2kB,GAAmBxlB,EAAoB,GAEvCylB,EAAmBxB,EAAuBuB,GAE1CyD,EAA8BjpB,EAAoB,IAElDkpB,EAA8BjF,EAAuBgF,GAErDE,EAAanpB,EAAoB,IAEjCopB,EAAanF,EAAuBkF,GYx1GxC2C,EAAA9rB,EAAA,IZ41GI+rB,EAAa9H,EAAuB6H,GY31GxCyD,EAAAvvB,EAAA,IZ+1GImyB,EAAclO,EAAuBsL,GY91GzCmF,EAAA10B,EAAA,KZk2GIozB,EAAiBnP,EAAuByQ,GYj2G5CC,EAAA30B,EAAA,KZq2GI40B,EAAW3Q,EAAuB0Q,GYp2GtCtL,EAAArpB,EAAA,IZw2GI0nB,EAAWzD,EAAuBoF,GYt2GtCwL,EAAA70B,EAAA,KZ02GIm0B,EAAYlQ,EAAuB4Q,GYtsGjCC,EZg3GuB,SAAUpI,GY92GtC,QAAAoI,KAAsC,GAAxBC,GAAwB5kB,UAAA1J,OAAA,OAAApG,KAAA8P,UAAA,IAAAA,UAAA,MAAAsV,EAAAtB,SAAA1jB,KAAAq0B,EAAA,IAAAlE,IAAA,EAAA1H,EAAA/E,SAAA1jB,KACrCisB,EAAA5b,KAAArQ,MADqC,OAErCmwB,GAAKoE,eAAiBD,EAFenE,EZs/GtC,OAvIA,EAAIxH,EAAWjF,SAAS2Q,EAAwBpI,GAuBhDoI,EAAuB9wB,UYx3GvB2hB,KZw3GwC,SYx3GjCnkB,EAAOspB,GACb,IAAKtpB,EAAMT,KAAM,QAmBjB,MAfAN,MAAKe,MAAeA,EACpBf,KAAK8jB,OAAe/iB,EAAM8B,KAAM,SAChC7C,KAAKozB,aAAeryB,EAAM8B,KAAM,mBAChC7C,KAAKuyB,SAAe,EACpBvyB,KAAKqqB,QAAeA,EAEpBrqB,KAAKg0B,aAAejzB,EAAMT,KAAM,iBAEhCN,KAAKizB,gBAAiB,EAEtBjzB,KAAK8jB,OAAOlhB,GAAI,SAAS,EAAAuxB,EAAAzQ,SAAUkO,EAAYjP,KAAM3iB,MAAQ,MAC7DA,KAAK8jB,OAAOlhB,GAAI,QAAQ,EAAAuxB,EAAAzQ,SAAUsP,EAASrQ,KAAM3iB,MAAQ,MACzDA,KAAK8jB,OAAOlhB,GAAI,UAAW6wB,EAAc9Q,KAAM3iB,OAC/CA,KAAKe,MAAM6B,GAAI,QAAS,kBAAmBgwB,EAAwBjQ,KAAM3iB,OAElEA,MZk4GRq0B,EAAuB9wB,UY13GvBuvB,kBZ03GqD,SY13GjCD,GACnB7yB,KAAKkkB,OAAOjhB,QAAS,qBACrBjD,KAAK8jB,OAAOra,IAAKopB,GACjBP,EAAgBjiB,KAAMrQ,OZq4GvBq0B,EAAuB9wB,UY53GvBwvB,gBZ43GmD,SY53GjCyB,GAAQ,GAAAlE,GAAAtwB,KAErBI,EAAQJ,KAAK8jB,OAAOra,KAMxB,IAJK+qB,IACJp0B,EAAQo0B,IAGHx0B,KAAKqqB,UAAYrqB,KAAKqqB,QAAQoK,eAEnC,WADAX,GAAiBzjB,KAAMrQ,KAIxBA,MAAKqqB,QAAQoK,eAAgBr0B,GAAQkvB,KAAM,SAAEoF,GAC5C,IAAMA,EAAY1uB,OAEjB,WADA8tB,GAAiBzjB,KAAjBigB,EAIDA,GAAK8C,aAAaW,QAYlB9M,EAAAvD,QAAEnT,KAAMmkB,EAAa,SAAE/zB,IACtB,EAAAsmB,EAAAvD,SAAG,SAAUmP,KAAM6B,EAAa/zB,IAAMqN,SAAUsiB,EAAK8C,gBAEtDV,EAAgBriB,KAAhBigB,KACGqE,MAAOb,EAAiBnR,KAAM3iB,QZ04GnCq0B,EAAuB9wB,UY73GvB2hB,KZ63GwC,SY73GjCnkB,EAAOgqB,GAgBb,MAfA/qB,MAAKkkB,OAAgBnjB,EACrBf,KAAK8jB,OAAgB/iB,EAAM8B,KAAM,SACjC7C,KAAKozB,aAAgBryB,EAAM8B,KAAM,mBACjC7C,KAAKuyB,SAAgB,EACrBvyB,KAAKqqB,QAAgBU,EAAOV,QAE5BrqB,KAAKg0B,aAAgBjJ,EAAO6J,SAE5B50B,KAAKizB,gBAAiB,EAEtBjzB,KAAK8jB,OAAOlhB,GAAI,SAAS,EAAAuxB,EAAAzQ,SAAUkO,EAAYjP,KAAM3iB,MAAQ,MAC7DA,KAAK8jB,OAAOlhB,GAAI,QAAQ,EAAAuxB,EAAAzQ,SAAUsP,EAASrQ,KAAM3iB,MAAQ,MACzDA,KAAK8jB,OAAOlhB,GAAI,UAAW6wB,EAAc9Q,KAAM3iB,OAC/CA,KAAKkkB,OAAOthB,GAAI,QAAS,kBAAmBgwB,EAAwBjQ,KAAM3iB,OAEnEA,MZg4GDq0B,GACN/I,EAAW5H,QAEbpkB,GAAQokB,QY93GO2Q,GZk4GTQ,KACA,SAAUx1B,EAAQC,EAASC,GAEjC,YA2BA,SAASikB,GAAuBxf,GAAO,MAAOA,IAAOA,EAAIyf,WAAazf,GAAQ0f,QAAS1f,Ga/rHvF,QAASvC,KAAU,GAAAmiB,GAAA5jB,IAElB0xB,GAAAhO,QAAUsL,cAAe,WACxBpL,EAAKM,OAAO/X,YAAa,4BACzByX,EAAKM,OAAO/X,YAAa,yBACzByX,EAAKE,OAAOgR,KAAM,YAAY,GAC9BlR,EAAKE,OAAO7gB,QAAS,SACrB2gB,EAAKM,OAAOjhB,QAAS,yBACrB2gB,EAAKzgB,UAAW,IAQlB,QAAS3B,KAAW,GAAA0qB,GAAAlsB,IACnB0xB,GAAAhO,QAAU+M,eAAgB,WAEE,KAAtBvE,EAAKpI,OAAOra,OAChBioB,EAAAhO,QAAUsL,cAAe,WACxB9C,EAAKhI,OAAO7Y,SAAU,4BACtB6gB,EAAKpI,OAAOgR,KAAM,YAAY,GAC9B5I,EAAKhI,OAAOjhB,QAAS,0BACrBipB,EAAKpI,OAAO9gB,IAAK,GAAI5C,MAAQ8rB,EAAKpI,OAAOra,MACzCyiB,EAAK/oB,UAAwB,MAUjC,QAAS4xB,KAEH/0B,KAAKmD,SACT1B,EAAO4O,KAAMrQ,MAEbwB,EAAQ6O,KAAMrQ,Mb+nHhBiV,OAAOyP,eAAeplB,EAAS,cAC9Bc,OAAO,GAGR,IAAI2kB,GAAmBxlB,EAAoB,GAEvCylB,EAAmBxB,EAAuBuB,GAE1CyD,EAA8BjpB,EAAoB,IAElDkpB,EAA8BjF,EAAuBgF,GAErDE,EAAanpB,EAAoB,IAEjCopB,EAAanF,EAAuBkF,Ga7rHxC2C,EAAA9rB,EAAA,IbisHI+rB,EAAa9H,EAAuB6H,Ga/rHxCyD,EAAAvvB,EAAA,IbmsHImyB,EAAclO,EAAuBsL,Ga5oHnCkG,EbwsHwB,SAAU/I,GatsHvC,QAAA+I,KAAe,SAAAhQ,EAAAtB,SAAA1jB,KAAAg1B,IAAA,EAAAvM,EAAA/E,SAAA1jB,KACdisB,EAAA5b,KAAArQ,ObwuHD,OAlCA,EAAI2oB,EAAWjF,SAASsR,EAAyB/I,GAiBjD+I,EAAwBzxB,Ua5sHxB2hB,Kb4sHyC,Sa5sHlChB,GACN,IAAKA,EAAO5jB,KAAM,QAalB,MATAN,MAAKkkB,OAAWA,EAChBlkB,KAAK8jB,OAAWI,EAAOrhB,KAAM,SAC7B7C,KAAKuvB,SAAWrL,EAAOrhB,KAAM,2BAC7B7C,KAAKmD,SAAW+gB,EAAOxX,GAAI,6BAE3B1M,KAAKuvB,SAAS3sB,GAAI,QAASmyB,EAAYpS,KAAM3iB,OAC7CA,KAAKkkB,OAAOthB,GAAI,oBAAqBpB,EAAQmhB,KAAM3iB,OACnDA,KAAKkkB,OAAOthB,GAAI,OAAQpB,EAAQmhB,KAAM3iB,OAE/BA,Mb+sHDg1B,GACN1J,EAAW5H,QAEbpkB,GAAQokB,Qa7sHOsR,GbitHTC,KACA,SAAU51B,EAAQC,EAASC,GAEjC,YA2BA,SAASikB,GAAuBxf,GAAO,MAAOA,IAAOA,EAAIyf,WAAazf,GAAQ0f,QAAS1f,Gc/zHvF,QAAS4tB,GAAczxB,GAAI,GAAAyjB,GAAA5jB,KACpBk1B,EAAa/0B,EAAEiM,OACFjM,EAAEiM,OAAOhM,MACTD,EAAEsJ,KAErBioB,GAAAhO,QAAUsL,cAAe,WACxBpL,EAAK2L,SAASlsB,KAAM,WAAY6xB,EAAWlvB,OAAS,GAEpB,QAUlC,QAAS4nB,KAAc,GAAA1B,GAAAlsB,IAEtBA,MAAK8jB,OAAOlhB,GAAI,QAASgvB,EAAYjP,KAAM3iB,OAE3CA,KAAKuvB,SAAS3sB,GAAI,QAAS,WAC1B8uB,EAAAhO,QAAUsL,cAAe,WACxB9C,EAAKpI,OAAOra,IAAK,IACjByiB,EAAKqD,SAASlsB,KAAM,YAAY,Od8wHnC4R,OAAOyP,eAAeplB,EAAS,cAC9Bc,OAAO,GAGR,IAAI2kB,GAAmBxlB,EAAoB,GAEvCylB,EAAmBxB,EAAuBuB,GAE1CyD,EAA8BjpB,EAAoB,IAElDkpB,EAA8BjF,EAAuBgF,GAErDE,EAAanpB,EAAoB,IAEjCopB,EAAanF,EAAuBkF,Gc/zHxCmF,EAAAtuB,EAAA,Idm0HIuuB,EAAuBtK,EAAuBqK,Gcl0HlDiB,EAAAvvB,EAAA,Ids0HImyB,EAAclO,EAAuBsL,Gc3xHnCqG,Edw0HqB,SAAUlJ,Gct0HpC,QAAAkJ,KAAe,SAAAnQ,EAAAtB,SAAA1jB,KAAAm1B,IAAA,EAAA1M,EAAA/E,SAAA1jB,KACdisB,EAAA5b,KAAArQ,Od81HD,OAxBA,EAAI2oB,EAAWjF,SAASyR,EAAsBlJ,GAO9CkJ,EAAqB5xB,Uc10HrB2hB,Kd00HsC,Sc10H/BnkB,GAAqB,GAAdgqB,GAAcrb,UAAA1J,OAAA,OAAApG,KAAA8P,UAAA,GAAAA,UAAA,KACtB3O,GAAMT,KAAM,UAIjBN,KAAKkkB,OAASnjB,EACdf,KAAK+qB,OAASA,EAEd/qB,KAAK8jB,OAAW9jB,KAAKkkB,OAAOrhB,KAAM,wBAAyBuyB,IAAK,iBAChEp1B,KAAKuvB,SAAWvvB,KAAKkkB,OAAOrhB,KAAM,kBAElC+uB,EAAYvhB,KAAMrQ,KAAMA,KAAK8jB,QAC7B8J,EAAWvd,KAAMrQ,Qd+0HXm1B,GACNrH,EAAqBpK,QAEvBpkB,GAAQokB,Qc90HOyR,Gdk1HTE,KACA,SAAUh2B,EAAQC,EAASC,GAEjC,YAyGA,SAASikB,GAAuBxf,GAAO,MAAOA,IAAOA,EAAIyf,WAAazf,GAAQ0f,QAAS1f,Gen/HvF,QAASsxB,GAA0BC,GAAU,GAAA3R,GAAA5jB,IAC5C0xB,GAAAhO,QAAUsL,cAAe,iBAAMpL,GAAK4R,cAAc3C,KAAO0C,GAAU3R,EAAKC,eASzE,QAAS4R,KAAgB,GAAAvJ,GAAAlsB,KACpBu1B,EAAoB,GAClBG,EAAkB11B,KAAK21B,cAAc9yB,KAAM,kBAEjD6uB,GAAAhO,QAAU+M,eAAgB,WAGxB8E,EADIG,EAAgB1vB,OAAS,EACnB0vB,EAAgB7C,OAEhB6C,EAAgB1vB,OAAS,oBAGpCsvB,EAAwBjlB,KAAxB6b,EAAoCqJ,KAStC,QAASK,KAA2B,GAAAzF,GAAAnwB,IACnC,SAAKA,KAAK61B,aAAe71B,KAAK81B,UAIzB91B,KAAKwyB,cACTxyB,KAAKwyB,aAAazQ,UAGnB2P,EAAAhO,QAAU+O,OAAQ,WACjBtC,EAAKwF,cAAczpB,OAAOylB,WAAY,iBACtCxB,EAAK2F,QAAS,KAGR,GAOR,QAASC,KAA2B,GAAAzF,GAAAtwB,IACnC,QAAKA,KAAK61B,aAAc71B,KAAK81B,SAI7BpE,EAAAhO,QAAUpe,QAAS,WAClB,GAAM+N,IAAmB,EAAA4T,EAAAvD,SAAGpU,UAAW+D,YACpC2iB,EAAmB1F,EAAKvvB,MAAM+P,SAASW,IAAM4B,EAAYid,EAAKvvB,MAAMuwB,cACpE2E,GAAmB,EAAAhP,EAAAvD,SAAG9T,QAASC,SAI9BA,EAAaomB,EAAiBD,EAAmB,GAE/CE,EALgB,IAKSrmB,CAE1BA,GAPiB,OAQrB,EAAAoX,EAAAvD,SAAG,cAAerN,SAAWhD,UAAYA,EAAY6iB,IACrDrmB,EATqB,KAYjBA,EAXiB,MAYrBA,EAZqB,KAetB6hB,EAAAhO,QAAU+O,OAAQ,WACjBnC,EAAKqF,cAAchpB,QAAQtJ,KAAM,gBAAiB,IAClDitB,EAAK6F,sBAAsB9mB,IAAK,aAAcQ,GAC9CygB,EAAKwF,QAAS,MAIhB91B,KAAKwyB,aAAe,GAAAG,GAAAjP,QAAkB1jB,KAAKo2B,eAAgBR,EAAwBjT,KAAM3iB,QAElF,GAUR,QAASq2B,GAAoBC,EAAiBC,EAAa11B,GAC1D,GAAI21B,GAAiBF,CAUrB,OARKA,IAAmBC,IACvBC,EAAiB,GAGbF,EAAkB,IACtBE,EAAiBD,EAAc,GAG3Bv2B,KAAKy2B,SAAUD,GAAiBrzB,UACpCqzB,GAAkB31B,EACXw1B,EAAkBhmB,KAAMrQ,KAAMw2B,EAAgBD,EAAa11B,IAG5D21B,EAGR,QAASE,KACR,MAAO12B,MAAK01B,gBAAgB/P,OAAQ,SAAElc,EAAK/H,GAAP,MAAiB+H,IAAgB,KAARA,EAAa,GAAK,MAAS/H,EAAKmxB,MAAM,IAOpG,QAAS8D,GAAoBC,EAAeC,EAAuBC,GAMlE,MALA92B,MAAK01B,gBAAgB5tB,MACpBgN,MAAQ8hB,EACR/D,KAAQiE,EAAsBjE,SAGxB/D,EAAAC,kBAAkBC,cAAe,WACvC8H,EAAsBhC,KAAM,YAAY,GACxC+B,EAAsBxrB,SAAU,cAIlC,QAAS0rB,GAAuBH,EAAeC,EAAuBC,GAGrE,MAFA92B,MAAK01B,gBAAkB11B,KAAK01B,gBAAgB3vB,OAAQ,SAAArE,GAAA,MAAQA,GAAKoT,QAAU8hB,IAEpE9H,EAAAC,kBAAkBC,cAAe,WACvC8H,EAAsBhC,KAAM,YAAY,GACxC+B,EAAsB1qB,YAAa,cAgCrC,QAAS6qB,GAAeJ,GAAgB,GAAA9F,GAAA9wB,IACvC,QAA8B,KAAlB42B,EAAZ,CAIA,GAAK52B,KAAKi3B,cAET,WADMC,GAAN7mB,KAAArQ,KAA4B42B,EAI7B,IAAMO,GAAuBn3B,KAAKo2B,eAAevzB,KAAM,aACpDu0B,EAAuBp3B,KAAKo2B,eAAevzB,KAAM,aAAe+zB,EAAgB,KAChFS,GAAuB,EAAApQ,EAAAvD,SAAG1jB,KAAKy2B,SAASzzB,IAAK4zB,IAC7CrB,EAAuB8B,EAAqBxE,MAE/CnB,GAAAhO,QAAUsL,cAAe,WACxB8B,EAAK2F,SAAS3B,KAAM,YAAY,GAChCqC,EAAiBhrB,YAAa,YAC9BkrB,EAAqBvC,KAAM,YAAY,GACvCsC,EAAqB/rB,SAAU,YAC/BylB,EAAK6E,cAAc1yB,QAAS,SAE5B,IACCq0B,GAAoBhoB,SAAS6f,YAAa,QAE3CmI,GAAkBlI,UAAW,UAAU,GAAO,GAE9C0B,EAAK6E,cAAe,GAAItG,cAAeiI,KAExChC,EAAwBjlB,KAAMrQ,KAAMu1B,IAQrC,QAASlC,GAAyBxyB,GACjC,GAAM02B,GAAkBv3B,KAAKo2B,eAAevzB,KAAM,aAC/C20B,EAAkBD,EAAgBj3B,KAAM,OACxCi2B,EAAkBv2B,KAAKy2B,SAASzwB,OAE/BswB,EAAkB,CAKrBA,GAHKkB,EAGaA,EAAc32B,EAFd,EAKnBm2B,EAAa3mB,KAAMrQ,KAAMq2B,EAAkBhmB,KAAMrQ,KAAMs2B,EAAiBC,EAAa11B,IAQtF,QAASqyB,KACR0C,EAAwBvlB,KAAMrQ,MAQ/B,QAASyzB,GAAgBtzB,GACxB,GAAKH,KAAK61B,aAAe71B,KAAK81B,OAC7B,OAAO,CAGR,IAAMvoB,GAAUpN,EAAEoN,SAAWpN,EAAEoP,KAE/B,IAAKhC,IAAYmmB,EAAAhQ,QAAU+T,IAE1B,MADA7B,GAAwBvlB,KAAMrQ,OACvB,CAKR,QAFAG,EAAEsL,iBAEO8B,GAER,IAAKmmB,GAAAhQ,QAAUiQ,GACdN,EAAuBhjB,KAAMrQ,MAAO,EACpC,MACD,KAAK0zB,GAAAhQ,QAAUkQ,KACdP,EAAuBhjB,KAAMrQ,KAAM,EACnC,MACD,KAAK0zB,GAAAhQ,QAAUmQ,MACdX,EAAY7iB,KAAMrQ,MAMpB,OAAO,EAUR,QAAS03B,GAAkBv3B,GAC1BA,EAAEsL,iBASH,QAASksB,GAAcx3B,GACtBA,EAAEsL,iBAEGzL,KAAK81B,OACTF,EAAwBvlB,KAAMrQ,MAE9B+1B,EAAwB1lB,KAAMrQ,MAShC,QAAS43B,GAA0Bz3B,GAAI,GAAAgxB,GAAAnxB,IACtCG,GAAEsL,iBAEFimB,EAAAhO,QAAUpe,QAAS,WAClB,GAAMuyB,IAAiB,EAAA5Q,EAAAvD,SAAGvjB,EAAEiM,QACzBwqB,EAAiBiB,EAAev3B,KAAM,MAEnC6wB,GAAK8F,eACVrB,EAAwBvlB,KAAxB8gB,GAED6F,EAAa3mB,KAAb8gB,EAAyByF,KAQ3B,QAASkB,KAAyB,GAAAC,GAAA/3B,KAC3Bo2B,GAAwB,EAAAnP,EAAAvD,SAAG,sCAC9ByS,GAAwB,EAAAlP,EAAAvD,SAAG,6CAE9B0S,GAAeloB,OAAQioB,GAEvBlP,EAAAvD,QAAEnT,KAAMvQ,KAAKy2B,SAAU,SAAE3hB,EAAOkjB,GAC/B,GAAMC,IAAU,EAAAhR,EAAAvD,SAAGsU,EAEnB,KAAMC,EAAQ50B,KAAM,YAAe,CAClC,GAAM60B,IAAa,EAAAjR,EAAAvD,SAAG,iCAAmC5O,EAAQ,WAAamjB,EAAQpF,OAAS,gBAE/FqF,GAAWt1B,GAAI,QAASg1B,EAAwBjV,KAAxBoV,IACxBrG,EAAAhO,QAAUsL,cAAe,iBAAMmH,GAAsBjoB,OAAQgqB,QAI/Dl4B,KAAKo2B,eAAwBA,EAC7Bp2B,KAAKm2B,sBAAwBA,EAC7BzE,EAAAhO,QAAUsL,cAAe,iBAAM+I,GAAKvC,cAAcrnB,MAAOioB,KfyjH1DnhB,OAAOyP,eAAeplB,EAAS,cAC9Bc,OAAO,GAGR,IAAI2kB,GAAmBxlB,EAAoB,GAEvCylB,EAAmBxB,EAAuBuB,GAE1CyD,EAA8BjpB,EAAoB,IAElDkpB,EAA8BjF,EAAuBgF,GAErDE,EAAanpB,EAAoB,IAEjCopB,EAAanF,EAAuBkF,GAEpCyP,EAAe54B,EAAoB,MAEnC64B,EAAgB5U,EAAuB2U,GAEvCE,EAAqB94B,EAAoB,MAEzC+4B,EAAqB9U,EAAuB6U,GAE5CnB,EAAuB,WAC1B,GAAIqB,IAAO,EAAID,EAAmB5U,SAAuB0U,EAAc1U,QAAQ8U,KetxHhF,QAAAC,GAAsC7B,GAAtC,GAAAC,GAAAC,EAAAQ,CAAA,OAAAc,GAAA1U,QAAAzY,KAAA,SAAAytB,GAAA,cAAAA,EAAAtW,KAAAsW,EAAA1O,MAAA,UAEE6M,EAAwB72B,KAAKo2B,eAAevzB,KAAM,aAAe+zB,EAAgB,KACjFE,GAAwB,EAAA7P,EAAAvD,SAAG1jB,KAAKy2B,SAASzzB,IAAK4zB,KAE1CC,EAAsBjqB,SAAU,YALtC,CAAA8rB,EAAA1O,KAAA,cAAA0O,GAAA1O,KAAA,EAMc+M,EAAN1mB,KAAArQ,KAA4B42B,EAAeC,EAAuBC,EAN1E,QAAA4B,EAAA1O,KAAA,qBAAA0O,GAAA1O,KAAA,EAQc2M,EAANtmB,KAAArQ,KAAyB42B,EAAeC,EAAuBC,EARvE,QAWC92B,KAAK21B,cAAc1yB,QAAS,UAG3Bq0B,EAAoBhoB,SAAS6f,YAAa,SAE3CmI,EAAkBlI,UAAW,UAAU,GAAO,GAE9CpvB,KAAK21B,cAAe,GAAItG,cAAeiI,GAEvChC,EAAwBjlB,KAAMrQ,KAAY02B,EAANrmB,KAAArQ,MApBrC,yBAAA04B,GAAAnqB,SAAAkqB,EAAAz4B,Qfm0HC,OAAO,UAA8B24B,GACpC,MAAOJ,GAAK14B,MAAMG,KAAM0P,eej+H1B2b,EAAA9rB,EAAA,If8+HI+rB,EAAa9H,EAAuB6H,Ge7+HxCyD,EAAAvvB,EAAA,Ifi/HImyB,EAAclO,EAAuBsL,Geh/HzClG,EAAArpB,EAAA,Ifo/HI0nB,EAAWzD,EAAuBoF,Gen/HtCqL,EAAA10B,EAAA,Kfu/HIozB,EAAiBnP,EAAuByQ,Get/H5CG,EAAA70B,EAAA,Kf0/HIm0B,EAAYlQ,EAAuB4Q,Gex/HjC5iB,EAAY5B,OAAOogB,UAkWnB4I,Efs/HiB,SAAU3M,Gep/HhC,QAAA2M,KAAe,SAAA5T,EAAAtB,SAAA1jB,KAAA44B,IAAA,EAAAnQ,EAAA/E,SAAA1jB,KACdisB,EAAA5b,KAAArQ,Of0jID,OAtEA,EAAI2oB,EAAWjF,SAASkV,EAAkB3M,GAiB1C2M,EAAiBr1B,Ue1/HjB2hB,Kf0/HkC,Se1/H3BnkB,GAAQ,GAAA83B,GAAA74B,IACd,KAAKe,EAAMT,KAAM,QAiCjB,MA7BAN,MAAKe,MAAaA,EAClBf,KAAK84B,MAAa/3B,EAAO,GACzBf,KAAK81B,QAAa,EAClB91B,KAAK61B,YAAa,EAElB71B,KAAK21B,cAAgB31B,KAAKe,MAAM8B,KAAM,UACtC7C,KAAKy2B,SAAgBz2B,KAAKe,MAAM8B,KAAM,UACtC7C,KAAKw1B,cAAgBx1B,KAAKe,MAAM8B,KAAM,6BAEtC7C,KAAK6jB,YAAkB7jB,KAAK21B,cAActyB,KAAM,eAChDrD,KAAK01B,mBACL11B,KAAKi3B,cAAkBj3B,KAAK21B,cAActyB,KAAM,YAEhDquB,EAAAhO,QAAU+M,eAAgB,WACzBoI,EAAKhD,WAAagD,EAAKlD,cAAcjpB,GAAI,eAG1C+oB,EAAaplB,KAAMrQ,MAEnBA,KAAK21B,cAAc/yB,GAAI,SAAU6yB,EAAa9S,KAAM3iB,OAE9CwR,EAAUmd,WACfmJ,EAAsBznB,KAAMrQ,MAC5BA,KAAK21B,cAAc/yB,GAAI,YAAa80B,EAAgB/U,KAAM3iB,OAC1DA,KAAKw1B,cAAc5yB,GAAI,QAAS+0B,EAAYhV,KAAM3iB,OAClDA,KAAK21B,cAAc/yB,GAAI,QAASmzB,EAAwBpT,KAAM3iB,OAC9DA,KAAK21B,cAAc/yB,GAAI,UAAW6wB,EAAc9Q,KAAM3iB,QAGhDA,Mf+/HR44B,EAAiBr1B,Ue5/HjBwe,Qf4/HqC,We3/H/B/hB,KAAKo2B,iBACTp2B,KAAKm2B,sBAAwB,KAC7Bn2B,KAAKo2B,eAAernB,SACpB/O,KAAKo2B,eAAiB,MAGvBp2B,KAAK21B,cAAczmB,IAAK,UACxBlP,KAAK21B,cAAczmB,IAAK,aACxBlP,KAAKw1B,cAActmB,IAAK,SACxBlP,KAAK21B,cAAczmB,IAAK,SACxBlP,KAAK21B,cAAczmB,IAAK,Yf+/HlB0pB,GACNtN,EAAW5H,QAEbpkB,GAAQokB,Qe7/HOkV,GfigITG,KACA,SAAU15B,EAAQC,EAASC,GgB76IjCF,EAAAC,QAAAC,EAAA,OhBo7IMy5B,KACA,SAAU35B,EAAQC,EAASC,GiB56IjC,GAAAgB,GAAA,WAAqB,MAAAP,UAAci5B,SAAA,iBAInCC,EAAA34B,EAAA44B,oBACAlkB,OAAAmkB,oBAAA74B,GAAAsG,QAAA,yBAGAwyB,EAAAH,GAAA34B,EAAA44B,kBAOA,IAJA54B,EAAA44B,uBAAAv5B,GAEAP,EAAAC,QAAAC,EAAA,MAEA25B,EAEA34B,EAAA44B,mBAAAE,MAGA,WACA94B,GAAA44B,mBACG,MAAAh5B,GACHI,EAAA44B,uBAAAv5B,KjB87IM05B,KACA,SAAUj6B,EAAQC,IkBx9IxB,SAAAi6B,GACA,YA2BA,SAAAtuB,GAAAuuB,EAAAC,EAAAC,EAAAC,GAEA,GAAAC,GAAAH,KAAAl2B,oBAAAs2B,GAAAJ,EAAAI,EACAC,EAAA7kB,OAAArR,OAAAg2B,EAAAr2B,WACA8hB,EAAA,GAAA0U,GAAAJ,MAMA,OAFAG,GAAAE,QAAAC,EAAAT,EAAAE,EAAArU,GAEAyU,EAcA,QAAAI,GAAA5pB,EAAAtM,EAAAm2B,GACA,IACA,OAAc1tB,KAAA,SAAA0tB,IAAA7pB,EAAAD,KAAArM,EAAAm2B,IACT,MAAAjQ,GACL,OAAczd,KAAA,QAAA0tB,IAAAjQ,IAiBd,QAAA2P,MACA,QAAAO,MACA,QAAAC,MA4BA,QAAAC,GAAA/2B,IACA,yBAAAkU,QAAA,SAAA6H,GACA/b,EAAA+b,GAAA,SAAA6a,GACA,MAAAn6B,MAAAg6B,QAAA1a,EAAA6a,MAoCA,QAAAI,GAAAT,GACA,QAAAU,GAAAlb,EAAA6a,EAAAM,EAAA5L,GACA,GAAA6L,GAAAR,EAAAJ,EAAAxa,GAAAwa,EAAAK,EACA,cAAAO,EAAAjuB,KAEO,CACP,GAAAgY,GAAAiW,EAAAP,IACA/5B,EAAAqkB,EAAArkB,KACA,OAAAA,IACA,gBAAAA,IACAu6B,EAAAtqB,KAAAjQ,EAAA,WACAw6B,QAAAH,QAAAr6B,EAAAy6B,SAAAvL,KAAA,SAAAlvB,GACAo6B,EAAA,OAAAp6B,EAAAq6B,EAAA5L,IACW,SAAA3E,GACXsQ,EAAA,QAAAtQ,EAAAuQ,EAAA5L,KAIA+L,QAAAH,QAAAr6B,GAAAkvB,KAAA,SAAAwL,GAgBArW,EAAArkB,MAAA06B,EACAL,EAAAhW,IACSoK,GAhCTA,EAAA6L,EAAAP,KAsCA,QAAAY,GAAAzb,EAAA6a,GACA,QAAAa,KACA,UAAAJ,SAAA,SAAAH,EAAA5L,GACA2L,EAAAlb,EAAA6a,EAAAM,EAAA5L,KAIA,MAAAoM,GAaAA,IAAA3L,KACA0L,EAGAA,GACAA,IA3BA,GAAAC,EAgCAj7B,MAAAg6B,QAAAe,EAwBA,QAAAd,GAAAT,EAAAE,EAAArU,GACA,GAAApF,GAAAib,CAEA,iBAAA5b,EAAA6a,GACA,GAAAla,IAAAkb,EACA,SAAAjmB,OAAA,+BAGA,IAAA+K,IAAAmb,EAAA,CACA,aAAA9b,EACA,KAAA6a,EAKA,OAAAkB,KAMA,IAHAhW,EAAA/F,SACA+F,EAAA8U,QAEA,CACA,GAAAmB,GAAAjW,EAAAiW,QACA,IAAAA,EAAA,CACA,GAAAC,GAAAC,EAAAF,EAAAjW,EACA,IAAAkW,EAAA,CACA,GAAAA,IAAAE,EAAA,QACA,OAAAF,IAIA,YAAAlW,EAAA/F,OAGA+F,EAAAqW,KAAArW,EAAAsW,MAAAtW,EAAA8U,QAES,cAAA9U,EAAA/F,OAAA,CACT,GAAAW,IAAAib,EAEA,KADAjb,GAAAmb,EACA/V,EAAA8U,GAGA9U,GAAAuW,kBAAAvW,EAAA8U,SAES,WAAA9U,EAAA/F,QACT+F,EAAAwW,OAAA,SAAAxW,EAAA8U,IAGAla,GAAAkb,CAEA,IAAAT,GAAAR,EAAAV,EAAAE,EAAArU,EACA,eAAAqV,EAAAjuB,KAAA,CAOA,GAJAwT,EAAAoF,EAAA4E,KACAmR,EACAU,EAEApB,EAAAP,MAAAsB,EACA,QAGA,QACAr7B,MAAAs6B,EAAAP,IACAlQ,KAAA5E,EAAA4E,MAGS,UAAAyQ,EAAAjuB,OACTwT,EAAAmb,EAGA/V,EAAA/F,OAAA,QACA+F,EAAA8U,IAAAO,EAAAP,OAUA,QAAAqB,GAAAF,EAAAjW,GACA,GAAA/F,GAAAgc,EAAAS,SAAA1W,EAAA/F,OACA,IAAAA,IAAA1f,EAAA,CAKA,GAFAylB,EAAAiW,SAAA,KAEA,UAAAjW,EAAA/F,OAAA,CACA,GAAAgc,EAAAS,SAAA5R,SAGA9E,EAAA/F,OAAA,SACA+F,EAAA8U,IAAAv6B,EACA47B,EAAAF,EAAAjW,GAEA,UAAAA,EAAA/F,QAGA,MAAAmc,EAIApW,GAAA/F,OAAA,QACA+F,EAAA8U,IAAA,GAAA6B,WACA,kDAGA,MAAAP,GAGA,GAAAf,GAAAR,EAAA5a,EAAAgc,EAAAS,SAAA1W,EAAA8U,IAEA,cAAAO,EAAAjuB,KAIA,MAHA4Y,GAAA/F,OAAA,QACA+F,EAAA8U,IAAAO,EAAAP,IACA9U,EAAAiW,SAAA,KACAG,CAGA,IAAArU,GAAAsT,EAAAP,GAEA,OAAA/S,GAOAA,EAAA6C,MAGA5E,EAAAiW,EAAAW,YAAA7U,EAAAhnB,MAGAilB,EAAA2E,KAAAsR,EAAAY,QAQA,WAAA7W,EAAA/F,SACA+F,EAAA/F,OAAA,OACA+F,EAAA8U,IAAAv6B,GAUAylB,EAAAiW,SAAA,KACAG,GANArU,GA3BA/B,EAAA/F,OAAA,QACA+F,EAAA8U,IAAA,GAAA6B,WAAA,oCACA3W,EAAAiW,SAAA,KACAG,GAoDA,QAAAU,GAAAC,GACA,GAAA9mB,IAAiB+mB,OAAAD,EAAA,GAEjB,KAAAA,KACA9mB,EAAAgnB,SAAAF,EAAA,IAGA,IAAAA,KACA9mB,EAAAinB,WAAAH,EAAA,GACA9mB,EAAAknB,SAAAJ,EAAA,IAGAp8B,KAAAy8B,WAAA30B,KAAAwN,GAGA,QAAAonB,GAAApnB,GACA,GAAAolB,GAAAplB,EAAAqnB,cACAjC,GAAAjuB,KAAA,eACAiuB,GAAAP,IACA7kB,EAAAqnB,WAAAjC,EAGA,QAAAX,GAAAJ,GAIA35B,KAAAy8B,aAAwBJ,OAAA,SACxB1C,EAAAliB,QAAA0kB,EAAAn8B,MACAA,KAAA48B,OAAA,GA8BA,QAAAhhB,GAAAihB,GACA,GAAAA,EAAA,CACA,GAAAC,GAAAD,EAAAE,EACA,IAAAD,EACA,MAAAA,GAAAzsB,KAAAwsB,EAGA,sBAAAA,GAAA7S,KACA,MAAA6S,EAGA,KAAA/qB,MAAA+qB,EAAA72B,QAAA,CACA,GAAArF,IAAA,EAAAqpB,EAAA,QAAAA,KACA,OAAArpB,EAAAk8B,EAAA72B,QACA,GAAA20B,EAAAtqB,KAAAwsB,EAAAl8B,GAGA,MAFAqpB,GAAA5pB,MAAAy8B,EAAAl8B,GACAqpB,EAAAC,MAAA,EACAD,CAOA,OAHAA,GAAA5pB,MAAAR,EACAoqB,EAAAC,MAAA,EAEAD,EAGA,OAAAA,WAKA,OAAYA,KAAAqR,GAIZ,QAAAA,KACA,OAAYj7B,MAAAR,EAAAqqB,MAAA,GA7fZ,GAEArqB,GAFAo9B,EAAA/nB,OAAA1R,UACAo3B,EAAAqC,EAAAtnB,eAEAunB,EAAA,kBAAAC,kBACAH,EAAAE,EAAAlB,UAAA,aACAoB,EAAAF,EAAAG,eAAA,kBACAC,EAAAJ,EAAAK,aAAA,gBAEAC,EAAA,gBAAAl+B,GACAm+B,EAAAjE,EAAAJ,kBACA,IAAAqE,EAQA,YAPAD,IAGAl+B,EAAAC,QAAAk+B,GASAA,GAAAjE,EAAAJ,mBAAAoE,EAAAl+B,EAAAC,WAcAk+B,EAAAvyB,MAoBA,IAAAiwB,GAAA,iBACAY,EAAA,iBACAX,EAAA,YACAC,EAAA,YAIAK,KAYAgC,IACAA,GAAAV,GAAA,WACA,MAAA/8B,MAGA,IAAA09B,GAAAzoB,OAAA0oB,eACAC,EAAAF,OAAA9hB,OACAgiB,IACAA,IAAAZ,GACArC,EAAAtqB,KAAAutB,EAAAb,KAGAU,EAAAG,EAGA,IAAAC,GAAAxD,EAAA92B,UACAs2B,EAAAt2B,UAAA0R,OAAArR,OAAA65B,EACArD,GAAA72B,UAAAs6B,EAAAjwB,YAAAysB,EACAA,EAAAzsB,YAAAwsB,EACAC,EAAAgD,GACAjD,EAAA0D,YAAA,oBAYAN,EAAAO,oBAAA,SAAAC,GACA,GAAAC,GAAA,kBAAAD,MAAApwB,WACA,SAAAqwB,IACAA,IAAA7D,GAGA,uBAAA6D,EAAAH,aAAAG,EAAAjxB,QAIAwwB,EAAAhF,KAAA,SAAAwF,GAUA,MATA/oB,QAAAipB,eACAjpB,OAAAipB,eAAAF,EAAA3D,IAEA2D,EAAAG,UAAA9D,EACAgD,IAAAW,KACAA,EAAAX,GAAA,sBAGAW,EAAAz6B,UAAA0R,OAAArR,OAAAi6B,GACAG,GAOAR,EAAAY,MAAA,SAAAjE,GACA,OAAYU,QAAAV,IA8EZG,EAAAC,EAAAh3B,WACAg3B,EAAAh3B,UAAA45B,GAAA,WACA,MAAAn9B,OAEAw9B,EAAAjD,gBAKAiD,EAAAa,MAAA,SAAA7E,EAAAC,EAAAC,EAAAC,GACA,GAAA2E,GAAA,GAAA/D,GACAtvB,EAAAuuB,EAAAC,EAAAC,EAAAC,GAGA,OAAA6D,GAAAO,oBAAAtE,GACA6E,EACAA,EAAAtU,OAAAsF,KAAA,SAAA7K,GACA,MAAAA,GAAAwF,KAAAxF,EAAArkB,MAAAk+B,EAAAtU,UAsKAsQ,EAAAuD,GAEAA,EAAAR,GAAA,YAOAQ,EAAAd,GAAA,WACA,MAAA/8B,OAGA69B,EAAAr2B,SAAA,WACA,4BAkCAg2B,EAAAtjB,KAAA,SAAAqkB,GACA,GAAArkB,KACA,QAAAlY,KAAAu8B,GACArkB,EAAApS,KAAA9F,EAMA,OAJAkY,GAAAoB,UAIA,QAAA0O,KACA,KAAA9P,EAAAlU,QAAA,CACA,GAAAhE,GAAAkY,EAAAxW,KACA,IAAA1B,IAAAu8B,GAGA,MAFAvU,GAAA5pB,MAAA4B,EACAgoB,EAAAC,MAAA,EACAD,EAQA,MADAA,GAAAC,MAAA,EACAD,IAsCAwT,EAAA5hB,SAMAme,EAAAx2B,WACAqK,YAAAmsB,EAEA6C,MAAA,SAAA4B,GAcA,GAbAx+B,KAAAoiB,KAAA,EACApiB,KAAAgqB,KAAA,EAGAhqB,KAAA07B,KAAA17B,KAAA27B,MAAA/7B,EACAI,KAAAiqB,MAAA,EACAjqB,KAAAs7B,SAAA,KAEAt7B,KAAAsf,OAAA,OACAtf,KAAAm6B,IAAAv6B,EAEAI,KAAAy8B,WAAAhlB,QAAAilB,IAEA8B,EACA,OAAAxxB,KAAAhN,MAEA,MAAAgN,EAAAyxB,OAAA,IACA9D,EAAAtqB,KAAArQ,KAAAgN,KACA8E,OAAA9E,EAAApL,MAAA,MACA5B,KAAAgN,GAAApN,IAMA2O,KAAA,WACAvO,KAAAiqB,MAAA,CAEA,IAAAyU,GAAA1+B,KAAAy8B,WAAA,GACAkC,EAAAD,EAAA/B,UACA,cAAAgC,EAAAlyB,KACA,KAAAkyB,GAAAxE,GAGA,OAAAn6B,MAAA4+B,MAGAhD,kBAAA,SAAAiD,GAMA,QAAApmB,GAAAqmB,EAAAC,GAYA,MAXArE,GAAAjuB,KAAA,QACAiuB,EAAAP,IAAA0E,EACAxZ,EAAA2E,KAAA8U,EAEAC,IAGA1Z,EAAA/F,OAAA,OACA+F,EAAA8U,IAAAv6B,KAGAm/B,EAjBA,GAAA/+B,KAAAiqB,KACA,KAAA4U,EAmBA,QAhBAxZ,GAAArlB,KAgBAW,EAAAX,KAAAy8B,WAAAz2B,OAAA,EAA8CrF,GAAA,IAAQA,EAAA,CACtD,GAAA2U,GAAAtV,KAAAy8B,WAAA97B,GACA+5B,EAAAplB,EAAAqnB,UAEA,aAAArnB,EAAA+mB,OAIA,MAAA5jB,GAAA,MAGA,IAAAnD,EAAA+mB,QAAAr8B,KAAAoiB,KAAA,CACA,GAAA4c,GAAArE,EAAAtqB,KAAAiF,EAAA,YACA2pB,EAAAtE,EAAAtqB,KAAAiF,EAAA,aAEA,IAAA0pB,GAAAC,EAAA,CACA,GAAAj/B,KAAAoiB,KAAA9M,EAAAgnB,SACA,MAAA7jB,GAAAnD,EAAAgnB,UAAA,EACa,IAAAt8B,KAAAoiB,KAAA9M,EAAAinB,WACb,MAAA9jB,GAAAnD,EAAAinB,gBAGW,IAAAyC,GACX,GAAAh/B,KAAAoiB,KAAA9M,EAAAgnB,SACA,MAAA7jB,GAAAnD,EAAAgnB,UAAA,OAGW,KAAA2C,EAMX,SAAA/pB,OAAA,yCALA,IAAAlV,KAAAoiB,KAAA9M,EAAAinB,WACA,MAAA9jB,GAAAnD,EAAAinB,gBAUAV,OAAA,SAAApvB,EAAA0tB,GACA,OAAAx5B,GAAAX,KAAAy8B,WAAAz2B,OAAA,EAA8CrF,GAAA,IAAQA,EAAA,CACtD,GAAA2U,GAAAtV,KAAAy8B,WAAA97B,EACA,IAAA2U,EAAA+mB,QAAAr8B,KAAAoiB,MACAuY,EAAAtqB,KAAAiF,EAAA,eACAtV,KAAAoiB,KAAA9M,EAAAinB,WAAA,CACA,GAAA2C,GAAA5pB,CACA,QAIA4pB,IACA,UAAAzyB,GACA,aAAAA,IACAyyB,EAAA7C,QAAAlC,GACAA,GAAA+E,EAAA3C,aAGA2C,EAAA,KAGA,IAAAxE,GAAAwE,IAAAvC,aAIA,OAHAjC,GAAAjuB,OACAiuB,EAAAP,MAEA+E,GACAl/B,KAAAsf,OAAA,OACAtf,KAAAgqB,KAAAkV,EAAA3C,WACAd,GAGAz7B,KAAAm/B,SAAAzE,IAGAyE,SAAA,SAAAzE,EAAA8B,GACA,aAAA9B,EAAAjuB,KACA,KAAAiuB,GAAAP,GAcA,OAXA,UAAAO,EAAAjuB,MACA,aAAAiuB,EAAAjuB,KACAzM,KAAAgqB,KAAA0Q,EAAAP,IACO,WAAAO,EAAAjuB,MACPzM,KAAA4+B,KAAA5+B,KAAAm6B,IAAAO,EAAAP,IACAn6B,KAAAsf,OAAA,SACAtf,KAAAgqB,KAAA,OACO,WAAA0Q,EAAAjuB,MAAA+vB,IACPx8B,KAAAgqB,KAAAwS,GAGAf,GAGA2D,OAAA,SAAA7C,GACA,OAAA57B,GAAAX,KAAAy8B,WAAAz2B,OAAA,EAA8CrF,GAAA,IAAQA,EAAA,CACtD,GAAA2U,GAAAtV,KAAAy8B,WAAA97B,EACA,IAAA2U,EAAAinB,eAGA,MAFAv8B,MAAAm/B,SAAA7pB,EAAAqnB,WAAArnB,EAAAknB,UACAE,EAAApnB,GACAmmB,IAKA9G,MAAA,SAAA0H,GACA,OAAA17B,GAAAX,KAAAy8B,WAAAz2B,OAAA,EAA8CrF,GAAA,IAAQA,EAAA,CACtD,GAAA2U,GAAAtV,KAAAy8B,WAAA97B,EACA,IAAA2U,EAAA+mB,WAAA,CACA,GAAA3B,GAAAplB,EAAAqnB,UACA,cAAAjC,EAAAjuB,KAAA,CACA,GAAA4yB,GAAA3E,EAAAP,GACAuC,GAAApnB,GAEA,MAAA+pB,IAMA,SAAAnqB,OAAA,0BAGAoqB,cAAA,SAAAzC,EAAAZ,EAAAC,GAaA,MAZAl8B,MAAAs7B,UACAS,SAAAngB,EAAAihB,GACAZ,aACAC,WAGA,SAAAl8B,KAAAsf,SAGAtf,KAAAm6B,IAAAv6B,GAGA67B,KAOA,WAAe,MAAAz7B,UAAci5B,SAAA,mBlBu+IvBsG,KACA,SAAUlgC,EAAQC,EAASC,GAEjC,YmB7rKAD,GAAAmkB,YAAA,CAEA,IAAAsM,GAAAxwB,EAAA,IAEAqvB,EAEA,SAAA5qB,GAAsC,MAAAA,MAAAyf,WAAAzf,GAAuC0f,QAAA1f,IAF7E+rB,EAIAzwB,GAAAokB,QAAA,SAAApT,GACA,kBACA,GAAAkvB,GAAAlvB,EAAAzQ,MAAAG,KAAA0P,UACA,WAAAkf,GAAAlL,QAAA,SAAA+W,EAAA5L,GACA,QAAAzW,GAAApW,EAAAm4B,GACA,IACA,GAAA/S,GAAAoY,EAAAx9B,GAAAm4B,GACA/5B,EAAAgnB,EAAAhnB,MACS,MAAAq/B,GAET,WADA5Q,GAAA4Q,GAIA,IAAArY,EAAA6C,KAGA,MAAA2E,GAAAlL,QAAA+W,QAAAr6B,GAAAkvB,KAAA,SAAAlvB,GACAgY,EAAA,OAAAhY,IACW,SAAA8pB,GACX9R,EAAA,QAAA8R,IALAuQ,GAAAr6B,GAUA,MAAAgY,GAAA,anBusKMsnB,KACA,SAAUrgC,EAAQC,EAASC,GAEjC,YAuBA,SAASikB,GAAuBxf,GAAO,MAAOA,IAAOA,EAAIyf,WAAazf,GAAQ0f,QAAS1f,GApBvFiR,OAAOyP,eAAeplB,EAAS,cAC9Bc,OAAO,GAGR,IAAI2kB,GAAmBxlB,EAAoB,GAEvCylB,EAAmBxB,EAAuBuB,GAE1CyD,EAA8BjpB,EAAoB,IAElDkpB,EAA8BjF,EAAuBgF,GAErDE,EAAanpB,EAAoB,IAEjCopB,EAAanF,EAAuBkF,GoB7vKxC2C,EAAA9rB,EAAA,IpBiwKI+rB,EAAa9H,EAAuB6H,GoB7vKlCsU,EpBiwKqB,SAAU1T,GAGpC,QAAS0T,KAER,OADA,EAAI3a,EAAiBtB,SAAS1jB,KAAM2/B,IAC7B,EAAIlX,EAA4B/E,SAAS1jB,KAAMisB,EAAoBpsB,MAAMG,KAAM0P,YAoBvF,OAxBA,EAAIiZ,EAAWjF,SAASic,EAAsB1T,GAO9C0T,EAAqBp8B,UoBvwKrB2hB,KpBuwKsC,SoBvwK/BhB,EAAQ6G,GACd/qB,KAAKkkB,OAASA,EACdlkB,KAAK84B,MAAS5U,EAAQ,GACtBlkB,KAAK+qB,OAASA,EAEd/qB,KAAKsL,MAAQtL,KAAK84B,MAAM1Y,cAAe,uBpBmxKjCuf,GACNrU,EAAW5H,QAEbpkB,GAAQokB,QoBxwKOic,GpB4wKTC,IACA,SAAUvgC,EAAQC,EAASC,GAEjC,YAGA0V,QAAOyP,eAAeplB,EAAS,cAC9Bc,OAAO,GAGR,IAAI2kB,GAAmBxlB,EAAoB,GAEvCylB,EAEJ,SAAgChhB,GAAO,MAAOA,IAAOA,EAAIyf,WAAazf,GAAQ0f,QAAS1f,IAFzC+gB,GqB9yKxC8a,ErBqzKW,WqB/yKhB,QAAAA,GAAcC,IAAe,EAAA9a,EAAAtB,SAAA1jB,KAAA6/B,GAM5B7/B,KAAKiI,KAAa63B,EAAa73B,KAK/BjI,KAAK+qB,OAAa+U,EAAa/U,OAK/B/qB,KAAK+/B,WAAaD,EAAaC,WrBu0KhC,MAbAF,GAAWt8B,UqBvzKX2hB,KrBuzK4B,WqBtzK3B,MAAOllB,OrB+zKR6/B,EAAWt8B,UqBzzKXy8B,crByzKqC,WqBxzKpC,MAAOhgC,MAAK+/B,YrB4zKNF,IAGRvgC,GAAQokB,QqB3zKOmc,GrB+zKTI,IACA,SAAU5gC,EAAQC,EAASC,GAEjC,YA2BA,SAASikB,GAAuBxf,GAAO,MAAOA,IAAOA,EAAIyf,WAAazf,GAAQ0f,QAAS1f,GAxBvFiR,OAAOyP,eAAeplB,EAAS,cAC9Bc,OAAO,GAGR,IAAI2kB,GAAmBxlB,EAAoB,GAEvCylB,EAAmBxB,EAAuBuB,GAE1CyD,EAA8BjpB,EAAoB,IAElDkpB,EAA8BjF,EAAuBgF,GAErDE,EAAanpB,EAAoB,IAEjCopB,EAAanF,EAAuBkF,GsB33KxCwX,EAAA3gC,EAAA,KtB+3KI4gC,EAAS3c,EAAuB0c,GsB93KpCE,EAAA7gC,EAAA,MtBk4KI8gC,EAAU7c,EAAuB4c,GsB73K/BE,EtBo4KO,SAAUC,GsBl4KtB,QAAAD,GAAcvV,GAAS,SAAA/F,EAAAtB,SAAA1jB,KAAAsgC,IAAA,EAAA7X,EAAA/E,SAAA1jB,KAEtBugC,EAAAlwB,KAAArQ,KAAO+qB,ItB64KR,OAZA,EAAIpC,EAAWjF,SAAS4c,EAAQC,GAOhCD,EAAO/8B,UsBr4KP2hB,KtBq4KwB,WsBp4KvBqb,EAAAh9B,UAAM2hB,KAAN7U,KAAArQ,MACAqgC,EAAA3c,QAAcwB,QtBw4KRob,GACNH,EAAOzc,QAETpkB,GAAQokB,QsBv4KO4c,GtB24KTE,IACA,SAAUnhC,EAAQC,EAASC,GAEjC,YAGA0V,QAAOyP,eAAeplB,EAAS,cAC9Bc,OAAO,IAERd,EAAQokB,SuBt6KP+T,IAAQ,EACR9D,GAAQ,GACRC,KAAQ,GACRC,MAAQ","file":"FormsV2.chunk.js","sourcesContent":["/*!\r\n * frontend\r\n * name: / innogy-web,\r\n * buildDate: Wed Jul 11 2018 14:29:13 GMT+0200 (CEST),\r\n * packageVersion: 2.24.0\r\n */\nwebpackJsonp([4],{\n\n/***/ 1031:\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n * Date picker for pickadate.js v3.5.6\n * http://amsul.github.io/pickadate.js/date.htm\n */\n!function(a){ true?!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(1032),__webpack_require__(16)], __WEBPACK_AMD_DEFINE_FACTORY__ = (a),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)):\"object\"==typeof exports?module.exports=a(require(\"./picker.js\"),require(\"jquery\")):a(Picker,jQuery)}(function(a,b){function c(a,b){var c=this,d=a.$node[0],e=d.value,f=a.$node.data(\"value\"),g=f||e,h=f?b.formatSubmit:b.format,i=function(){return d.currentStyle?\"rtl\"==d.currentStyle.direction:\"rtl\"==getComputedStyle(a.$root[0]).direction};c.settings=b,c.$node=a.$node,c.queue={min:\"measure create\",max:\"measure create\",now:\"now create\",select:\"parse create validate\",highlight:\"parse navigate create validate\",view:\"parse create validate viewset\",disable:\"deactivate\",enable:\"activate\"},c.item={},c.item.clear=null,c.item.disable=(b.disable||[]).slice(0),c.item.enable=-function(a){return a[0]===!0?a.shift():-1}(c.item.disable),c.set(\"min\",b.min).set(\"max\",b.max).set(\"now\"),g?c.set(\"select\",g,{format:h,defaultValue:!0}):c.set(\"select\",null).set(\"highlight\",c.item.now),c.key={40:7,38:-7,39:function(){return i()?-1:1},37:function(){return i()?1:-1},go:function(a){var b=c.item.highlight,d=new Date(b.year,b.month,b.date+a);c.set(\"highlight\",d,{interval:a}),this.render()}},a.on(\"render\",function(){a.$root.find(\".\"+b.klass.selectMonth).on(\"change\",function(){var c=this.value;c&&(a.set(\"highlight\",[a.get(\"view\").year,c,a.get(\"highlight\").date]),a.$root.find(\".\"+b.klass.selectMonth).trigger(\"focus\"))}),a.$root.find(\".\"+b.klass.selectYear).on(\"change\",function(){var c=this.value;c&&(a.set(\"highlight\",[c,a.get(\"view\").month,a.get(\"highlight\").date]),a.$root.find(\".\"+b.klass.selectYear).trigger(\"focus\"))})},1).on(\"open\",function(){var d=\"\";c.disabled(c.get(\"now\"))&&(d=\":not(.\"+b.klass.buttonToday+\")\"),a.$root.find(\"button\"+d+\", select\").attr(\"disabled\",!1)},1).on(\"close\",function(){a.$root.find(\"button, select\").attr(\"disabled\",!0)},1)}var d=7,e=6,f=a._;c.prototype.set=function(a,b,c){var d=this,e=d.item;return null===b?(\"clear\"==a&&(a=\"select\"),e[a]=b,d):(e[\"enable\"==a?\"disable\":\"flip\"==a?\"enable\":a]=d.queue[a].split(\" \").map(function(e){return b=d[e](a,b,c)}).pop(),\"select\"==a?d.set(\"highlight\",e.select,c):\"highlight\"==a?d.set(\"view\",e.highlight,c):a.match(/^(flip|min|max|disable|enable)$/)&&(e.select&&d.disabled(e.select)&&d.set(\"select\",e.select,c),e.highlight&&d.disabled(e.highlight)&&d.set(\"highlight\",e.highlight,c)),d)},c.prototype.get=function(a){return this.item[a]},c.prototype.create=function(a,c,d){var e,g=this;return c=void 0===c?a:c,c==-(1/0)||c==1/0?e=c:b.isPlainObject(c)&&f.isInteger(c.pick)?c=c.obj:b.isArray(c)?(c=new Date(c[0],c[1],c[2]),c=f.isDate(c)?c:g.create().obj):c=f.isInteger(c)||f.isDate(c)?g.normalize(new Date(c),d):g.now(a,c,d),{year:e||c.getFullYear(),month:e||c.getMonth(),date:e||c.getDate(),day:e||c.getDay(),obj:e||c,pick:e||c.getTime()}},c.prototype.createRange=function(a,c){var d=this,e=function(a){return a===!0||b.isArray(a)||f.isDate(a)?d.create(a):a};return f.isInteger(a)||(a=e(a)),f.isInteger(c)||(c=e(c)),f.isInteger(a)&&b.isPlainObject(c)?a=[c.year,c.month,c.date+a]:f.isInteger(c)&&b.isPlainObject(a)&&(c=[a.year,a.month,a.date+c]),{from:e(a),to:e(c)}},c.prototype.withinRange=function(a,b){return a=this.createRange(a.from,a.to),b.pick>=a.from.pick&&b.pick<=a.to.pick},c.prototype.overlapRanges=function(a,b){var c=this;return a=c.createRange(a.from,a.to),b=c.createRange(b.from,b.to),c.withinRange(a,b.from)||c.withinRange(a,b.to)||c.withinRange(b,a.from)||c.withinRange(b,a.to)},c.prototype.now=function(a,b,c){return b=new Date,c&&c.rel&&b.setDate(b.getDate()+c.rel),this.normalize(b,c)},c.prototype.navigate=function(a,c,d){var e,f,g,h,i=b.isArray(c),j=b.isPlainObject(c),k=this.item.view;if(i||j){for(j?(f=c.year,g=c.month,h=c.date):(f=+c[0],g=+c[1],h=+c[2]),d&&d.nav&&k&&k.month!==g&&(f=k.year,g=k.month),e=new Date(f,g+(d&&d.nav?d.nav:0),1),f=e.getFullYear(),g=e.getMonth();new Date(f,g,h).getMonth()!==g;)h-=1;c=[f,g,h]}return c},c.prototype.normalize=function(a){return a.setHours(0,0,0,0),a},c.prototype.measure=function(a,b){var c=this;return b?\"string\"==typeof b?b=c.parse(a,b):f.isInteger(b)&&(b=c.now(a,b,{rel:b})):b=\"min\"==a?-(1/0):1/0,b},c.prototype.viewset=function(a,b){return this.create([b.year,b.month,1])},c.prototype.validate=function(a,c,d){var e,g,h,i,j=this,k=c,l=d&&d.interval?d.interval:1,m=-1===j.item.enable,n=j.item.min,o=j.item.max,p=m&&j.item.disable.filter(function(a){if(b.isArray(a)){var d=j.create(a).pick;d<c.pick?e=!0:d>c.pick&&(g=!0)}return f.isInteger(a)}).length;if((!d||!d.nav&&!d.defaultValue)&&(!m&&j.disabled(c)||m&&j.disabled(c)&&(p||e||g)||!m&&(c.pick<=n.pick||c.pick>=o.pick)))for(m&&!p&&(!g&&l>0||!e&&0>l)&&(l*=-1);j.disabled(c)&&(Math.abs(l)>1&&(c.month<k.month||c.month>k.month)&&(c=k,l=l>0?1:-1),c.pick<=n.pick?(h=!0,l=1,c=j.create([n.year,n.month,n.date+(c.pick===n.pick?0:-1)])):c.pick>=o.pick&&(i=!0,l=-1,c=j.create([o.year,o.month,o.date+(c.pick===o.pick?0:1)])),!h||!i);)c=j.create([c.year,c.month,c.date+l]);return c},c.prototype.disabled=function(a){var c=this,d=c.item.disable.filter(function(d){return f.isInteger(d)?a.day===(c.settings.firstDay?d:d-1)%7:b.isArray(d)||f.isDate(d)?a.pick===c.create(d).pick:b.isPlainObject(d)?c.withinRange(d,a):void 0});return d=d.length&&!d.filter(function(a){return b.isArray(a)&&\"inverted\"==a[3]||b.isPlainObject(a)&&a.inverted}).length,-1===c.item.enable?!d:d||a.pick<c.item.min.pick||a.pick>c.item.max.pick},c.prototype.parse=function(a,b,c){var d=this,e={};return b&&\"string\"==typeof b?(c&&c.format||(c=c||{},c.format=d.settings.format),d.formats.toArray(c.format).map(function(a){var c=d.formats[a],g=c?f.trigger(c,d,[b,e]):a.replace(/^!/,\"\").length;c&&(e[a]=b.substr(0,g)),b=b.substr(g)}),[e.yyyy||e.yy,+(e.mm||e.m)-1,e.dd||e.d]):b},c.prototype.formats=function(){function a(a,b,c){var d=a.match(/[^\\x00-\\x7F]+|\\w+/)[0];return c.mm||c.m||(c.m=b.indexOf(d)+1),d.length}function b(a){return a.match(/\\w+/)[0].length}return{d:function(a,b){return a?f.digits(a):b.date},dd:function(a,b){return a?2:f.lead(b.date)},ddd:function(a,c){return a?b(a):this.settings.weekdaysShort[c.day]},dddd:function(a,c){return a?b(a):this.settings.weekdaysFull[c.day]},m:function(a,b){return a?f.digits(a):b.month+1},mm:function(a,b){return a?2:f.lead(b.month+1)},mmm:function(b,c){var d=this.settings.monthsShort;return b?a(b,d,c):d[c.month]},mmmm:function(b,c){var d=this.settings.monthsFull;return b?a(b,d,c):d[c.month]},yy:function(a,b){return a?2:(\"\"+b.year).slice(2)},yyyy:function(a,b){return a?4:b.year},toArray:function(a){return a.split(/(d{1,4}|m{1,4}|y{4}|yy|!.)/g)},toString:function(a,b){var c=this;return c.formats.toArray(a).map(function(a){return f.trigger(c.formats[a],c,[0,b])||a.replace(/^!/,\"\")}).join(\"\")}}}(),c.prototype.isDateExact=function(a,c){var d=this;return f.isInteger(a)&&f.isInteger(c)||\"boolean\"==typeof a&&\"boolean\"==typeof c?a===c:(f.isDate(a)||b.isArray(a))&&(f.isDate(c)||b.isArray(c))?d.create(a).pick===d.create(c).pick:b.isPlainObject(a)&&b.isPlainObject(c)?d.isDateExact(a.from,c.from)&&d.isDateExact(a.to,c.to):!1},c.prototype.isDateOverlap=function(a,c){var d=this,e=d.settings.firstDay?1:0;return f.isInteger(a)&&(f.isDate(c)||b.isArray(c))?(a=a%7+e,a===d.create(c).day+1):f.isInteger(c)&&(f.isDate(a)||b.isArray(a))?(c=c%7+e,c===d.create(a).day+1):b.isPlainObject(a)&&b.isPlainObject(c)?d.overlapRanges(a,c):!1},c.prototype.flipEnable=function(a){var b=this.item;b.enable=a||(-1==b.enable?1:-1)},c.prototype.deactivate=function(a,c){var d=this,e=d.item.disable.slice(0);return\"flip\"==c?d.flipEnable():c===!1?(d.flipEnable(1),e=[]):c===!0?(d.flipEnable(-1),e=[]):c.map(function(a){for(var c,g=0;g<e.length;g+=1)if(d.isDateExact(a,e[g])){c=!0;break}c||(f.isInteger(a)||f.isDate(a)||b.isArray(a)||b.isPlainObject(a)&&a.from&&a.to)&&e.push(a)}),e},c.prototype.activate=function(a,c){var d=this,e=d.item.disable,g=e.length;return\"flip\"==c?d.flipEnable():c===!0?(d.flipEnable(1),e=[]):c===!1?(d.flipEnable(-1),e=[]):c.map(function(a){var c,h,i,j;for(i=0;g>i;i+=1){if(h=e[i],d.isDateExact(h,a)){c=e[i]=null,j=!0;break}if(d.isDateOverlap(h,a)){b.isPlainObject(a)?(a.inverted=!0,c=a):b.isArray(a)?(c=a,c[3]||c.push(\"inverted\")):f.isDate(a)&&(c=[a.getFullYear(),a.getMonth(),a.getDate(),\"inverted\"]);break}}if(c)for(i=0;g>i;i+=1)if(d.isDateExact(e[i],a)){e[i]=null;break}if(j)for(i=0;g>i;i+=1)if(d.isDateOverlap(e[i],a)){e[i]=null;break}c&&e.push(c)}),e.filter(function(a){return null!=a})},c.prototype.nodes=function(a){var b=this,c=b.settings,g=b.item,h=g.now,i=g.select,j=g.highlight,k=g.view,l=g.disable,m=g.min,n=g.max,o=function(a,b){return c.firstDay&&(a.push(a.shift()),b.push(b.shift())),f.node(\"thead\",f.node(\"tr\",f.group({min:0,max:d-1,i:1,node:\"th\",item:function(d){return[a[d],c.klass.weekdays,'scope=col title=\"'+b[d]+'\"']}})))}((c.showWeekdaysFull?c.weekdaysFull:c.weekdaysShort).slice(0),c.weekdaysFull.slice(0)),p=function(a){return f.node(\"div\",\" \",c.klass[\"nav\"+(a?\"Next\":\"Prev\")]+(a&&k.year>=n.year&&k.month>=n.month||!a&&k.year<=m.year&&k.month<=m.month?\" \"+c.klass.navDisabled:\"\"),\"data-nav=\"+(a||-1)+\" \"+f.ariaAttr({role:\"button\",controls:b.$node[0].id+\"_table\"})+' title=\"'+(a?c.labelMonthNext:c.labelMonthPrev)+'\"')},q=function(){var d=c.showMonthsShort?c.monthsShort:c.monthsFull;return c.selectMonths?f.node(\"select\",f.group({min:0,max:11,i:1,node:\"option\",item:function(a){return[d[a],0,\"value=\"+a+(k.month==a?\" selected\":\"\")+(k.year==m.year&&a<m.month||k.year==n.year&&a>n.month?\" disabled\":\"\")]}}),c.klass.selectMonth,(a?\"\":\"disabled\")+\" \"+f.ariaAttr({controls:b.$node[0].id+\"_table\"})+' title=\"'+c.labelMonthSelect+'\"'):f.node(\"div\",d[k.month],c.klass.month)},r=function(){var d=k.year,e=c.selectYears===!0?5:~~(c.selectYears/2);if(e){var g=m.year,h=n.year,i=d-e,j=d+e;if(g>i&&(j+=g-i,i=g),j>h){var l=i-g,o=j-h;i-=l>o?o:l,j=h}return f.node(\"select\",f.group({min:i,max:j,i:1,node:\"option\",item:function(a){return[a,0,\"value=\"+a+(d==a?\" selected\":\"\")]}}),c.klass.selectYear,(a?\"\":\"disabled\")+\" \"+f.ariaAttr({controls:b.$node[0].id+\"_table\"})+' title=\"'+c.labelYearSelect+'\"')}return f.node(\"div\",d,c.klass.year)};return f.node(\"div\",(c.selectYears?r()+q():q()+r())+p()+p(1),c.klass.header)+f.node(\"table\",o+f.node(\"tbody\",f.group({min:0,max:e-1,i:1,node:\"tr\",item:function(a){var e=c.firstDay&&0===b.create([k.year,k.month,1]).day?-7:0;return[f.group({min:d*a-k.day+e+1,max:function(){return this.min+d-1},i:1,node:\"td\",item:function(a){a=b.create([k.year,k.month,a+(c.firstDay?1:0)]);var d=i&&i.pick==a.pick,e=j&&j.pick==a.pick,g=l&&b.disabled(a)||a.pick<m.pick||a.pick>n.pick,o=f.trigger(b.formats.toString,b,[c.format,a]);return[f.node(\"div\",a.date,function(b){return b.push(k.month==a.month?c.klass.infocus:c.klass.outfocus),h.pick==a.pick&&b.push(c.klass.now),d&&b.push(c.klass.selected),e&&b.push(c.klass.highlighted),g&&b.push(c.klass.disabled),b.join(\" \")}([c.klass.day]),\"data-pick=\"+a.pick+\" \"+f.ariaAttr({role:\"gridcell\",label:o,selected:d&&b.$node.val()===o?!0:null,activedescendant:e?!0:null,disabled:g?!0:null})),\"\",f.ariaAttr({role:\"presentation\"})]}})]}})),c.klass.table,'id=\"'+b.$node[0].id+'_table\" '+f.ariaAttr({role:\"grid\",controls:b.$node[0].id,readonly:!0}))+f.node(\"div\",f.node(\"button\",c.today,c.klass.buttonToday,\"type=button data-pick=\"+h.pick+(a&&!b.disabled(h)?\"\":\" disabled\")+\" \"+f.ariaAttr({controls:b.$node[0].id}))+f.node(\"button\",c.clear,c.klass.buttonClear,\"type=button data-clear=1\"+(a?\"\":\" disabled\")+\" \"+f.ariaAttr({controls:b.$node[0].id}))+f.node(\"button\",c.close,c.klass.buttonClose,\"type=button data-close=true \"+(a?\"\":\" disabled\")+\" \"+f.ariaAttr({controls:b.$node[0].id})),c.klass.footer)},c.defaults=function(a){return{labelMonthNext:\"Next month\",labelMonthPrev:\"Previous month\",labelMonthSelect:\"Select a month\",labelYearSelect:\"Select a year\",monthsFull:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],monthsShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],weekdaysFull:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],weekdaysShort:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],today:\"Today\",clear:\"Clear\",close:\"Close\",closeOnSelect:!0,closeOnClear:!0,format:\"d mmmm, yyyy\",klass:{table:a+\"table\",header:a+\"header\",navPrev:a+\"nav--prev\",navNext:a+\"nav--next\",navDisabled:a+\"nav--disabled\",month:a+\"month\",year:a+\"year\",selectMonth:a+\"select--month\",selectYear:a+\"select--year\",weekdays:a+\"weekday\",day:a+\"day\",disabled:a+\"day--disabled\",selected:a+\"day--selected\",highlighted:a+\"day--highlighted\",now:a+\"day--today\",infocus:a+\"day--infocus\",outfocus:a+\"day--outfocus\",footer:a+\"footer\",buttonClear:a+\"button--clear\",buttonToday:a+\"button--today\",buttonClose:a+\"button--close\"}}}(a.klasses().picker+\"__\"),a.extend(\"pickadate\",c)});\n\n/***/ }),\n\n/***/ 1032:\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n * pickadate.js v3.5.6, 2015/04/20\n * By Amsul, http://amsul.ca\n * Hosted on http://amsul.github.io/pickadate.js\n * Licensed under MIT\n */\n!function(a){ true?!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(16)], __WEBPACK_AMD_DEFINE_FACTORY__ = (a),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)):\"object\"==typeof exports?module.exports=a(require(\"jquery\")):this.Picker=a(jQuery)}(function(a){function b(f,g,i,m){function n(){return b._.node(\"div\",b._.node(\"div\",b._.node(\"div\",b._.node(\"div\",B.component.nodes(w.open),y.box),y.wrap),y.frame),y.holder,'tabindex=\"-1\"')}function o(){z.data(g,B).addClass(y.input).val(z.data(\"value\")?B.get(\"select\",x.format):f.value),x.editable||z.on(\"focus.\"+w.id+\" click.\"+w.id,function(a){a.preventDefault(),B.open()}).on(\"keydown.\"+w.id,u),e(f,{haspopup:!0,expanded:!1,readonly:!1,owns:f.id+\"_root\"})}function p(){e(B.$root[0],\"hidden\",!0)}function q(){B.$holder.on({keydown:u,\"focus.toOpen\":t,blur:function(){z.removeClass(y.target)},focusin:function(a){B.$root.removeClass(y.focused),a.stopPropagation()},\"mousedown click\":function(b){var c=b.target;c!=B.$holder[0]&&(b.stopPropagation(),\"mousedown\"!=b.type||a(c).is(\"input, select, textarea, button, option\")||(b.preventDefault(),B.$holder[0].focus()))}}).on(\"click\",\"[data-pick], [data-nav], [data-clear], [data-close]\",function(){var b=a(this),c=b.data(),d=b.hasClass(y.navDisabled)||b.hasClass(y.disabled),e=h();e=e&&(e.type||e.href),(d||e&&!a.contains(B.$root[0],e))&&B.$holder[0].focus(),!d&&c.nav?B.set(\"highlight\",B.component.item.highlight,{nav:c.nav}):!d&&\"pick\"in c?(B.set(\"select\",c.pick),x.closeOnSelect&&B.close(!0)):c.clear?(B.clear(),x.closeOnClear&&B.close(!0)):c.close&&B.close(!0)})}function r(){var b;x.hiddenName===!0?(b=f.name,f.name=\"\"):(b=[\"string\"==typeof x.hiddenPrefix?x.hiddenPrefix:\"\",\"string\"==typeof x.hiddenSuffix?x.hiddenSuffix:\"_submit\"],b=b[0]+f.name+b[1]),B._hidden=a('<input type=hidden name=\"'+b+'\"'+(z.data(\"value\")||f.value?' value=\"'+B.get(\"select\",x.formatSubmit)+'\"':\"\")+\">\")[0],z.on(\"change.\"+w.id,function(){B._hidden.value=f.value?B.get(\"select\",x.formatSubmit):\"\"})}function s(){v&&l?B.$holder.find(\".\"+y.frame).one(\"transitionend\",function(){B.$holder[0].focus()}):B.$holder[0].focus()}function t(a){a.stopPropagation(),z.addClass(y.target),B.$root.addClass(y.focused),B.open()}function u(a){var b=a.keyCode,c=/^(8|46)$/.test(b);return 27==b?(B.close(!0),!1):void((32==b||c||!w.open&&B.component.key[b])&&(a.preventDefault(),a.stopPropagation(),c?B.clear().close():B.open()))}if(!f)return b;var v=!1,w={id:f.id||\"P\"+Math.abs(~~(Math.random()*new Date))},x=i?a.extend(!0,{},i.defaults,m):m||{},y=a.extend({},b.klasses(),x.klass),z=a(f),A=function(){return this.start()},B=A.prototype={constructor:A,$node:z,start:function(){return w&&w.start?B:(w.methods={},w.start=!0,w.open=!1,w.type=f.type,f.autofocus=f==h(),f.readOnly=!x.editable,f.id=f.id||w.id,\"text\"!=f.type&&(f.type=\"text\"),B.component=new i(B,x),B.$root=a('<div class=\"'+y.picker+'\" id=\"'+f.id+'_root\" />'),p(),B.$holder=a(n()).appendTo(B.$root),q(),x.formatSubmit&&r(),o(),x.containerHidden?a(x.containerHidden).append(B._hidden):z.after(B._hidden),x.container?a(x.container).append(B.$root):z.after(B.$root),B.on({start:B.component.onStart,render:B.component.onRender,stop:B.component.onStop,open:B.component.onOpen,close:B.component.onClose,set:B.component.onSet}).on({start:x.onStart,render:x.onRender,stop:x.onStop,open:x.onOpen,close:x.onClose,set:x.onSet}),v=c(B.$holder[0]),f.autofocus&&B.open(),B.trigger(\"start\").trigger(\"render\"))},render:function(b){return b?(B.$holder=a(n()),q(),B.$root.html(B.$holder)):B.$root.find(\".\"+y.box).html(B.component.nodes(w.open)),B.trigger(\"render\")},stop:function(){return w.start?(B.close(),B._hidden&&B._hidden.parentNode.removeChild(B._hidden),B.$root.remove(),z.removeClass(y.input).removeData(g),setTimeout(function(){z.off(\".\"+w.id)},0),f.type=w.type,f.readOnly=!1,B.trigger(\"stop\"),w.methods={},w.start=!1,B):B},open:function(c){return w.open?B:(z.addClass(y.active),e(f,\"expanded\",!0),setTimeout(function(){B.$root.addClass(y.opened),e(B.$root[0],\"hidden\",!1)},0),c!==!1&&(w.open=!0,v&&k.css(\"overflow\",\"hidden\").css(\"padding-right\",\"+=\"+d()),s(),j.on(\"click.\"+w.id+\" focusin.\"+w.id,function(a){var b=a.target;b!=f&&b!=document&&3!=a.which&&B.close(b===B.$holder[0])}).on(\"keydown.\"+w.id,function(c){var d=c.keyCode,e=B.component.key[d],f=c.target;27==d?B.close(!0):f!=B.$holder[0]||!e&&13!=d?a.contains(B.$root[0],f)&&13==d&&(c.preventDefault(),f.click()):(c.preventDefault(),e?b._.trigger(B.component.key.go,B,[b._.trigger(e)]):B.$root.find(\".\"+y.highlighted).hasClass(y.disabled)||(B.set(\"select\",B.component.item.highlight),x.closeOnSelect&&B.close(!0)))})),B.trigger(\"open\"))},close:function(a){return a&&(x.editable?f.focus():(B.$holder.off(\"focus.toOpen\").focus(),setTimeout(function(){B.$holder.on(\"focus.toOpen\",t)},0))),z.removeClass(y.active),e(f,\"expanded\",!1),setTimeout(function(){B.$root.removeClass(y.opened+\" \"+y.focused),e(B.$root[0],\"hidden\",!0)},0),w.open?(w.open=!1,v&&k.css(\"overflow\",\"\").css(\"padding-right\",\"-=\"+d()),j.off(\".\"+w.id),B.trigger(\"close\")):B},clear:function(a){return B.set(\"clear\",null,a)},set:function(b,c,d){var e,f,g=a.isPlainObject(b),h=g?b:{};if(d=g&&a.isPlainObject(c)?c:d||{},b){g||(h[b]=c);for(e in h)f=h[e],e in B.component.item&&(void 0===f&&(f=null),B.component.set(e,f,d)),(\"select\"==e||\"clear\"==e)&&z.val(\"clear\"==e?\"\":B.get(e,x.format)).trigger(\"change\");B.render()}return d.muted?B:B.trigger(\"set\",h)},get:function(a,c){if(a=a||\"value\",null!=w[a])return w[a];if(\"valueSubmit\"==a){if(B._hidden)return B._hidden.value;a=\"value\"}if(\"value\"==a)return f.value;if(a in B.component.item){if(\"string\"==typeof c){var d=B.component.get(a);return d?b._.trigger(B.component.formats.toString,B.component,[c,d]):\"\"}return B.component.get(a)}},on:function(b,c,d){var e,f,g=a.isPlainObject(b),h=g?b:{};if(b){g||(h[b]=c);for(e in h)f=h[e],d&&(e=\"_\"+e),w.methods[e]=w.methods[e]||[],w.methods[e].push(f)}return B},off:function(){var a,b,c=arguments;for(a=0,namesCount=c.length;a<namesCount;a+=1)b=c[a],b in w.methods&&delete w.methods[b];return B},trigger:function(a,c){var d=function(a){var d=w.methods[a];d&&d.map(function(a){b._.trigger(a,B,[c])})};return d(\"_\"+a),d(a),B}};return new A}function c(a){var b,c=\"position\";return a.currentStyle?b=a.currentStyle[c]:window.getComputedStyle&&(b=getComputedStyle(a)[c]),\"fixed\"==b}function d(){if(k.height()<=i.height())return 0;var b=a('<div style=\"visibility:hidden;width:100px\" />').appendTo(\"body\"),c=b[0].offsetWidth;b.css(\"overflow\",\"scroll\");var d=a('<div style=\"width:100%\" />').appendTo(b),e=d[0].offsetWidth;return b.remove(),c-e}function e(b,c,d){if(a.isPlainObject(c))for(var e in c)f(b,e,c[e]);else f(b,c,d)}function f(a,b,c){a.setAttribute((\"role\"==b?\"\":\"aria-\")+b,c)}function g(b,c){a.isPlainObject(b)||(b={attribute:c}),c=\"\";for(var d in b){var e=(\"role\"==d?\"\":\"aria-\")+d,f=b[d];c+=null==f?\"\":e+'=\"'+b[d]+'\"'}return c}function h(){try{return document.activeElement}catch(a){}}var i=a(window),j=a(document),k=a(document.documentElement),l=null!=document.documentElement.style.transition;return b.klasses=function(a){return a=a||\"picker\",{picker:a,opened:a+\"--opened\",focused:a+\"--focused\",input:a+\"__input\",active:a+\"__input--active\",target:a+\"__input--target\",holder:a+\"__holder\",frame:a+\"__frame\",wrap:a+\"__wrap\",box:a+\"__box\"}},b._={group:function(a){for(var c,d=\"\",e=b._.trigger(a.min,a);e<=b._.trigger(a.max,a,[e]);e+=a.i)c=b._.trigger(a.item,a,[e]),d+=b._.node(a.node,c[0],c[1],c[2]);return d},node:function(b,c,d,e){return c?(c=a.isArray(c)?c.join(\"\"):c,d=d?' class=\"'+d+'\"':\"\",e=e?\" \"+e:\"\",\"<\"+b+d+e+\">\"+c+\"</\"+b+\">\"):\"\"},lead:function(a){return(10>a?\"0\":\"\")+a},trigger:function(a,b,c){return\"function\"==typeof a?a.apply(b,c||[]):a},digits:function(a){return/\\d/.test(a[1])?2:1},isDate:function(a){return{}.toString.call(a).indexOf(\"Date\")>-1&&this.isInteger(a.getDate())},isInteger:function(a){return{}.toString.call(a).indexOf(\"Number\")>-1&&a%1===0},ariaAttr:g},b.extend=function(c,d){a.fn[c]=function(e,f){var g=this.data(c);return\"picker\"==e?g:g&&\"string\"==typeof e?b._.trigger(g[e],g,[f]):this.each(function(){var f=a(this);f.data(c)||new b(this,c,d,e)})},a.fn[c].defaults=d.defaults},b});\n\n/***/ }),\n\n/***/ 1033:\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! nouislider - 8.5.1 - 2016-04-24 16:00:29 */\r\n\r\n(function (factory) {\r\n\r\n if ( true ) {\r\n\r\n // AMD. Register as an anonymous module.\r\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\r\n\r\n } else if ( typeof exports === 'object' ) {\r\n\r\n // Node/CommonJS\r\n module.exports = factory();\r\n\r\n } else {\r\n\r\n // Browser globals\r\n window.noUiSlider = factory();\r\n }\r\n\r\n}(function( ){\r\n\r\n\t'use strict';\r\n\r\n\r\n\t// Removes duplicates from an array.\r\n\tfunction unique(array) {\r\n\t\treturn array.filter(function(a){\r\n\t\t\treturn !this[a] ? this[a] = true : false;\r\n\t\t}, {});\r\n\t}\r\n\r\n\t// Round a value to the closest 'to'.\r\n\tfunction closest ( value, to ) {\r\n\t\treturn Math.round(value / to) * to;\r\n\t}\r\n\r\n\t// Current position of an element relative to the document.\r\n\tfunction offset ( elem ) {\r\n\r\n\tvar rect = elem.getBoundingClientRect(),\r\n\t\tdoc = elem.ownerDocument,\r\n\t\tdocElem = doc.documentElement,\r\n\t\tpageOffset = getPageOffset();\r\n\r\n\t\t// getBoundingClientRect contains left scroll in Chrome on Android.\r\n\t\t// I haven't found a feature detection that proves this. Worst case\r\n\t\t// scenario on mis-match: the 'tap' feature on horizontal sliders breaks.\r\n\t\tif ( /webkit.*Chrome.*Mobile/i.test(navigator.userAgent) ) {\r\n\t\t\tpageOffset.x = 0;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\ttop: rect.top + pageOffset.y - docElem.clientTop,\r\n\t\t\tleft: rect.left + pageOffset.x - docElem.clientLeft\r\n\t\t};\r\n\t}\r\n\r\n\t// Checks whether a value is numerical.\r\n\tfunction isNumeric ( a ) {\r\n\t\treturn typeof a === 'number' && !isNaN( a ) && isFinite( a );\r\n\t}\r\n\r\n\t// Sets a class and removes it after [duration] ms.\r\n\tfunction addClassFor ( element, className, duration ) {\r\n\t\taddClass(element, className);\r\n\t\tsetTimeout(function(){\r\n\t\t\tremoveClass(element, className);\r\n\t\t}, duration);\r\n\t}\r\n\r\n\t// Limits a value to 0 - 100\r\n\tfunction limit ( a ) {\r\n\t\treturn Math.max(Math.min(a, 100), 0);\r\n\t}\r\n\r\n\t// Wraps a variable as an array, if it isn't one yet.\r\n\tfunction asArray ( a ) {\r\n\t\treturn Array.isArray(a) ? a : [a];\r\n\t}\r\n\r\n\t// Counts decimals\r\n\tfunction countDecimals ( numStr ) {\r\n\t\tvar pieces = numStr.split(\".\");\r\n\t\treturn pieces.length > 1 ? pieces[1].length : 0;\r\n\t}\r\n\r\n\t// http://youmightnotneedjquery.com/#add_class\r\n\tfunction addClass ( el, className ) {\r\n\t\tif ( el.classList ) {\r\n\t\t\tel.classList.add(className);\r\n\t\t} else {\r\n\t\t\tel.className += ' ' + className;\r\n\t\t}\r\n\t}\r\n\r\n\t// http://youmightnotneedjquery.com/#remove_class\r\n\tfunction removeClass ( el, className ) {\r\n\t\tif ( el.classList ) {\r\n\t\t\tel.classList.remove(className);\r\n\t\t} else {\r\n\t\t\tel.className = el.className.replace(new RegExp('(^|\\\\b)' + className.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\r\n\t\t}\r\n\t}\r\n\r\n\t// https://plainjs.com/javascript/attributes/adding-removing-and-testing-for-classes-9/\r\n\tfunction hasClass ( el, className ) {\r\n\t\treturn el.classList ? el.classList.contains(className) : new RegExp('\\\\b' + className + '\\\\b').test(el.className);\r\n\t}\r\n\r\n\t// https://developer.mozilla.org/en-US/docs/Web/API/Window/scrollY#Notes\r\n\tfunction getPageOffset ( ) {\r\n\r\n\t\tvar supportPageOffset = window.pageXOffset !== undefined,\r\n\t\t\tisCSS1Compat = ((document.compatMode || \"\") === \"CSS1Compat\"),\r\n\t\t\tx = supportPageOffset ? window.pageXOffset : isCSS1Compat ? document.documentElement.scrollLeft : document.body.scrollLeft,\r\n\t\t\ty = supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop;\r\n\r\n\t\treturn {\r\n\t\t\tx: x,\r\n\t\t\ty: y\r\n\t\t};\r\n\t}\r\n\r\n\t// we provide a function to compute constants instead\r\n\t// of accessing window.* as soon as the module needs it\r\n\t// so that we do not compute anything if not needed\r\n\tfunction getActions ( ) {\r\n\r\n\t\t// Determine the events to bind. IE11 implements pointerEvents without\r\n\t\t// a prefix, which breaks compatibility with the IE10 implementation.\r\n\t\treturn window.navigator.pointerEnabled ? {\r\n\t\t\tstart: 'pointerdown',\r\n\t\t\tmove: 'pointermove',\r\n\t\t\tend: 'pointerup'\r\n\t\t} : window.navigator.msPointerEnabled ? {\r\n\t\t\tstart: 'MSPointerDown',\r\n\t\t\tmove: 'MSPointerMove',\r\n\t\t\tend: 'MSPointerUp'\r\n\t\t} : {\r\n\t\t\tstart: 'mousedown touchstart',\r\n\t\t\tmove: 'mousemove touchmove',\r\n\t\t\tend: 'mouseup touchend'\r\n\t\t};\r\n\t}\r\n\r\n\r\n// Value calculation\r\n\r\n\t// Determine the size of a sub-range in relation to a full range.\r\n\tfunction subRangeRatio ( pa, pb ) {\r\n\t\treturn (100 / (pb - pa));\r\n\t}\r\n\r\n\t// (percentage) How many percent is this value of this range?\r\n\tfunction fromPercentage ( range, value ) {\r\n\t\treturn (value * 100) / ( range[1] - range[0] );\r\n\t}\r\n\r\n\t// (percentage) Where is this value on this range?\r\n\tfunction toPercentage ( range, value ) {\r\n\t\treturn fromPercentage( range, range[0] < 0 ?\r\n\t\t\tvalue + Math.abs(range[0]) :\r\n\t\t\t\tvalue - range[0] );\r\n\t}\r\n\r\n\t// (value) How much is this percentage on this range?\r\n\tfunction isPercentage ( range, value ) {\r\n\t\treturn ((value * ( range[1] - range[0] )) / 100) + range[0];\r\n\t}\r\n\r\n\r\n// Range conversion\r\n\r\n\tfunction getJ ( value, arr ) {\r\n\r\n\t\tvar j = 1;\r\n\r\n\t\twhile ( value >= arr[j] ){\r\n\t\t\tj += 1;\r\n\t\t}\r\n\r\n\t\treturn j;\r\n\t}\r\n\r\n\t// (percentage) Input a value, find where, on a scale of 0-100, it applies.\r\n\tfunction toStepping ( xVal, xPct, value ) {\r\n\r\n\t\tif ( value >= xVal.slice(-1)[0] ){\r\n\t\t\treturn 100;\r\n\t\t}\r\n\r\n\t\tvar j = getJ( value, xVal ), va, vb, pa, pb;\r\n\r\n\t\tva = xVal[j-1];\r\n\t\tvb = xVal[j];\r\n\t\tpa = xPct[j-1];\r\n\t\tpb = xPct[j];\r\n\r\n\t\treturn pa + (toPercentage([va, vb], value) / subRangeRatio (pa, pb));\r\n\t}\r\n\r\n\t// (value) Input a percentage, find where it is on the specified range.\r\n\tfunction fromStepping ( xVal, xPct, value ) {\r\n\r\n\t\t// There is no range group that fits 100\r\n\t\tif ( value >= 100 ){\r\n\t\t\treturn xVal.slice(-1)[0];\r\n\t\t}\r\n\r\n\t\tvar j = getJ( value, xPct ), va, vb, pa, pb;\r\n\r\n\t\tva = xVal[j-1];\r\n\t\tvb = xVal[j];\r\n\t\tpa = xPct[j-1];\r\n\t\tpb = xPct[j];\r\n\r\n\t\treturn isPercentage([va, vb], (value - pa) * subRangeRatio (pa, pb));\r\n\t}\r\n\r\n\t// (percentage) Get the step that applies at a certain value.\r\n\tfunction getStep ( xPct, xSteps, snap, value ) {\r\n\r\n\t\tif ( value === 100 ) {\r\n\t\t\treturn value;\r\n\t\t}\r\n\r\n\t\tvar j = getJ( value, xPct ), a, b;\r\n\r\n\t\t// If 'snap' is set, steps are used as fixed points on the slider.\r\n\t\tif ( snap ) {\r\n\r\n\t\t\ta = xPct[j-1];\r\n\t\t\tb = xPct[j];\r\n\r\n\t\t\t// Find the closest position, a or b.\r\n\t\t\tif ((value - a) > ((b-a)/2)){\r\n\t\t\t\treturn b;\r\n\t\t\t}\r\n\r\n\t\t\treturn a;\r\n\t\t}\r\n\r\n\t\tif ( !xSteps[j-1] ){\r\n\t\t\treturn value;\r\n\t\t}\r\n\r\n\t\treturn xPct[j-1] + closest(\r\n\t\t\tvalue - xPct[j-1],\r\n\t\t\txSteps[j-1]\r\n\t\t);\r\n\t}\r\n\r\n\r\n// Entry parsing\r\n\r\n\tfunction handleEntryPoint ( index, value, that ) {\r\n\r\n\t\tvar percentage;\r\n\r\n\t\t// Wrap numerical input in an array.\r\n\t\tif ( typeof value === \"number\" ) {\r\n\t\t\tvalue = [value];\r\n\t\t}\r\n\r\n\t\t// Reject any invalid input, by testing whether value is an array.\r\n\t\tif ( Object.prototype.toString.call( value ) !== '[object Array]' ){\r\n\t\t\tthrow new Error(\"noUiSlider: 'range' contains invalid value.\");\r\n\t\t}\r\n\r\n\t\t// Covert min/max syntax to 0 and 100.\r\n\t\tif ( index === 'min' ) {\r\n\t\t\tpercentage = 0;\r\n\t\t} else if ( index === 'max' ) {\r\n\t\t\tpercentage = 100;\r\n\t\t} else {\r\n\t\t\tpercentage = parseFloat( index );\r\n\t\t}\r\n\r\n\t\t// Check for correct input.\r\n\t\tif ( !isNumeric( percentage ) || !isNumeric( value[0] ) ) {\r\n\t\t\tthrow new Error(\"noUiSlider: 'range' value isn't numeric.\");\r\n\t\t}\r\n\r\n\t\t// Store values.\r\n\t\tthat.xPct.push( percentage );\r\n\t\tthat.xVal.push( value[0] );\r\n\r\n\t\t// NaN will evaluate to false too, but to keep\r\n\t\t// logging clear, set step explicitly. Make sure\r\n\t\t// not to override the 'step' setting with false.\r\n\t\tif ( !percentage ) {\r\n\t\t\tif ( !isNaN( value[1] ) ) {\r\n\t\t\t\tthat.xSteps[0] = value[1];\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthat.xSteps.push( isNaN(value[1]) ? false : value[1] );\r\n\t\t}\r\n\t}\r\n\r\n\tfunction handleStepPoint ( i, n, that ) {\r\n\r\n\t\t// Ignore 'false' stepping.\r\n\t\tif ( !n ) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t// Factor to range ratio\r\n\t\tthat.xSteps[i] = fromPercentage([\r\n\t\t\t that.xVal[i]\r\n\t\t\t,that.xVal[i+1]\r\n\t\t], n) / subRangeRatio (\r\n\t\t\tthat.xPct[i],\r\n\t\t\tthat.xPct[i+1] );\r\n\t}\r\n\r\n\r\n// Interface\r\n\r\n\t// The interface to Spectrum handles all direction-based\r\n\t// conversions, so the above values are unaware.\r\n\r\n\tfunction Spectrum ( entry, snap, direction, singleStep ) {\r\n\r\n\t\tthis.xPct = [];\r\n\t\tthis.xVal = [];\r\n\t\tthis.xSteps = [ singleStep || false ];\r\n\t\tthis.xNumSteps = [ false ];\r\n\r\n\t\tthis.snap = snap;\r\n\t\tthis.direction = direction;\r\n\r\n\t\tvar index, ordered = [ /* [0, 'min'], [1, '50%'], [2, 'max'] */ ];\r\n\r\n\t\t// Map the object keys to an array.\r\n\t\tfor ( index in entry ) {\r\n\t\t\tif ( entry.hasOwnProperty(index) ) {\r\n\t\t\t\tordered.push([entry[index], index]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Sort all entries by value (numeric sort).\r\n\t\tif ( ordered.length && typeof ordered[0][0] === \"object\" ) {\r\n\t\t\tordered.sort(function(a, b) { return a[0][0] - b[0][0]; });\r\n\t\t} else {\r\n\t\t\tordered.sort(function(a, b) { return a[0] - b[0]; });\r\n\t\t}\r\n\r\n\r\n\t\t// Convert all entries to subranges.\r\n\t\tfor ( index = 0; index < ordered.length; index++ ) {\r\n\t\t\thandleEntryPoint(ordered[index][1], ordered[index][0], this);\r\n\t\t}\r\n\r\n\t\t// Store the actual step values.\r\n\t\t// xSteps is sorted in the same order as xPct and xVal.\r\n\t\tthis.xNumSteps = this.xSteps.slice(0);\r\n\r\n\t\t// Convert all numeric steps to the percentage of the subrange they represent.\r\n\t\tfor ( index = 0; index < this.xNumSteps.length; index++ ) {\r\n\t\t\thandleStepPoint(index, this.xNumSteps[index], this);\r\n\t\t}\r\n\t}\r\n\r\n\tSpectrum.prototype.getMargin = function ( value ) {\r\n\t\treturn this.xPct.length === 2 ? fromPercentage(this.xVal, value) : false;\r\n\t};\r\n\r\n\tSpectrum.prototype.toStepping = function ( value ) {\r\n\r\n\t\tvalue = toStepping( this.xVal, this.xPct, value );\r\n\r\n\t\t// Invert the value if this is a right-to-left slider.\r\n\t\tif ( this.direction ) {\r\n\t\t\tvalue = 100 - value;\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t};\r\n\r\n\tSpectrum.prototype.fromStepping = function ( value ) {\r\n\r\n\t\t// Invert the value if this is a right-to-left slider.\r\n\t\tif ( this.direction ) {\r\n\t\t\tvalue = 100 - value;\r\n\t\t}\r\n\r\n\t\treturn fromStepping( this.xVal, this.xPct, value );\r\n\t};\r\n\r\n\tSpectrum.prototype.getStep = function ( value ) {\r\n\r\n\t\t// Find the proper step for rtl sliders by search in inverse direction.\r\n\t\t// Fixes issue #262.\r\n\t\tif ( this.direction ) {\r\n\t\t\tvalue = 100 - value;\r\n\t\t}\r\n\r\n\t\tvalue = getStep(this.xPct, this.xSteps, this.snap, value );\r\n\r\n\t\tif ( this.direction ) {\r\n\t\t\tvalue = 100 - value;\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t};\r\n\r\n\tSpectrum.prototype.getApplicableStep = function ( value ) {\r\n\r\n\t\t// If the value is 100%, return the negative step twice.\r\n\t\tvar j = getJ(value, this.xPct), offset = value === 100 ? 2 : 1;\r\n\t\treturn [this.xNumSteps[j-2], this.xVal[j-offset], this.xNumSteps[j-offset]];\r\n\t};\r\n\r\n\t// Outside testing\r\n\tSpectrum.prototype.convert = function ( value ) {\r\n\t\treturn this.getStep(this.toStepping(value));\r\n\t};\r\n\r\n/*\tEvery input option is tested and parsed. This'll prevent\r\n\tendless validation in internal methods. These tests are\r\n\tstructured with an item for every option available. An\r\n\toption can be marked as required by setting the 'r' flag.\r\n\tThe testing function is provided with three arguments:\r\n\t\t- The provided value for the option;\r\n\t\t- A reference to the options object;\r\n\t\t- The name for the option;\r\n\r\n\tThe testing function returns false when an error is detected,\r\n\tor true when everything is OK. It can also modify the option\r\n\tobject, to make sure all values can be correctly looped elsewhere. */\r\n\r\n\tvar defaultFormatter = { 'to': function( value ){\r\n\t\treturn value !== undefined && value.toFixed(2);\r\n\t}, 'from': Number };\r\n\r\n\tfunction testStep ( parsed, entry ) {\r\n\r\n\t\tif ( !isNumeric( entry ) ) {\r\n\t\t\tthrow new Error(\"noUiSlider: 'step' is not numeric.\");\r\n\t\t}\r\n\r\n\t\t// The step option can still be used to set stepping\r\n\t\t// for linear sliders. Overwritten if set in 'range'.\r\n\t\tparsed.singleStep = entry;\r\n\t}\r\n\r\n\tfunction testRange ( parsed, entry ) {\r\n\r\n\t\t// Filter incorrect input.\r\n\t\tif ( typeof entry !== 'object' || Array.isArray(entry) ) {\r\n\t\t\tthrow new Error(\"noUiSlider: 'range' is not an object.\");\r\n\t\t}\r\n\r\n\t\t// Catch missing start or end.\r\n\t\tif ( entry.min === undefined || entry.max === undefined ) {\r\n\t\t\tthrow new Error(\"noUiSlider: Missing 'min' or 'max' in 'range'.\");\r\n\t\t}\r\n\r\n\t\t// Catch equal start or end.\r\n\t\tif ( entry.min === entry.max ) {\r\n\t\t\tthrow new Error(\"noUiSlider: 'range' 'min' and 'max' cannot be equal.\");\r\n\t\t}\r\n\r\n\t\tparsed.spectrum = new Spectrum(entry, parsed.snap, parsed.dir, parsed.singleStep);\r\n\t}\r\n\r\n\tfunction testStart ( parsed, entry ) {\r\n\r\n\t\tentry = asArray(entry);\r\n\r\n\t\t// Validate input. Values aren't tested, as the public .val method\r\n\t\t// will always provide a valid location.\r\n\t\tif ( !Array.isArray( entry ) || !entry.length || entry.length > 2 ) {\r\n\t\t\tthrow new Error(\"noUiSlider: 'start' option is incorrect.\");\r\n\t\t}\r\n\r\n\t\t// Store the number of handles.\r\n\t\tparsed.handles = entry.length;\r\n\r\n\t\t// When the slider is initialized, the .val method will\r\n\t\t// be called with the start options.\r\n\t\tparsed.start = entry;\r\n\t}\r\n\r\n\tfunction testSnap ( parsed, entry ) {\r\n\r\n\t\t// Enforce 100% stepping within subranges.\r\n\t\tparsed.snap = entry;\r\n\r\n\t\tif ( typeof entry !== 'boolean' ){\r\n\t\t\tthrow new Error(\"noUiSlider: 'snap' option must be a boolean.\");\r\n\t\t}\r\n\t}\r\n\r\n\tfunction testAnimate ( parsed, entry ) {\r\n\r\n\t\t// Enforce 100% stepping within subranges.\r\n\t\tparsed.animate = entry;\r\n\r\n\t\tif ( typeof entry !== 'boolean' ){\r\n\t\t\tthrow new Error(\"noUiSlider: 'animate' option must be a boolean.\");\r\n\t\t}\r\n\t}\r\n\r\n\tfunction testAnimationDuration ( parsed, entry ) {\r\n\r\n\t\tparsed.animationDuration = entry;\r\n\r\n\t\tif ( typeof entry !== 'number' ){\r\n\t\t\tthrow new Error(\"noUiSlider: 'animationDuration' option must be a number.\");\r\n\t\t}\r\n\t}\r\n\r\n\tfunction testConnect ( parsed, entry ) {\r\n\r\n\t\tif ( entry === 'lower' && parsed.handles === 1 ) {\r\n\t\t\tparsed.connect = 1;\r\n\t\t} else if ( entry === 'upper' && parsed.handles === 1 ) {\r\n\t\t\tparsed.connect = 2;\r\n\t\t} else if ( entry === true && parsed.handles === 2 ) {\r\n\t\t\tparsed.connect = 3;\r\n\t\t} else if ( entry === false ) {\r\n\t\t\tparsed.connect = 0;\r\n\t\t} else {\r\n\t\t\tthrow new Error(\"noUiSlider: 'connect' option doesn't match handle count.\");\r\n\t\t}\r\n\t}\r\n\r\n\tfunction testOrientation ( parsed, entry ) {\r\n\r\n\t\t// Set orientation to an a numerical value for easy\r\n\t\t// array selection.\r\n\t\tswitch ( entry ){\r\n\t\t case 'horizontal':\r\n\t\t\tparsed.ort = 0;\r\n\t\t\tbreak;\r\n\t\t case 'vertical':\r\n\t\t\tparsed.ort = 1;\r\n\t\t\tbreak;\r\n\t\t default:\r\n\t\t\tthrow new Error(\"noUiSlider: 'orientation' option is invalid.\");\r\n\t\t}\r\n\t}\r\n\r\n\tfunction testMargin ( parsed, entry ) {\r\n\r\n\t\tif ( !isNumeric(entry) ){\r\n\t\t\tthrow new Error(\"noUiSlider: 'margin' option must be numeric.\");\r\n\t\t}\r\n\r\n\t\t// Issue #582\r\n\t\tif ( entry === 0 ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tparsed.margin = parsed.spectrum.getMargin(entry);\r\n\r\n\t\tif ( !parsed.margin ) {\r\n\t\t\tthrow new Error(\"noUiSlider: 'margin' option is only supported on linear sliders.\");\r\n\t\t}\r\n\t}\r\n\r\n\tfunction testLimit ( parsed, entry ) {\r\n\r\n\t\tif ( !isNumeric(entry) ){\r\n\t\t\tthrow new Error(\"noUiSlider: 'limit' option must be numeric.\");\r\n\t\t}\r\n\r\n\t\tparsed.limit = parsed.spectrum.getMargin(entry);\r\n\r\n\t\tif ( !parsed.limit ) {\r\n\t\t\tthrow new Error(\"noUiSlider: 'limit' option is only supported on linear sliders.\");\r\n\t\t}\r\n\t}\r\n\r\n\tfunction testDirection ( parsed, entry ) {\r\n\r\n\t\t// Set direction as a numerical value for easy parsing.\r\n\t\t// Invert connection for RTL sliders, so that the proper\r\n\t\t// handles get the connect/background classes.\r\n\t\tswitch ( entry ) {\r\n\t\t case 'ltr':\r\n\t\t\tparsed.dir = 0;\r\n\t\t\tbreak;\r\n\t\t case 'rtl':\r\n\t\t\tparsed.dir = 1;\r\n\t\t\tparsed.connect = [0,2,1,3][parsed.connect];\r\n\t\t\tbreak;\r\n\t\t default:\r\n\t\t\tthrow new Error(\"noUiSlider: 'direction' option was not recognized.\");\r\n\t\t}\r\n\t}\r\n\r\n\tfunction testBehaviour ( parsed, entry ) {\r\n\r\n\t\t// Make sure the input is a string.\r\n\t\tif ( typeof entry !== 'string' ) {\r\n\t\t\tthrow new Error(\"noUiSlider: 'behaviour' must be a string containing options.\");\r\n\t\t}\r\n\r\n\t\t// Check if the string contains any keywords.\r\n\t\t// None are required.\r\n\t\tvar tap = entry.indexOf('tap') >= 0,\r\n\t\t\tdrag = entry.indexOf('drag') >= 0,\r\n\t\t\tfixed = entry.indexOf('fixed') >= 0,\r\n\t\t\tsnap = entry.indexOf('snap') >= 0,\r\n\t\t\thover = entry.indexOf('hover') >= 0;\r\n\r\n\t\t// Fix #472\r\n\t\tif ( drag && !parsed.connect ) {\r\n\t\t\tthrow new Error(\"noUiSlider: 'drag' behaviour must be used with 'connect': true.\");\r\n\t\t}\r\n\r\n\t\tparsed.events = {\r\n\t\t\ttap: tap || snap,\r\n\t\t\tdrag: drag,\r\n\t\t\tfixed: fixed,\r\n\t\t\tsnap: snap,\r\n\t\t\thover: hover\r\n\t\t};\r\n\t}\r\n\r\n\tfunction testTooltips ( parsed, entry ) {\r\n\r\n\t\tvar i;\r\n\r\n\t\tif ( entry === false ) {\r\n\t\t\treturn;\r\n\t\t} else if ( entry === true ) {\r\n\r\n\t\t\tparsed.tooltips = [];\r\n\r\n\t\t\tfor ( i = 0; i < parsed.handles; i++ ) {\r\n\t\t\t\tparsed.tooltips.push(true);\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\r\n\t\t\tparsed.tooltips = asArray(entry);\r\n\r\n\t\t\tif ( parsed.tooltips.length !== parsed.handles ) {\r\n\t\t\t\tthrow new Error(\"noUiSlider: must pass a formatter for all handles.\");\r\n\t\t\t}\r\n\r\n\t\t\tparsed.tooltips.forEach(function(formatter){\r\n\t\t\t\tif ( typeof formatter !== 'boolean' && (typeof formatter !== 'object' || typeof formatter.to !== 'function') ) {\r\n\t\t\t\t\tthrow new Error(\"noUiSlider: 'tooltips' must be passed a formatter or 'false'.\");\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tfunction testFormat ( parsed, entry ) {\r\n\r\n\t\tparsed.format = entry;\r\n\r\n\t\t// Any object with a to and from method is supported.\r\n\t\tif ( typeof entry.to === 'function' && typeof entry.from === 'function' ) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tthrow new Error(\"noUiSlider: 'format' requires 'to' and 'from' methods.\");\r\n\t}\r\n\r\n\tfunction testCssPrefix ( parsed, entry ) {\r\n\r\n\t\tif ( entry !== undefined && typeof entry !== 'string' && entry !== false ) {\r\n\t\t\tthrow new Error(\"noUiSlider: 'cssPrefix' must be a string or `false`.\");\r\n\t\t}\r\n\r\n\t\tparsed.cssPrefix = entry;\r\n\t}\r\n\r\n\tfunction testCssClasses ( parsed, entry ) {\r\n\r\n\t\tif ( entry !== undefined && typeof entry !== 'object' ) {\r\n\t\t\tthrow new Error(\"noUiSlider: 'cssClasses' must be an object.\");\r\n\t\t}\r\n\r\n\t\tif ( typeof parsed.cssPrefix === 'string' ) {\r\n\t\t\tparsed.cssClasses = {};\r\n\r\n\t\t\tfor ( var key in entry ) {\r\n\t\t\t\tif ( !entry.hasOwnProperty(key) ) { continue; }\r\n\r\n\t\t\t\tparsed.cssClasses[key] = parsed.cssPrefix + entry[key];\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tparsed.cssClasses = entry;\r\n\t\t}\r\n\t}\r\n\r\n\t// Test all developer settings and parse to assumption-safe values.\r\n\tfunction testOptions ( options ) {\r\n\r\n\t\t// To prove a fix for #537, freeze options here.\r\n\t\t// If the object is modified, an error will be thrown.\r\n\t\t// Object.freeze(options);\r\n\r\n\t\tvar parsed = {\r\n\t\t\tmargin: 0,\r\n\t\t\tlimit: 0,\r\n\t\t\tanimate: true,\r\n\t\t\tanimationDuration: 300,\r\n\t\t\tformat: defaultFormatter\r\n\t\t}, tests;\r\n\r\n\t\t// Tests are executed in the order they are presented here.\r\n\t\ttests = {\r\n\t\t\t'step': { r: false, t: testStep },\r\n\t\t\t'start': { r: true, t: testStart },\r\n\t\t\t'connect': { r: true, t: testConnect },\r\n\t\t\t'direction': { r: true, t: testDirection },\r\n\t\t\t'snap': { r: false, t: testSnap },\r\n\t\t\t'animate': { r: false, t: testAnimate },\r\n\t\t\t'animationDuration': { r: false, t: testAnimationDuration },\r\n\t\t\t'range': { r: true, t: testRange },\r\n\t\t\t'orientation': { r: false, t: testOrientation },\r\n\t\t\t'margin': { r: false, t: testMargin },\r\n\t\t\t'limit': { r: false, t: testLimit },\r\n\t\t\t'behaviour': { r: true, t: testBehaviour },\r\n\t\t\t'format': { r: false, t: testFormat },\r\n\t\t\t'tooltips': { r: false, t: testTooltips },\r\n\t\t\t'cssPrefix': { r: false, t: testCssPrefix },\r\n\t\t\t'cssClasses': { r: false, t: testCssClasses }\r\n\t\t};\r\n\r\n\t\tvar defaults = {\r\n\t\t\t'connect': false,\r\n\t\t\t'direction': 'ltr',\r\n\t\t\t'behaviour': 'tap',\r\n\t\t\t'orientation': 'horizontal',\r\n\t\t\t'cssPrefix' : 'noUi-',\r\n\t\t\t'cssClasses': {\r\n\t\t\t\ttarget: 'target',\r\n\t\t\t\tbase: 'base',\r\n\t\t\t\torigin: 'origin',\r\n\t\t\t\thandle: 'handle',\r\n\t\t\t\thandleLower: 'handle-lower',\r\n\t\t\t\thandleUpper: 'handle-upper',\r\n\t\t\t\thorizontal: 'horizontal',\r\n\t\t\t\tvertical: 'vertical',\r\n\t\t\t\tbackground: 'background',\r\n\t\t\t\tconnect: 'connect',\r\n\t\t\t\tltr: 'ltr',\r\n\t\t\t\trtl: 'rtl',\r\n\t\t\t\tdraggable: 'draggable',\r\n\t\t\t\tdrag: 'state-drag',\r\n\t\t\t\ttap: 'state-tap',\r\n\t\t\t\tactive: 'active',\r\n\t\t\t\tstacking: 'stacking',\r\n\t\t\t\ttooltip: 'tooltip',\r\n\t\t\t\tpips: 'pips',\r\n\t\t\t\tpipsHorizontal: 'pips-horizontal',\r\n\t\t\t\tpipsVertical: 'pips-vertical',\r\n\t\t\t\tmarker: 'marker',\r\n\t\t\t\tmarkerHorizontal: 'marker-horizontal',\r\n\t\t\t\tmarkerVertical: 'marker-vertical',\r\n\t\t\t\tmarkerNormal: 'marker-normal',\r\n\t\t\t\tmarkerLarge: 'marker-large',\r\n\t\t\t\tmarkerSub: 'marker-sub',\r\n\t\t\t\tvalue: 'value',\r\n\t\t\t\tvalueHorizontal: 'value-horizontal',\r\n\t\t\t\tvalueVertical: 'value-vertical',\r\n\t\t\t\tvalueNormal: 'value-normal',\r\n\t\t\t\tvalueLarge: 'value-large',\r\n\t\t\t\tvalueSub: 'value-sub'\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Run all options through a testing mechanism to ensure correct\r\n\t\t// input. It should be noted that options might get modified to\r\n\t\t// be handled properly. E.g. wrapping integers in arrays.\r\n\t\tObject.keys(tests).forEach(function( name ){\r\n\r\n\t\t\t// If the option isn't set, but it is required, throw an error.\r\n\t\t\tif ( options[name] === undefined && defaults[name] === undefined ) {\r\n\r\n\t\t\t\tif ( tests[name].r ) {\r\n\t\t\t\t\tthrow new Error(\"noUiSlider: '\" + name + \"' is required.\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\ttests[name].t( parsed, options[name] === undefined ? defaults[name] : options[name] );\r\n\t\t});\r\n\r\n\t\t// Forward pips options\r\n\t\tparsed.pips = options.pips;\r\n\r\n\t\t// Pre-define the styles.\r\n\t\tparsed.style = parsed.ort ? 'top' : 'left';\r\n\r\n\t\treturn parsed;\r\n\t}\r\n\r\n\r\nfunction closure ( target, options, originalOptions ){\r\n\tvar\r\n\t\tactions = getActions( ),\r\n\t\t// All variables local to 'closure' are prefixed with 'scope_'\r\n\t\tscope_Target = target,\r\n\t\tscope_Locations = [-1, -1],\r\n\t\tscope_Base,\r\n\t\tscope_Handles,\r\n\t\tscope_Spectrum = options.spectrum,\r\n\t\tscope_Values = [],\r\n\t\tscope_Events = {},\r\n\t\tscope_Self;\r\n\r\n\r\n\t// Delimit proposed values for handle positions.\r\n\tfunction getPositions ( a, b, delimit ) {\r\n\r\n\t\t// Add movement to current position.\r\n\t\tvar c = a + b[0], d = a + b[1];\r\n\r\n\t\t// Only alter the other position on drag,\r\n\t\t// not on standard sliding.\r\n\t\tif ( delimit ) {\r\n\t\t\tif ( c < 0 ) {\r\n\t\t\t\td += Math.abs(c);\r\n\t\t\t}\r\n\t\t\tif ( d > 100 ) {\r\n\t\t\t\tc -= ( d - 100 );\r\n\t\t\t}\r\n\r\n\t\t\t// Limit values to 0 and 100.\r\n\t\t\treturn [limit(c), limit(d)];\r\n\t\t}\r\n\r\n\t\treturn [c,d];\r\n\t}\r\n\r\n\t// Provide a clean event with standardized offset values.\r\n\tfunction fixEvent ( e, pageOffset ) {\r\n\r\n\t\t// Prevent scrolling and panning on touch events, while\r\n\t\t// attempting to slide. The tap event also depends on this.\r\n\t\te.preventDefault();\r\n\r\n\t\t// Filter the event to register the type, which can be\r\n\t\t// touch, mouse or pointer. Offset changes need to be\r\n\t\t// made on an event specific basis.\r\n\t\tvar touch = e.type.indexOf('touch') === 0,\r\n\t\t\tmouse = e.type.indexOf('mouse') === 0,\r\n\t\t\tpointer = e.type.indexOf('pointer') === 0,\r\n\t\t\tx,y, event = e;\r\n\r\n\t\t// IE10 implemented pointer events with a prefix;\r\n\t\tif ( e.type.indexOf('MSPointer') === 0 ) {\r\n\t\t\tpointer = true;\r\n\t\t}\r\n\r\n\t\tif ( touch ) {\r\n\t\t\t// noUiSlider supports one movement at a time,\r\n\t\t\t// so we can select the first 'changedTouch'.\r\n\t\t\tx = e.changedTouches[0].pageX;\r\n\t\t\ty = e.changedTouches[0].pageY;\r\n\t\t}\r\n\r\n\t\tpageOffset = pageOffset || getPageOffset();\r\n\r\n\t\tif ( mouse || pointer ) {\r\n\t\t\tx = e.clientX + pageOffset.x;\r\n\t\t\ty = e.clientY + pageOffset.y;\r\n\t\t}\r\n\r\n\t\tevent.pageOffset = pageOffset;\r\n\t\tevent.points = [x, y];\r\n\t\tevent.cursor = mouse || pointer; // Fix #435\r\n\r\n\t\treturn event;\r\n\t}\r\n\r\n\t// Append a handle to the base.\r\n\tfunction addHandle ( direction, index ) {\r\n\r\n\t\tvar origin = document.createElement('div'),\r\n\t\t\thandle = document.createElement('div'),\r\n\t\t\tclassModifier = [options.cssClasses.handleLower, options.cssClasses.handleUpper];\r\n\r\n\t\tif ( direction ) {\r\n\t\t\tclassModifier.reverse();\r\n\t\t}\r\n\r\n\t\taddClass(handle, options.cssClasses.handle);\r\n\t\taddClass(handle, classModifier[index]);\r\n\r\n\t\taddClass(origin, options.cssClasses.origin);\r\n\t\torigin.appendChild(handle);\r\n\r\n\t\treturn origin;\r\n\t}\r\n\r\n\t// Add the proper connection classes.\r\n\tfunction addConnection ( connect, target, handles ) {\r\n\r\n\t\t// Apply the required connection classes to the elements\r\n\t\t// that need them. Some classes are made up for several\r\n\t\t// segments listed in the class list, to allow easy\r\n\t\t// renaming and provide a minor compression benefit.\r\n\t\tswitch ( connect ) {\r\n\t\t\tcase 1:\taddClass(target, options.cssClasses.connect);\r\n\t\t\t\t\taddClass(handles[0], options.cssClasses.background);\r\n\t\t\t\t\tbreak;\r\n\t\t\tcase 3: addClass(handles[1], options.cssClasses.background);\r\n\t\t\t\t\t/* falls through */\r\n\t\t\tcase 2: addClass(handles[0], options.cssClasses.connect);\r\n\t\t\t\t\t/* falls through */\r\n\t\t\tcase 0: addClass(target, options.cssClasses.background);\r\n\t\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t// Add handles to the slider base.\r\n\tfunction addHandles ( nrHandles, direction, base ) {\r\n\r\n\t\tvar index, handles = [];\r\n\r\n\t\t// Append handles.\r\n\t\tfor ( index = 0; index < nrHandles; index += 1 ) {\r\n\r\n\t\t\t// Keep a list of all added handles.\r\n\t\t\thandles.push( base.appendChild(addHandle( direction, index )) );\r\n\t\t}\r\n\r\n\t\treturn handles;\r\n\t}\r\n\r\n\t// Initialize a single slider.\r\n\tfunction addSlider ( direction, orientation, target ) {\r\n\r\n\t\t// Apply classes and data to the target.\r\n\t\taddClass(target, options.cssClasses.target);\r\n\r\n\t\tif ( direction === 0 ) {\r\n\t\t\taddClass(target, options.cssClasses.ltr);\r\n\t\t} else {\r\n\t\t\taddClass(target, options.cssClasses.rtl);\r\n\t\t}\r\n\r\n\t\tif ( orientation === 0 ) {\r\n\t\t\taddClass(target, options.cssClasses.horizontal);\r\n\t\t} else {\r\n\t\t\taddClass(target, options.cssClasses.vertical);\r\n\t\t}\r\n\r\n\t\tvar div = document.createElement('div');\r\n\t\taddClass(div, options.cssClasses.base);\r\n\t\ttarget.appendChild(div);\r\n\t\treturn div;\r\n\t}\r\n\r\n\r\n\tfunction addTooltip ( handle, index ) {\r\n\r\n\t\tif ( !options.tooltips[index] ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tvar element = document.createElement('div');\r\n\t\telement.className = options.cssClasses.tooltip;\r\n\t\treturn handle.firstChild.appendChild(element);\r\n\t}\r\n\r\n\t// The tooltips option is a shorthand for using the 'update' event.\r\n\tfunction tooltips ( ) {\r\n\r\n\t\tif ( options.dir ) {\r\n\t\t\toptions.tooltips.reverse();\r\n\t\t}\r\n\r\n\t\t// Tooltips are added with options.tooltips in original order.\r\n\t\tvar tips = scope_Handles.map(addTooltip);\r\n\r\n\t\tif ( options.dir ) {\r\n\t\t\ttips.reverse();\r\n\t\t\toptions.tooltips.reverse();\r\n\t\t}\r\n\r\n\t\tbindEvent('update', function(f, o, r) {\r\n\t\t\tif ( tips[o] ) {\r\n\t\t\t\ttips[o].innerHTML = options.tooltips[o] === true ? f[o] : options.tooltips[o].to(r[o]);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tfunction getGroup ( mode, values, stepped ) {\r\n\r\n\t\t// Use the range.\r\n\t\tif ( mode === 'range' || mode === 'steps' ) {\r\n\t\t\treturn scope_Spectrum.xVal;\r\n\t\t}\r\n\r\n\t\tif ( mode === 'count' ) {\r\n\r\n\t\t\t// Divide 0 - 100 in 'count' parts.\r\n\t\t\tvar spread = ( 100 / (values-1) ), v, i = 0;\r\n\t\t\tvalues = [];\r\n\r\n\t\t\t// List these parts and have them handled as 'positions'.\r\n\t\t\twhile ((v=i++*spread) <= 100 ) {\r\n\t\t\t\tvalues.push(v);\r\n\t\t\t}\r\n\r\n\t\t\tmode = 'positions';\r\n\t\t}\r\n\r\n\t\tif ( mode === 'positions' ) {\r\n\r\n\t\t\t// Map all percentages to on-range values.\r\n\t\t\treturn values.map(function( value ){\r\n\t\t\t\treturn scope_Spectrum.fromStepping( stepped ? scope_Spectrum.getStep( value ) : value );\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif ( mode === 'values' ) {\r\n\r\n\t\t\t// If the value must be stepped, it needs to be converted to a percentage first.\r\n\t\t\tif ( stepped ) {\r\n\r\n\t\t\t\treturn values.map(function( value ){\r\n\r\n\t\t\t\t\t// Convert to percentage, apply step, return to value.\r\n\t\t\t\t\treturn scope_Spectrum.fromStepping( scope_Spectrum.getStep( scope_Spectrum.toStepping( value ) ) );\r\n\t\t\t\t});\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// Otherwise, we can simply use the values.\r\n\t\t\treturn values;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction generateSpread ( density, mode, group ) {\r\n\r\n\t\tfunction safeIncrement(value, increment) {\r\n\t\t\t// Avoid floating point variance by dropping the smallest decimal places.\r\n\t\t\treturn (value + increment).toFixed(7) / 1;\r\n\t\t}\r\n\r\n\t\tvar originalSpectrumDirection = scope_Spectrum.direction,\r\n\t\t\tindexes = {},\r\n\t\t\tfirstInRange = scope_Spectrum.xVal[0],\r\n\t\t\tlastInRange = scope_Spectrum.xVal[scope_Spectrum.xVal.length-1],\r\n\t\t\tignoreFirst = false,\r\n\t\t\tignoreLast = false,\r\n\t\t\tprevPct = 0;\r\n\r\n\t\t// This function loops the spectrum in an ltr linear fashion,\r\n\t\t// while the toStepping method is direction aware. Trick it into\r\n\t\t// believing it is ltr.\r\n\t\tscope_Spectrum.direction = 0;\r\n\r\n\t\t// Create a copy of the group, sort it and filter away all duplicates.\r\n\t\tgroup = unique(group.slice().sort(function(a, b){ return a - b; }));\r\n\r\n\t\t// Make sure the range starts with the first element.\r\n\t\tif ( group[0] !== firstInRange ) {\r\n\t\t\tgroup.unshift(firstInRange);\r\n\t\t\tignoreFirst = true;\r\n\t\t}\r\n\r\n\t\t// Likewise for the last one.\r\n\t\tif ( group[group.length - 1] !== lastInRange ) {\r\n\t\t\tgroup.push(lastInRange);\r\n\t\t\tignoreLast = true;\r\n\t\t}\r\n\r\n\t\tgroup.forEach(function ( current, index ) {\r\n\r\n\t\t\t// Get the current step and the lower + upper positions.\r\n\t\t\tvar step, i, q,\r\n\t\t\t\tlow = current,\r\n\t\t\t\thigh = group[index+1],\r\n\t\t\t\tnewPct, pctDifference, pctPos, type,\r\n\t\t\t\tsteps, realSteps, stepsize;\r\n\r\n\t\t\t// When using 'steps' mode, use the provided steps.\r\n\t\t\t// Otherwise, we'll step on to the next subrange.\r\n\t\t\tif ( mode === 'steps' ) {\r\n\t\t\t\tstep = scope_Spectrum.xNumSteps[ index ];\r\n\t\t\t}\r\n\r\n\t\t\t// Default to a 'full' step.\r\n\t\t\tif ( !step ) {\r\n\t\t\t\tstep = high-low;\r\n\t\t\t}\r\n\r\n\t\t\t// Low can be 0, so test for false. If high is undefined,\r\n\t\t\t// we are at the last subrange. Index 0 is already handled.\r\n\t\t\tif ( low === false || high === undefined ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// Find all steps in the subrange.\r\n\t\t\tfor ( i = low; i <= high; i = safeIncrement(i, step) ) {\r\n\r\n\t\t\t\t// Get the percentage value for the current step,\r\n\t\t\t\t// calculate the size for the subrange.\r\n\t\t\t\tnewPct = scope_Spectrum.toStepping( i );\r\n\t\t\t\tpctDifference = newPct - prevPct;\r\n\r\n\t\t\t\tsteps = pctDifference / density;\r\n\t\t\t\trealSteps = Math.round(steps);\r\n\r\n\t\t\t\t// This ratio represents the ammount of percentage-space a point indicates.\r\n\t\t\t\t// For a density 1 the points/percentage = 1. For density 2, that percentage needs to be re-devided.\r\n\t\t\t\t// Round the percentage offset to an even number, then divide by two\r\n\t\t\t\t// to spread the offset on both sides of the range.\r\n\t\t\t\tstepsize = pctDifference/realSteps;\r\n\r\n\t\t\t\t// Divide all points evenly, adding the correct number to this subrange.\r\n\t\t\t\t// Run up to <= so that 100% gets a point, event if ignoreLast is set.\r\n\t\t\t\tfor ( q = 1; q <= realSteps; q += 1 ) {\r\n\r\n\t\t\t\t\t// The ratio between the rounded value and the actual size might be ~1% off.\r\n\t\t\t\t\t// Correct the percentage offset by the number of points\r\n\t\t\t\t\t// per subrange. density = 1 will result in 100 points on the\r\n\t\t\t\t\t// full range, 2 for 50, 4 for 25, etc.\r\n\t\t\t\t\tpctPos = prevPct + ( q * stepsize );\r\n\t\t\t\t\tindexes[pctPos.toFixed(5)] = ['x', 0];\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Determine the point type.\r\n\t\t\t\ttype = (group.indexOf(i) > -1) ? 1 : ( mode === 'steps' ? 2 : 0 );\r\n\r\n\t\t\t\t// Enforce the 'ignoreFirst' option by overwriting the type for 0.\r\n\t\t\t\tif ( !index && ignoreFirst ) {\r\n\t\t\t\t\ttype = 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( !(i === high && ignoreLast)) {\r\n\t\t\t\t\t// Mark the 'type' of this point. 0 = plain, 1 = real value, 2 = step value.\r\n\t\t\t\t\tindexes[newPct.toFixed(5)] = [i, type];\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Update the percentage count.\r\n\t\t\t\tprevPct = newPct;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// Reset the spectrum.\r\n\t\tscope_Spectrum.direction = originalSpectrumDirection;\r\n\r\n\t\treturn indexes;\r\n\t}\r\n\r\n\tfunction addMarking ( spread, filterFunc, formatter ) {\r\n\r\n\t\tvar element = document.createElement('div'),\r\n\t\t\tout = '',\r\n\t\t\tvalueSizeClasses = [\r\n\t\t\t\toptions.cssClasses.valueNormal,\r\n\t\t\t\toptions.cssClasses.valueLarge,\r\n\t\t\t\toptions.cssClasses.valueSub\r\n\t\t\t],\r\n\t\t\tmarkerSizeClasses = [\r\n\t\t\t\toptions.cssClasses.markerNormal,\r\n\t\t\t\toptions.cssClasses.markerLarge,\r\n\t\t\t\toptions.cssClasses.markerSub\r\n\t\t\t],\r\n\t\t\tvalueOrientationClasses = [\r\n\t\t\t\toptions.cssClasses.valueHorizontal,\r\n\t\t\t\toptions.cssClasses.valueVertical\r\n\t\t\t],\r\n\t\t\tmarkerOrientationClasses = [\r\n\t\t\t\toptions.cssClasses.markerHorizontal,\r\n\t\t\t\toptions.cssClasses.markerVertical\r\n\t\t\t];\r\n\r\n\t\taddClass(element, options.cssClasses.pips);\r\n\t\taddClass(element, options.ort === 0 ? options.cssClasses.pipsHorizontal : options.cssClasses.pipsVertical);\r\n\r\n\t\tfunction getClasses( type, source ){\r\n\t\t\tvar a = source === options.cssClasses.value,\r\n\t\t\t\torientationClasses = a ? valueOrientationClasses : markerOrientationClasses,\r\n\t\t\t\tsizeClasses = a ? valueSizeClasses : markerSizeClasses;\r\n\r\n\t\t\treturn source + ' ' + orientationClasses[options.ort] + ' ' + sizeClasses[type];\r\n\t\t}\r\n\r\n\t\tfunction getTags( offset, source, values ) {\r\n\t\t\treturn 'class=\"' + getClasses(values[1], source) + '\" style=\"' + options.style + ': ' + offset + '%\"';\r\n\t\t}\r\n\r\n\t\tfunction addSpread ( offset, values ){\r\n\r\n\t\t\tif ( scope_Spectrum.direction ) {\r\n\t\t\t\toffset = 100 - offset;\r\n\t\t\t}\r\n\r\n\t\t\t// Apply the filter function, if it is set.\r\n\t\t\tvalues[1] = (values[1] && filterFunc) ? filterFunc(values[0], values[1]) : values[1];\r\n\r\n\t\t\t// Add a marker for every point\r\n\t\t\tout += '<div ' + getTags(offset, options.cssClasses.marker, values) + '></div>';\r\n\r\n\t\t\t// Values are only appended for points marked '1' or '2'.\r\n\t\t\tif ( values[1] ) {\r\n\t\t\t\tout += '<div ' + getTags(offset, options.cssClasses.value, values) + '>' + formatter.to(values[0]) + '</div>';\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Append all points.\r\n\t\tObject.keys(spread).forEach(function(a){\r\n\t\t\taddSpread(a, spread[a]);\r\n\t\t});\r\n\r\n\t\telement.innerHTML = out;\r\n\r\n\t\treturn element;\r\n\t}\r\n\r\n\tfunction pips ( grid ) {\r\n\r\n\tvar mode = grid.mode,\r\n\t\tdensity = grid.density || 1,\r\n\t\tfilter = grid.filter || false,\r\n\t\tvalues = grid.values || false,\r\n\t\tstepped = grid.stepped || false,\r\n\t\tgroup = getGroup( mode, values, stepped ),\r\n\t\tspread = generateSpread( density, mode, group ),\r\n\t\tformat = grid.format || {\r\n\t\t\tto: Math.round\r\n\t\t};\r\n\r\n\t\treturn scope_Target.appendChild(addMarking(\r\n\t\t\tspread,\r\n\t\t\tfilter,\r\n\t\t\tformat\r\n\t\t));\r\n\t}\r\n\r\n\r\n\t// Shorthand for base dimensions.\r\n\tfunction baseSize ( ) {\r\n\t\tvar rect = scope_Base.getBoundingClientRect(), alt = 'offset' + ['Width', 'Height'][options.ort];\r\n\t\treturn options.ort === 0 ? (rect.width||scope_Base[alt]) : (rect.height||scope_Base[alt]);\r\n\t}\r\n\r\n\t// External event handling\r\n\tfunction fireEvent ( event, handleNumber, tap ) {\r\n\r\n\t\tvar i;\r\n\r\n\t\t// During initialization, do not fire events.\r\n\t\tfor ( i = 0; i < options.handles; i++ ) {\r\n\t\t\tif ( scope_Locations[i] === -1 ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( handleNumber !== undefined && options.handles !== 1 ) {\r\n\t\t\thandleNumber = Math.abs(handleNumber - options.dir);\r\n\t\t}\r\n\r\n\t\tObject.keys(scope_Events).forEach(function( targetEvent ) {\r\n\r\n\t\t\tvar eventType = targetEvent.split('.')[0];\r\n\r\n\t\t\tif ( event === eventType ) {\r\n\t\t\t\tscope_Events[targetEvent].forEach(function( callback ) {\r\n\r\n\t\t\t\t\tcallback.call(\r\n\t\t\t\t\t\t// Use the slider public API as the scope ('this')\r\n\t\t\t\t\t\tscope_Self,\r\n\t\t\t\t\t\t// Return values as array, so arg_1[arg_2] is always valid.\r\n\t\t\t\t\t\tasArray(valueGet()),\r\n\t\t\t\t\t\t// Handle index, 0 or 1\r\n\t\t\t\t\t\thandleNumber,\r\n\t\t\t\t\t\t// Unformatted slider values\r\n\t\t\t\t\t\tasArray(inSliderOrder(Array.prototype.slice.call(scope_Values))),\r\n\t\t\t\t\t\t// Event is fired by tap, true or false\r\n\t\t\t\t\t\ttap || false,\r\n\t\t\t\t\t\t// Left offset of the handle, in relation to the slider\r\n\t\t\t\t\t\tscope_Locations\r\n\t\t\t\t\t);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t// Returns the input array, respecting the slider direction configuration.\r\n\tfunction inSliderOrder ( values ) {\r\n\r\n\t\t// If only one handle is used, return a single value.\r\n\t\tif ( values.length === 1 ){\r\n\t\t\treturn values[0];\r\n\t\t}\r\n\r\n\t\tif ( options.dir ) {\r\n\t\t\treturn values.reverse();\r\n\t\t}\r\n\r\n\t\treturn values;\r\n\t}\r\n\r\n\r\n\t// Handler for attaching events trough a proxy.\r\n\tfunction attach ( events, element, callback, data ) {\r\n\r\n\t\t// This function can be used to 'filter' events to the slider.\r\n\t\t// element is a node, not a nodeList\r\n\r\n\t\tvar method = function ( e ){\r\n\r\n\t\t\tif ( scope_Target.hasAttribute('disabled') ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\t// Stop if an active 'tap' transition is taking place.\r\n\t\t\tif ( hasClass(scope_Target, options.cssClasses.tap) ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\te = fixEvent(e, data.pageOffset);\r\n\r\n\t\t\t// Ignore right or middle clicks on start #454\r\n\t\t\tif ( events === actions.start && e.buttons !== undefined && e.buttons > 1 ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\t// Ignore right or middle clicks on start #454\r\n\t\t\tif ( data.hover && e.buttons ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\te.calcPoint = e.points[ options.ort ];\r\n\r\n\t\t\t// Call the event handler with the event [ and additional data ].\r\n\t\t\tcallback ( e, data );\r\n\r\n\t\t}, methods = [];\r\n\r\n\t\t// Bind a closure on the target for every event type.\r\n\t\tevents.split(' ').forEach(function( eventName ){\r\n\t\t\telement.addEventListener(eventName, method, false);\r\n\t\t\tmethods.push([eventName, method]);\r\n\t\t});\r\n\r\n\t\treturn methods;\r\n\t}\r\n\r\n\t// Handle movement on document for handle and range drag.\r\n\tfunction move ( event, data ) {\r\n\r\n\t\t// Fix #498\r\n\t\t// Check value of .buttons in 'start' to work around a bug in IE10 mobile (data.buttonsProperty).\r\n\t\t// https://connect.microsoft.com/IE/feedback/details/927005/mobile-ie10-windows-phone-buttons-property-of-pointermove-event-always-zero\r\n\t\t// IE9 has .buttons and .which zero on mousemove.\r\n\t\t// Firefox breaks the spec MDN defines.\r\n\t\tif ( navigator.appVersion.indexOf(\"MSIE 9\") === -1 && event.buttons === 0 && data.buttonsProperty !== 0 ) {\r\n\t\t\treturn end(event, data);\r\n\t\t}\r\n\r\n\t\tvar handles = data.handles || scope_Handles, positions, state = false,\r\n\t\t\tproposal = ((event.calcPoint - data.start) * 100) / data.baseSize,\r\n\t\t\thandleNumber = handles[0] === scope_Handles[0] ? 0 : 1, i;\r\n\r\n\t\t// Calculate relative positions for the handles.\r\n\t\tpositions = getPositions( proposal, data.positions, handles.length > 1);\r\n\r\n\t\tstate = setHandle ( handles[0], positions[handleNumber], handles.length === 1 );\r\n\r\n\t\tif ( handles.length > 1 ) {\r\n\r\n\t\t\tstate = setHandle ( handles[1], positions[handleNumber?0:1], false ) || state;\r\n\r\n\t\t\tif ( state ) {\r\n\t\t\t\t// fire for both handles\r\n\t\t\t\tfor ( i = 0; i < data.handles.length; i++ ) {\r\n\t\t\t\t\tfireEvent('slide', i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else if ( state ) {\r\n\t\t\t// Fire for a single handle\r\n\t\t\tfireEvent('slide', handleNumber);\r\n\t\t}\r\n\t}\r\n\r\n\t// Unbind move events on document, call callbacks.\r\n\tfunction end ( event, data ) {\r\n\r\n\t\t// The handle is no longer active, so remove the class.\r\n\t\tvar active = scope_Base.querySelector( '.' + options.cssClasses.active ),\r\n\t\t\thandleNumber = data.handles[0] === scope_Handles[0] ? 0 : 1;\r\n\r\n\t\tif ( active !== null ) {\r\n\t\t\tremoveClass(active, options.cssClasses.active);\r\n\t\t}\r\n\r\n\t\t// Remove cursor styles and text-selection events bound to the body.\r\n\t\tif ( event.cursor ) {\r\n\t\t\tdocument.body.style.cursor = '';\r\n\t\t\tdocument.body.removeEventListener('selectstart', document.body.noUiListener);\r\n\t\t}\r\n\r\n\t\tvar d = document.documentElement;\r\n\r\n\t\t// Unbind the move and end events, which are added on 'start'.\r\n\t\td.noUiListeners.forEach(function( c ) {\r\n\t\t\td.removeEventListener(c[0], c[1]);\r\n\t\t});\r\n\r\n\t\t// Remove dragging class.\r\n\t\tremoveClass(scope_Target, options.cssClasses.drag);\r\n\r\n\t\t// Fire the change and set events.\r\n\t\tfireEvent('set', handleNumber);\r\n\t\tfireEvent('change', handleNumber);\r\n\r\n\t\t// If this is a standard handle movement, fire the end event.\r\n\t\tif ( data.handleNumber !== undefined ) {\r\n\t\t\tfireEvent('end', data.handleNumber);\r\n\t\t}\r\n\t}\r\n\r\n\t// Fire 'end' when a mouse or pen leaves the document.\r\n\tfunction documentLeave ( event, data ) {\r\n\t\tif ( event.type === \"mouseout\" && event.target.nodeName === \"HTML\" && event.relatedTarget === null ){\r\n\t\t\tend ( event, data );\r\n\t\t}\r\n\t}\r\n\r\n\t// Bind move events on document.\r\n\tfunction start ( event, data ) {\r\n\r\n\t\tvar d = document.documentElement;\r\n\r\n\t\t// Mark the handle as 'active' so it can be styled.\r\n\t\tif ( data.handles.length === 1 ) {\r\n\t\t\t// Support 'disabled' handles\r\n\t\t\tif ( data.handles[0].hasAttribute('disabled') ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\taddClass(data.handles[0].children[0], options.cssClasses.active);\r\n\t\t}\r\n\r\n\t\t// Fix #551, where a handle gets selected instead of dragged.\r\n\t\tevent.preventDefault();\r\n\r\n\t\t// A drag should never propagate up to the 'tap' event.\r\n\t\tevent.stopPropagation();\r\n\r\n\t\t// Attach the move and end events.\r\n\t\tvar moveEvent = attach(actions.move, d, move, {\r\n\t\t\tstart: event.calcPoint,\r\n\t\t\tbaseSize: baseSize(),\r\n\t\t\tpageOffset: event.pageOffset,\r\n\t\t\thandles: data.handles,\r\n\t\t\thandleNumber: data.handleNumber,\r\n\t\t\tbuttonsProperty: event.buttons,\r\n\t\t\tpositions: [\r\n\t\t\t\tscope_Locations[0],\r\n\t\t\t\tscope_Locations[scope_Handles.length - 1]\r\n\t\t\t]\r\n\t\t}), endEvent = attach(actions.end, d, end, {\r\n\t\t\thandles: data.handles,\r\n\t\t\thandleNumber: data.handleNumber\r\n\t\t});\r\n\r\n\t\tvar outEvent = attach(\"mouseout\", d, documentLeave, {\r\n\t\t\thandles: data.handles,\r\n\t\t\thandleNumber: data.handleNumber\r\n\t\t});\r\n\r\n\t\td.noUiListeners = moveEvent.concat(endEvent, outEvent);\r\n\r\n\t\t// Text selection isn't an issue on touch devices,\r\n\t\t// so adding cursor styles can be skipped.\r\n\t\tif ( event.cursor ) {\r\n\r\n\t\t\t// Prevent the 'I' cursor and extend the range-drag cursor.\r\n\t\t\tdocument.body.style.cursor = getComputedStyle(event.target).cursor;\r\n\r\n\t\t\t// Mark the target with a dragging state.\r\n\t\t\tif ( scope_Handles.length > 1 ) {\r\n\t\t\t\taddClass(scope_Target, options.cssClasses.drag);\r\n\t\t\t}\r\n\r\n\t\t\tvar f = function(){\r\n\t\t\t\treturn false;\r\n\t\t\t};\r\n\r\n\t\t\tdocument.body.noUiListener = f;\r\n\r\n\t\t\t// Prevent text selection when dragging the handles.\r\n\t\t\tdocument.body.addEventListener('selectstart', f, false);\r\n\t\t}\r\n\r\n\t\tif ( data.handleNumber !== undefined ) {\r\n\t\t\tfireEvent('start', data.handleNumber);\r\n\t\t}\r\n\t}\r\n\r\n\t// Move closest handle to tapped location.\r\n\tfunction tap ( event ) {\r\n\r\n\t\tvar location = event.calcPoint, total = 0, handleNumber, to;\r\n\r\n\t\t// The tap event shouldn't propagate up and cause 'edge' to run.\r\n\t\tevent.stopPropagation();\r\n\r\n\t\t// Add up the handle offsets.\r\n\t\tscope_Handles.forEach(function(a){\r\n\t\t\ttotal += offset(a)[ options.style ];\r\n\t\t});\r\n\r\n\t\t// Find the handle closest to the tapped position.\r\n\t\thandleNumber = ( location < total/2 || scope_Handles.length === 1 ) ? 0 : 1;\r\n\r\n\t\t// Check if handler is not disablet if yes set number to the next handler\r\n\t\tif (scope_Handles[handleNumber].hasAttribute('disabled')) {\r\n\t\t\thandleNumber = handleNumber ? 0 : 1;\r\n\t\t}\r\n\r\n\t\tlocation -= offset(scope_Base)[ options.style ];\r\n\r\n\t\t// Calculate the new position.\r\n\t\tto = ( location * 100 ) / baseSize();\r\n\r\n\t\tif ( !options.events.snap ) {\r\n\t\t\t// Flag the slider as it is now in a transitional state.\r\n\t\t\t// Transition takes a configurable amount of ms (default 300). Re-enable the slider after that.\r\n\t\t\taddClassFor( scope_Target, options.cssClasses.tap, options.animationDuration );\r\n\t\t}\r\n\r\n\t\t// Support 'disabled' handles\r\n\t\tif ( scope_Handles[handleNumber].hasAttribute('disabled') ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Find the closest handle and calculate the tapped point.\r\n\t\t// The set handle to the new position.\r\n\t\tsetHandle( scope_Handles[handleNumber], to );\r\n\r\n\t\tfireEvent('slide', handleNumber, true);\r\n\t\tfireEvent('set', handleNumber, true);\r\n\t\tfireEvent('change', handleNumber, true);\r\n\r\n\t\tif ( options.events.snap ) {\r\n\t\t\tstart(event, { handles: [scope_Handles[handleNumber]] });\r\n\t\t}\r\n\t}\r\n\r\n\t// Fires a 'hover' event for a hovered mouse/pen position.\r\n\tfunction hover ( event ) {\r\n\r\n\t\tvar location = event.calcPoint - offset(scope_Base)[ options.style ],\r\n\t\t\tto = scope_Spectrum.getStep(( location * 100 ) / baseSize()),\r\n\t\t\tvalue = scope_Spectrum.fromStepping( to );\r\n\r\n\t\tObject.keys(scope_Events).forEach(function( targetEvent ) {\r\n\t\t\tif ( 'hover' === targetEvent.split('.')[0] ) {\r\n\t\t\t\tscope_Events[targetEvent].forEach(function( callback ) {\r\n\t\t\t\t\tcallback.call( scope_Self, value );\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t// Attach events to several slider parts.\r\n\tfunction events ( behaviour ) {\r\n\r\n\t\t// Attach the standard drag event to the handles.\r\n\t\tif ( !behaviour.fixed ) {\r\n\r\n\t\t\tscope_Handles.forEach(function( handle, index ){\r\n\r\n\t\t\t\t// These events are only bound to the visual handle\r\n\t\t\t\t// element, not the 'real' origin element.\r\n\t\t\t\tattach ( actions.start, handle.children[0], start, {\r\n\t\t\t\t\thandles: [ handle ],\r\n\t\t\t\t\thandleNumber: index\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// Attach the tap event to the slider base.\r\n\t\tif ( behaviour.tap ) {\r\n\r\n\t\t\tattach ( actions.start, scope_Base, tap, {\r\n\t\t\t\thandles: scope_Handles\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// Fire hover events\r\n\t\tif ( behaviour.hover ) {\r\n\t\t\tattach ( actions.move, scope_Base, hover, { hover: true } );\r\n\t\t}\r\n\r\n\t\t// Make the range draggable.\r\n\t\tif ( behaviour.drag ){\r\n\r\n\t\t\tvar drag = [scope_Base.querySelector( '.' + options.cssClasses.connect )];\r\n\t\t\taddClass(drag[0], options.cssClasses.draggable);\r\n\r\n\t\t\t// When the range is fixed, the entire range can\r\n\t\t\t// be dragged by the handles. The handle in the first\r\n\t\t\t// origin will propagate the start event upward,\r\n\t\t\t// but it needs to be bound manually on the other.\r\n\t\t\tif ( behaviour.fixed ) {\r\n\t\t\t\tdrag.push(scope_Handles[(drag[0] === scope_Handles[0] ? 1 : 0)].children[0]);\r\n\t\t\t}\r\n\r\n\t\t\tdrag.forEach(function( element ) {\r\n\t\t\t\tattach ( actions.start, element, start, {\r\n\t\t\t\t\thandles: scope_Handles\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t// Test suggested values and apply margin, step.\r\n\tfunction setHandle ( handle, to, noLimitOption ) {\r\n\r\n\t\tvar trigger = handle !== scope_Handles[0] ? 1 : 0,\r\n\t\t\tlowerMargin = scope_Locations[0] + options.margin,\r\n\t\t\tupperMargin = scope_Locations[1] - options.margin,\r\n\t\t\tlowerLimit = scope_Locations[0] + options.limit,\r\n\t\t\tupperLimit = scope_Locations[1] - options.limit;\r\n\r\n\t\t// For sliders with multiple handles,\r\n\t\t// limit movement to the other handle.\r\n\t\t// Apply the margin option by adding it to the handle positions.\r\n\t\tif ( scope_Handles.length > 1 ) {\r\n\t\t\tto = trigger ? Math.max( to, lowerMargin ) : Math.min( to, upperMargin );\r\n\t\t}\r\n\r\n\t\t// The limit option has the opposite effect, limiting handles to a\r\n\t\t// maximum distance from another. Limit must be > 0, as otherwise\r\n\t\t// handles would be unmoveable. 'noLimitOption' is set to 'false'\r\n\t\t// for the .val() method, except for pass 4/4.\r\n\t\tif ( noLimitOption !== false && options.limit && scope_Handles.length > 1 ) {\r\n\t\t\tto = trigger ? Math.min ( to, lowerLimit ) : Math.max( to, upperLimit );\r\n\t\t}\r\n\r\n\t\t// Handle the step option.\r\n\t\tto = scope_Spectrum.getStep( to );\r\n\r\n\t\t// Limit percentage to the 0 - 100 range\r\n\t\tto = limit(to);\r\n\r\n\t\t// Return false if handle can't move\r\n\t\tif ( to === scope_Locations[trigger] ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Set the handle to the new position.\r\n\t\t// Use requestAnimationFrame for efficient painting.\r\n\t\t// No significant effect in Chrome, Edge sees dramatic\r\n\t\t// performace improvements.\r\n\t\tif ( window.requestAnimationFrame ) {\r\n\t\t\twindow.requestAnimationFrame(function(){\r\n\t\t\t\thandle.style[options.style] = to + '%';\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\thandle.style[options.style] = to + '%';\r\n\t\t}\r\n\r\n\t\t// Force proper handle stacking\r\n\t\tif ( !handle.previousSibling ) {\r\n\t\t\tremoveClass(handle, options.cssClasses.stacking);\r\n\t\t\tif ( to > 50 ) {\r\n\t\t\t\taddClass(handle, options.cssClasses.stacking);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Update locations.\r\n\t\tscope_Locations[trigger] = to;\r\n\r\n\t\t// Convert the value to the slider stepping/range.\r\n\t\tscope_Values[trigger] = scope_Spectrum.fromStepping( to );\r\n\r\n\t\tfireEvent('update', trigger);\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\t// Loop values from value method and apply them.\r\n\tfunction setValues ( count, values ) {\r\n\r\n\t\tvar i, trigger, to;\r\n\r\n\t\t// With the limit option, we'll need another limiting pass.\r\n\t\tif ( options.limit ) {\r\n\t\t\tcount += 1;\r\n\t\t}\r\n\r\n\t\t// If there are multiple handles to be set run the setting\r\n\t\t// mechanism twice for the first handle, to make sure it\r\n\t\t// can be bounced of the second one properly.\r\n\t\tfor ( i = 0; i < count; i += 1 ) {\r\n\r\n\t\t\ttrigger = i%2;\r\n\r\n\t\t\t// Get the current argument from the array.\r\n\t\t\tto = values[trigger];\r\n\r\n\t\t\t// Setting with null indicates an 'ignore'.\r\n\t\t\t// Inputting 'false' is invalid.\r\n\t\t\tif ( to !== null && to !== false ) {\r\n\r\n\t\t\t\t// If a formatted number was passed, attemt to decode it.\r\n\t\t\t\tif ( typeof to === 'number' ) {\r\n\t\t\t\t\tto = String(to);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tto = options.format.from( to );\r\n\r\n\t\t\t\t// Request an update for all links if the value was invalid.\r\n\t\t\t\t// Do so too if setting the handle fails.\r\n\t\t\t\tif ( to === false || isNaN(to) || setHandle( scope_Handles[trigger], scope_Spectrum.toStepping( to ), i === (3 - options.dir) ) === false ) {\r\n\t\t\t\t\tfireEvent('update', trigger);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Set the slider value.\r\n\tfunction valueSet ( input, fireSetEvent ) {\r\n\r\n\t\tvar count, values = asArray( input ), i;\r\n\r\n\t\t// Event fires by default\r\n\t\tfireSetEvent = (fireSetEvent === undefined ? true : !!fireSetEvent);\r\n\r\n\t\t// The RTL settings is implemented by reversing the front-end,\r\n\t\t// internal mechanisms are the same.\r\n\t\tif ( options.dir && options.handles > 1 ) {\r\n\t\t\tvalues.reverse();\r\n\t\t}\r\n\r\n\t\t// Animation is optional.\r\n\t\t// Make sure the initial values where set before using animated placement.\r\n\t\tif ( options.animate && scope_Locations[0] !== -1 ) {\r\n\t\t\taddClassFor( scope_Target, options.cssClasses.tap, options.animationDuration );\r\n\t\t}\r\n\r\n\t\t// Determine how often to set the handles.\r\n\t\tcount = scope_Handles.length > 1 ? 3 : 1;\r\n\r\n\t\tif ( values.length === 1 ) {\r\n\t\t\tcount = 1;\r\n\t\t}\r\n\r\n\t\tsetValues ( count, values );\r\n\r\n\t\t// Fire the 'set' event for both handles.\r\n\t\tfor ( i = 0; i < scope_Handles.length; i++ ) {\r\n\r\n\t\t\t// Fire the event only for handles that received a new value, as per #579\r\n\t\t\tif ( values[i] !== null && fireSetEvent ) {\r\n\t\t\t\tfireEvent('set', i);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Get the slider value.\r\n\tfunction valueGet ( ) {\r\n\r\n\t\tvar i, retour = [];\r\n\r\n\t\t// Get the value from all handles.\r\n\t\tfor ( i = 0; i < options.handles; i += 1 ){\r\n\t\t\tretour[i] = options.format.to( scope_Values[i] );\r\n\t\t}\r\n\r\n\t\treturn inSliderOrder( retour );\r\n\t}\r\n\r\n\t// Removes classes from the root and empties it.\r\n\tfunction destroy ( ) {\r\n\r\n\t\tfor ( var key in options.cssClasses ) {\r\n\t\t\tif ( !options.cssClasses.hasOwnProperty(key) ) { continue; }\r\n\t\t\tremoveClass(scope_Target, options.cssClasses[key]);\r\n\t\t}\r\n\r\n\t\twhile (scope_Target.firstChild) {\r\n\t\t\tscope_Target.removeChild(scope_Target.firstChild);\r\n\t\t}\r\n\r\n\t\tdelete scope_Target.noUiSlider;\r\n\t}\r\n\r\n\t// Get the current step size for the slider.\r\n\tfunction getCurrentStep ( ) {\r\n\r\n\t\t// Check all locations, map them to their stepping point.\r\n\t\t// Get the step point, then find it in the input list.\r\n\t\tvar retour = scope_Locations.map(function( location, index ){\r\n\r\n\t\t\tvar step = scope_Spectrum.getApplicableStep( location ),\r\n\r\n\t\t\t\t// As per #391, the comparison for the decrement step can have some rounding issues.\r\n\t\t\t\t// Round the value to the precision used in the step.\r\n\t\t\t\tstepDecimals = countDecimals(String(step[2])),\r\n\r\n\t\t\t\t// Get the current numeric value\r\n\t\t\t\tvalue = scope_Values[index],\r\n\r\n\t\t\t\t// To move the slider 'one step up', the current step value needs to be added.\r\n\t\t\t\t// Use null if we are at the maximum slider value.\r\n\t\t\t\tincrement = location === 100 ? null : step[2],\r\n\r\n\t\t\t\t// Going 'one step down' might put the slider in a different sub-range, so we\r\n\t\t\t\t// need to switch between the current or the previous step.\r\n\t\t\t\tprev = Number((value - step[2]).toFixed(stepDecimals)),\r\n\r\n\t\t\t\t// If the value fits the step, return the current step value. Otherwise, use the\r\n\t\t\t\t// previous step. Return null if the slider is at its minimum value.\r\n\t\t\t\tdecrement = location === 0 ? null : (prev >= step[1]) ? step[2] : (step[0] || false);\r\n\r\n\t\t\treturn [decrement, increment];\r\n\t\t});\r\n\r\n\t\t// Return values in the proper order.\r\n\t\treturn inSliderOrder( retour );\r\n\t}\r\n\r\n\t// Attach an event to this slider, possibly including a namespace\r\n\tfunction bindEvent ( namespacedEvent, callback ) {\r\n\t\tscope_Events[namespacedEvent] = scope_Events[namespacedEvent] || [];\r\n\t\tscope_Events[namespacedEvent].push(callback);\r\n\r\n\t\t// If the event bound is 'update,' fire it immediately for all handles.\r\n\t\tif ( namespacedEvent.split('.')[0] === 'update' ) {\r\n\t\t\tscope_Handles.forEach(function(a, index){\r\n\t\t\t\tfireEvent('update', index);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t// Undo attachment of event\r\n\tfunction removeEvent ( namespacedEvent ) {\r\n\r\n\t\tvar event = namespacedEvent && namespacedEvent.split('.')[0],\r\n\t\t\tnamespace = event && namespacedEvent.substring(event.length);\r\n\r\n\t\tObject.keys(scope_Events).forEach(function( bind ){\r\n\r\n\t\t\tvar tEvent = bind.split('.')[0],\r\n\t\t\t\ttNamespace = bind.substring(tEvent.length);\r\n\r\n\t\t\tif ( (!event || event === tEvent) && (!namespace || namespace === tNamespace) ) {\r\n\t\t\t\tdelete scope_Events[bind];\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t// Updateable: margin, limit, step, range, animate, snap\r\n\tfunction updateOptions ( optionsToUpdate, fireSetEvent ) {\r\n\r\n\t\t// Spectrum is created using the range, snap, direction and step options.\r\n\t\t// 'snap' and 'step' can be updated, 'direction' cannot, due to event binding.\r\n\t\t// If 'snap' and 'step' are not passed, they should remain unchanged.\r\n\t\tvar v = valueGet(), newOptions = testOptions({\r\n\t\t\tstart: [0, 0],\r\n\t\t\tmargin: optionsToUpdate.margin,\r\n\t\t\tlimit: optionsToUpdate.limit,\r\n\t\t\tstep: optionsToUpdate.step === undefined ? options.singleStep : optionsToUpdate.step,\r\n\t\t\trange: optionsToUpdate.range,\r\n\t\t\tanimate: optionsToUpdate.animate,\r\n\t\t\tsnap: optionsToUpdate.snap === undefined ? options.snap : optionsToUpdate.snap\r\n\t\t});\r\n\r\n\t\t['margin', 'limit', 'range', 'animate'].forEach(function(name){\r\n\r\n\t\t\t// Only change options that we're actually passed to update.\r\n\t\t\tif ( optionsToUpdate[name] !== undefined ) {\r\n\t\t\t\toptions[name] = optionsToUpdate[name];\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// Save current spectrum direction as testOptions in testRange call\r\n\t\t// doesn't rely on current direction\r\n\t\tnewOptions.spectrum.direction = scope_Spectrum.direction;\r\n\t\tscope_Spectrum = newOptions.spectrum;\r\n\r\n\t\t// Invalidate the current positioning so valueSet forces an update.\r\n\t\tscope_Locations = [-1, -1];\r\n\t\tvalueSet(optionsToUpdate.start || v, fireSetEvent);\r\n\t}\r\n\r\n\r\n\t// Throw an error if the slider was already initialized.\r\n\tif ( scope_Target.noUiSlider ) {\r\n\t\tthrow new Error('Slider was already initialized.');\r\n\t}\r\n\r\n\t// Create the base element, initialise HTML and set classes.\r\n\t// Add handles and links.\r\n\tscope_Base = addSlider( options.dir, options.ort, scope_Target );\r\n\tscope_Handles = addHandles( options.handles, options.dir, scope_Base );\r\n\r\n\t// Set the connect classes.\r\n\taddConnection ( options.connect, scope_Target, scope_Handles );\r\n\r\n\tif ( options.pips ) {\r\n\t\tpips(options.pips);\r\n\t}\r\n\r\n\tif ( options.tooltips ) {\r\n\t\ttooltips();\r\n\t}\r\n\r\n\tscope_Self = {\r\n\t\tdestroy: destroy,\r\n\t\tsteps: getCurrentStep,\r\n\t\ton: bindEvent,\r\n\t\toff: removeEvent,\r\n\t\tget: valueGet,\r\n\t\tset: valueSet,\r\n\t\tupdateOptions: updateOptions,\r\n\t\toptions: originalOptions, // Issue #600\r\n\t\ttarget: scope_Target, // Issue #597\r\n\t\tpips: pips // Issue #594\r\n\t};\r\n\r\n\t// Attach user events.\r\n\tevents( options.events );\r\n\r\n\treturn scope_Self;\r\n\r\n}\r\n\r\n\r\n\t// Run the standard initializer\r\n\tfunction initialize ( target, originalOptions ) {\r\n\r\n\t\tif ( !target.nodeName ) {\r\n\t\t\tthrow new Error('noUiSlider.create requires a single element.');\r\n\t\t}\r\n\r\n\t\t// Test the options and create the slider environment;\r\n\t\tvar options = testOptions( originalOptions, target ),\r\n\t\t\tslider = closure( target, options, originalOptions );\r\n\r\n\t\t// Use the public value method to set the start values.\r\n\t\tslider.set(options.start);\r\n\r\n\t\ttarget.noUiSlider = slider;\r\n\t\treturn slider;\r\n\t}\r\n\r\n\t// Use an object instead of a function for future expansibility;\r\n\treturn {\r\n\t\tcreate: initialize\r\n\t};\r\n\r\n}));\n\n/***/ }),\n\n/***/ 1034:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.floatingPlaceholderClass = exports.floatingPlaceholderDecoratorInit = undefined;\n\nvar _getOwnPropertyDescriptor = __webpack_require__(285);\n\nvar _getOwnPropertyDescriptor2 = _interopRequireDefault(_getOwnPropertyDescriptor);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _desc, _value, _class;\n\nvar _mixins = __webpack_require__(582);\n\nvar _mixins2 = _interopRequireDefault(_mixins);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n\tvar desc = {};\n\tObject['ke' + 'ys'](descriptor).forEach(function (key) {\n\t\tdesc[key] = descriptor[key];\n\t});\n\tdesc.enumerable = !!desc.enumerable;\n\tdesc.configurable = !!desc.configurable;\n\n\tif ('value' in desc || desc.initializer) {\n\t\tdesc.writable = true;\n\t}\n\n\tdesc = decorators.slice().reverse().reduce(function (desc, decorator) {\n\t\treturn decorator(target, property, desc) || desc;\n\t}, desc);\n\n\tif (context && desc.initializer !== void 0) {\n\t\tdesc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n\t\tdesc.initializer = undefined;\n\t}\n\n\tif (desc.initializer === void 0) {\n\t\tObject['define' + 'Property'](target, property, desc);\n\t\tdesc = null;\n\t}\n\n\treturn desc;\n}\n\n// function floatingPlaceholderDecorator ( opts ) {\n\n// \treturn target => {\n// \t\tconst\n// \t\t\toldInit = target.init;\n\n// \t\tconsole.log( 'working?', target );\n\n// \t\tconst\n// \t\t\textend = {\n// \t\t\t\tinit : function init ( ...args ) {\n// \t\t\t\t\tthis::oldInit( ...args );\n// \t\t\t\t\tconsole.log( this.$scope, this.$input );\n// \t\t\t\t},\n// \t\t\t\tisFloatingPlaceholder : true\n// \t\t\t}\n\n// \t\tmixins( extend )( target );\n// \t}\n// }\n\nvar cls = 'floating-placeholder';\n\nfunction setupFloatingPlaceholder() {\n\tvar _this = this;\n\n\tvar placeholder = this.$input.siblings('label.' + cls);\n\n\tthis.$input.on('focus', function (e) {\n\t\tplaceholder.addClass('shrinked');\n\t});\n\n\tthis.$input.on('blur', function (e) {\n\t\tif (!_this.$input.val()) {\n\t\t\tplaceholder.removeClass('shrinked');\n\t\t}\n\t});\n\n\tplaceholder.on('click', function (e) {\n\t\treturn _this.$input.trigger('focus');\n\t});\n}\n\nfunction checkApplyFloatingPlaceholder() {\n\tif (this.$scope.hasClass(cls)) {\n\t\tsetupFloatingPlaceholder.call(this);\n\t}\n}\n\nfunction floatingPlaceholderDecoratorInit(target, name, descriptor) {\n\tvar original = descriptor.value;\n\n\tif (typeof original === 'function') {\n\t\tdescriptor.value = function () {\n\t\t\ttry {\n\t\t\t\tfor (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n\t\t\t\t\targs[_key] = arguments[_key];\n\t\t\t\t}\n\n\t\t\t\tvar result = original.apply(this, args);\n\t\t\t\tcheckApplyFloatingPlaceholder.call(this);\n\t\t\t\treturn result;\n\t\t\t} catch (e) {\n\t\t\t\tthrow e;\n\t\t\t}\n\t\t};\n\t}\n\n\treturn descriptor;\n}\n\nvar floatingPlaceholderClass = (_class = function () {\n\tfunction floatingPlaceholderClass() {\n\t\t(0, _classCallCheck3.default)(this, floatingPlaceholderClass);\n\t}\n\n\tfloatingPlaceholderClass.prototype.init = function init($scope) {\n\t\tthis.$scope = $scope;\n\t\tthis.$input = this.$scope.find('input');\n\t};\n\n\treturn floatingPlaceholderClass;\n}(), (_applyDecoratedDescriptor(_class.prototype, 'init', [floatingPlaceholderDecoratorInit], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'init'), _class.prototype)), _class);\n\n// export default floatingPlaceholderDecorator;\n\nexports.floatingPlaceholderDecoratorInit = floatingPlaceholderDecoratorInit;\nexports.floatingPlaceholderClass = floatingPlaceholderClass;\n\n/***/ }),\n\n/***/ 1108:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nvar IDENTIFIERS = exports.IDENTIFIERS = {\n\tFORM_ELEMENT: '[data-element=\"form-element\"],.floating-placeholder',\n\tFORM: {\n\t\tROOT: '[data-tpl*=form]'\n\t},\n\tSELECT: {\n\t\tROOT: '[data-tpl=select]'\n\t},\n\tAUTOCOMPLETE: {\n\t\tROOT: '.autocomplete'\n\t},\n\tINLINE_EDITING: {\n\t\tROOT: '[data-tpl=\"inline-editing\"]'\n\t},\n\tFILE_UPLOAD: {\n\t\tROOT: '[data-tpl=\"file-upload\"]'\n\t}\n};\n\n/***/ }),\n\n/***/ 1429:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _getIterator2 = __webpack_require__(209);\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(10);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(11);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _jquery = __webpack_require__(16);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _Debug = __webpack_require__(205);\n\nvar _Debug2 = _interopRequireDefault(_Debug);\n\nvar _WindowGateway = __webpack_require__(118);\n\nvar _WindowGateway2 = _interopRequireDefault(_WindowGateway);\n\nvar _Bucket = __webpack_require__(125);\n\nvar _Bucket2 = _interopRequireDefault(_Bucket);\n\nvar _Form = __webpack_require__(1430);\n\nvar _Form2 = _interopRequireDefault(_Form);\n\nvar _Identifiers = __webpack_require__(1108);\n\nvar _StyleInjector = __webpack_require__(557);\n\nvar _StyleInjector2 = _interopRequireDefault(_StyleInjector);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// const htmlMap = {},\nvar controllerMap = {},\n EVENTS = {\n\tFORMREADY: 'formReady',\n\tFORMREINITSINGLE: 'formReInitSingleComponent'\n},\n BASE_PATH = \"/css/\",\n //eslint-disable-line\nPREFIX = 'forms-v2';\n\n// /**\n// * Testing method\n// * todo: remove this when everything works fine\n// * @param id {string} - form id\n// * @return {void}\n// */\n// function resetForm ( id ) {\n// \tconst $el = $( '#' + id ),\n// \t $parent = $el.parent(),\n// \t $lead = $el.prev(),\n// \t event = document.createEvent( 'HTMLEvents' ),\n// \t html = htmlMap.hasOwnProperty( id ) ?\n// \t htmlMap[ id ] :\n// \t 'not found';\n//\n// \tevent.initEvent( 'message', true, true );\n// \tevent.eventName = 'message';\n// \tevent.data = JSON.stringify( { type : 'formReady', data : { id : 'myFormID' } } );\n//\n// \tfasterdom.measureInstant( () => {\n// \t\t$el.remove();\n// \t} );\n//\n// \tfasterdom.measureInstant( () => {\n// \t\tif ( $lead.length > 0 ) {\n// \t\t\t$lead.after( html );\n// \t\t} else {\n// \t\t\t$parent.append( html );\n// \t\t}\n//\n// \t\twindow.dispatchEvent( event );\n// \t}, 1 );\n// }\n\nfunction checkLoadStyles() {\n\tvar formLoaderMeta = document.querySelector('meta[name=\"formLoader\"]');\n\n\tif (!formLoaderMeta || formLoaderMeta && formLoaderMeta.getAttribute('content') === 'true') {\n\t\t// TODO: reafactor to be cool\n\t\tvar thePath = BASE_PATH;\n\n\t\tif (formLoaderMeta && formLoaderMeta.getAttribute('path')) {\n\t\t\tthePath = formLoaderMeta.getAttribute('path');\n\t\t}\n\t\t_StyleInjector2.default.injectImmediate(thePath + PREFIX, PREFIX);\n\t}\n}\n\n/**\r\n * Re/-Initializes form controller\r\n * @param {string} id - form id\r\n * @returns {void}\r\n */\nfunction initController(id) {\n\tvar $el = (0, _jquery2.default)('#' + id);\n\n\tif (!$el.is('[data-tpl=form-v2]') && $el.parent('[data-tpl=form-v2]').length === 0) {\n\t\tthis.logger.info('Not a v2 form, skip initializing');\n\t\treturn;\n\t}\n\n\tcheckLoadStyles.call(this);\n\n\tif ($el.length > 0) {\n\t\tif (!controllerMap.hasOwnProperty(id)) {\n\t\t\tvar controller = new _Form2.default();\n\n\t\t\tcontroller.init($el);\n\t\t\tcontrollerMap[id] = controller;\n\t\t\tthis.logger.log('Form controller initialized:', $el);\n\t\t} else {\n\t\t\tcontrollerMap[id].reInit($el);\n\t\t\tthis.logger.warn('Form controller reinitialized:', $el);\n\t\t}\n\t} else {\n\t\tthis.logger.warn('No form with id found:', id);\n\t}\n}\n\nfunction initSingleController(id) {\n\tvar $el = (0, _jquery2.default)('#' + id),\n\t $form = $el.closest('[data-tpl=form-v2]'),\n\t formID = $form.attr('id');\n\n\tif ($el.length > 0) {\n\t\tif (!controllerMap.hasOwnProperty(formID)) {\n\t\t\tvar controller = new _Form2.default();\n\n\t\t\tcontroller.initSingle($el);\n\t\t\tcontrollerMap[formID] = controller;\n\t\t} else {\n\t\t\tvar _controller = controllerMap[formID];\n\n\t\t\t_controller.reInitSingleController($el);\n\t\t}\n\t}\n}\n\n/**\r\n * Receives message event and checks if it's type of formReady\r\n * Checks if form id is set and initializes form controller\r\n * @param {object} message - event data object\r\n * @returns {void}\r\n */\nfunction receiveMessage(message) {\n\tthis.logger.log('message event received after ready (1):', message);\n\n\tif (message.type === EVENTS.FORMREADY && message.data.hasOwnProperty('id')) {\n\n\t\tinitController.call(this, message.data.id);\n\t}\n}\n\nfunction receiveMessageSingle(message) {\n\tthis.logger.log('message event received after ready (2):', message);\n\n\tif (message.type === EVENTS.FORMREINITSINGLE && message.data.hasOwnProperty('id')) {\n\n\t\tinitSingleController.call(this, message.data.id);\n\t}\n}\n\n/**\r\n * Class representing an singleton forms service instance.\r\n * Will be executed after formReady event is thrown.\r\n * Checks if form is available in DOM and initializes a form controller.\r\n * @extends { AbstractController }\r\n */\n\nvar Forms = function (_DebugController) {\n\t(0, _inherits3.default)(Forms, _DebugController);\n\n\tfunction Forms() {\n\t\t(0, _classCallCheck3.default)(this, Forms);\n\t\treturn (0, _possibleConstructorReturn3.default)(this, _DebugController.apply(this, arguments));\n\t}\n\n\tForms.prototype.init = function init() {\n\t\tthis.debug = false;\n\n\t\tif (_Bucket2.default.formReady.size > 0) {\n\t\t\tthis.logger.warn('message event received before ready: ', _Bucket2.default.formReady);\n\n\t\t\tvar _iteratorNormalCompletion = true;\n\t\t\tvar _didIteratorError = false;\n\t\t\tvar _iteratorError = undefined;\n\n\t\t\ttry {\n\t\t\t\tfor (var _iterator = (0, _getIterator3.default)(_Bucket2.default.formReady), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n\t\t\t\t\tvar id = _step.value;\n\n\t\t\t\t\tinitController.call(this, id);\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t_didIteratorError = true;\n\t\t\t\t_iteratorError = err;\n\t\t\t} finally {\n\t\t\t\ttry {\n\t\t\t\t\tif (!_iteratorNormalCompletion && _iterator.return) {\n\t\t\t\t\t\t_iterator.return();\n\t\t\t\t\t}\n\t\t\t\t} finally {\n\t\t\t\t\tif (_didIteratorError) {\n\t\t\t\t\t\tthrow _iteratorError;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tvar $formRoots = (0, _jquery2.default)(_Identifiers.IDENTIFIERS.FORM.ROOT);\n\n\t\t\tif ($formRoots.length) {\n\t\t\t\tcheckLoadStyles.call(this);\n\t\t\t}\n\n\t\t\t_jquery2.default.each($formRoots, function createInstance() {\n\t\t\t\tvar controllerInstance = new _Form2.default();\n\n\t\t\t\tcontrollerInstance.init((0, _jquery2.default)(this));\n\t\t\t});\n\t\t}\n\n\t\tthis.gateway = new _WindowGateway2.default();\n\t\tthis.gateway.messageEvent.subscribe(receiveMessage.bind(this));\n\t\tthis.gateway.messageEvent.subscribe(receiveMessageSingle.bind(this));\n\t};\n\n\t// /**\n\t// * Testing method\n\t// * todo: remove this when everything works fine\n\t// * @param id {string} - form id\n\t// * @return {void}\n\t// */\n\t// reset ( id ) {\n\t// \tresetForm.call( this, id );\n\t// }\n\n\n\treturn Forms;\n}(_Debug2.default);\n\nvar instance = new Forms(); // eslint-disable-line one-var\n\nexports.default = instance;\n\n/***/ }),\n\n/***/ 1430:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(10);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(11);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _keys = __webpack_require__(102);\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _Abstract = __webpack_require__(37);\n\nvar _Abstract2 = _interopRequireDefault(_Abstract);\n\nvar _FormElement = __webpack_require__(1431);\n\nvar _FormElement2 = _interopRequireDefault(_FormElement);\n\nvar _Identifiers = __webpack_require__(1108);\n\nvar _Tooltip = __webpack_require__(581);\n\nvar _Tooltip2 = _interopRequireDefault(_Tooltip);\n\nvar _FileUpload = __webpack_require__(1443);\n\nvar _FileUpload2 = _interopRequireDefault(_FileUpload);\n\nvar _Identifiers2 = __webpack_require__(271);\n\nvar _frontendLogger = __webpack_require__(126);\n\nvar _frontendLogger2 = _interopRequireDefault(_frontendLogger);\n\nvar _jquery = __webpack_require__(16);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar componentControllerMap = {\n\ttooltip: _Tooltip2.default,\n\tfileUpload: _FileUpload2.default\n},\n componentControllerSelectors = {\n\ttooltip: _Identifiers2.IDENTIFIERS.TOOLTIP.ROOT,\n\tfileUpload: _Identifiers.IDENTIFIERS.FILE_UPLOAD.ROOT\n};\n\n/**\n * Initializes sub controller instances for sub controller elements\n * @return {void}\n */\n\n\n// Non form element dependencies\nfunction initController() {\n\tvar _this = this;\n\n\tthis.$scope.find(_Identifiers.IDENTIFIERS.FORM_ELEMENT).each(function (i, el) {\n\t\tvar $el = el instanceof _jquery2.default ? el : (0, _jquery2.default)(el),\n\t\t controllerInstance = initSingleController($el);\n\n\t\t_this.subController.push(controllerInstance);\n\t});\n\n\t(0, _keys2.default)(componentControllerMap).forEach(function (v, i) {\n\t\tif (!componentControllerSelectors[v]) {\n\t\t\tthrow new Error('Missing component selector for dependency component!');\n\t\t}\n\n\t\t_this.$scope.find(componentControllerSelectors[v]).each(function (j, el) {\n\t\t\tvar $el = el instanceof _jquery2.default ? el : (0, _jquery2.default)(el),\n\t\t\t type = ['module', 'tpl', 'element'].filter(function (l) {\n\t\t\t\treturn !!$el.data(l);\n\t\t\t})[0],\n\t\t\t // eslint-disable-line arrow-parens\n\t\t\tconfig = $el.data(type + '-config') || {},\n\t\t\t controllerInstance = new componentControllerMap[v]();\n\n\t\t\tcontrollerInstance.init($el, config);\n\t\t\t_this.subController.push(controllerInstance);\n\t\t});\n\t});\n\n\t_frontendLogger2.default.warn('controller initialized:', this.subController);\n}\n\nfunction initSingleController($el) {\n\tvar config = $el.data('element-config') || {},\n\t controllerInstance = new _FormElement2.default();\n\n\tcontrollerInstance.init($el, config);\n\n\treturn controllerInstance;\n}\n\n/**\n * Destroy all cached Controller instances\n * @return {void}\n */\nfunction destroyController() {\n\tfor (var i = this.subController.length - 1; i >= 0; i--) {\n\t\tif (typeof this.subController[i].destroy === 'function') {\n\t\t\tthis.subController[i].destroy();\n\t\t}\n\t\tthis.subController[i] = null;\n\t\tdelete this.subController[i];\n\t}\n\n\tthis.subController = [];\n\t_frontendLogger2.default.warn('controller destroyed:', this.subController);\n}\n\nfunction destroySingleController($el) {\n\tfor (var i = this.subController.length - 1; i >= 0; i--) {\n\t\tvar controller = this.subController[i];\n\n\t\tif (controller.$scope.is($el)) {\n\t\t\tif (typeof this.subController[i].destroy === 'function') {\n\t\t\t\tthis.subController[i].destroy();\n\t\t\t}\n\t\t\tthis.subController[i] = null;\n\t\t\tdelete this.subController[i];\n\t\t}\n\t}\n}\n\n// /**\n// * Testing method\n// * todo: remove this when everything works fine\n// * @return {void}\n// */\n// function addHandler () {\n// \tconst $submit = this.$scope.find( '[type=\"submit\"]' );\n//\n// \t$submit.on( 'click', () => {\n// \t\tForms.reset( this.$scope.attr( 'id' ) );\n// \t} );\n// }\n\n/**\n * Class representing an form instance.\n * Initializes necessary sub controllers.\n * @extends { AbstractController }\n */\n\nvar FormController = function (_AbstractController) {\n\t(0, _inherits3.default)(FormController, _AbstractController);\n\n\tfunction FormController() {\n\t\t(0, _classCallCheck3.default)(this, FormController);\n\n\t\tvar _this2 = (0, _possibleConstructorReturn3.default)(this, _AbstractController.call(this));\n\n\t\t_this2.$scope = null;\n\t\t_this2.subController = [];\n\t\treturn _this2;\n\t}\n\n\t/**\n * Initialiss the controller.\n * Has to be called after ready event.\n * @override\n * @param { object } $root - jQuery wrapped DOM node\n * @public\n */\n\n\n\tFormController.prototype.init = function init($root) {\n\t\tvar $dataTPL = $root;\n\n\t\tif (!$root.is(_Identifiers.IDENTIFIERS.FORM.ROOT)) {\n\t\t\t$dataTPL = $root.closest(_Identifiers.IDENTIFIERS.FORM.ROOT);\n\t\t}\n\n\t\tif ($dataTPL.data('noJs')) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.$scope = $root;\n\n\t\t// getControllerElements.call( this );\n\t\tinitController.call(this);\n\t\t// addHandler.call( this );\n\t};\n\n\t/**\n * Reinitialiss the controller.\n * Has to be called after forms element was send.\n * @param { object } $root - jQuery wrapped DOM node\n * @public\n * @return {void}\n */\n\n\n\tFormController.prototype.reInit = function reInit($root) {\n\t\tdestroyController.call(this);\n\t\tthis.init($root);\n\t};\n\n\tFormController.prototype.initSingle = function initSingle($el) {\n\t\tthis.subController.push(initSingleController($el));\n\t};\n\n\tFormController.prototype.reInitSingleController = function reInitSingleController($el) {\n\t\tdestroySingleController.call(this);\n\t\tthis.initSingle($el);\n\t};\n\n\treturn FormController;\n}(_Abstract2.default);\n\nexports.default = FormController;\n\n/***/ }),\n\n/***/ 1431:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _getOwnPropertyDescriptor = __webpack_require__(285);\n\nvar _getOwnPropertyDescriptor2 = _interopRequireDefault(_getOwnPropertyDescriptor);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(10);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(11);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _desc, _value, _class;\n\nvar _AbstractController2 = __webpack_require__(37);\n\nvar _AbstractController3 = _interopRequireDefault(_AbstractController2);\n\nvar _Datepicker = __webpack_require__(1432);\n\nvar _Datepicker2 = _interopRequireDefault(_Datepicker);\n\nvar _Password = __webpack_require__(1433);\n\nvar _Password2 = _interopRequireDefault(_Password);\n\nvar _ValueSlider = __webpack_require__(1434);\n\nvar _ValueSlider2 = _interopRequireDefault(_ValueSlider);\n\nvar _Autocomplete = __webpack_require__(1435);\n\nvar _Autocomplete2 = _interopRequireDefault(_Autocomplete);\n\nvar _InlineEditing = __webpack_require__(1436);\n\nvar _InlineEditing2 = _interopRequireDefault(_InlineEditing);\n\nvar _ClearInput = __webpack_require__(1437);\n\nvar _ClearInput2 = _interopRequireDefault(_ClearInput);\n\nvar _Select = __webpack_require__(1438);\n\nvar _Select2 = _interopRequireDefault(_Select);\n\nvar _FloatingPlaceholder = __webpack_require__(1034);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n\tvar desc = {};\n\tObject['ke' + 'ys'](descriptor).forEach(function (key) {\n\t\tdesc[key] = descriptor[key];\n\t});\n\tdesc.enumerable = !!desc.enumerable;\n\tdesc.configurable = !!desc.configurable;\n\n\tif ('value' in desc || desc.initializer) {\n\t\tdesc.writable = true;\n\t}\n\n\tdesc = decorators.slice().reverse().reduce(function (desc, decorator) {\n\t\treturn decorator(target, property, desc) || desc;\n\t}, desc);\n\n\tif (context && desc.initializer !== void 0) {\n\t\tdesc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n\t\tdesc.initializer = undefined;\n\t}\n\n\tif (desc.initializer === void 0) {\n\t\tObject['define' + 'Property'](target, property, desc);\n\t\tdesc = null;\n\t}\n\n\treturn desc;\n}\n\n// const this.featureControllerMap = [];\n\nfunction checkFeatures() {\n\tif (this.$scope.hasClass('datepicker')) {\n\t\tif (!this.config.datePicker) {\n\t\t\tthrow new Error('Missing Config for DatePicker FormElement!');\n\t\t}\n\t\tvar controllerInstance = new _Datepicker2.default().init(this.$scope, this.config.datePicker);\n\n\t\tthis.featureControllerMap.push(controllerInstance);\n\t\tthis.state.isDatepicker = true;\n\t}\n\n\tif (this.$scope.hasClass('password')) {\n\t\tvar _controllerInstance = new _Password2.default().init(this.$scope, this.config.password || {});\n\n\t\tthis.featureControllerMap.push(_controllerInstance);\n\t\tthis.state.isPassword = true;\n\t}\n\n\tif (this.$scope.hasClass('value-slider')) {\n\t\tif (!this.config.valueSlider) {\n\t\t\tthrow new Error('Missing Config for ValueSlider FormElement!');\n\t\t}\n\t\tvar _controllerInstance2 = new _ValueSlider2.default().init(this.$scope, this.config.valueSlider);\n\n\t\tthis.featureControllerMap.push(_controllerInstance2);\n\t\tthis.state.isValueSlider = true;\n\t}\n\n\tif (this.$scope.hasClass('autocomplete')) {\n\t\tif (!this.config.autocomplete) {\n\t\t\tthrow new Error('Missing Config for Autocomplete FormElement!');\n\t\t}\n\t\tvar _controllerInstance3 = new _Autocomplete2.default().init(this.$scope, this.config.autocomplete);\n\n\t\tthis.featureControllerMap.push(_controllerInstance3);\n\t\tthis.state.isAutocomplete = true;\n\t}\n\n\tif (this.$scope.hasClass('inline-editing')) {\n\t\tvar _controllerInstance4 = new _InlineEditing2.default().init(this.$scope, this.config.inlineEditing || {});\n\n\t\tthis.featureControllerMap.push(_controllerInstance4);\n\t\tthis.state.isInlineEditing = true;\n\t}\n\n\tif (this.$scope.hasClass('select-replace')) {\n\t\tvar _controllerInstance5 = new _Select2.default().init(this.$scope, this.config.selectReplace || {});\n\n\t\tthis.featureControllerMap.push(_controllerInstance5);\n\t\tthis.state.isSelectReplace = true;\n\t}\n\n\tif (this.$scope.hasClass('clear-input')) {\n\t\tvar _controllerInstance6 = new _ClearInput2.default().init(this.$scope, this.config.clearInput || {});\n\n\t\tthis.featureControllerMap.push(_controllerInstance6);\n\t\tthis.state.isClearInput = true;\n\t}\n}\n\nfunction addHandler() {\n\tvar _this = this;\n\n\tthis.$input.on('blur', function () {\n\t\t_this.$scope.trigger('blur');\n\t});\n}\n\nvar FormElementController = (_class = function (_AbstractController) {\n\t(0, _inherits3.default)(FormElementController, _AbstractController);\n\n\tfunction FormElementController() {\n\t\t(0, _classCallCheck3.default)(this, FormElementController);\n\n\t\tvar _this2 = (0, _possibleConstructorReturn3.default)(this, _AbstractController.call(this));\n\n\t\t_this2.state = {};\n\t\t_this2.featureControllerMap = [];\n\t\treturn _this2;\n\t}\n\n\tFormElementController.prototype.init = function init($root) {\n\t\tvar config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tthis.$scope = $root;\n\t\tthis.config = config;\n\n\t\tthis.$input = this.$scope.find('input');\n\n\t\tcheckFeatures.call(this);\n\t\taddHandler.call(this);\n\t};\n\n\tFormElementController.prototype.destroy = function destroy() {\n\t\tfor (var i = 0; i < this.featureControllerMap.length; i++) {\n\t\t\tvar controller = this.featureControllerMap[i];\n\n\t\t\tif (controller && typeof controller.destroy === 'function') {\n\t\t\t\tcontroller.destroy();\n\t\t\t}\n\t\t}\n\t\tthis.state = {};\n\t\tthis.featureControllerMap = [];\n\t};\n\n\treturn FormElementController;\n}(_AbstractController3.default), (_applyDecoratedDescriptor(_class.prototype, 'init', [_FloatingPlaceholder.floatingPlaceholderDecoratorInit], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'init'), _class.prototype)), _class);\nexports.default = FormElementController;\n\n/***/ }),\n\n/***/ 1432:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _assign = __webpack_require__(116);\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(10);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(11);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _promise = __webpack_require__(36);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _jquery = __webpack_require__(16);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _Abstract = __webpack_require__(37);\n\nvar _Abstract2 = _interopRequireDefault(_Abstract);\n\n__webpack_require__(1031);\n\nvar _fasterdom = __webpack_require__(22);\n\nvar _Identifiers = __webpack_require__(158);\n\nvar _device = __webpack_require__(54);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar useragent = window.UserAgent;\n//import 'pickadate/lib/picker.date';\n\n\nfunction checkMobile() {\n\tvar _this = this;\n\n\tif (!useragent.isMobile) {\n\t\treturn _fasterdom.fasterdomPromised.mutateInstant(function () {\n\t\t\tif (_this.state.isDestroyed) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_this.$input.attr('type', 'text');\n\t\t\t_this.$input.pickadate(_this.config);\n\t\t\t_this.picker = _this.$input.pickadate('picker');\n\t\t\t_this.disabled = false;\n\t\t\t_this.picker.on('set', function (context) {\n\t\t\t\tif (context && context.select) {\n\t\t\t\t\tvar e = document.createEvent('HTMLEvents');\n\n\t\t\t\t\te.initEvent('change', false, true);\n\t\t\t\t\t_this.$scope[0].dispatchEvent(e);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t} else {\n\t\treturn _promise2.default.reject();\n\t}\n}\n\nfunction addHandler() {\n\tvar _this2 = this;\n\n\tcheckMobile.call(this).then(function () {\n\t\tif (!_this2.disabled && !_this2.state.isDestroyed && _this2.$trigger) {\n\t\t\t_this2.picker.on('open', _this2.calculateVerticalPositioning.bind(_this2));\n\t\t\t_this2.picker.on('open', _this2.calculateHorizontalPositioning.bind(_this2));\n\t\t\t_this2.picker.on('open', function () {\n\t\t\t\treturn _device.ScrollService.toElement(_this2.$scope);\n\t\t\t});\n\t\t\t_this2.$trigger.on('click', function (e) {\n\t\t\t\te.stopPropagation();\n\t\t\t\t(0, _jquery2.default)('#page-wrapper').trigger('click');\n\n\t\t\t\tif (_this2.picker.get('open')) {\n\t\t\t\t\t_this2.picker.close();\n\t\t\t\t} else {\n\t\t\t\t\t_this2.picker.open();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n}\n\nvar Datepicker = function (_AbstractController) {\n\t(0, _inherits3.default)(Datepicker, _AbstractController);\n\n\tfunction Datepicker() {\n\t\tvar _ret;\n\n\t\t(0, _classCallCheck3.default)(this, Datepicker);\n\n\t\tvar _this3 = (0, _possibleConstructorReturn3.default)(this, _AbstractController.call(this));\n\n\t\t_this3.debug = false;\n\n\n\t\t_this3.disabled = true;\n\n\t\treturn _ret = _this3, (0, _possibleConstructorReturn3.default)(_this3, _ret);\n\t}\n\n\tDatepicker.prototype.destroy = function destroy() {\n\t\tthis.logger.log('destroy ' + this._uid);\n\t\tthis.state.setDestroyed();\n\n\t\tif (this.picker) {\n\t\t\tthis.picker.stop();\n\t\t\tthis.$input.attr('type', 'date');\n\t\t}\n\t\tthis.$trigger.off('click');\n\t};\n\n\tDatepicker.prototype.init = function init($scope, config) {\n\t\tvar _this4 = this;\n\n\t\tif ($scope.data('noJs')) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.logger.log('init');\n\t\tthis.state.setInitialized();\n\t\tthis.state.removeDestroyed();\n\n\t\tthis.$scope = $scope;\n\t\tthis.$input = this.$scope.find('input[type=date]');\n\t\tthis.$trigger = this.$scope.find('[aria-controls=\"' + this.$input.attr('id') + '\"]');\n\n\t\t_fasterdom.fasterdomPromised.measureInstant(function () {\n\t\t\t_this4.offScreenContent = (0, _jquery2.default)(_Identifiers.IDENTIFIERS.OFF_SCREEN.CONTENT);\n\t\t});\n\n\t\tvar selectYears = true;\n\n\t\tif (config.min && !config.selectYears) {\n\t\t\tselectYears = (config.max ? config.max[0] : new Date().getFullYear()) - config.min[0];\n\t\t} else if (config.selectYears) {\n\t\t\tselectYears = config.selectYears;\n\t\t}\n\n\t\tif (config.max && Array.isArray(config.max)) {\n\t\t\tvar maxDate = new Date(config.max[0], config.max[1], config.max[2]),\n\t\t\t today = new Date();\n\n\t\t\tif (maxDate.getTime() < today.getTime()) {\n\t\t\t\t_fasterdom.fasterdomPromised.mutateInstant(function () {\n\t\t\t\t\t_this4.$trigger.addClass('today-out-of-range');\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (typeof config.today !== 'undefined' && !config.today) {\n\t\t\t_fasterdom.fasterdomPromised.mutateInstant(function () {\n\t\t\t\t_this4.$scope.addClass('datepicker--no-today-button');\n\t\t\t});\n\t\t}\n\n\t\tthis.config = (0, _assign2.default)({}, config, {\n\t\t\tselectYears: selectYears,\n\t\t\tselectMonths: true,\n\t\t\tclear: false,\n\t\t\tclose: false,\n\t\t\teditable: true\n\t\t\t// container : this.calButton\n\t\t});\n\n\t\taddHandler.call(this);\n\n\t\treturn this;\n\t};\n\n\tDatepicker.prototype.calculateHorizontalPositioning = function calculateHorizontalPositioning(e) {\n\t\tvar _this5 = this;\n\n\t\tvar leftOffset = void 0;\n\t\tvar width = void 0;\n\t\tvar pickerHolder = this.$scope.find((0, _jquery2.default)('.picker__holder'));\n\n\t\t_fasterdom.fasterdomPromised.measureInstant(function () {\n\t\t\tleftOffset = pickerHolder.offset().left;\n\t\t\twidth = pickerHolder.width();\n\n\t\t\tif (!pickerHolder.is(':visible')) {\n\t\t\t\twindow.setTimeout(function () {\n\t\t\t\t\t_device.ResizeService.getCurrent().then(_this5.calculateHorizontalPositioning.bind(_this5));\n\t\t\t\t}, 200);\n\t\t\t}\n\t\t});\n\n\t\t_fasterdom.fasterdomPromised.mutateInstant(function () {\n\n\t\t\tif (leftOffset < 0) {\n\t\t\t\tpickerHolder.parent().addClass('picker--left').removeClass('picker--right');\n\t\t\t}\n\t\t});\n\t};\n\n\tDatepicker.prototype.calculateVerticalPositioning = function calculateVerticalPositioning(e) {\n\t\tvar _this6 = this;\n\n\t\tvar displayAbove = false;\n\n\t\t_fasterdom.fasterdomPromised.measureInstant(function () {\n\t\t\tvar pickerHeight = _this6.$scope.find('picker__holder').outerHeight(),\n\t\t\t containerBottom = _this6.$scope.offset().top + _this6.$scope.outerHeight();\n\n\t\t\tif (containerBottom + pickerHeight > _this6.offScreenContent.outerHeight()) {\n\t\t\t\tdisplayAbove = true;\n\t\t\t}\n\t\t});\n\n\t\t_fasterdom.fasterdomPromised.measureInstant(function () {\n\t\t\tif (displayAbove) {\n\t\t\t\t_this6.$scope.addClass('datepicker--top');\n\t\t\t} else {\n\t\t\t\t_this6.$scope.removeClass('datepicker--top');\n\t\t\t}\n\t\t});\n\t};\n\n\treturn Datepicker;\n}(_Abstract2.default);\n\nexports.default = Datepicker;\n\n/***/ }),\n\n/***/ 1433:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(10);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(11);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _AbstractController2 = __webpack_require__(37);\n\nvar _AbstractController3 = _interopRequireDefault(_AbstractController2);\n\nvar _fasterdom = __webpack_require__(22);\n\nvar _fasterdom2 = _interopRequireDefault(_fasterdom);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Toggle input type between password and text\n * @return {void}\n */\nfunction handleToggleClick() {\n\tvar _this = this;\n\n\tif (this.isHidden) {\n\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\t_this.$input.attr('type', 'text');\n\t\t\t_this.$trigger.attr('aria-selected', '');\n\t\t\t_this.isHidden = false;\n\t\t});\n\t} else {\n\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\t_this.$input.attr('type', 'password');\n\t\t\t_this.$trigger.removeAttr('aria-selected');\n\t\t\t_this.isHidden = true;\n\t\t});\n\t}\n}\n\n/**\n * Toggle 'empty' css class in relation to the password's input value\n * - update isEmpty state\n * - toggle 'empty' css class\n * return {void}\n */\nfunction handleInput() {\n\tvar _this2 = this;\n\n\t_fasterdom2.default.measureInstant(function () {\n\t\t_this2.isEmpty = !_this2.$input.val();\n\t});\n\n\t_fasterdom2.default.mutateInstant(function () {\n\t\tif (_this2.isEmpty) {\n\t\t\t_this2.$input.addClass('empty');\n\t\t} else {\n\t\t\t_this2.$input.removeClass('empty');\n\t\t}\n\t});\n}\n\n/**\n * Adds eventlistener to password trigger button and input element\n * @return {void}\n */\nfunction addHandler() {\n\tthis.$trigger.on('click', handleToggleClick.bind(this));\n\tthis.$input.on('change', handleInput.bind(this));\n}\n\n/**\n * Class representing an password input element instance.\n * @extends { AbstractController }\n */\n\nvar PasswordController = function (_AbstractController) {\n\t(0, _inherits3.default)(PasswordController, _AbstractController);\n\n\tfunction PasswordController() {\n\t\t(0, _classCallCheck3.default)(this, PasswordController);\n\t\treturn (0, _possibleConstructorReturn3.default)(this, _AbstractController.call(this));\n\t}\n\n\tPasswordController.prototype.init = function init($root) {\n\t\tvar config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tif ($root.data('noJs')) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.$scope = $root;\n\t\tthis.config = config;\n\n\t\tthis.$input = this.$scope.find('input[type=password]');\n\t\tthis.$trigger = this.$scope.find('.password-trigger');\n\t\tthis.isHidden = true;\n\n\t\thandleInput.call(this);\n\t\taddHandler.call(this);\n\n\t\treturn this;\n\t};\n\n\treturn PasswordController;\n}(_AbstractController3.default);\n\nexports.default = PasswordController;\n\n/***/ }),\n\n/***/ 1434:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(10);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(11);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _AbstractController2 = __webpack_require__(37);\n\nvar _AbstractController3 = _interopRequireDefault(_AbstractController2);\n\nvar _nouislider = __webpack_require__(1033);\n\nvar _nouislider2 = _interopRequireDefault(_nouislider);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// import fasterdom from 'fasterdom';\n\n// const sliderOpts = {\n// \twrapperClass : 'slider-wrapper',\n// \tslideClass : 'slider-slide',\n// \tpagination : '.slider-pagination',\n// \tnextButton : '.slider-next',\n// \tprevButton : '.slider-prev',\n// \tslidesPerView : 1,\n// \tpaginationClickable : true,\n// \tspeed : 400,\n// \tloop : false,\n// \tautoplay : 5000\n// };\n\n/**\n * Class representing a slider instance.\n * Controls the state of the slider navigation.\n * Controls slider behavior.\n * @extends { AbstractController }\n */\nvar ValueSliderController = function (_AbstractController) {\n\t(0, _inherits3.default)(ValueSliderController, _AbstractController);\n\n\tfunction ValueSliderController() {\n\t\t(0, _classCallCheck3.default)(this, ValueSliderController);\n\n\t\tvar _this = (0, _possibleConstructorReturn3.default)(this, _AbstractController.call(this));\n\n\t\t_this.$scope = null;\n\n\t\t_this.valueSlider = null;\n\t\t_this.valueSliderInput = null;\n\t\t// this.valueSlider = null;\n\t\t// this.opts = $.extend( true, {}, sliderOpts );\n\t\treturn _this;\n\t}\n\n\t/**\n * Initialises the controller.\n * Has to be called after ready event.\n *\n * @param { object } $root - jQuery wrapped DOM node\n * @returns { void }\n * @public\n */\n\n\n\tValueSliderController.prototype.init = function init($root) {\n\t\tvar _this2 = this;\n\n\t\tif ($root.data('noJs')) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.$scope = $root;\n\n\t\tthis.valueSlider = this.$scope.find('.value-slider-container').get(0);\n\t\tthis.valueSliderInput = this.$scope.find('input');\n\n\t\t_nouislider2.default.create(this.valueSlider, {\n\t\t\tstart: parseInt(this.valueSliderInput.val()) || 0,\n\t\t\tstep: 10,\n\t\t\trange: {\n\t\t\t\t'min': 0,\n\t\t\t\t'max': 100\n\t\t\t},\n\t\t\tformat: {\n\t\t\t\tto: function to(value) {\n\t\t\t\t\treturn parseInt(value) + ' km';\n\t\t\t\t},\n\t\t\t\tfrom: function from(value) {\n\t\t\t\t\treturn parseInt(value);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis.valueSlider.noUiSlider.on('update', function (values, handle) {\n\t\t\t_this2.valueSliderInput.val(values[handle]);\n\t\t});\n\n\t\tthis.valueSliderInput.on('change', function (e) {\n\n\t\t\tvar v = parseInt(_this2.valueSliderInput.val()) || 0;\n\t\t\t_this2.valueSlider.noUiSlider.set([v]);\n\t\t});\n\t};\n\n\treturn ValueSliderController;\n}(_AbstractController3.default);\n\n/**\n * @public\n * @return {SliderController} SliderController class\n */\n\n\nexports.default = ValueSliderController;\n\n/***/ }),\n\n/***/ 1435:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(10);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(11);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _Abstract = __webpack_require__(37);\n\nvar _Abstract2 = _interopRequireDefault(_Abstract);\n\nvar _fasterdom = __webpack_require__(22);\n\nvar _fasterdom2 = _interopRequireDefault(_fasterdom);\n\nvar _clickoutside = __webpack_require__(554);\n\nvar _clickoutside2 = _interopRequireDefault(_clickoutside);\n\nvar _lodash = __webpack_require__(580);\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _jquery = __webpack_require__(16);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _Keycode = __webpack_require__(766);\n\nvar _Keycode2 = _interopRequireDefault(_Keycode);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\r\n * hide suggestions\r\n * @returns {void}\r\n */\nfunction hideSuggestions() {\n\tvar _this = this;\n\n\tif (!this.visible) {\n\t\treturn;\n\t}\n\n\tthis.clickoutside.destroy();\n\n\t_fasterdom2.default.mutate(function () {\n\t\t_this.visible = false;\n\t\t_this.$scope.removeClass('suggestions-open');\n\t});\n}\n\n/**\r\n * show suggestions\r\n * @returns {void}\r\n */\nfunction showSuggestions() {\n\tvar _this2 = this;\n\n\tif (this.visible) {\n\t\treturn;\n\t}\n\n\tthis.clickoutside = new _clickoutside2.default(this.$scope, hideSuggestions.bind(this));\n\n\t_fasterdom2.default.mutate(function () {\n\t\t_this2.visible = true;\n\t\t_this2.$scope.addClass('suggestions-open');\n\t});\n}\n\n/**\r\n * Handle the click on a suggestion in the suggestion list\r\n * @param {Event} e Event sent by jQuery with the click handler\r\n * @return {void}\r\n */\nfunction handleClickOnSuggestion(e) {\n\tvar text = (0, _jquery2.default)(e.target).text();\n\n\tif ((0, _jquery2.default)(e.target).is('.empty-message')) {\n\t\treturn;\n\t}\n\n\tthis._selectSuggestion(text);\n}\n\n/**\r\n * @private\r\n * @param { object } e - input event\r\n * @returns { void }\r\n */\nfunction handleInput(e) {\n\tvar inputValue = e.target.value;\n\n\tif (inputValue.length < 3) {\n\t\tif (this.visible) {\n\t\t\thideSuggestions.call(this);\n\t\t}\n\n\t\treturn;\n\t}\n\n\tthis.makeSuggestions();\n}\n\n/**\r\n * emits blur event on root dom node\r\n * @param {object} e - blur event\r\n * @returns {void}\r\n */\nfunction emitBlur(e) {\n\tif (this.madeSuggestion) {\n\t\tthis.$scope.trigger('blur');\n\t\tthis.madeSuggestion = false;\n\t}\n}\n\n/**\r\n * handles enter keypress\r\n * @return {void}\r\n */\nfunction handleEnter() {\n\tvar $selectedSuggestion = this.$suggestions.find('.selected'),\n\t text = $selectedSuggestion.text();\n\n\tthis._selectSuggestion(text);\n}\n\n/**\r\n * selects suggestion by given direction from keyboard\r\n * @param {integer} direction - increases (1) or decrease (-1) index of selected option\r\n * @returns {void}\r\n */\nfunction selectOptionByKeyboard(direction) {\n\tvar $selectedSuggestion = this.$suggestions.find('.selected'),\n\t totalSuggestions = this.$suggestions.children().length;\n\n\t$selectedSuggestion.removeClass('selected');\n\tvar newIndex = $selectedSuggestion.index() + direction;\n\n\tif (newIndex >= totalSuggestions) {\n\t\tnewIndex = 0;\n\t}\n\n\tif (newIndex < 0) {\n\t\tnewIndex = totalSuggestions - 1;\n\t}\n\n\tif ($selectedSuggestion.length) {\n\t\tthis.$suggestions.children().eq(newIndex).addClass('selected');\n\t} else {\n\t\tthis.$suggestions.children().eq(0).addClass('selected');\n\t}\n}\n\n/**\r\n * handles keydown on input field\r\n * @param {object} e - keydown event\r\n * @returns {boolean} - execute the rest of handlers\r\n */\nfunction handleKeydown(e) {\n\tvar keyCode = e.keyCode || e.which;\n\n\t// if ( keyCode === KEYCODES.TAB ) {\n\t// \thideCustomSelectOptions.call( this );\n\t// \treturn true;\n\t// }\n\n\tswitch (keyCode) {\n\t\tcase _Keycode2.default.UP:\n\t\t\tselectOptionByKeyboard.call(this, -1);\n\t\t\te.preventDefault();\n\t\t\tbreak;\n\t\tcase _Keycode2.default.DOWN:\n\t\t\tselectOptionByKeyboard.call(this, 1);\n\t\t\te.preventDefault();\n\t\t\tbreak;\n\t\tcase _Keycode2.default.ENTER:\n\t\t\thandleEnter.call(this);\n\t\t\te.preventDefault();\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t}\n}\n\nfunction showEmptyMessage() {\n\tthis.$suggestions.empty();\n\n\t(0, _jquery2.default)('<li class=\"empty-message\"/>').text(this.emptyMessage).appendTo(this.$suggestions);\n\n\tshowSuggestions.call(this);\n}\n\n/**\r\n * Class representing autocompletion for an input field\r\n * @extends { AbstractController }\r\n */\n\nvar AutocompleteController = function (_AbstractController) {\n\t(0, _inherits3.default)(AutocompleteController, _AbstractController);\n\n\tfunction AutocompleteController() {\n\t\tvar autoSelectOne = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\t\t(0, _classCallCheck3.default)(this, AutocompleteController);\n\n\t\tvar _this3 = (0, _possibleConstructorReturn3.default)(this, _AbstractController.call(this));\n\n\t\t_this3._autoSelectOne = autoSelectOne;\n\t\treturn _this3;\n\t}\n\n\t/**\r\n * Initialises the controller.\r\n * Has to be called after ready event.\r\n *\r\n * @param { jQuery } $root - jQuery wrapped DOM node\r\n * @param { GatewayService } gateway - Service to connect to a gateway\r\n * @public\r\n * @return { LAS01Controller } instance\r\n */\n\n\n\tAutocompleteController.prototype.init = function init($root, gateway) {\n\t\tif ($root.data('noJs')) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.$root = $root;\n\t\tthis.$input = $root.find('input');\n\t\tthis.$suggestions = $root.find('.suggestions ol');\n\t\tthis.visible = false;\n\t\tthis.gateway = gateway;\n\n\t\tthis.emptyMessage = $root.data('empty-message');\n\n\t\tthis.madeSuggestion = false;\n\n\t\tthis.$input.on('input', (0, _lodash2.default)(handleInput.bind(this), 250));\n\t\tthis.$input.on('blur', (0, _lodash2.default)(emitBlur.bind(this), 250));\n\t\tthis.$input.on('keydown', handleKeydown.bind(this));\n\t\tthis.$root.on('click', '.suggestions li', handleClickOnSuggestion.bind(this));\n\n\t\treturn this;\n\t};\n\n\t/**\r\n * handles selection of a suggestion\r\n * @param { String } text - Text of the seleted option\r\n * @returns {void}\r\n */\n\n\n\tAutocompleteController.prototype._selectSuggestion = function _selectSuggestion(text) {\n\t\tthis.$scope.trigger('select-suggestion');\n\t\tthis.$input.val(text);\n\t\thideSuggestions.call(this);\n\t};\n\n\t/**\r\n * gets suggestions from gateway and creates dom nodes\r\n *\r\n * @param { String } query - Query text\r\n * @returns {void}\r\n */\n\n\n\tAutocompleteController.prototype.makeSuggestions = function makeSuggestions(query) {\n\t\tvar _this4 = this;\n\n\t\tvar value = this.$input.val();\n\n\t\tif (query) {\n\t\t\tvalue = query;\n\t\t}\n\n\t\tif (!this.gateway || !this.gateway.getSuggestions) {\n\t\t\tshowEmptyMessage.call(this);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.gateway.getSuggestions(value).then(function (suggestions) {\n\t\t\tif (!suggestions.length) {\n\t\t\t\tshowEmptyMessage.call(_this4);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_this4.$suggestions.empty();\n\t\t\t// if ( suggestions.length === 1 && this._autoSelectOne ) {\n\t\t\t// \tthis._selectSuggestion( suggestions[ 0 ] );\n\t\t\t// \treturn;\n\t\t\t// }\n\t\t\t//\n\t\t\t// if ( suggestions.length > 4 ) {\n\t\t\t// \tthis.$suggestions.addClass( 'scroll' );\n\t\t\t// } else {\n\t\t\t// \tthis.$suggestions.removeClass( 'scroll' );\n\t\t\t// }\n\n\t\t\t_jquery2.default.each(suggestions, function (i) {\n\t\t\t\t(0, _jquery2.default)('<li/>').text(suggestions[i]).appendTo(_this4.$suggestions);\n\t\t\t});\n\t\t\tshowSuggestions.call(_this4);\n\t\t}).catch(showEmptyMessage.bind(this));\n\t};\n\n\t/**\r\n * Initialises the controller.\r\n * Has to be called after ready event.\r\n *\r\n * @param { jQuery } $root - jQuery wrapped DOM node\r\n * @public\r\n * @return { LAS01Controller } instance\r\n */\n\n\n\tAutocompleteController.prototype.init = function init($root, config) {\n\t\tthis.$scope = $root;\n\t\tthis.$input = $root.find('input');\n\t\tthis.$suggestions = $root.find('.suggestions ol');\n\t\tthis.visible = false;\n\t\tthis.gateway = config.gateway;\n\n\t\tthis.emptyMessage = config.emptyMsg;\n\n\t\tthis.madeSuggestion = false;\n\n\t\tthis.$input.on('input', (0, _lodash2.default)(handleInput.bind(this), 250));\n\t\tthis.$input.on('blur', (0, _lodash2.default)(emitBlur.bind(this), 250));\n\t\tthis.$input.on('keydown', handleKeydown.bind(this));\n\t\tthis.$scope.on('click', '.suggestions li', handleClickOnSuggestion.bind(this));\n\n\t\treturn this;\n\t};\n\n\treturn AutocompleteController;\n}(_Abstract2.default);\n\nexports.default = AutocompleteController;\n\n/***/ }),\n\n/***/ 1436:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(10);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(11);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _Abstract = __webpack_require__(37);\n\nvar _Abstract2 = _interopRequireDefault(_Abstract);\n\nvar _fasterdom = __webpack_require__(22);\n\nvar _fasterdom2 = _interopRequireDefault(_fasterdom);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\r\n * Enables inline editing, sets necessary classes and properties\r\n * @return {void}\r\n */\nfunction enable() {\n\tvar _this = this;\n\n\t_fasterdom2.default.mutateInstant(function () {\n\t\t_this.$scope.removeClass('inline-editing--disabled');\n\t\t_this.$scope.removeClass('inline-editing--valid');\n\t\t_this.$input.prop('readonly', false);\n\t\t_this.$input.trigger('focus');\n\t\t_this.$scope.trigger('enable-inline-editing');\n\t\t_this.disabled = false;\n\t});\n}\n\n/**\r\n * Disables inline editing, sets necessary classes and properties\r\n * @return {void}\r\n */\nfunction disable() {\n\tvar _this2 = this;\n\n\t_fasterdom2.default.measureInstant(function () {\n\n\t\tif (_this2.$input.val() !== '') {\n\t\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\t\t_this2.$scope.addClass('inline-editing--disabled');\n\t\t\t\t_this2.$input.prop('readonly', true);\n\t\t\t\t_this2.$scope.trigger('disable-inline-editing');\n\t\t\t\t_this2.$input.get(0).value = _this2.$input.val();\n\t\t\t\t_this2.disabled = true;\n\t\t\t});\n\t\t}\n\t});\n}\n\n/**\r\n * Toggles inline editing, uses {@link enable} and {@link disable}\r\n * @return {void}\r\n */\nfunction toggleState() {\n\n\tif (this.disabled) {\n\t\tenable.call(this);\n\t} else {\n\t\tdisable.call(this);\n\t}\n}\n\n/**\r\n * Class representing an inline editing input field\r\n * @extends { AbstractController }\r\n */\n\nvar InlineEditingController = function (_AbstractController) {\n\t(0, _inherits3.default)(InlineEditingController, _AbstractController);\n\n\tfunction InlineEditingController() {\n\t\t(0, _classCallCheck3.default)(this, InlineEditingController);\n\t\treturn (0, _possibleConstructorReturn3.default)(this, _AbstractController.call(this));\n\t}\n\n\t/**\r\n * Initialises the controller.\r\n * Has to be called after ready event.\r\n *\r\n * @public\r\n * @param {jQuery} $scope jQuery wrapped DOM node\r\n * @return {InlineEditingController} Current instance of InlineEditingController\r\n */\n\n\n\tInlineEditingController.prototype.init = function init($scope) {\n\t\tif ($scope.data('noJs')) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.$scope = $scope;\n\t\tthis.$input = $scope.find('input');\n\t\tthis.$trigger = $scope.find('.inline-editing-trigger');\n\t\tthis.disabled = $scope.is('.inline-editing--disabled');\n\n\t\tthis.$trigger.on('click', toggleState.bind(this));\n\t\tthis.$scope.on('select-suggestion', disable.bind(this));\n\t\tthis.$scope.on('blur', disable.bind(this));\n\n\t\treturn this;\n\t};\n\n\treturn InlineEditingController;\n}(_Abstract2.default);\n\nexports.default = InlineEditingController;\n\n/***/ }),\n\n/***/ 1437:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(10);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(11);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _AbstractController2 = __webpack_require__(37);\n\nvar _AbstractController3 = _interopRequireDefault(_AbstractController2);\n\nvar _fasterdom = __webpack_require__(22);\n\nvar _fasterdom2 = _interopRequireDefault(_fasterdom);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Set clear button disabled state depending if input value is empty or not\n *\n * @private\n * @param { object } e - input event or jQuery wrapped DOM node\n * @returns { void }\n */\nfunction handleInput(e) {\n\tvar _this = this;\n\n\tvar inputValue = e.target ? e.target.value : e.val();\n\n\t_fasterdom2.default.mutateInstant(function () {\n\t\t_this.$trigger.attr('disabled', inputValue.length < 1 ? true : null);\n\t});\n}\n\n/**\n * Add event listener to input and clear button\n *\n * @private\n * @returns { void }\n */\nfunction addHandler() {\n\tvar _this2 = this;\n\n\tthis.$input.on('input', handleInput.bind(this));\n\n\tthis.$trigger.on('click', function () {\n\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\t_this2.$input.val('');\n\t\t\t_this2.$trigger.attr('disabled', true);\n\t\t});\n\t});\n}\n\n/**\n * Class representing clear function for an form control element\n * @extends { AbstractController }\n */\n\nvar ClearInputController = function (_AbstractController) {\n\t(0, _inherits3.default)(ClearInputController, _AbstractController);\n\n\tfunction ClearInputController() {\n\t\t(0, _classCallCheck3.default)(this, ClearInputController);\n\t\treturn (0, _possibleConstructorReturn3.default)(this, _AbstractController.call(this));\n\t}\n\n\tClearInputController.prototype.init = function init($root) {\n\t\tvar config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tif ($root.data('noJs')) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.$scope = $root;\n\t\tthis.config = config;\n\n\t\tthis.$input = this.$scope.find('.form-control__field').not('[type=hidden]');\n\t\tthis.$trigger = this.$scope.find('.clear-trigger');\n\n\t\thandleInput.call(this, this.$input);\n\t\taddHandler.call(this);\n\t};\n\n\treturn ClearInputController;\n}(_AbstractController3.default);\n\nexports.default = ClearInputController;\n\n/***/ }),\n\n/***/ 1438:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(10);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(11);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _regenerator = __webpack_require__(1439);\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = __webpack_require__(1442);\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar multipleSelectOption = function () {\n\tvar _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(selectedIndex) {\n\t\tvar $selectedCustomOption, $selectedNativeOption, nativeChangeEvent;\n\t\treturn _regenerator2.default.wrap(function _callee$(_context) {\n\t\t\twhile (1) {\n\t\t\t\tswitch (_context.prev = _context.next) {\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\t$selectedCustomOption = this.$customOptions.find('[data-key=' + selectedIndex + ']'), $selectedNativeOption = (0, _jquery2.default)(this.$options.get(selectedIndex));\n\n\t\t\t\t\t\tif (!$selectedCustomOption.hasClass('selected')) {\n\t\t\t\t\t\t\t_context.next = 6;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_context.next = 4;\n\t\t\t\t\t\treturn removeSelectedOption.call(this, selectedIndex, $selectedCustomOption, $selectedNativeOption);\n\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\t_context.next = 8;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 6:\n\t\t\t\t\t\t_context.next = 8;\n\t\t\t\t\t\treturn addSelectedOption.call(this, selectedIndex, $selectedCustomOption, $selectedNativeOption);\n\n\t\t\t\t\tcase 8:\n\n\t\t\t\t\t\tthis.$nativeSelect.trigger('change');\n\n\t\t\t\t\t\tnativeChangeEvent = document.createEvent('Event');\n\n\n\t\t\t\t\t\tnativeChangeEvent.initEvent('change', false, true);\n\n\t\t\t\t\t\tthis.$nativeSelect[0].dispatchEvent(nativeChangeEvent);\n\n\t\t\t\t\t\trefreshCustomSelectText.call(this, buildSelectedOptionsString.call(this));\n\n\t\t\t\t\tcase 13:\n\t\t\t\t\tcase 'end':\n\t\t\t\t\t\treturn _context.stop();\n\t\t\t\t}\n\t\t\t}\n\t\t}, _callee, this);\n\t}));\n\n\treturn function multipleSelectOption(_x) {\n\t\treturn _ref.apply(this, arguments);\n\t};\n}();\n\n/**\r\n * selects the option with given index\r\n * @param {integer} selectedIndex - index of option which will be selected\r\n * @returns {void}\r\n */\n\n\nvar _Abstract = __webpack_require__(37);\n\nvar _Abstract2 = _interopRequireDefault(_Abstract);\n\nvar _fasterdom = __webpack_require__(22);\n\nvar _fasterdom2 = _interopRequireDefault(_fasterdom);\n\nvar _jquery = __webpack_require__(16);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _clickoutside = __webpack_require__(554);\n\nvar _clickoutside2 = _interopRequireDefault(_clickoutside);\n\nvar _Keycode = __webpack_require__(766);\n\nvar _Keycode2 = _interopRequireDefault(_Keycode);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar userAgent = window.UserAgent;\n\n/**\r\n * refreshes visible placeholder text of our custom selecta\r\n * @param {string} newText - Text which will be displayed\r\n * @return {void}\r\n */\nfunction refreshCustomSelectText(newText) {\n\tvar _this = this;\n\n\t_fasterdom2.default.mutateInstant(function () {\n\t\treturn _this.$customSelect.text(!newText ? _this.placeholder : newText);\n\t});\n}\n\n/**\r\n * handles change event to set new value as displayed text\r\n *\r\n * @private\r\n * @returns { void }\r\n */\nfunction handleChange() {\n\tvar _this2 = this;\n\n\tvar newText = '';\n\tvar selectedOptions = this.$nativeSelect.find('option:selected');\n\n\t_fasterdom2.default.measureInstant(function () {\n\n\t\tif (selectedOptions.length < 2) {\n\t\t\tnewText = selectedOptions.text();\n\t\t} else {\n\t\t\tnewText = selectedOptions.length + ' selected options';\n\t\t}\n\n\t\trefreshCustomSelectText.call(_this2, newText);\n\t});\n}\n\n/**\r\n * hides the custom select options\r\n * @return {boolean} updated\r\n */\nfunction hideCustomSelectOptions() {\n\tvar _this3 = this;\n\n\tif (this.isDisabled || !this.isOpen) {\n\t\treturn false;\n\t}\n\n\tif (this.clickoutside) {\n\t\tthis.clickoutside.destroy();\n\t}\n\n\t_fasterdom2.default.mutate(function () {\n\t\t_this3.$nativeSelect.blur().removeAttr('aria-expanded');\n\t\t_this3.isOpen = false;\n\t});\n\n\treturn true;\n}\n\n/**\r\n * shows the custom select options\r\n * @return {boolean} updated\r\n */\nfunction showCustomSelectOptions() {\n\tvar _this4 = this;\n\n\tif (this.isDisabled || this.isOpen) {\n\t\treturn false;\n\t}\n\n\t_fasterdom2.default.measure(function () {\n\t\tvar scrollTop = (0, _jquery2.default)(document).scrollTop(),\n\t\t viewportPosition = _this4.$root.offset().top - scrollTop + _this4.$root.outerHeight(),\n\t\t viewportHeight = (0, _jquery2.default)(window).height(),\n\t\t minHeight = 160,\n\t\t maxHeight = 320;\n\n\t\tvar height = viewportHeight - viewportPosition - 20;\n\n\t\tvar difference = minHeight - height; // eslint-disable-line one-var\n\n\t\tif (height < minHeight) {\n\t\t\t(0, _jquery2.default)('html, body').animate({ scrollTop: scrollTop + difference });\n\t\t\theight = minHeight;\n\t\t}\n\n\t\tif (height > maxHeight) {\n\t\t\theight = maxHeight;\n\t\t}\n\n\t\t_fasterdom2.default.mutate(function () {\n\t\t\t_this4.$nativeSelect.focus().attr('aria-expanded', '');\n\t\t\t_this4.$customOptionsWrapper.css('max-height', height);\n\t\t\t_this4.isOpen = true;\n\t\t});\n\t});\n\n\tthis.clickoutside = new _clickoutside2.default(this.$customOptions, hideCustomSelectOptions.bind(this));\n\n\treturn true;\n}\n\n/**\r\n * validates key of a selected option by keyboard (ignores disabled options etc)\r\n * @param {integer} nextSelectedKey - index of option which will be selected\r\n * @param {integer} optionCount - total length of options\r\n * @param {integer} direction - increases (1) or decrease (-1) nextSelectedKey if its not valid\r\n * @returns {integer} nextSelectedKey - returns valid key of next selectable option\r\n */\nfunction validateSelectKey(nextSelectedKey, optionCount, direction) {\n\tvar newSelectedKey = nextSelectedKey;\n\n\tif (nextSelectedKey >= optionCount) {\n\t\tnewSelectedKey = 0;\n\t}\n\n\tif (nextSelectedKey < 0) {\n\t\tnewSelectedKey = optionCount - 1;\n\t}\n\n\tif (this.$options[newSelectedKey].disabled) {\n\t\tnewSelectedKey += direction;\n\t\treturn validateSelectKey.call(this, newSelectedKey, optionCount, direction);\n\t}\n\n\treturn newSelectedKey;\n}\n\nfunction buildSelectedOptionsString() {\n\treturn this.selectedOptions.reduce(function (val, item) {\n\t\treturn val + (val === '' ? '' : ', ') + item.text;\n\t}, '');\n}\n\nfunction clearSelectedOptions() {\n\tthis.selectedOptions = [];\n}\n\nfunction addSelectedOption(selectedIndex, $selectedCustomOption, $selectedNativeOption) {\n\tthis.selectedOptions.push({\n\t\tindex: selectedIndex,\n\t\ttext: $selectedNativeOption.text()\n\t});\n\n\treturn _fasterdom.fasterdomPromised.mutateInstant(function () {\n\t\t$selectedNativeOption.prop('selected', true);\n\t\t$selectedCustomOption.addClass('selected');\n\t});\n}\n\nfunction removeSelectedOption(selectedIndex, $selectedCustomOption, $selectedNativeOption) {\n\tthis.selectedOptions = this.selectedOptions.filter(function (item) {\n\t\treturn item.index !== selectedIndex;\n\t});\n\n\treturn _fasterdom.fasterdomPromised.mutateInstant(function () {\n\t\t$selectedNativeOption.prop('selected', false);\n\t\t$selectedCustomOption.removeClass('selected');\n\t});\n}\n\nfunction selectOption(selectedIndex) {\n\tvar _this5 = this;\n\n\tif (typeof selectedIndex === 'undefined') {\n\t\treturn;\n\t}\n\n\tif (this.isMultiSelect) {\n\t\tmultipleSelectOption.call(this, selectedIndex);\n\t\treturn;\n\t}\n\n\tvar $selectedOptions = this.$customOptions.find('.selected'),\n\t $clickedCustomOption = this.$customOptions.find('[data-key=' + selectedIndex + ']'),\n\t $clickedNativeOption = (0, _jquery2.default)(this.$options.get(selectedIndex)),\n\t newText = $clickedNativeOption.text();\n\n\t_fasterdom2.default.mutateInstant(function () {\n\t\t_this5.$options.prop('selected', false);\n\t\t$selectedOptions.removeClass('selected');\n\t\t$clickedNativeOption.prop('selected', true);\n\t\t$clickedCustomOption.addClass('selected');\n\t\t_this5.$nativeSelect.trigger('change');\n\n\t\tvar nativeChangeEvent = document.createEvent('Event');\n\n\t\tnativeChangeEvent.initEvent('change', false, true);\n\n\t\t_this5.$nativeSelect[0].dispatchEvent(nativeChangeEvent);\n\t});\n\trefreshCustomSelectText.call(this, newText);\n}\n\n/**\r\n * selects option by given direction from keyboard\r\n * @param {integer} direction - increases (1) or decrease (-1) index of selected option\r\n * @returns {void}\r\n */\nfunction selectOptionByKeyboard(direction) {\n\tvar $selectedOption = this.$customOptions.find('.selected'),\n\t selectedKey = $selectedOption.data('key'),\n\t optionCount = this.$options.length;\n\n\tvar nextSelectedKey = 0;\n\n\tif (!selectedKey) {\n\t\tnextSelectedKey = 1;\n\t} else {\n\t\tnextSelectedKey = selectedKey + direction;\n\t}\n\n\tselectOption.call(this, validateSelectKey.call(this, nextSelectedKey, optionCount, direction));\n}\n\n/**\r\n * handles enter keypress\r\n * @return {void}\r\n */\nfunction handleEnter() {\n\thideCustomSelectOptions.call(this);\n}\n\n/**\r\n * handles keydown on select\r\n * @param {object} e - keydown event\r\n * @returns {boolean} - execute the rest of handlers\r\n */\nfunction handleKeydown(e) {\n\tif (this.isDisabled || !this.isOpen) {\n\t\treturn false;\n\t}\n\n\tvar keyCode = e.keyCode || e.which;\n\n\tif (keyCode === _Keycode2.default.TAB) {\n\t\thideCustomSelectOptions.call(this);\n\t\treturn true;\n\t}\n\n\te.preventDefault();\n\n\tswitch (keyCode) {\n\n\t\tcase _Keycode2.default.UP:\n\t\t\tselectOptionByKeyboard.call(this, -1);\n\t\t\tbreak;\n\t\tcase _Keycode2.default.DOWN:\n\t\t\tselectOptionByKeyboard.call(this, 1);\n\t\t\tbreak;\n\t\tcase _Keycode2.default.ENTER:\n\t\t\thandleEnter.call(this);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t}\n\n\treturn false;\n}\n\n/**\r\n * handles mousedown event to prevent the native select behavior\r\n *\r\n * @private\r\n * @param {object} e - mousedown event\r\n * @returns {void}\r\n */\nfunction handleMousedown(e) {\n\te.preventDefault();\n}\n\n/**\r\n * handles click event to open (and close) custom select dropdown\r\n *\r\n * @param {object} e - click event\r\n * @returns {void}\r\n */\nfunction handleClick(e) {\n\te.preventDefault();\n\n\tif (this.isOpen) {\n\t\thideCustomSelectOptions.call(this);\n\t} else {\n\t\tshowCustomSelectOptions.call(this);\n\t}\n}\n\n/**\r\n * handles click on a custom option\r\n * @param {object} e - click event\r\n * @returns {void}\r\n */\nfunction handleCustomOptionClick(e) {\n\tvar _this6 = this;\n\n\te.preventDefault();\n\n\t_fasterdom2.default.measure(function () {\n\t\tvar $clickedOption = (0, _jquery2.default)(e.target),\n\t\t selectedIndex = $clickedOption.data('key');\n\n\t\tif (!_this6.isMultiSelect) {\n\t\t\thideCustomSelectOptions.call(_this6);\n\t\t}\n\t\tselectOption.call(_this6, selectedIndex);\n\t});\n}\n\n/**\r\n * generates html code and adds events for custom options\r\n * @return {void}\r\n */\nfunction generateCustomOptions() {\n\tvar _this7 = this;\n\n\tvar $customOptions = (0, _jquery2.default)('<div class=\"custom-options\"></div>'),\n\t $customOptionsWrapper = (0, _jquery2.default)('<div class=\"custom-options-wrapper\"></div>');\n\n\t$customOptions.append($customOptionsWrapper);\n\n\t_jquery2.default.each(this.$options, function (index, option) {\n\t\tvar $option = (0, _jquery2.default)(option);\n\n\t\tif (!$option.attr('disabled')) {\n\t\t\tvar $customOpt = (0, _jquery2.default)('<div class=\"option\" data-key=\"' + index + '\"><span>' + $option.text() + '</span></div>');\n\n\t\t\t$customOpt.on('click', handleCustomOptionClick.bind(_this7));\n\t\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\t\treturn $customOptionsWrapper.append($customOpt);\n\t\t\t});\n\t\t}\n\t});\n\n\tthis.$customOptions = $customOptions;\n\tthis.$customOptionsWrapper = $customOptionsWrapper;\n\t_fasterdom2.default.mutateInstant(function () {\n\t\treturn _this7.$customSelect.after($customOptions);\n\t});\n}\n\n/**\r\n * Class representing a select dropdown\r\n * @extends { AbstractController }\r\n */\n\nvar SelectController = function (_AbstractController) {\n\t(0, _inherits3.default)(SelectController, _AbstractController);\n\n\tfunction SelectController() {\n\t\t(0, _classCallCheck3.default)(this, SelectController);\n\t\treturn (0, _possibleConstructorReturn3.default)(this, _AbstractController.call(this));\n\t}\n\n\t/**\r\n * Initialises the controller.\r\n * Has to be called after ready event.\r\n *\r\n * @param { object } $root - jQuery wrapped DOM node\r\n * @public\r\n * @return { void }\r\n */\n\n\n\tSelectController.prototype.init = function init($root) {\n\t\tvar _this9 = this;\n\n\t\tif ($root.data('noJs')) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.$root = $root;\n\t\tthis.scope = $root[0];\n\t\tthis.isOpen = false;\n\t\tthis.isDisabled = false;\n\n\t\tthis.$nativeSelect = this.$root.find('select');\n\t\tthis.$options = this.$root.find('option');\n\t\tthis.$customSelect = this.$root.find('.select-replace-container');\n\n\t\tthis.placeholder = this.$nativeSelect.attr('placeholder');\n\t\tthis.selectedOptions = [];\n\t\tthis.isMultiSelect = this.$nativeSelect.attr('multiple');\n\n\t\t_fasterdom2.default.measureInstant(function () {\n\t\t\t_this9.isDisabled = _this9.$nativeSelect.is(':disabled');\n\t\t});\n\n\t\thandleChange.call(this);\n\n\t\tthis.$nativeSelect.on('change', handleChange.bind(this));\n\n\t\tif (!userAgent.isMobile) {\n\t\t\tgenerateCustomOptions.call(this);\n\t\t\tthis.$nativeSelect.on('mousedown', handleMousedown.bind(this));\n\t\t\tthis.$customSelect.on('click', handleClick.bind(this));\n\t\t\tthis.$nativeSelect.on('focus', showCustomSelectOptions.bind(this));\n\t\t\tthis.$nativeSelect.on('keydown', handleKeydown.bind(this));\n\t\t}\n\n\t\treturn this;\n\t};\n\n\tSelectController.prototype.destroy = function destroy() {\n\t\tif (this.$customOptions) {\n\t\t\tthis.$customOptionsWrapper = null;\n\t\t\tthis.$customOptions.remove();\n\t\t\tthis.$customOptions = null;\n\t\t}\n\n\t\tthis.$nativeSelect.off('change');\n\t\tthis.$nativeSelect.off('mousedown');\n\t\tthis.$customSelect.off('click');\n\t\tthis.$nativeSelect.off('focus');\n\t\tthis.$nativeSelect.off('keydown');\n\t};\n\n\treturn SelectController;\n}(_Abstract2.default);\n\nexports.default = SelectController;\n\n/***/ }),\n\n/***/ 1439:\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(1440);\n\n\n/***/ }),\n\n/***/ 1440:\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// This method of obtaining a reference to the global object needs to be\n// kept identical to the way it is obtained in runtime.js\nvar g = (function() { return this })() || Function(\"return this\")();\n\n// Use `getOwnPropertyNames` because not all browsers support calling\n// `hasOwnProperty` on the global `self` object in a worker. See #183.\nvar hadRuntime = g.regeneratorRuntime &&\n Object.getOwnPropertyNames(g).indexOf(\"regeneratorRuntime\") >= 0;\n\n// Save the old regeneratorRuntime in case it needs to be restored later.\nvar oldRuntime = hadRuntime && g.regeneratorRuntime;\n\n// Force reevalutation of runtime.js.\ng.regeneratorRuntime = undefined;\n\nmodule.exports = __webpack_require__(1441);\n\nif (hadRuntime) {\n // Restore the original runtime.\n g.regeneratorRuntime = oldRuntime;\n} else {\n // Remove the global property added by runtime.js.\n try {\n delete g.regeneratorRuntime;\n } catch(e) {\n g.regeneratorRuntime = undefined;\n }\n}\n\n\n/***/ }),\n\n/***/ 1441:\n/***/ (function(module, exports) {\n\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n!(function(global) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration. If the Promise is rejected, however, the\n // result for this iteration will be rejected with the same\n // reason. Note that rejections of yielded Promises are not\n // thrown back into the generator function, as is the case\n // when an awaited Promise is rejected. This difference in\n // behavior between yield and await is important, because it\n // allows the consumer to decide what to do with the yielded\n // rejection (swallow it and continue, manually .throw it back\n // into the generator, abandon iteration, whatever). With\n // await, by contrast, there is no opportunity to examine the\n // rejection reason outside the generator function, so the\n // only option is to throw it from the await expression, and\n // let the generator function handle the exception.\n result.value = unwrapped;\n resolve(result);\n }, reject);\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() { return this })() || Function(\"return this\")()\n);\n\n\n/***/ }),\n\n/***/ 1442:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _promise = __webpack_require__(36);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (fn) {\n return function () {\n var gen = fn.apply(this, arguments);\n return new _promise2.default(function (resolve, reject) {\n function step(key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n return _promise2.default.resolve(value).then(function (value) {\n step(\"next\", value);\n }, function (err) {\n step(\"throw\", err);\n });\n }\n }\n\n return step(\"next\");\n });\n };\n};\n\n/***/ }),\n\n/***/ 1443:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(10);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(11);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _Abstract = __webpack_require__(37);\n\nvar _Abstract2 = _interopRequireDefault(_Abstract);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar FileUploadController = function (_AbstractController) {\n\t(0, _inherits3.default)(FileUploadController, _AbstractController);\n\n\tfunction FileUploadController() {\n\t\t(0, _classCallCheck3.default)(this, FileUploadController);\n\t\treturn (0, _possibleConstructorReturn3.default)(this, _AbstractController.apply(this, arguments));\n\t}\n\n\tFileUploadController.prototype.init = function init($scope, config) {\n\t\tthis.$scope = $scope;\n\t\tthis.scope = $scope[0];\n\t\tthis.config = config;\n\n\t\tthis.input = this.scope.querySelector('input[type=\"file\"]');\n\n\t\t// this.uploader = uploader( {\n\t\t// \tel : this.input\n\t\t// } );\n\t\t// console.log( 'DAHUI', this.input );\n\t\t//\n\t\t// this.uploader.on( 'files:added', ( files ) => {\n\t\t// \tconsole.log( files );\n\t\t// } );\n\t};\n\n\treturn FileUploadController;\n}(_Abstract2.default);\n\nexports.default = FileUploadController;\n\n/***/ }),\n\n/***/ 579:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Basic module class definition providing basic interface functions\n */\nvar BaseModule = function () {\n\n\t/**\n * Initialize a module with a config provided by the AppConmoduleConfig\n * @param {moduleConfig} moduleConfig - Config parsed from teh DOM\n */\n\tfunction BaseModule(moduleConfig) {\n\t\t(0, _classCallCheck3.default)(this, BaseModule);\n\n\n\t\t/**\n *\n * @type {Object}\n */\n\t\tthis.node = moduleConfig.node;\n\t\t/**\n *\n * @type {Object}\n */\n\t\tthis.config = moduleConfig.config;\n\t\t/**\n *\n * @type {string}\n */\n\t\tthis.identifier = moduleConfig.identifier;\n\t}\n\n\tBaseModule.prototype.init = function init() {\n\t\treturn this;\n\t};\n\n\t/**\n * @return {string} returns the identifier for the module instance\n */\n\n\n\tBaseModule.prototype.getIdentifier = function getIdentifier() {\n\t\treturn this.identifier;\n\t};\n\n\treturn BaseModule;\n}();\n\nexports.default = BaseModule;\n\n/***/ }),\n\n/***/ 720:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(10);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(11);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _Base = __webpack_require__(579);\n\nvar _Base2 = _interopRequireDefault(_Base);\n\nvar _Forms = __webpack_require__(1429);\n\nvar _Forms2 = _interopRequireDefault(_Forms);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\r\n * @extends {BaseModule}\r\n */\nvar FormV2 = function (_BaseModule) {\n\t(0, _inherits3.default)(FormV2, _BaseModule);\n\n\tfunction FormV2(config) {\n\t\t(0, _classCallCheck3.default)(this, FormV2);\n\t\treturn (0, _possibleConstructorReturn3.default)(this, _BaseModule.call(this, config));\n\t}\n\n\tFormV2.prototype.init = function init() {\n\t\t_BaseModule.prototype.init.call(this);\n\t\t_Forms2.default.init();\n\t};\n\n\treturn FormV2;\n}(_Base2.default);\n\nexports.default = FormV2;\n\n/***/ }),\n\n/***/ 766:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.default = {\n\tTAB: 9,\n\tUP: 38,\n\tDOWN: 40,\n\tENTER: 13\n};\n\n/***/ })\n\n});\n\n\n// WEBPACK FOOTER //\n// FormsV2.chunk.js","/*!\n * Date picker for pickadate.js v3.5.6\n * http://amsul.github.io/pickadate.js/date.htm\n */\n!function(a){\"function\"==typeof define&&define.amd?define([\"picker\",\"jquery\"],a):\"object\"==typeof exports?module.exports=a(require(\"./picker.js\"),require(\"jquery\")):a(Picker,jQuery)}(function(a,b){function c(a,b){var c=this,d=a.$node[0],e=d.value,f=a.$node.data(\"value\"),g=f||e,h=f?b.formatSubmit:b.format,i=function(){return d.currentStyle?\"rtl\"==d.currentStyle.direction:\"rtl\"==getComputedStyle(a.$root[0]).direction};c.settings=b,c.$node=a.$node,c.queue={min:\"measure create\",max:\"measure create\",now:\"now create\",select:\"parse create validate\",highlight:\"parse navigate create validate\",view:\"parse create validate viewset\",disable:\"deactivate\",enable:\"activate\"},c.item={},c.item.clear=null,c.item.disable=(b.disable||[]).slice(0),c.item.enable=-function(a){return a[0]===!0?a.shift():-1}(c.item.disable),c.set(\"min\",b.min).set(\"max\",b.max).set(\"now\"),g?c.set(\"select\",g,{format:h,defaultValue:!0}):c.set(\"select\",null).set(\"highlight\",c.item.now),c.key={40:7,38:-7,39:function(){return i()?-1:1},37:function(){return i()?1:-1},go:function(a){var b=c.item.highlight,d=new Date(b.year,b.month,b.date+a);c.set(\"highlight\",d,{interval:a}),this.render()}},a.on(\"render\",function(){a.$root.find(\".\"+b.klass.selectMonth).on(\"change\",function(){var c=this.value;c&&(a.set(\"highlight\",[a.get(\"view\").year,c,a.get(\"highlight\").date]),a.$root.find(\".\"+b.klass.selectMonth).trigger(\"focus\"))}),a.$root.find(\".\"+b.klass.selectYear).on(\"change\",function(){var c=this.value;c&&(a.set(\"highlight\",[c,a.get(\"view\").month,a.get(\"highlight\").date]),a.$root.find(\".\"+b.klass.selectYear).trigger(\"focus\"))})},1).on(\"open\",function(){var d=\"\";c.disabled(c.get(\"now\"))&&(d=\":not(.\"+b.klass.buttonToday+\")\"),a.$root.find(\"button\"+d+\", select\").attr(\"disabled\",!1)},1).on(\"close\",function(){a.$root.find(\"button, select\").attr(\"disabled\",!0)},1)}var d=7,e=6,f=a._;c.prototype.set=function(a,b,c){var d=this,e=d.item;return null===b?(\"clear\"==a&&(a=\"select\"),e[a]=b,d):(e[\"enable\"==a?\"disable\":\"flip\"==a?\"enable\":a]=d.queue[a].split(\" \").map(function(e){return b=d[e](a,b,c)}).pop(),\"select\"==a?d.set(\"highlight\",e.select,c):\"highlight\"==a?d.set(\"view\",e.highlight,c):a.match(/^(flip|min|max|disable|enable)$/)&&(e.select&&d.disabled(e.select)&&d.set(\"select\",e.select,c),e.highlight&&d.disabled(e.highlight)&&d.set(\"highlight\",e.highlight,c)),d)},c.prototype.get=function(a){return this.item[a]},c.prototype.create=function(a,c,d){var e,g=this;return c=void 0===c?a:c,c==-(1/0)||c==1/0?e=c:b.isPlainObject(c)&&f.isInteger(c.pick)?c=c.obj:b.isArray(c)?(c=new Date(c[0],c[1],c[2]),c=f.isDate(c)?c:g.create().obj):c=f.isInteger(c)||f.isDate(c)?g.normalize(new Date(c),d):g.now(a,c,d),{year:e||c.getFullYear(),month:e||c.getMonth(),date:e||c.getDate(),day:e||c.getDay(),obj:e||c,pick:e||c.getTime()}},c.prototype.createRange=function(a,c){var d=this,e=function(a){return a===!0||b.isArray(a)||f.isDate(a)?d.create(a):a};return f.isInteger(a)||(a=e(a)),f.isInteger(c)||(c=e(c)),f.isInteger(a)&&b.isPlainObject(c)?a=[c.year,c.month,c.date+a]:f.isInteger(c)&&b.isPlainObject(a)&&(c=[a.year,a.month,a.date+c]),{from:e(a),to:e(c)}},c.prototype.withinRange=function(a,b){return a=this.createRange(a.from,a.to),b.pick>=a.from.pick&&b.pick<=a.to.pick},c.prototype.overlapRanges=function(a,b){var c=this;return a=c.createRange(a.from,a.to),b=c.createRange(b.from,b.to),c.withinRange(a,b.from)||c.withinRange(a,b.to)||c.withinRange(b,a.from)||c.withinRange(b,a.to)},c.prototype.now=function(a,b,c){return b=new Date,c&&c.rel&&b.setDate(b.getDate()+c.rel),this.normalize(b,c)},c.prototype.navigate=function(a,c,d){var e,f,g,h,i=b.isArray(c),j=b.isPlainObject(c),k=this.item.view;if(i||j){for(j?(f=c.year,g=c.month,h=c.date):(f=+c[0],g=+c[1],h=+c[2]),d&&d.nav&&k&&k.month!==g&&(f=k.year,g=k.month),e=new Date(f,g+(d&&d.nav?d.nav:0),1),f=e.getFullYear(),g=e.getMonth();new Date(f,g,h).getMonth()!==g;)h-=1;c=[f,g,h]}return c},c.prototype.normalize=function(a){return a.setHours(0,0,0,0),a},c.prototype.measure=function(a,b){var c=this;return b?\"string\"==typeof b?b=c.parse(a,b):f.isInteger(b)&&(b=c.now(a,b,{rel:b})):b=\"min\"==a?-(1/0):1/0,b},c.prototype.viewset=function(a,b){return this.create([b.year,b.month,1])},c.prototype.validate=function(a,c,d){var e,g,h,i,j=this,k=c,l=d&&d.interval?d.interval:1,m=-1===j.item.enable,n=j.item.min,o=j.item.max,p=m&&j.item.disable.filter(function(a){if(b.isArray(a)){var d=j.create(a).pick;d<c.pick?e=!0:d>c.pick&&(g=!0)}return f.isInteger(a)}).length;if((!d||!d.nav&&!d.defaultValue)&&(!m&&j.disabled(c)||m&&j.disabled(c)&&(p||e||g)||!m&&(c.pick<=n.pick||c.pick>=o.pick)))for(m&&!p&&(!g&&l>0||!e&&0>l)&&(l*=-1);j.disabled(c)&&(Math.abs(l)>1&&(c.month<k.month||c.month>k.month)&&(c=k,l=l>0?1:-1),c.pick<=n.pick?(h=!0,l=1,c=j.create([n.year,n.month,n.date+(c.pick===n.pick?0:-1)])):c.pick>=o.pick&&(i=!0,l=-1,c=j.create([o.year,o.month,o.date+(c.pick===o.pick?0:1)])),!h||!i);)c=j.create([c.year,c.month,c.date+l]);return c},c.prototype.disabled=function(a){var c=this,d=c.item.disable.filter(function(d){return f.isInteger(d)?a.day===(c.settings.firstDay?d:d-1)%7:b.isArray(d)||f.isDate(d)?a.pick===c.create(d).pick:b.isPlainObject(d)?c.withinRange(d,a):void 0});return d=d.length&&!d.filter(function(a){return b.isArray(a)&&\"inverted\"==a[3]||b.isPlainObject(a)&&a.inverted}).length,-1===c.item.enable?!d:d||a.pick<c.item.min.pick||a.pick>c.item.max.pick},c.prototype.parse=function(a,b,c){var d=this,e={};return b&&\"string\"==typeof b?(c&&c.format||(c=c||{},c.format=d.settings.format),d.formats.toArray(c.format).map(function(a){var c=d.formats[a],g=c?f.trigger(c,d,[b,e]):a.replace(/^!/,\"\").length;c&&(e[a]=b.substr(0,g)),b=b.substr(g)}),[e.yyyy||e.yy,+(e.mm||e.m)-1,e.dd||e.d]):b},c.prototype.formats=function(){function a(a,b,c){var d=a.match(/[^\\x00-\\x7F]+|\\w+/)[0];return c.mm||c.m||(c.m=b.indexOf(d)+1),d.length}function b(a){return a.match(/\\w+/)[0].length}return{d:function(a,b){return a?f.digits(a):b.date},dd:function(a,b){return a?2:f.lead(b.date)},ddd:function(a,c){return a?b(a):this.settings.weekdaysShort[c.day]},dddd:function(a,c){return a?b(a):this.settings.weekdaysFull[c.day]},m:function(a,b){return a?f.digits(a):b.month+1},mm:function(a,b){return a?2:f.lead(b.month+1)},mmm:function(b,c){var d=this.settings.monthsShort;return b?a(b,d,c):d[c.month]},mmmm:function(b,c){var d=this.settings.monthsFull;return b?a(b,d,c):d[c.month]},yy:function(a,b){return a?2:(\"\"+b.year).slice(2)},yyyy:function(a,b){return a?4:b.year},toArray:function(a){return a.split(/(d{1,4}|m{1,4}|y{4}|yy|!.)/g)},toString:function(a,b){var c=this;return c.formats.toArray(a).map(function(a){return f.trigger(c.formats[a],c,[0,b])||a.replace(/^!/,\"\")}).join(\"\")}}}(),c.prototype.isDateExact=function(a,c){var d=this;return f.isInteger(a)&&f.isInteger(c)||\"boolean\"==typeof a&&\"boolean\"==typeof c?a===c:(f.isDate(a)||b.isArray(a))&&(f.isDate(c)||b.isArray(c))?d.create(a).pick===d.create(c).pick:b.isPlainObject(a)&&b.isPlainObject(c)?d.isDateExact(a.from,c.from)&&d.isDateExact(a.to,c.to):!1},c.prototype.isDateOverlap=function(a,c){var d=this,e=d.settings.firstDay?1:0;return f.isInteger(a)&&(f.isDate(c)||b.isArray(c))?(a=a%7+e,a===d.create(c).day+1):f.isInteger(c)&&(f.isDate(a)||b.isArray(a))?(c=c%7+e,c===d.create(a).day+1):b.isPlainObject(a)&&b.isPlainObject(c)?d.overlapRanges(a,c):!1},c.prototype.flipEnable=function(a){var b=this.item;b.enable=a||(-1==b.enable?1:-1)},c.prototype.deactivate=function(a,c){var d=this,e=d.item.disable.slice(0);return\"flip\"==c?d.flipEnable():c===!1?(d.flipEnable(1),e=[]):c===!0?(d.flipEnable(-1),e=[]):c.map(function(a){for(var c,g=0;g<e.length;g+=1)if(d.isDateExact(a,e[g])){c=!0;break}c||(f.isInteger(a)||f.isDate(a)||b.isArray(a)||b.isPlainObject(a)&&a.from&&a.to)&&e.push(a)}),e},c.prototype.activate=function(a,c){var d=this,e=d.item.disable,g=e.length;return\"flip\"==c?d.flipEnable():c===!0?(d.flipEnable(1),e=[]):c===!1?(d.flipEnable(-1),e=[]):c.map(function(a){var c,h,i,j;for(i=0;g>i;i+=1){if(h=e[i],d.isDateExact(h,a)){c=e[i]=null,j=!0;break}if(d.isDateOverlap(h,a)){b.isPlainObject(a)?(a.inverted=!0,c=a):b.isArray(a)?(c=a,c[3]||c.push(\"inverted\")):f.isDate(a)&&(c=[a.getFullYear(),a.getMonth(),a.getDate(),\"inverted\"]);break}}if(c)for(i=0;g>i;i+=1)if(d.isDateExact(e[i],a)){e[i]=null;break}if(j)for(i=0;g>i;i+=1)if(d.isDateOverlap(e[i],a)){e[i]=null;break}c&&e.push(c)}),e.filter(function(a){return null!=a})},c.prototype.nodes=function(a){var b=this,c=b.settings,g=b.item,h=g.now,i=g.select,j=g.highlight,k=g.view,l=g.disable,m=g.min,n=g.max,o=function(a,b){return c.firstDay&&(a.push(a.shift()),b.push(b.shift())),f.node(\"thead\",f.node(\"tr\",f.group({min:0,max:d-1,i:1,node:\"th\",item:function(d){return[a[d],c.klass.weekdays,'scope=col title=\"'+b[d]+'\"']}})))}((c.showWeekdaysFull?c.weekdaysFull:c.weekdaysShort).slice(0),c.weekdaysFull.slice(0)),p=function(a){return f.node(\"div\",\" \",c.klass[\"nav\"+(a?\"Next\":\"Prev\")]+(a&&k.year>=n.year&&k.month>=n.month||!a&&k.year<=m.year&&k.month<=m.month?\" \"+c.klass.navDisabled:\"\"),\"data-nav=\"+(a||-1)+\" \"+f.ariaAttr({role:\"button\",controls:b.$node[0].id+\"_table\"})+' title=\"'+(a?c.labelMonthNext:c.labelMonthPrev)+'\"')},q=function(){var d=c.showMonthsShort?c.monthsShort:c.monthsFull;return c.selectMonths?f.node(\"select\",f.group({min:0,max:11,i:1,node:\"option\",item:function(a){return[d[a],0,\"value=\"+a+(k.month==a?\" selected\":\"\")+(k.year==m.year&&a<m.month||k.year==n.year&&a>n.month?\" disabled\":\"\")]}}),c.klass.selectMonth,(a?\"\":\"disabled\")+\" \"+f.ariaAttr({controls:b.$node[0].id+\"_table\"})+' title=\"'+c.labelMonthSelect+'\"'):f.node(\"div\",d[k.month],c.klass.month)},r=function(){var d=k.year,e=c.selectYears===!0?5:~~(c.selectYears/2);if(e){var g=m.year,h=n.year,i=d-e,j=d+e;if(g>i&&(j+=g-i,i=g),j>h){var l=i-g,o=j-h;i-=l>o?o:l,j=h}return f.node(\"select\",f.group({min:i,max:j,i:1,node:\"option\",item:function(a){return[a,0,\"value=\"+a+(d==a?\" selected\":\"\")]}}),c.klass.selectYear,(a?\"\":\"disabled\")+\" \"+f.ariaAttr({controls:b.$node[0].id+\"_table\"})+' title=\"'+c.labelYearSelect+'\"')}return f.node(\"div\",d,c.klass.year)};return f.node(\"div\",(c.selectYears?r()+q():q()+r())+p()+p(1),c.klass.header)+f.node(\"table\",o+f.node(\"tbody\",f.group({min:0,max:e-1,i:1,node:\"tr\",item:function(a){var e=c.firstDay&&0===b.create([k.year,k.month,1]).day?-7:0;return[f.group({min:d*a-k.day+e+1,max:function(){return this.min+d-1},i:1,node:\"td\",item:function(a){a=b.create([k.year,k.month,a+(c.firstDay?1:0)]);var d=i&&i.pick==a.pick,e=j&&j.pick==a.pick,g=l&&b.disabled(a)||a.pick<m.pick||a.pick>n.pick,o=f.trigger(b.formats.toString,b,[c.format,a]);return[f.node(\"div\",a.date,function(b){return b.push(k.month==a.month?c.klass.infocus:c.klass.outfocus),h.pick==a.pick&&b.push(c.klass.now),d&&b.push(c.klass.selected),e&&b.push(c.klass.highlighted),g&&b.push(c.klass.disabled),b.join(\" \")}([c.klass.day]),\"data-pick=\"+a.pick+\" \"+f.ariaAttr({role:\"gridcell\",label:o,selected:d&&b.$node.val()===o?!0:null,activedescendant:e?!0:null,disabled:g?!0:null})),\"\",f.ariaAttr({role:\"presentation\"})]}})]}})),c.klass.table,'id=\"'+b.$node[0].id+'_table\" '+f.ariaAttr({role:\"grid\",controls:b.$node[0].id,readonly:!0}))+f.node(\"div\",f.node(\"button\",c.today,c.klass.buttonToday,\"type=button data-pick=\"+h.pick+(a&&!b.disabled(h)?\"\":\" disabled\")+\" \"+f.ariaAttr({controls:b.$node[0].id}))+f.node(\"button\",c.clear,c.klass.buttonClear,\"type=button data-clear=1\"+(a?\"\":\" disabled\")+\" \"+f.ariaAttr({controls:b.$node[0].id}))+f.node(\"button\",c.close,c.klass.buttonClose,\"type=button data-close=true \"+(a?\"\":\" disabled\")+\" \"+f.ariaAttr({controls:b.$node[0].id})),c.klass.footer)},c.defaults=function(a){return{labelMonthNext:\"Next month\",labelMonthPrev:\"Previous month\",labelMonthSelect:\"Select a month\",labelYearSelect:\"Select a year\",monthsFull:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],monthsShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],weekdaysFull:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],weekdaysShort:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],today:\"Today\",clear:\"Clear\",close:\"Close\",closeOnSelect:!0,closeOnClear:!0,format:\"d mmmm, yyyy\",klass:{table:a+\"table\",header:a+\"header\",navPrev:a+\"nav--prev\",navNext:a+\"nav--next\",navDisabled:a+\"nav--disabled\",month:a+\"month\",year:a+\"year\",selectMonth:a+\"select--month\",selectYear:a+\"select--year\",weekdays:a+\"weekday\",day:a+\"day\",disabled:a+\"day--disabled\",selected:a+\"day--selected\",highlighted:a+\"day--highlighted\",now:a+\"day--today\",infocus:a+\"day--infocus\",outfocus:a+\"day--outfocus\",footer:a+\"footer\",buttonClear:a+\"button--clear\",buttonToday:a+\"button--today\",buttonClose:a+\"button--close\"}}}(a.klasses().picker+\"__\"),a.extend(\"pickadate\",c)});\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/pickadate/lib/compressed/picker.date.js\n// module id = 1031\n// module chunks = 4 5","/*!\n * pickadate.js v3.5.6, 2015/04/20\n * By Amsul, http://amsul.ca\n * Hosted on http://amsul.github.io/pickadate.js\n * Licensed under MIT\n */\n!function(a){\"function\"==typeof define&&define.amd?define(\"picker\",[\"jquery\"],a):\"object\"==typeof exports?module.exports=a(require(\"jquery\")):this.Picker=a(jQuery)}(function(a){function b(f,g,i,m){function n(){return b._.node(\"div\",b._.node(\"div\",b._.node(\"div\",b._.node(\"div\",B.component.nodes(w.open),y.box),y.wrap),y.frame),y.holder,'tabindex=\"-1\"')}function o(){z.data(g,B).addClass(y.input).val(z.data(\"value\")?B.get(\"select\",x.format):f.value),x.editable||z.on(\"focus.\"+w.id+\" click.\"+w.id,function(a){a.preventDefault(),B.open()}).on(\"keydown.\"+w.id,u),e(f,{haspopup:!0,expanded:!1,readonly:!1,owns:f.id+\"_root\"})}function p(){e(B.$root[0],\"hidden\",!0)}function q(){B.$holder.on({keydown:u,\"focus.toOpen\":t,blur:function(){z.removeClass(y.target)},focusin:function(a){B.$root.removeClass(y.focused),a.stopPropagation()},\"mousedown click\":function(b){var c=b.target;c!=B.$holder[0]&&(b.stopPropagation(),\"mousedown\"!=b.type||a(c).is(\"input, select, textarea, button, option\")||(b.preventDefault(),B.$holder[0].focus()))}}).on(\"click\",\"[data-pick], [data-nav], [data-clear], [data-close]\",function(){var b=a(this),c=b.data(),d=b.hasClass(y.navDisabled)||b.hasClass(y.disabled),e=h();e=e&&(e.type||e.href),(d||e&&!a.contains(B.$root[0],e))&&B.$holder[0].focus(),!d&&c.nav?B.set(\"highlight\",B.component.item.highlight,{nav:c.nav}):!d&&\"pick\"in c?(B.set(\"select\",c.pick),x.closeOnSelect&&B.close(!0)):c.clear?(B.clear(),x.closeOnClear&&B.close(!0)):c.close&&B.close(!0)})}function r(){var b;x.hiddenName===!0?(b=f.name,f.name=\"\"):(b=[\"string\"==typeof x.hiddenPrefix?x.hiddenPrefix:\"\",\"string\"==typeof x.hiddenSuffix?x.hiddenSuffix:\"_submit\"],b=b[0]+f.name+b[1]),B._hidden=a('<input type=hidden name=\"'+b+'\"'+(z.data(\"value\")||f.value?' value=\"'+B.get(\"select\",x.formatSubmit)+'\"':\"\")+\">\")[0],z.on(\"change.\"+w.id,function(){B._hidden.value=f.value?B.get(\"select\",x.formatSubmit):\"\"})}function s(){v&&l?B.$holder.find(\".\"+y.frame).one(\"transitionend\",function(){B.$holder[0].focus()}):B.$holder[0].focus()}function t(a){a.stopPropagation(),z.addClass(y.target),B.$root.addClass(y.focused),B.open()}function u(a){var b=a.keyCode,c=/^(8|46)$/.test(b);return 27==b?(B.close(!0),!1):void((32==b||c||!w.open&&B.component.key[b])&&(a.preventDefault(),a.stopPropagation(),c?B.clear().close():B.open()))}if(!f)return b;var v=!1,w={id:f.id||\"P\"+Math.abs(~~(Math.random()*new Date))},x=i?a.extend(!0,{},i.defaults,m):m||{},y=a.extend({},b.klasses(),x.klass),z=a(f),A=function(){return this.start()},B=A.prototype={constructor:A,$node:z,start:function(){return w&&w.start?B:(w.methods={},w.start=!0,w.open=!1,w.type=f.type,f.autofocus=f==h(),f.readOnly=!x.editable,f.id=f.id||w.id,\"text\"!=f.type&&(f.type=\"text\"),B.component=new i(B,x),B.$root=a('<div class=\"'+y.picker+'\" id=\"'+f.id+'_root\" />'),p(),B.$holder=a(n()).appendTo(B.$root),q(),x.formatSubmit&&r(),o(),x.containerHidden?a(x.containerHidden).append(B._hidden):z.after(B._hidden),x.container?a(x.container).append(B.$root):z.after(B.$root),B.on({start:B.component.onStart,render:B.component.onRender,stop:B.component.onStop,open:B.component.onOpen,close:B.component.onClose,set:B.component.onSet}).on({start:x.onStart,render:x.onRender,stop:x.onStop,open:x.onOpen,close:x.onClose,set:x.onSet}),v=c(B.$holder[0]),f.autofocus&&B.open(),B.trigger(\"start\").trigger(\"render\"))},render:function(b){return b?(B.$holder=a(n()),q(),B.$root.html(B.$holder)):B.$root.find(\".\"+y.box).html(B.component.nodes(w.open)),B.trigger(\"render\")},stop:function(){return w.start?(B.close(),B._hidden&&B._hidden.parentNode.removeChild(B._hidden),B.$root.remove(),z.removeClass(y.input).removeData(g),setTimeout(function(){z.off(\".\"+w.id)},0),f.type=w.type,f.readOnly=!1,B.trigger(\"stop\"),w.methods={},w.start=!1,B):B},open:function(c){return w.open?B:(z.addClass(y.active),e(f,\"expanded\",!0),setTimeout(function(){B.$root.addClass(y.opened),e(B.$root[0],\"hidden\",!1)},0),c!==!1&&(w.open=!0,v&&k.css(\"overflow\",\"hidden\").css(\"padding-right\",\"+=\"+d()),s(),j.on(\"click.\"+w.id+\" focusin.\"+w.id,function(a){var b=a.target;b!=f&&b!=document&&3!=a.which&&B.close(b===B.$holder[0])}).on(\"keydown.\"+w.id,function(c){var d=c.keyCode,e=B.component.key[d],f=c.target;27==d?B.close(!0):f!=B.$holder[0]||!e&&13!=d?a.contains(B.$root[0],f)&&13==d&&(c.preventDefault(),f.click()):(c.preventDefault(),e?b._.trigger(B.component.key.go,B,[b._.trigger(e)]):B.$root.find(\".\"+y.highlighted).hasClass(y.disabled)||(B.set(\"select\",B.component.item.highlight),x.closeOnSelect&&B.close(!0)))})),B.trigger(\"open\"))},close:function(a){return a&&(x.editable?f.focus():(B.$holder.off(\"focus.toOpen\").focus(),setTimeout(function(){B.$holder.on(\"focus.toOpen\",t)},0))),z.removeClass(y.active),e(f,\"expanded\",!1),setTimeout(function(){B.$root.removeClass(y.opened+\" \"+y.focused),e(B.$root[0],\"hidden\",!0)},0),w.open?(w.open=!1,v&&k.css(\"overflow\",\"\").css(\"padding-right\",\"-=\"+d()),j.off(\".\"+w.id),B.trigger(\"close\")):B},clear:function(a){return B.set(\"clear\",null,a)},set:function(b,c,d){var e,f,g=a.isPlainObject(b),h=g?b:{};if(d=g&&a.isPlainObject(c)?c:d||{},b){g||(h[b]=c);for(e in h)f=h[e],e in B.component.item&&(void 0===f&&(f=null),B.component.set(e,f,d)),(\"select\"==e||\"clear\"==e)&&z.val(\"clear\"==e?\"\":B.get(e,x.format)).trigger(\"change\");B.render()}return d.muted?B:B.trigger(\"set\",h)},get:function(a,c){if(a=a||\"value\",null!=w[a])return w[a];if(\"valueSubmit\"==a){if(B._hidden)return B._hidden.value;a=\"value\"}if(\"value\"==a)return f.value;if(a in B.component.item){if(\"string\"==typeof c){var d=B.component.get(a);return d?b._.trigger(B.component.formats.toString,B.component,[c,d]):\"\"}return B.component.get(a)}},on:function(b,c,d){var e,f,g=a.isPlainObject(b),h=g?b:{};if(b){g||(h[b]=c);for(e in h)f=h[e],d&&(e=\"_\"+e),w.methods[e]=w.methods[e]||[],w.methods[e].push(f)}return B},off:function(){var a,b,c=arguments;for(a=0,namesCount=c.length;a<namesCount;a+=1)b=c[a],b in w.methods&&delete w.methods[b];return B},trigger:function(a,c){var d=function(a){var d=w.methods[a];d&&d.map(function(a){b._.trigger(a,B,[c])})};return d(\"_\"+a),d(a),B}};return new A}function c(a){var b,c=\"position\";return a.currentStyle?b=a.currentStyle[c]:window.getComputedStyle&&(b=getComputedStyle(a)[c]),\"fixed\"==b}function d(){if(k.height()<=i.height())return 0;var b=a('<div style=\"visibility:hidden;width:100px\" />').appendTo(\"body\"),c=b[0].offsetWidth;b.css(\"overflow\",\"scroll\");var d=a('<div style=\"width:100%\" />').appendTo(b),e=d[0].offsetWidth;return b.remove(),c-e}function e(b,c,d){if(a.isPlainObject(c))for(var e in c)f(b,e,c[e]);else f(b,c,d)}function f(a,b,c){a.setAttribute((\"role\"==b?\"\":\"aria-\")+b,c)}function g(b,c){a.isPlainObject(b)||(b={attribute:c}),c=\"\";for(var d in b){var e=(\"role\"==d?\"\":\"aria-\")+d,f=b[d];c+=null==f?\"\":e+'=\"'+b[d]+'\"'}return c}function h(){try{return document.activeElement}catch(a){}}var i=a(window),j=a(document),k=a(document.documentElement),l=null!=document.documentElement.style.transition;return b.klasses=function(a){return a=a||\"picker\",{picker:a,opened:a+\"--opened\",focused:a+\"--focused\",input:a+\"__input\",active:a+\"__input--active\",target:a+\"__input--target\",holder:a+\"__holder\",frame:a+\"__frame\",wrap:a+\"__wrap\",box:a+\"__box\"}},b._={group:function(a){for(var c,d=\"\",e=b._.trigger(a.min,a);e<=b._.trigger(a.max,a,[e]);e+=a.i)c=b._.trigger(a.item,a,[e]),d+=b._.node(a.node,c[0],c[1],c[2]);return d},node:function(b,c,d,e){return c?(c=a.isArray(c)?c.join(\"\"):c,d=d?' class=\"'+d+'\"':\"\",e=e?\" \"+e:\"\",\"<\"+b+d+e+\">\"+c+\"</\"+b+\">\"):\"\"},lead:function(a){return(10>a?\"0\":\"\")+a},trigger:function(a,b,c){return\"function\"==typeof a?a.apply(b,c||[]):a},digits:function(a){return/\\d/.test(a[1])?2:1},isDate:function(a){return{}.toString.call(a).indexOf(\"Date\")>-1&&this.isInteger(a.getDate())},isInteger:function(a){return{}.toString.call(a).indexOf(\"Number\")>-1&&a%1===0},ariaAttr:g},b.extend=function(c,d){a.fn[c]=function(e,f){var g=this.data(c);return\"picker\"==e?g:g&&\"string\"==typeof e?b._.trigger(g[e],g,[f]):this.each(function(){var f=a(this);f.data(c)||new b(this,c,d,e)})},a.fn[c].defaults=d.defaults},b});\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/pickadate/lib/compressed/picker.js\n// module id = 1032\n// module chunks = 4 5","/*! nouislider - 8.5.1 - 2016-04-24 16:00:29 */\r\n\r\n(function (factory) {\r\n\r\n if ( typeof define === 'function' && define.amd ) {\r\n\r\n // AMD. Register as an anonymous module.\r\n define([], factory);\r\n\r\n } else if ( typeof exports === 'object' ) {\r\n\r\n // Node/CommonJS\r\n module.exports = factory();\r\n\r\n } else {\r\n\r\n // Browser globals\r\n window.noUiSlider = factory();\r\n }\r\n\r\n}(function( ){\r\n\r\n\t'use strict';\r\n\r\n\r\n\t// Removes duplicates from an array.\r\n\tfunction unique(array) {\r\n\t\treturn array.filter(function(a){\r\n\t\t\treturn !this[a] ? this[a] = true : false;\r\n\t\t}, {});\r\n\t}\r\n\r\n\t// Round a value to the closest 'to'.\r\n\tfunction closest ( value, to ) {\r\n\t\treturn Math.round(value / to) * to;\r\n\t}\r\n\r\n\t// Current position of an element relative to the document.\r\n\tfunction offset ( elem ) {\r\n\r\n\tvar rect = elem.getBoundingClientRect(),\r\n\t\tdoc = elem.ownerDocument,\r\n\t\tdocElem = doc.documentElement,\r\n\t\tpageOffset = getPageOffset();\r\n\r\n\t\t// getBoundingClientRect contains left scroll in Chrome on Android.\r\n\t\t// I haven't found a feature detection that proves this. Worst case\r\n\t\t// scenario on mis-match: the 'tap' feature on horizontal sliders breaks.\r\n\t\tif ( /webkit.*Chrome.*Mobile/i.test(navigator.userAgent) ) {\r\n\t\t\tpageOffset.x = 0;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\ttop: rect.top + pageOffset.y - docElem.clientTop,\r\n\t\t\tleft: rect.left + pageOffset.x - docElem.clientLeft\r\n\t\t};\r\n\t}\r\n\r\n\t// Checks whether a value is numerical.\r\n\tfunction isNumeric ( a ) {\r\n\t\treturn typeof a === 'number' && !isNaN( a ) && isFinite( a );\r\n\t}\r\n\r\n\t// Sets a class and removes it after [duration] ms.\r\n\tfunction addClassFor ( element, className, duration ) {\r\n\t\taddClass(element, className);\r\n\t\tsetTimeout(function(){\r\n\t\t\tremoveClass(element, className);\r\n\t\t}, duration);\r\n\t}\r\n\r\n\t// Limits a value to 0 - 100\r\n\tfunction limit ( a ) {\r\n\t\treturn Math.max(Math.min(a, 100), 0);\r\n\t}\r\n\r\n\t// Wraps a variable as an array, if it isn't one yet.\r\n\tfunction asArray ( a ) {\r\n\t\treturn Array.isArray(a) ? a : [a];\r\n\t}\r\n\r\n\t// Counts decimals\r\n\tfunction countDecimals ( numStr ) {\r\n\t\tvar pieces = numStr.split(\".\");\r\n\t\treturn pieces.length > 1 ? pieces[1].length : 0;\r\n\t}\r\n\r\n\t// http://youmightnotneedjquery.com/#add_class\r\n\tfunction addClass ( el, className ) {\r\n\t\tif ( el.classList ) {\r\n\t\t\tel.classList.add(className);\r\n\t\t} else {\r\n\t\t\tel.className += ' ' + className;\r\n\t\t}\r\n\t}\r\n\r\n\t// http://youmightnotneedjquery.com/#remove_class\r\n\tfunction removeClass ( el, className ) {\r\n\t\tif ( el.classList ) {\r\n\t\t\tel.classList.remove(className);\r\n\t\t} else {\r\n\t\t\tel.className = el.className.replace(new RegExp('(^|\\\\b)' + className.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\r\n\t\t}\r\n\t}\r\n\r\n\t// https://plainjs.com/javascript/attributes/adding-removing-and-testing-for-classes-9/\r\n\tfunction hasClass ( el, className ) {\r\n\t\treturn el.classList ? el.classList.contains(className) : new RegExp('\\\\b' + className + '\\\\b').test(el.className);\r\n\t}\r\n\r\n\t// https://developer.mozilla.org/en-US/docs/Web/API/Window/scrollY#Notes\r\n\tfunction getPageOffset ( ) {\r\n\r\n\t\tvar supportPageOffset = window.pageXOffset !== undefined,\r\n\t\t\tisCSS1Compat = ((document.compatMode || \"\") === \"CSS1Compat\"),\r\n\t\t\tx = supportPageOffset ? window.pageXOffset : isCSS1Compat ? document.documentElement.scrollLeft : document.body.scrollLeft,\r\n\t\t\ty = supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop;\r\n\r\n\t\treturn {\r\n\t\t\tx: x,\r\n\t\t\ty: y\r\n\t\t};\r\n\t}\r\n\r\n\t// we provide a function to compute constants instead\r\n\t// of accessing window.* as soon as the module needs it\r\n\t// so that we do not compute anything if not needed\r\n\tfunction getActions ( ) {\r\n\r\n\t\t// Determine the events to bind. IE11 implements pointerEvents without\r\n\t\t// a prefix, which breaks compatibility with the IE10 implementation.\r\n\t\treturn window.navigator.pointerEnabled ? {\r\n\t\t\tstart: 'pointerdown',\r\n\t\t\tmove: 'pointermove',\r\n\t\t\tend: 'pointerup'\r\n\t\t} : window.navigator.msPointerEnabled ? {\r\n\t\t\tstart: 'MSPointerDown',\r\n\t\t\tmove: 'MSPointerMove',\r\n\t\t\tend: 'MSPointerUp'\r\n\t\t} : {\r\n\t\t\tstart: 'mousedown touchstart',\r\n\t\t\tmove: 'mousemove touchmove',\r\n\t\t\tend: 'mouseup touchend'\r\n\t\t};\r\n\t}\r\n\r\n\r\n// Value calculation\r\n\r\n\t// Determine the size of a sub-range in relation to a full range.\r\n\tfunction subRangeRatio ( pa, pb ) {\r\n\t\treturn (100 / (pb - pa));\r\n\t}\r\n\r\n\t// (percentage) How many percent is this value of this range?\r\n\tfunction fromPercentage ( range, value ) {\r\n\t\treturn (value * 100) / ( range[1] - range[0] );\r\n\t}\r\n\r\n\t// (percentage) Where is this value on this range?\r\n\tfunction toPercentage ( range, value ) {\r\n\t\treturn fromPercentage( range, range[0] < 0 ?\r\n\t\t\tvalue + Math.abs(range[0]) :\r\n\t\t\t\tvalue - range[0] );\r\n\t}\r\n\r\n\t// (value) How much is this percentage on this range?\r\n\tfunction isPercentage ( range, value ) {\r\n\t\treturn ((value * ( range[1] - range[0] )) / 100) + range[0];\r\n\t}\r\n\r\n\r\n// Range conversion\r\n\r\n\tfunction getJ ( value, arr ) {\r\n\r\n\t\tvar j = 1;\r\n\r\n\t\twhile ( value >= arr[j] ){\r\n\t\t\tj += 1;\r\n\t\t}\r\n\r\n\t\treturn j;\r\n\t}\r\n\r\n\t// (percentage) Input a value, find where, on a scale of 0-100, it applies.\r\n\tfunction toStepping ( xVal, xPct, value ) {\r\n\r\n\t\tif ( value >= xVal.slice(-1)[0] ){\r\n\t\t\treturn 100;\r\n\t\t}\r\n\r\n\t\tvar j = getJ( value, xVal ), va, vb, pa, pb;\r\n\r\n\t\tva = xVal[j-1];\r\n\t\tvb = xVal[j];\r\n\t\tpa = xPct[j-1];\r\n\t\tpb = xPct[j];\r\n\r\n\t\treturn pa + (toPercentage([va, vb], value) / subRangeRatio (pa, pb));\r\n\t}\r\n\r\n\t// (value) Input a percentage, find where it is on the specified range.\r\n\tfunction fromStepping ( xVal, xPct, value ) {\r\n\r\n\t\t// There is no range group that fits 100\r\n\t\tif ( value >= 100 ){\r\n\t\t\treturn xVal.slice(-1)[0];\r\n\t\t}\r\n\r\n\t\tvar j = getJ( value, xPct ), va, vb, pa, pb;\r\n\r\n\t\tva = xVal[j-1];\r\n\t\tvb = xVal[j];\r\n\t\tpa = xPct[j-1];\r\n\t\tpb = xPct[j];\r\n\r\n\t\treturn isPercentage([va, vb], (value - pa) * subRangeRatio (pa, pb));\r\n\t}\r\n\r\n\t// (percentage) Get the step that applies at a certain value.\r\n\tfunction getStep ( xPct, xSteps, snap, value ) {\r\n\r\n\t\tif ( value === 100 ) {\r\n\t\t\treturn value;\r\n\t\t}\r\n\r\n\t\tvar j = getJ( value, xPct ), a, b;\r\n\r\n\t\t// If 'snap' is set, steps are used as fixed points on the slider.\r\n\t\tif ( snap ) {\r\n\r\n\t\t\ta = xPct[j-1];\r\n\t\t\tb = xPct[j];\r\n\r\n\t\t\t// Find the closest position, a or b.\r\n\t\t\tif ((value - a) > ((b-a)/2)){\r\n\t\t\t\treturn b;\r\n\t\t\t}\r\n\r\n\t\t\treturn a;\r\n\t\t}\r\n\r\n\t\tif ( !xSteps[j-1] ){\r\n\t\t\treturn value;\r\n\t\t}\r\n\r\n\t\treturn xPct[j-1] + closest(\r\n\t\t\tvalue - xPct[j-1],\r\n\t\t\txSteps[j-1]\r\n\t\t);\r\n\t}\r\n\r\n\r\n// Entry parsing\r\n\r\n\tfunction handleEntryPoint ( index, value, that ) {\r\n\r\n\t\tvar percentage;\r\n\r\n\t\t// Wrap numerical input in an array.\r\n\t\tif ( typeof value === \"number\" ) {\r\n\t\t\tvalue = [value];\r\n\t\t}\r\n\r\n\t\t// Reject any invalid input, by testing whether value is an array.\r\n\t\tif ( Object.prototype.toString.call( value ) !== '[object Array]' ){\r\n\t\t\tthrow new Error(\"noUiSlider: 'range' contains invalid value.\");\r\n\t\t}\r\n\r\n\t\t// Covert min/max syntax to 0 and 100.\r\n\t\tif ( index === 'min' ) {\r\n\t\t\tpercentage = 0;\r\n\t\t} else if ( index === 'max' ) {\r\n\t\t\tpercentage = 100;\r\n\t\t} else {\r\n\t\t\tpercentage = parseFloat( index );\r\n\t\t}\r\n\r\n\t\t// Check for correct input.\r\n\t\tif ( !isNumeric( percentage ) || !isNumeric( value[0] ) ) {\r\n\t\t\tthrow new Error(\"noUiSlider: 'range' value isn't numeric.\");\r\n\t\t}\r\n\r\n\t\t// Store values.\r\n\t\tthat.xPct.push( percentage );\r\n\t\tthat.xVal.push( value[0] );\r\n\r\n\t\t// NaN will evaluate to false too, but to keep\r\n\t\t// logging clear, set step explicitly. Make sure\r\n\t\t// not to override the 'step' setting with false.\r\n\t\tif ( !percentage ) {\r\n\t\t\tif ( !isNaN( value[1] ) ) {\r\n\t\t\t\tthat.xSteps[0] = value[1];\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthat.xSteps.push( isNaN(value[1]) ? false : value[1] );\r\n\t\t}\r\n\t}\r\n\r\n\tfunction handleStepPoint ( i, n, that ) {\r\n\r\n\t\t// Ignore 'false' stepping.\r\n\t\tif ( !n ) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t// Factor to range ratio\r\n\t\tthat.xSteps[i] = fromPercentage([\r\n\t\t\t that.xVal[i]\r\n\t\t\t,that.xVal[i+1]\r\n\t\t], n) / subRangeRatio (\r\n\t\t\tthat.xPct[i],\r\n\t\t\tthat.xPct[i+1] );\r\n\t}\r\n\r\n\r\n// Interface\r\n\r\n\t// The interface to Spectrum handles all direction-based\r\n\t// conversions, so the above values are unaware.\r\n\r\n\tfunction Spectrum ( entry, snap, direction, singleStep ) {\r\n\r\n\t\tthis.xPct = [];\r\n\t\tthis.xVal = [];\r\n\t\tthis.xSteps = [ singleStep || false ];\r\n\t\tthis.xNumSteps = [ false ];\r\n\r\n\t\tthis.snap = snap;\r\n\t\tthis.direction = direction;\r\n\r\n\t\tvar index, ordered = [ /* [0, 'min'], [1, '50%'], [2, 'max'] */ ];\r\n\r\n\t\t// Map the object keys to an array.\r\n\t\tfor ( index in entry ) {\r\n\t\t\tif ( entry.hasOwnProperty(index) ) {\r\n\t\t\t\tordered.push([entry[index], index]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Sort all entries by value (numeric sort).\r\n\t\tif ( ordered.length && typeof ordered[0][0] === \"object\" ) {\r\n\t\t\tordered.sort(function(a, b) { return a[0][0] - b[0][0]; });\r\n\t\t} else {\r\n\t\t\tordered.sort(function(a, b) { return a[0] - b[0]; });\r\n\t\t}\r\n\r\n\r\n\t\t// Convert all entries to subranges.\r\n\t\tfor ( index = 0; index < ordered.length; index++ ) {\r\n\t\t\thandleEntryPoint(ordered[index][1], ordered[index][0], this);\r\n\t\t}\r\n\r\n\t\t// Store the actual step values.\r\n\t\t// xSteps is sorted in the same order as xPct and xVal.\r\n\t\tthis.xNumSteps = this.xSteps.slice(0);\r\n\r\n\t\t// Convert all numeric steps to the percentage of the subrange they represent.\r\n\t\tfor ( index = 0; index < this.xNumSteps.length; index++ ) {\r\n\t\t\thandleStepPoint(index, this.xNumSteps[index], this);\r\n\t\t}\r\n\t}\r\n\r\n\tSpectrum.prototype.getMargin = function ( value ) {\r\n\t\treturn this.xPct.length === 2 ? fromPercentage(this.xVal, value) : false;\r\n\t};\r\n\r\n\tSpectrum.prototype.toStepping = function ( value ) {\r\n\r\n\t\tvalue = toStepping( this.xVal, this.xPct, value );\r\n\r\n\t\t// Invert the value if this is a right-to-left slider.\r\n\t\tif ( this.direction ) {\r\n\t\t\tvalue = 100 - value;\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t};\r\n\r\n\tSpectrum.prototype.fromStepping = function ( value ) {\r\n\r\n\t\t// Invert the value if this is a right-to-left slider.\r\n\t\tif ( this.direction ) {\r\n\t\t\tvalue = 100 - value;\r\n\t\t}\r\n\r\n\t\treturn fromStepping( this.xVal, this.xPct, value );\r\n\t};\r\n\r\n\tSpectrum.prototype.getStep = function ( value ) {\r\n\r\n\t\t// Find the proper step for rtl sliders by search in inverse direction.\r\n\t\t// Fixes issue #262.\r\n\t\tif ( this.direction ) {\r\n\t\t\tvalue = 100 - value;\r\n\t\t}\r\n\r\n\t\tvalue = getStep(this.xPct, this.xSteps, this.snap, value );\r\n\r\n\t\tif ( this.direction ) {\r\n\t\t\tvalue = 100 - value;\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t};\r\n\r\n\tSpectrum.prototype.getApplicableStep = function ( value ) {\r\n\r\n\t\t// If the value is 100%, return the negative step twice.\r\n\t\tvar j = getJ(value, this.xPct), offset = value === 100 ? 2 : 1;\r\n\t\treturn [this.xNumSteps[j-2], this.xVal[j-offset], this.xNumSteps[j-offset]];\r\n\t};\r\n\r\n\t// Outside testing\r\n\tSpectrum.prototype.convert = function ( value ) {\r\n\t\treturn this.getStep(this.toStepping(value));\r\n\t};\r\n\r\n/*\tEvery input option is tested and parsed. This'll prevent\r\n\tendless validation in internal methods. These tests are\r\n\tstructured with an item for every option available. An\r\n\toption can be marked as required by setting the 'r' flag.\r\n\tThe testing function is provided with three arguments:\r\n\t\t- The provided value for the option;\r\n\t\t- A reference to the options object;\r\n\t\t- The name for the option;\r\n\r\n\tThe testing function returns false when an error is detected,\r\n\tor true when everything is OK. It can also modify the option\r\n\tobject, to make sure all values can be correctly looped elsewhere. */\r\n\r\n\tvar defaultFormatter = { 'to': function( value ){\r\n\t\treturn value !== undefined && value.toFixed(2);\r\n\t}, 'from': Number };\r\n\r\n\tfunction testStep ( parsed, entry ) {\r\n\r\n\t\tif ( !isNumeric( entry ) ) {\r\n\t\t\tthrow new Error(\"noUiSlider: 'step' is not numeric.\");\r\n\t\t}\r\n\r\n\t\t// The step option can still be used to set stepping\r\n\t\t// for linear sliders. Overwritten if set in 'range'.\r\n\t\tparsed.singleStep = entry;\r\n\t}\r\n\r\n\tfunction testRange ( parsed, entry ) {\r\n\r\n\t\t// Filter incorrect input.\r\n\t\tif ( typeof entry !== 'object' || Array.isArray(entry) ) {\r\n\t\t\tthrow new Error(\"noUiSlider: 'range' is not an object.\");\r\n\t\t}\r\n\r\n\t\t// Catch missing start or end.\r\n\t\tif ( entry.min === undefined || entry.max === undefined ) {\r\n\t\t\tthrow new Error(\"noUiSlider: Missing 'min' or 'max' in 'range'.\");\r\n\t\t}\r\n\r\n\t\t// Catch equal start or end.\r\n\t\tif ( entry.min === entry.max ) {\r\n\t\t\tthrow new Error(\"noUiSlider: 'range' 'min' and 'max' cannot be equal.\");\r\n\t\t}\r\n\r\n\t\tparsed.spectrum = new Spectrum(entry, parsed.snap, parsed.dir, parsed.singleStep);\r\n\t}\r\n\r\n\tfunction testStart ( parsed, entry ) {\r\n\r\n\t\tentry = asArray(entry);\r\n\r\n\t\t// Validate input. Values aren't tested, as the public .val method\r\n\t\t// will always provide a valid location.\r\n\t\tif ( !Array.isArray( entry ) || !entry.length || entry.length > 2 ) {\r\n\t\t\tthrow new Error(\"noUiSlider: 'start' option is incorrect.\");\r\n\t\t}\r\n\r\n\t\t// Store the number of handles.\r\n\t\tparsed.handles = entry.length;\r\n\r\n\t\t// When the slider is initialized, the .val method will\r\n\t\t// be called with the start options.\r\n\t\tparsed.start = entry;\r\n\t}\r\n\r\n\tfunction testSnap ( parsed, entry ) {\r\n\r\n\t\t// Enforce 100% stepping within subranges.\r\n\t\tparsed.snap = entry;\r\n\r\n\t\tif ( typeof entry !== 'boolean' ){\r\n\t\t\tthrow new Error(\"noUiSlider: 'snap' option must be a boolean.\");\r\n\t\t}\r\n\t}\r\n\r\n\tfunction testAnimate ( parsed, entry ) {\r\n\r\n\t\t// Enforce 100% stepping within subranges.\r\n\t\tparsed.animate = entry;\r\n\r\n\t\tif ( typeof entry !== 'boolean' ){\r\n\t\t\tthrow new Error(\"noUiSlider: 'animate' option must be a boolean.\");\r\n\t\t}\r\n\t}\r\n\r\n\tfunction testAnimationDuration ( parsed, entry ) {\r\n\r\n\t\tparsed.animationDuration = entry;\r\n\r\n\t\tif ( typeof entry !== 'number' ){\r\n\t\t\tthrow new Error(\"noUiSlider: 'animationDuration' option must be a number.\");\r\n\t\t}\r\n\t}\r\n\r\n\tfunction testConnect ( parsed, entry ) {\r\n\r\n\t\tif ( entry === 'lower' && parsed.handles === 1 ) {\r\n\t\t\tparsed.connect = 1;\r\n\t\t} else if ( entry === 'upper' && parsed.handles === 1 ) {\r\n\t\t\tparsed.connect = 2;\r\n\t\t} else if ( entry === true && parsed.handles === 2 ) {\r\n\t\t\tparsed.connect = 3;\r\n\t\t} else if ( entry === false ) {\r\n\t\t\tparsed.connect = 0;\r\n\t\t} else {\r\n\t\t\tthrow new Error(\"noUiSlider: 'connect' option doesn't match handle count.\");\r\n\t\t}\r\n\t}\r\n\r\n\tfunction testOrientation ( parsed, entry ) {\r\n\r\n\t\t// Set orientation to an a numerical value for easy\r\n\t\t// array selection.\r\n\t\tswitch ( entry ){\r\n\t\t case 'horizontal':\r\n\t\t\tparsed.ort = 0;\r\n\t\t\tbreak;\r\n\t\t case 'vertical':\r\n\t\t\tparsed.ort = 1;\r\n\t\t\tbreak;\r\n\t\t default:\r\n\t\t\tthrow new Error(\"noUiSlider: 'orientation' option is invalid.\");\r\n\t\t}\r\n\t}\r\n\r\n\tfunction testMargin ( parsed, entry ) {\r\n\r\n\t\tif ( !isNumeric(entry) ){\r\n\t\t\tthrow new Error(\"noUiSlider: 'margin' option must be numeric.\");\r\n\t\t}\r\n\r\n\t\t// Issue #582\r\n\t\tif ( entry === 0 ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tparsed.margin = parsed.spectrum.getMargin(entry);\r\n\r\n\t\tif ( !parsed.margin ) {\r\n\t\t\tthrow new Error(\"noUiSlider: 'margin' option is only supported on linear sliders.\");\r\n\t\t}\r\n\t}\r\n\r\n\tfunction testLimit ( parsed, entry ) {\r\n\r\n\t\tif ( !isNumeric(entry) ){\r\n\t\t\tthrow new Error(\"noUiSlider: 'limit' option must be numeric.\");\r\n\t\t}\r\n\r\n\t\tparsed.limit = parsed.spectrum.getMargin(entry);\r\n\r\n\t\tif ( !parsed.limit ) {\r\n\t\t\tthrow new Error(\"noUiSlider: 'limit' option is only supported on linear sliders.\");\r\n\t\t}\r\n\t}\r\n\r\n\tfunction testDirection ( parsed, entry ) {\r\n\r\n\t\t// Set direction as a numerical value for easy parsing.\r\n\t\t// Invert connection for RTL sliders, so that the proper\r\n\t\t// handles get the connect/background classes.\r\n\t\tswitch ( entry ) {\r\n\t\t case 'ltr':\r\n\t\t\tparsed.dir = 0;\r\n\t\t\tbreak;\r\n\t\t case 'rtl':\r\n\t\t\tparsed.dir = 1;\r\n\t\t\tparsed.connect = [0,2,1,3][parsed.connect];\r\n\t\t\tbreak;\r\n\t\t default:\r\n\t\t\tthrow new Error(\"noUiSlider: 'direction' option was not recognized.\");\r\n\t\t}\r\n\t}\r\n\r\n\tfunction testBehaviour ( parsed, entry ) {\r\n\r\n\t\t// Make sure the input is a string.\r\n\t\tif ( typeof entry !== 'string' ) {\r\n\t\t\tthrow new Error(\"noUiSlider: 'behaviour' must be a string containing options.\");\r\n\t\t}\r\n\r\n\t\t// Check if the string contains any keywords.\r\n\t\t// None are required.\r\n\t\tvar tap = entry.indexOf('tap') >= 0,\r\n\t\t\tdrag = entry.indexOf('drag') >= 0,\r\n\t\t\tfixed = entry.indexOf('fixed') >= 0,\r\n\t\t\tsnap = entry.indexOf('snap') >= 0,\r\n\t\t\thover = entry.indexOf('hover') >= 0;\r\n\r\n\t\t// Fix #472\r\n\t\tif ( drag && !parsed.connect ) {\r\n\t\t\tthrow new Error(\"noUiSlider: 'drag' behaviour must be used with 'connect': true.\");\r\n\t\t}\r\n\r\n\t\tparsed.events = {\r\n\t\t\ttap: tap || snap,\r\n\t\t\tdrag: drag,\r\n\t\t\tfixed: fixed,\r\n\t\t\tsnap: snap,\r\n\t\t\thover: hover\r\n\t\t};\r\n\t}\r\n\r\n\tfunction testTooltips ( parsed, entry ) {\r\n\r\n\t\tvar i;\r\n\r\n\t\tif ( entry === false ) {\r\n\t\t\treturn;\r\n\t\t} else if ( entry === true ) {\r\n\r\n\t\t\tparsed.tooltips = [];\r\n\r\n\t\t\tfor ( i = 0; i < parsed.handles; i++ ) {\r\n\t\t\t\tparsed.tooltips.push(true);\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\r\n\t\t\tparsed.tooltips = asArray(entry);\r\n\r\n\t\t\tif ( parsed.tooltips.length !== parsed.handles ) {\r\n\t\t\t\tthrow new Error(\"noUiSlider: must pass a formatter for all handles.\");\r\n\t\t\t}\r\n\r\n\t\t\tparsed.tooltips.forEach(function(formatter){\r\n\t\t\t\tif ( typeof formatter !== 'boolean' && (typeof formatter !== 'object' || typeof formatter.to !== 'function') ) {\r\n\t\t\t\t\tthrow new Error(\"noUiSlider: 'tooltips' must be passed a formatter or 'false'.\");\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tfunction testFormat ( parsed, entry ) {\r\n\r\n\t\tparsed.format = entry;\r\n\r\n\t\t// Any object with a to and from method is supported.\r\n\t\tif ( typeof entry.to === 'function' && typeof entry.from === 'function' ) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tthrow new Error(\"noUiSlider: 'format' requires 'to' and 'from' methods.\");\r\n\t}\r\n\r\n\tfunction testCssPrefix ( parsed, entry ) {\r\n\r\n\t\tif ( entry !== undefined && typeof entry !== 'string' && entry !== false ) {\r\n\t\t\tthrow new Error(\"noUiSlider: 'cssPrefix' must be a string or `false`.\");\r\n\t\t}\r\n\r\n\t\tparsed.cssPrefix = entry;\r\n\t}\r\n\r\n\tfunction testCssClasses ( parsed, entry ) {\r\n\r\n\t\tif ( entry !== undefined && typeof entry !== 'object' ) {\r\n\t\t\tthrow new Error(\"noUiSlider: 'cssClasses' must be an object.\");\r\n\t\t}\r\n\r\n\t\tif ( typeof parsed.cssPrefix === 'string' ) {\r\n\t\t\tparsed.cssClasses = {};\r\n\r\n\t\t\tfor ( var key in entry ) {\r\n\t\t\t\tif ( !entry.hasOwnProperty(key) ) { continue; }\r\n\r\n\t\t\t\tparsed.cssClasses[key] = parsed.cssPrefix + entry[key];\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tparsed.cssClasses = entry;\r\n\t\t}\r\n\t}\r\n\r\n\t// Test all developer settings and parse to assumption-safe values.\r\n\tfunction testOptions ( options ) {\r\n\r\n\t\t// To prove a fix for #537, freeze options here.\r\n\t\t// If the object is modified, an error will be thrown.\r\n\t\t// Object.freeze(options);\r\n\r\n\t\tvar parsed = {\r\n\t\t\tmargin: 0,\r\n\t\t\tlimit: 0,\r\n\t\t\tanimate: true,\r\n\t\t\tanimationDuration: 300,\r\n\t\t\tformat: defaultFormatter\r\n\t\t}, tests;\r\n\r\n\t\t// Tests are executed in the order they are presented here.\r\n\t\ttests = {\r\n\t\t\t'step': { r: false, t: testStep },\r\n\t\t\t'start': { r: true, t: testStart },\r\n\t\t\t'connect': { r: true, t: testConnect },\r\n\t\t\t'direction': { r: true, t: testDirection },\r\n\t\t\t'snap': { r: false, t: testSnap },\r\n\t\t\t'animate': { r: false, t: testAnimate },\r\n\t\t\t'animationDuration': { r: false, t: testAnimationDuration },\r\n\t\t\t'range': { r: true, t: testRange },\r\n\t\t\t'orientation': { r: false, t: testOrientation },\r\n\t\t\t'margin': { r: false, t: testMargin },\r\n\t\t\t'limit': { r: false, t: testLimit },\r\n\t\t\t'behaviour': { r: true, t: testBehaviour },\r\n\t\t\t'format': { r: false, t: testFormat },\r\n\t\t\t'tooltips': { r: false, t: testTooltips },\r\n\t\t\t'cssPrefix': { r: false, t: testCssPrefix },\r\n\t\t\t'cssClasses': { r: false, t: testCssClasses }\r\n\t\t};\r\n\r\n\t\tvar defaults = {\r\n\t\t\t'connect': false,\r\n\t\t\t'direction': 'ltr',\r\n\t\t\t'behaviour': 'tap',\r\n\t\t\t'orientation': 'horizontal',\r\n\t\t\t'cssPrefix' : 'noUi-',\r\n\t\t\t'cssClasses': {\r\n\t\t\t\ttarget: 'target',\r\n\t\t\t\tbase: 'base',\r\n\t\t\t\torigin: 'origin',\r\n\t\t\t\thandle: 'handle',\r\n\t\t\t\thandleLower: 'handle-lower',\r\n\t\t\t\thandleUpper: 'handle-upper',\r\n\t\t\t\thorizontal: 'horizontal',\r\n\t\t\t\tvertical: 'vertical',\r\n\t\t\t\tbackground: 'background',\r\n\t\t\t\tconnect: 'connect',\r\n\t\t\t\tltr: 'ltr',\r\n\t\t\t\trtl: 'rtl',\r\n\t\t\t\tdraggable: 'draggable',\r\n\t\t\t\tdrag: 'state-drag',\r\n\t\t\t\ttap: 'state-tap',\r\n\t\t\t\tactive: 'active',\r\n\t\t\t\tstacking: 'stacking',\r\n\t\t\t\ttooltip: 'tooltip',\r\n\t\t\t\tpips: 'pips',\r\n\t\t\t\tpipsHorizontal: 'pips-horizontal',\r\n\t\t\t\tpipsVertical: 'pips-vertical',\r\n\t\t\t\tmarker: 'marker',\r\n\t\t\t\tmarkerHorizontal: 'marker-horizontal',\r\n\t\t\t\tmarkerVertical: 'marker-vertical',\r\n\t\t\t\tmarkerNormal: 'marker-normal',\r\n\t\t\t\tmarkerLarge: 'marker-large',\r\n\t\t\t\tmarkerSub: 'marker-sub',\r\n\t\t\t\tvalue: 'value',\r\n\t\t\t\tvalueHorizontal: 'value-horizontal',\r\n\t\t\t\tvalueVertical: 'value-vertical',\r\n\t\t\t\tvalueNormal: 'value-normal',\r\n\t\t\t\tvalueLarge: 'value-large',\r\n\t\t\t\tvalueSub: 'value-sub'\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Run all options through a testing mechanism to ensure correct\r\n\t\t// input. It should be noted that options might get modified to\r\n\t\t// be handled properly. E.g. wrapping integers in arrays.\r\n\t\tObject.keys(tests).forEach(function( name ){\r\n\r\n\t\t\t// If the option isn't set, but it is required, throw an error.\r\n\t\t\tif ( options[name] === undefined && defaults[name] === undefined ) {\r\n\r\n\t\t\t\tif ( tests[name].r ) {\r\n\t\t\t\t\tthrow new Error(\"noUiSlider: '\" + name + \"' is required.\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\ttests[name].t( parsed, options[name] === undefined ? defaults[name] : options[name] );\r\n\t\t});\r\n\r\n\t\t// Forward pips options\r\n\t\tparsed.pips = options.pips;\r\n\r\n\t\t// Pre-define the styles.\r\n\t\tparsed.style = parsed.ort ? 'top' : 'left';\r\n\r\n\t\treturn parsed;\r\n\t}\r\n\r\n\r\nfunction closure ( target, options, originalOptions ){\r\n\tvar\r\n\t\tactions = getActions( ),\r\n\t\t// All variables local to 'closure' are prefixed with 'scope_'\r\n\t\tscope_Target = target,\r\n\t\tscope_Locations = [-1, -1],\r\n\t\tscope_Base,\r\n\t\tscope_Handles,\r\n\t\tscope_Spectrum = options.spectrum,\r\n\t\tscope_Values = [],\r\n\t\tscope_Events = {},\r\n\t\tscope_Self;\r\n\r\n\r\n\t// Delimit proposed values for handle positions.\r\n\tfunction getPositions ( a, b, delimit ) {\r\n\r\n\t\t// Add movement to current position.\r\n\t\tvar c = a + b[0], d = a + b[1];\r\n\r\n\t\t// Only alter the other position on drag,\r\n\t\t// not on standard sliding.\r\n\t\tif ( delimit ) {\r\n\t\t\tif ( c < 0 ) {\r\n\t\t\t\td += Math.abs(c);\r\n\t\t\t}\r\n\t\t\tif ( d > 100 ) {\r\n\t\t\t\tc -= ( d - 100 );\r\n\t\t\t}\r\n\r\n\t\t\t// Limit values to 0 and 100.\r\n\t\t\treturn [limit(c), limit(d)];\r\n\t\t}\r\n\r\n\t\treturn [c,d];\r\n\t}\r\n\r\n\t// Provide a clean event with standardized offset values.\r\n\tfunction fixEvent ( e, pageOffset ) {\r\n\r\n\t\t// Prevent scrolling and panning on touch events, while\r\n\t\t// attempting to slide. The tap event also depends on this.\r\n\t\te.preventDefault();\r\n\r\n\t\t// Filter the event to register the type, which can be\r\n\t\t// touch, mouse or pointer. Offset changes need to be\r\n\t\t// made on an event specific basis.\r\n\t\tvar touch = e.type.indexOf('touch') === 0,\r\n\t\t\tmouse = e.type.indexOf('mouse') === 0,\r\n\t\t\tpointer = e.type.indexOf('pointer') === 0,\r\n\t\t\tx,y, event = e;\r\n\r\n\t\t// IE10 implemented pointer events with a prefix;\r\n\t\tif ( e.type.indexOf('MSPointer') === 0 ) {\r\n\t\t\tpointer = true;\r\n\t\t}\r\n\r\n\t\tif ( touch ) {\r\n\t\t\t// noUiSlider supports one movement at a time,\r\n\t\t\t// so we can select the first 'changedTouch'.\r\n\t\t\tx = e.changedTouches[0].pageX;\r\n\t\t\ty = e.changedTouches[0].pageY;\r\n\t\t}\r\n\r\n\t\tpageOffset = pageOffset || getPageOffset();\r\n\r\n\t\tif ( mouse || pointer ) {\r\n\t\t\tx = e.clientX + pageOffset.x;\r\n\t\t\ty = e.clientY + pageOffset.y;\r\n\t\t}\r\n\r\n\t\tevent.pageOffset = pageOffset;\r\n\t\tevent.points = [x, y];\r\n\t\tevent.cursor = mouse || pointer; // Fix #435\r\n\r\n\t\treturn event;\r\n\t}\r\n\r\n\t// Append a handle to the base.\r\n\tfunction addHandle ( direction, index ) {\r\n\r\n\t\tvar origin = document.createElement('div'),\r\n\t\t\thandle = document.createElement('div'),\r\n\t\t\tclassModifier = [options.cssClasses.handleLower, options.cssClasses.handleUpper];\r\n\r\n\t\tif ( direction ) {\r\n\t\t\tclassModifier.reverse();\r\n\t\t}\r\n\r\n\t\taddClass(handle, options.cssClasses.handle);\r\n\t\taddClass(handle, classModifier[index]);\r\n\r\n\t\taddClass(origin, options.cssClasses.origin);\r\n\t\torigin.appendChild(handle);\r\n\r\n\t\treturn origin;\r\n\t}\r\n\r\n\t// Add the proper connection classes.\r\n\tfunction addConnection ( connect, target, handles ) {\r\n\r\n\t\t// Apply the required connection classes to the elements\r\n\t\t// that need them. Some classes are made up for several\r\n\t\t// segments listed in the class list, to allow easy\r\n\t\t// renaming and provide a minor compression benefit.\r\n\t\tswitch ( connect ) {\r\n\t\t\tcase 1:\taddClass(target, options.cssClasses.connect);\r\n\t\t\t\t\taddClass(handles[0], options.cssClasses.background);\r\n\t\t\t\t\tbreak;\r\n\t\t\tcase 3: addClass(handles[1], options.cssClasses.background);\r\n\t\t\t\t\t/* falls through */\r\n\t\t\tcase 2: addClass(handles[0], options.cssClasses.connect);\r\n\t\t\t\t\t/* falls through */\r\n\t\t\tcase 0: addClass(target, options.cssClasses.background);\r\n\t\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t// Add handles to the slider base.\r\n\tfunction addHandles ( nrHandles, direction, base ) {\r\n\r\n\t\tvar index, handles = [];\r\n\r\n\t\t// Append handles.\r\n\t\tfor ( index = 0; index < nrHandles; index += 1 ) {\r\n\r\n\t\t\t// Keep a list of all added handles.\r\n\t\t\thandles.push( base.appendChild(addHandle( direction, index )) );\r\n\t\t}\r\n\r\n\t\treturn handles;\r\n\t}\r\n\r\n\t// Initialize a single slider.\r\n\tfunction addSlider ( direction, orientation, target ) {\r\n\r\n\t\t// Apply classes and data to the target.\r\n\t\taddClass(target, options.cssClasses.target);\r\n\r\n\t\tif ( direction === 0 ) {\r\n\t\t\taddClass(target, options.cssClasses.ltr);\r\n\t\t} else {\r\n\t\t\taddClass(target, options.cssClasses.rtl);\r\n\t\t}\r\n\r\n\t\tif ( orientation === 0 ) {\r\n\t\t\taddClass(target, options.cssClasses.horizontal);\r\n\t\t} else {\r\n\t\t\taddClass(target, options.cssClasses.vertical);\r\n\t\t}\r\n\r\n\t\tvar div = document.createElement('div');\r\n\t\taddClass(div, options.cssClasses.base);\r\n\t\ttarget.appendChild(div);\r\n\t\treturn div;\r\n\t}\r\n\r\n\r\n\tfunction addTooltip ( handle, index ) {\r\n\r\n\t\tif ( !options.tooltips[index] ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tvar element = document.createElement('div');\r\n\t\telement.className = options.cssClasses.tooltip;\r\n\t\treturn handle.firstChild.appendChild(element);\r\n\t}\r\n\r\n\t// The tooltips option is a shorthand for using the 'update' event.\r\n\tfunction tooltips ( ) {\r\n\r\n\t\tif ( options.dir ) {\r\n\t\t\toptions.tooltips.reverse();\r\n\t\t}\r\n\r\n\t\t// Tooltips are added with options.tooltips in original order.\r\n\t\tvar tips = scope_Handles.map(addTooltip);\r\n\r\n\t\tif ( options.dir ) {\r\n\t\t\ttips.reverse();\r\n\t\t\toptions.tooltips.reverse();\r\n\t\t}\r\n\r\n\t\tbindEvent('update', function(f, o, r) {\r\n\t\t\tif ( tips[o] ) {\r\n\t\t\t\ttips[o].innerHTML = options.tooltips[o] === true ? f[o] : options.tooltips[o].to(r[o]);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tfunction getGroup ( mode, values, stepped ) {\r\n\r\n\t\t// Use the range.\r\n\t\tif ( mode === 'range' || mode === 'steps' ) {\r\n\t\t\treturn scope_Spectrum.xVal;\r\n\t\t}\r\n\r\n\t\tif ( mode === 'count' ) {\r\n\r\n\t\t\t// Divide 0 - 100 in 'count' parts.\r\n\t\t\tvar spread = ( 100 / (values-1) ), v, i = 0;\r\n\t\t\tvalues = [];\r\n\r\n\t\t\t// List these parts and have them handled as 'positions'.\r\n\t\t\twhile ((v=i++*spread) <= 100 ) {\r\n\t\t\t\tvalues.push(v);\r\n\t\t\t}\r\n\r\n\t\t\tmode = 'positions';\r\n\t\t}\r\n\r\n\t\tif ( mode === 'positions' ) {\r\n\r\n\t\t\t// Map all percentages to on-range values.\r\n\t\t\treturn values.map(function( value ){\r\n\t\t\t\treturn scope_Spectrum.fromStepping( stepped ? scope_Spectrum.getStep( value ) : value );\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif ( mode === 'values' ) {\r\n\r\n\t\t\t// If the value must be stepped, it needs to be converted to a percentage first.\r\n\t\t\tif ( stepped ) {\r\n\r\n\t\t\t\treturn values.map(function( value ){\r\n\r\n\t\t\t\t\t// Convert to percentage, apply step, return to value.\r\n\t\t\t\t\treturn scope_Spectrum.fromStepping( scope_Spectrum.getStep( scope_Spectrum.toStepping( value ) ) );\r\n\t\t\t\t});\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// Otherwise, we can simply use the values.\r\n\t\t\treturn values;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction generateSpread ( density, mode, group ) {\r\n\r\n\t\tfunction safeIncrement(value, increment) {\r\n\t\t\t// Avoid floating point variance by dropping the smallest decimal places.\r\n\t\t\treturn (value + increment).toFixed(7) / 1;\r\n\t\t}\r\n\r\n\t\tvar originalSpectrumDirection = scope_Spectrum.direction,\r\n\t\t\tindexes = {},\r\n\t\t\tfirstInRange = scope_Spectrum.xVal[0],\r\n\t\t\tlastInRange = scope_Spectrum.xVal[scope_Spectrum.xVal.length-1],\r\n\t\t\tignoreFirst = false,\r\n\t\t\tignoreLast = false,\r\n\t\t\tprevPct = 0;\r\n\r\n\t\t// This function loops the spectrum in an ltr linear fashion,\r\n\t\t// while the toStepping method is direction aware. Trick it into\r\n\t\t// believing it is ltr.\r\n\t\tscope_Spectrum.direction = 0;\r\n\r\n\t\t// Create a copy of the group, sort it and filter away all duplicates.\r\n\t\tgroup = unique(group.slice().sort(function(a, b){ return a - b; }));\r\n\r\n\t\t// Make sure the range starts with the first element.\r\n\t\tif ( group[0] !== firstInRange ) {\r\n\t\t\tgroup.unshift(firstInRange);\r\n\t\t\tignoreFirst = true;\r\n\t\t}\r\n\r\n\t\t// Likewise for the last one.\r\n\t\tif ( group[group.length - 1] !== lastInRange ) {\r\n\t\t\tgroup.push(lastInRange);\r\n\t\t\tignoreLast = true;\r\n\t\t}\r\n\r\n\t\tgroup.forEach(function ( current, index ) {\r\n\r\n\t\t\t// Get the current step and the lower + upper positions.\r\n\t\t\tvar step, i, q,\r\n\t\t\t\tlow = current,\r\n\t\t\t\thigh = group[index+1],\r\n\t\t\t\tnewPct, pctDifference, pctPos, type,\r\n\t\t\t\tsteps, realSteps, stepsize;\r\n\r\n\t\t\t// When using 'steps' mode, use the provided steps.\r\n\t\t\t// Otherwise, we'll step on to the next subrange.\r\n\t\t\tif ( mode === 'steps' ) {\r\n\t\t\t\tstep = scope_Spectrum.xNumSteps[ index ];\r\n\t\t\t}\r\n\r\n\t\t\t// Default to a 'full' step.\r\n\t\t\tif ( !step ) {\r\n\t\t\t\tstep = high-low;\r\n\t\t\t}\r\n\r\n\t\t\t// Low can be 0, so test for false. If high is undefined,\r\n\t\t\t// we are at the last subrange. Index 0 is already handled.\r\n\t\t\tif ( low === false || high === undefined ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// Find all steps in the subrange.\r\n\t\t\tfor ( i = low; i <= high; i = safeIncrement(i, step) ) {\r\n\r\n\t\t\t\t// Get the percentage value for the current step,\r\n\t\t\t\t// calculate the size for the subrange.\r\n\t\t\t\tnewPct = scope_Spectrum.toStepping( i );\r\n\t\t\t\tpctDifference = newPct - prevPct;\r\n\r\n\t\t\t\tsteps = pctDifference / density;\r\n\t\t\t\trealSteps = Math.round(steps);\r\n\r\n\t\t\t\t// This ratio represents the ammount of percentage-space a point indicates.\r\n\t\t\t\t// For a density 1 the points/percentage = 1. For density 2, that percentage needs to be re-devided.\r\n\t\t\t\t// Round the percentage offset to an even number, then divide by two\r\n\t\t\t\t// to spread the offset on both sides of the range.\r\n\t\t\t\tstepsize = pctDifference/realSteps;\r\n\r\n\t\t\t\t// Divide all points evenly, adding the correct number to this subrange.\r\n\t\t\t\t// Run up to <= so that 100% gets a point, event if ignoreLast is set.\r\n\t\t\t\tfor ( q = 1; q <= realSteps; q += 1 ) {\r\n\r\n\t\t\t\t\t// The ratio between the rounded value and the actual size might be ~1% off.\r\n\t\t\t\t\t// Correct the percentage offset by the number of points\r\n\t\t\t\t\t// per subrange. density = 1 will result in 100 points on the\r\n\t\t\t\t\t// full range, 2 for 50, 4 for 25, etc.\r\n\t\t\t\t\tpctPos = prevPct + ( q * stepsize );\r\n\t\t\t\t\tindexes[pctPos.toFixed(5)] = ['x', 0];\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Determine the point type.\r\n\t\t\t\ttype = (group.indexOf(i) > -1) ? 1 : ( mode === 'steps' ? 2 : 0 );\r\n\r\n\t\t\t\t// Enforce the 'ignoreFirst' option by overwriting the type for 0.\r\n\t\t\t\tif ( !index && ignoreFirst ) {\r\n\t\t\t\t\ttype = 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( !(i === high && ignoreLast)) {\r\n\t\t\t\t\t// Mark the 'type' of this point. 0 = plain, 1 = real value, 2 = step value.\r\n\t\t\t\t\tindexes[newPct.toFixed(5)] = [i, type];\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Update the percentage count.\r\n\t\t\t\tprevPct = newPct;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// Reset the spectrum.\r\n\t\tscope_Spectrum.direction = originalSpectrumDirection;\r\n\r\n\t\treturn indexes;\r\n\t}\r\n\r\n\tfunction addMarking ( spread, filterFunc, formatter ) {\r\n\r\n\t\tvar element = document.createElement('div'),\r\n\t\t\tout = '',\r\n\t\t\tvalueSizeClasses = [\r\n\t\t\t\toptions.cssClasses.valueNormal,\r\n\t\t\t\toptions.cssClasses.valueLarge,\r\n\t\t\t\toptions.cssClasses.valueSub\r\n\t\t\t],\r\n\t\t\tmarkerSizeClasses = [\r\n\t\t\t\toptions.cssClasses.markerNormal,\r\n\t\t\t\toptions.cssClasses.markerLarge,\r\n\t\t\t\toptions.cssClasses.markerSub\r\n\t\t\t],\r\n\t\t\tvalueOrientationClasses = [\r\n\t\t\t\toptions.cssClasses.valueHorizontal,\r\n\t\t\t\toptions.cssClasses.valueVertical\r\n\t\t\t],\r\n\t\t\tmarkerOrientationClasses = [\r\n\t\t\t\toptions.cssClasses.markerHorizontal,\r\n\t\t\t\toptions.cssClasses.markerVertical\r\n\t\t\t];\r\n\r\n\t\taddClass(element, options.cssClasses.pips);\r\n\t\taddClass(element, options.ort === 0 ? options.cssClasses.pipsHorizontal : options.cssClasses.pipsVertical);\r\n\r\n\t\tfunction getClasses( type, source ){\r\n\t\t\tvar a = source === options.cssClasses.value,\r\n\t\t\t\torientationClasses = a ? valueOrientationClasses : markerOrientationClasses,\r\n\t\t\t\tsizeClasses = a ? valueSizeClasses : markerSizeClasses;\r\n\r\n\t\t\treturn source + ' ' + orientationClasses[options.ort] + ' ' + sizeClasses[type];\r\n\t\t}\r\n\r\n\t\tfunction getTags( offset, source, values ) {\r\n\t\t\treturn 'class=\"' + getClasses(values[1], source) + '\" style=\"' + options.style + ': ' + offset + '%\"';\r\n\t\t}\r\n\r\n\t\tfunction addSpread ( offset, values ){\r\n\r\n\t\t\tif ( scope_Spectrum.direction ) {\r\n\t\t\t\toffset = 100 - offset;\r\n\t\t\t}\r\n\r\n\t\t\t// Apply the filter function, if it is set.\r\n\t\t\tvalues[1] = (values[1] && filterFunc) ? filterFunc(values[0], values[1]) : values[1];\r\n\r\n\t\t\t// Add a marker for every point\r\n\t\t\tout += '<div ' + getTags(offset, options.cssClasses.marker, values) + '></div>';\r\n\r\n\t\t\t// Values are only appended for points marked '1' or '2'.\r\n\t\t\tif ( values[1] ) {\r\n\t\t\t\tout += '<div ' + getTags(offset, options.cssClasses.value, values) + '>' + formatter.to(values[0]) + '</div>';\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Append all points.\r\n\t\tObject.keys(spread).forEach(function(a){\r\n\t\t\taddSpread(a, spread[a]);\r\n\t\t});\r\n\r\n\t\telement.innerHTML = out;\r\n\r\n\t\treturn element;\r\n\t}\r\n\r\n\tfunction pips ( grid ) {\r\n\r\n\tvar mode = grid.mode,\r\n\t\tdensity = grid.density || 1,\r\n\t\tfilter = grid.filter || false,\r\n\t\tvalues = grid.values || false,\r\n\t\tstepped = grid.stepped || false,\r\n\t\tgroup = getGroup( mode, values, stepped ),\r\n\t\tspread = generateSpread( density, mode, group ),\r\n\t\tformat = grid.format || {\r\n\t\t\tto: Math.round\r\n\t\t};\r\n\r\n\t\treturn scope_Target.appendChild(addMarking(\r\n\t\t\tspread,\r\n\t\t\tfilter,\r\n\t\t\tformat\r\n\t\t));\r\n\t}\r\n\r\n\r\n\t// Shorthand for base dimensions.\r\n\tfunction baseSize ( ) {\r\n\t\tvar rect = scope_Base.getBoundingClientRect(), alt = 'offset' + ['Width', 'Height'][options.ort];\r\n\t\treturn options.ort === 0 ? (rect.width||scope_Base[alt]) : (rect.height||scope_Base[alt]);\r\n\t}\r\n\r\n\t// External event handling\r\n\tfunction fireEvent ( event, handleNumber, tap ) {\r\n\r\n\t\tvar i;\r\n\r\n\t\t// During initialization, do not fire events.\r\n\t\tfor ( i = 0; i < options.handles; i++ ) {\r\n\t\t\tif ( scope_Locations[i] === -1 ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( handleNumber !== undefined && options.handles !== 1 ) {\r\n\t\t\thandleNumber = Math.abs(handleNumber - options.dir);\r\n\t\t}\r\n\r\n\t\tObject.keys(scope_Events).forEach(function( targetEvent ) {\r\n\r\n\t\t\tvar eventType = targetEvent.split('.')[0];\r\n\r\n\t\t\tif ( event === eventType ) {\r\n\t\t\t\tscope_Events[targetEvent].forEach(function( callback ) {\r\n\r\n\t\t\t\t\tcallback.call(\r\n\t\t\t\t\t\t// Use the slider public API as the scope ('this')\r\n\t\t\t\t\t\tscope_Self,\r\n\t\t\t\t\t\t// Return values as array, so arg_1[arg_2] is always valid.\r\n\t\t\t\t\t\tasArray(valueGet()),\r\n\t\t\t\t\t\t// Handle index, 0 or 1\r\n\t\t\t\t\t\thandleNumber,\r\n\t\t\t\t\t\t// Unformatted slider values\r\n\t\t\t\t\t\tasArray(inSliderOrder(Array.prototype.slice.call(scope_Values))),\r\n\t\t\t\t\t\t// Event is fired by tap, true or false\r\n\t\t\t\t\t\ttap || false,\r\n\t\t\t\t\t\t// Left offset of the handle, in relation to the slider\r\n\t\t\t\t\t\tscope_Locations\r\n\t\t\t\t\t);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t// Returns the input array, respecting the slider direction configuration.\r\n\tfunction inSliderOrder ( values ) {\r\n\r\n\t\t// If only one handle is used, return a single value.\r\n\t\tif ( values.length === 1 ){\r\n\t\t\treturn values[0];\r\n\t\t}\r\n\r\n\t\tif ( options.dir ) {\r\n\t\t\treturn values.reverse();\r\n\t\t}\r\n\r\n\t\treturn values;\r\n\t}\r\n\r\n\r\n\t// Handler for attaching events trough a proxy.\r\n\tfunction attach ( events, element, callback, data ) {\r\n\r\n\t\t// This function can be used to 'filter' events to the slider.\r\n\t\t// element is a node, not a nodeList\r\n\r\n\t\tvar method = function ( e ){\r\n\r\n\t\t\tif ( scope_Target.hasAttribute('disabled') ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\t// Stop if an active 'tap' transition is taking place.\r\n\t\t\tif ( hasClass(scope_Target, options.cssClasses.tap) ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\te = fixEvent(e, data.pageOffset);\r\n\r\n\t\t\t// Ignore right or middle clicks on start #454\r\n\t\t\tif ( events === actions.start && e.buttons !== undefined && e.buttons > 1 ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\t// Ignore right or middle clicks on start #454\r\n\t\t\tif ( data.hover && e.buttons ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\te.calcPoint = e.points[ options.ort ];\r\n\r\n\t\t\t// Call the event handler with the event [ and additional data ].\r\n\t\t\tcallback ( e, data );\r\n\r\n\t\t}, methods = [];\r\n\r\n\t\t// Bind a closure on the target for every event type.\r\n\t\tevents.split(' ').forEach(function( eventName ){\r\n\t\t\telement.addEventListener(eventName, method, false);\r\n\t\t\tmethods.push([eventName, method]);\r\n\t\t});\r\n\r\n\t\treturn methods;\r\n\t}\r\n\r\n\t// Handle movement on document for handle and range drag.\r\n\tfunction move ( event, data ) {\r\n\r\n\t\t// Fix #498\r\n\t\t// Check value of .buttons in 'start' to work around a bug in IE10 mobile (data.buttonsProperty).\r\n\t\t// https://connect.microsoft.com/IE/feedback/details/927005/mobile-ie10-windows-phone-buttons-property-of-pointermove-event-always-zero\r\n\t\t// IE9 has .buttons and .which zero on mousemove.\r\n\t\t// Firefox breaks the spec MDN defines.\r\n\t\tif ( navigator.appVersion.indexOf(\"MSIE 9\") === -1 && event.buttons === 0 && data.buttonsProperty !== 0 ) {\r\n\t\t\treturn end(event, data);\r\n\t\t}\r\n\r\n\t\tvar handles = data.handles || scope_Handles, positions, state = false,\r\n\t\t\tproposal = ((event.calcPoint - data.start) * 100) / data.baseSize,\r\n\t\t\thandleNumber = handles[0] === scope_Handles[0] ? 0 : 1, i;\r\n\r\n\t\t// Calculate relative positions for the handles.\r\n\t\tpositions = getPositions( proposal, data.positions, handles.length > 1);\r\n\r\n\t\tstate = setHandle ( handles[0], positions[handleNumber], handles.length === 1 );\r\n\r\n\t\tif ( handles.length > 1 ) {\r\n\r\n\t\t\tstate = setHandle ( handles[1], positions[handleNumber?0:1], false ) || state;\r\n\r\n\t\t\tif ( state ) {\r\n\t\t\t\t// fire for both handles\r\n\t\t\t\tfor ( i = 0; i < data.handles.length; i++ ) {\r\n\t\t\t\t\tfireEvent('slide', i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else if ( state ) {\r\n\t\t\t// Fire for a single handle\r\n\t\t\tfireEvent('slide', handleNumber);\r\n\t\t}\r\n\t}\r\n\r\n\t// Unbind move events on document, call callbacks.\r\n\tfunction end ( event, data ) {\r\n\r\n\t\t// The handle is no longer active, so remove the class.\r\n\t\tvar active = scope_Base.querySelector( '.' + options.cssClasses.active ),\r\n\t\t\thandleNumber = data.handles[0] === scope_Handles[0] ? 0 : 1;\r\n\r\n\t\tif ( active !== null ) {\r\n\t\t\tremoveClass(active, options.cssClasses.active);\r\n\t\t}\r\n\r\n\t\t// Remove cursor styles and text-selection events bound to the body.\r\n\t\tif ( event.cursor ) {\r\n\t\t\tdocument.body.style.cursor = '';\r\n\t\t\tdocument.body.removeEventListener('selectstart', document.body.noUiListener);\r\n\t\t}\r\n\r\n\t\tvar d = document.documentElement;\r\n\r\n\t\t// Unbind the move and end events, which are added on 'start'.\r\n\t\td.noUiListeners.forEach(function( c ) {\r\n\t\t\td.removeEventListener(c[0], c[1]);\r\n\t\t});\r\n\r\n\t\t// Remove dragging class.\r\n\t\tremoveClass(scope_Target, options.cssClasses.drag);\r\n\r\n\t\t// Fire the change and set events.\r\n\t\tfireEvent('set', handleNumber);\r\n\t\tfireEvent('change', handleNumber);\r\n\r\n\t\t// If this is a standard handle movement, fire the end event.\r\n\t\tif ( data.handleNumber !== undefined ) {\r\n\t\t\tfireEvent('end', data.handleNumber);\r\n\t\t}\r\n\t}\r\n\r\n\t// Fire 'end' when a mouse or pen leaves the document.\r\n\tfunction documentLeave ( event, data ) {\r\n\t\tif ( event.type === \"mouseout\" && event.target.nodeName === \"HTML\" && event.relatedTarget === null ){\r\n\t\t\tend ( event, data );\r\n\t\t}\r\n\t}\r\n\r\n\t// Bind move events on document.\r\n\tfunction start ( event, data ) {\r\n\r\n\t\tvar d = document.documentElement;\r\n\r\n\t\t// Mark the handle as 'active' so it can be styled.\r\n\t\tif ( data.handles.length === 1 ) {\r\n\t\t\t// Support 'disabled' handles\r\n\t\t\tif ( data.handles[0].hasAttribute('disabled') ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\taddClass(data.handles[0].children[0], options.cssClasses.active);\r\n\t\t}\r\n\r\n\t\t// Fix #551, where a handle gets selected instead of dragged.\r\n\t\tevent.preventDefault();\r\n\r\n\t\t// A drag should never propagate up to the 'tap' event.\r\n\t\tevent.stopPropagation();\r\n\r\n\t\t// Attach the move and end events.\r\n\t\tvar moveEvent = attach(actions.move, d, move, {\r\n\t\t\tstart: event.calcPoint,\r\n\t\t\tbaseSize: baseSize(),\r\n\t\t\tpageOffset: event.pageOffset,\r\n\t\t\thandles: data.handles,\r\n\t\t\thandleNumber: data.handleNumber,\r\n\t\t\tbuttonsProperty: event.buttons,\r\n\t\t\tpositions: [\r\n\t\t\t\tscope_Locations[0],\r\n\t\t\t\tscope_Locations[scope_Handles.length - 1]\r\n\t\t\t]\r\n\t\t}), endEvent = attach(actions.end, d, end, {\r\n\t\t\thandles: data.handles,\r\n\t\t\thandleNumber: data.handleNumber\r\n\t\t});\r\n\r\n\t\tvar outEvent = attach(\"mouseout\", d, documentLeave, {\r\n\t\t\thandles: data.handles,\r\n\t\t\thandleNumber: data.handleNumber\r\n\t\t});\r\n\r\n\t\td.noUiListeners = moveEvent.concat(endEvent, outEvent);\r\n\r\n\t\t// Text selection isn't an issue on touch devices,\r\n\t\t// so adding cursor styles can be skipped.\r\n\t\tif ( event.cursor ) {\r\n\r\n\t\t\t// Prevent the 'I' cursor and extend the range-drag cursor.\r\n\t\t\tdocument.body.style.cursor = getComputedStyle(event.target).cursor;\r\n\r\n\t\t\t// Mark the target with a dragging state.\r\n\t\t\tif ( scope_Handles.length > 1 ) {\r\n\t\t\t\taddClass(scope_Target, options.cssClasses.drag);\r\n\t\t\t}\r\n\r\n\t\t\tvar f = function(){\r\n\t\t\t\treturn false;\r\n\t\t\t};\r\n\r\n\t\t\tdocument.body.noUiListener = f;\r\n\r\n\t\t\t// Prevent text selection when dragging the handles.\r\n\t\t\tdocument.body.addEventListener('selectstart', f, false);\r\n\t\t}\r\n\r\n\t\tif ( data.handleNumber !== undefined ) {\r\n\t\t\tfireEvent('start', data.handleNumber);\r\n\t\t}\r\n\t}\r\n\r\n\t// Move closest handle to tapped location.\r\n\tfunction tap ( event ) {\r\n\r\n\t\tvar location = event.calcPoint, total = 0, handleNumber, to;\r\n\r\n\t\t// The tap event shouldn't propagate up and cause 'edge' to run.\r\n\t\tevent.stopPropagation();\r\n\r\n\t\t// Add up the handle offsets.\r\n\t\tscope_Handles.forEach(function(a){\r\n\t\t\ttotal += offset(a)[ options.style ];\r\n\t\t});\r\n\r\n\t\t// Find the handle closest to the tapped position.\r\n\t\thandleNumber = ( location < total/2 || scope_Handles.length === 1 ) ? 0 : 1;\r\n\r\n\t\t// Check if handler is not disablet if yes set number to the next handler\r\n\t\tif (scope_Handles[handleNumber].hasAttribute('disabled')) {\r\n\t\t\thandleNumber = handleNumber ? 0 : 1;\r\n\t\t}\r\n\r\n\t\tlocation -= offset(scope_Base)[ options.style ];\r\n\r\n\t\t// Calculate the new position.\r\n\t\tto = ( location * 100 ) / baseSize();\r\n\r\n\t\tif ( !options.events.snap ) {\r\n\t\t\t// Flag the slider as it is now in a transitional state.\r\n\t\t\t// Transition takes a configurable amount of ms (default 300). Re-enable the slider after that.\r\n\t\t\taddClassFor( scope_Target, options.cssClasses.tap, options.animationDuration );\r\n\t\t}\r\n\r\n\t\t// Support 'disabled' handles\r\n\t\tif ( scope_Handles[handleNumber].hasAttribute('disabled') ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Find the closest handle and calculate the tapped point.\r\n\t\t// The set handle to the new position.\r\n\t\tsetHandle( scope_Handles[handleNumber], to );\r\n\r\n\t\tfireEvent('slide', handleNumber, true);\r\n\t\tfireEvent('set', handleNumber, true);\r\n\t\tfireEvent('change', handleNumber, true);\r\n\r\n\t\tif ( options.events.snap ) {\r\n\t\t\tstart(event, { handles: [scope_Handles[handleNumber]] });\r\n\t\t}\r\n\t}\r\n\r\n\t// Fires a 'hover' event for a hovered mouse/pen position.\r\n\tfunction hover ( event ) {\r\n\r\n\t\tvar location = event.calcPoint - offset(scope_Base)[ options.style ],\r\n\t\t\tto = scope_Spectrum.getStep(( location * 100 ) / baseSize()),\r\n\t\t\tvalue = scope_Spectrum.fromStepping( to );\r\n\r\n\t\tObject.keys(scope_Events).forEach(function( targetEvent ) {\r\n\t\t\tif ( 'hover' === targetEvent.split('.')[0] ) {\r\n\t\t\t\tscope_Events[targetEvent].forEach(function( callback ) {\r\n\t\t\t\t\tcallback.call( scope_Self, value );\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t// Attach events to several slider parts.\r\n\tfunction events ( behaviour ) {\r\n\r\n\t\t// Attach the standard drag event to the handles.\r\n\t\tif ( !behaviour.fixed ) {\r\n\r\n\t\t\tscope_Handles.forEach(function( handle, index ){\r\n\r\n\t\t\t\t// These events are only bound to the visual handle\r\n\t\t\t\t// element, not the 'real' origin element.\r\n\t\t\t\tattach ( actions.start, handle.children[0], start, {\r\n\t\t\t\t\thandles: [ handle ],\r\n\t\t\t\t\thandleNumber: index\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// Attach the tap event to the slider base.\r\n\t\tif ( behaviour.tap ) {\r\n\r\n\t\t\tattach ( actions.start, scope_Base, tap, {\r\n\t\t\t\thandles: scope_Handles\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// Fire hover events\r\n\t\tif ( behaviour.hover ) {\r\n\t\t\tattach ( actions.move, scope_Base, hover, { hover: true } );\r\n\t\t}\r\n\r\n\t\t// Make the range draggable.\r\n\t\tif ( behaviour.drag ){\r\n\r\n\t\t\tvar drag = [scope_Base.querySelector( '.' + options.cssClasses.connect )];\r\n\t\t\taddClass(drag[0], options.cssClasses.draggable);\r\n\r\n\t\t\t// When the range is fixed, the entire range can\r\n\t\t\t// be dragged by the handles. The handle in the first\r\n\t\t\t// origin will propagate the start event upward,\r\n\t\t\t// but it needs to be bound manually on the other.\r\n\t\t\tif ( behaviour.fixed ) {\r\n\t\t\t\tdrag.push(scope_Handles[(drag[0] === scope_Handles[0] ? 1 : 0)].children[0]);\r\n\t\t\t}\r\n\r\n\t\t\tdrag.forEach(function( element ) {\r\n\t\t\t\tattach ( actions.start, element, start, {\r\n\t\t\t\t\thandles: scope_Handles\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t// Test suggested values and apply margin, step.\r\n\tfunction setHandle ( handle, to, noLimitOption ) {\r\n\r\n\t\tvar trigger = handle !== scope_Handles[0] ? 1 : 0,\r\n\t\t\tlowerMargin = scope_Locations[0] + options.margin,\r\n\t\t\tupperMargin = scope_Locations[1] - options.margin,\r\n\t\t\tlowerLimit = scope_Locations[0] + options.limit,\r\n\t\t\tupperLimit = scope_Locations[1] - options.limit;\r\n\r\n\t\t// For sliders with multiple handles,\r\n\t\t// limit movement to the other handle.\r\n\t\t// Apply the margin option by adding it to the handle positions.\r\n\t\tif ( scope_Handles.length > 1 ) {\r\n\t\t\tto = trigger ? Math.max( to, lowerMargin ) : Math.min( to, upperMargin );\r\n\t\t}\r\n\r\n\t\t// The limit option has the opposite effect, limiting handles to a\r\n\t\t// maximum distance from another. Limit must be > 0, as otherwise\r\n\t\t// handles would be unmoveable. 'noLimitOption' is set to 'false'\r\n\t\t// for the .val() method, except for pass 4/4.\r\n\t\tif ( noLimitOption !== false && options.limit && scope_Handles.length > 1 ) {\r\n\t\t\tto = trigger ? Math.min ( to, lowerLimit ) : Math.max( to, upperLimit );\r\n\t\t}\r\n\r\n\t\t// Handle the step option.\r\n\t\tto = scope_Spectrum.getStep( to );\r\n\r\n\t\t// Limit percentage to the 0 - 100 range\r\n\t\tto = limit(to);\r\n\r\n\t\t// Return false if handle can't move\r\n\t\tif ( to === scope_Locations[trigger] ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Set the handle to the new position.\r\n\t\t// Use requestAnimationFrame for efficient painting.\r\n\t\t// No significant effect in Chrome, Edge sees dramatic\r\n\t\t// performace improvements.\r\n\t\tif ( window.requestAnimationFrame ) {\r\n\t\t\twindow.requestAnimationFrame(function(){\r\n\t\t\t\thandle.style[options.style] = to + '%';\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\thandle.style[options.style] = to + '%';\r\n\t\t}\r\n\r\n\t\t// Force proper handle stacking\r\n\t\tif ( !handle.previousSibling ) {\r\n\t\t\tremoveClass(handle, options.cssClasses.stacking);\r\n\t\t\tif ( to > 50 ) {\r\n\t\t\t\taddClass(handle, options.cssClasses.stacking);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Update locations.\r\n\t\tscope_Locations[trigger] = to;\r\n\r\n\t\t// Convert the value to the slider stepping/range.\r\n\t\tscope_Values[trigger] = scope_Spectrum.fromStepping( to );\r\n\r\n\t\tfireEvent('update', trigger);\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\t// Loop values from value method and apply them.\r\n\tfunction setValues ( count, values ) {\r\n\r\n\t\tvar i, trigger, to;\r\n\r\n\t\t// With the limit option, we'll need another limiting pass.\r\n\t\tif ( options.limit ) {\r\n\t\t\tcount += 1;\r\n\t\t}\r\n\r\n\t\t// If there are multiple handles to be set run the setting\r\n\t\t// mechanism twice for the first handle, to make sure it\r\n\t\t// can be bounced of the second one properly.\r\n\t\tfor ( i = 0; i < count; i += 1 ) {\r\n\r\n\t\t\ttrigger = i%2;\r\n\r\n\t\t\t// Get the current argument from the array.\r\n\t\t\tto = values[trigger];\r\n\r\n\t\t\t// Setting with null indicates an 'ignore'.\r\n\t\t\t// Inputting 'false' is invalid.\r\n\t\t\tif ( to !== null && to !== false ) {\r\n\r\n\t\t\t\t// If a formatted number was passed, attemt to decode it.\r\n\t\t\t\tif ( typeof to === 'number' ) {\r\n\t\t\t\t\tto = String(to);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tto = options.format.from( to );\r\n\r\n\t\t\t\t// Request an update for all links if the value was invalid.\r\n\t\t\t\t// Do so too if setting the handle fails.\r\n\t\t\t\tif ( to === false || isNaN(to) || setHandle( scope_Handles[trigger], scope_Spectrum.toStepping( to ), i === (3 - options.dir) ) === false ) {\r\n\t\t\t\t\tfireEvent('update', trigger);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Set the slider value.\r\n\tfunction valueSet ( input, fireSetEvent ) {\r\n\r\n\t\tvar count, values = asArray( input ), i;\r\n\r\n\t\t// Event fires by default\r\n\t\tfireSetEvent = (fireSetEvent === undefined ? true : !!fireSetEvent);\r\n\r\n\t\t// The RTL settings is implemented by reversing the front-end,\r\n\t\t// internal mechanisms are the same.\r\n\t\tif ( options.dir && options.handles > 1 ) {\r\n\t\t\tvalues.reverse();\r\n\t\t}\r\n\r\n\t\t// Animation is optional.\r\n\t\t// Make sure the initial values where set before using animated placement.\r\n\t\tif ( options.animate && scope_Locations[0] !== -1 ) {\r\n\t\t\taddClassFor( scope_Target, options.cssClasses.tap, options.animationDuration );\r\n\t\t}\r\n\r\n\t\t// Determine how often to set the handles.\r\n\t\tcount = scope_Handles.length > 1 ? 3 : 1;\r\n\r\n\t\tif ( values.length === 1 ) {\r\n\t\t\tcount = 1;\r\n\t\t}\r\n\r\n\t\tsetValues ( count, values );\r\n\r\n\t\t// Fire the 'set' event for both handles.\r\n\t\tfor ( i = 0; i < scope_Handles.length; i++ ) {\r\n\r\n\t\t\t// Fire the event only for handles that received a new value, as per #579\r\n\t\t\tif ( values[i] !== null && fireSetEvent ) {\r\n\t\t\t\tfireEvent('set', i);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Get the slider value.\r\n\tfunction valueGet ( ) {\r\n\r\n\t\tvar i, retour = [];\r\n\r\n\t\t// Get the value from all handles.\r\n\t\tfor ( i = 0; i < options.handles; i += 1 ){\r\n\t\t\tretour[i] = options.format.to( scope_Values[i] );\r\n\t\t}\r\n\r\n\t\treturn inSliderOrder( retour );\r\n\t}\r\n\r\n\t// Removes classes from the root and empties it.\r\n\tfunction destroy ( ) {\r\n\r\n\t\tfor ( var key in options.cssClasses ) {\r\n\t\t\tif ( !options.cssClasses.hasOwnProperty(key) ) { continue; }\r\n\t\t\tremoveClass(scope_Target, options.cssClasses[key]);\r\n\t\t}\r\n\r\n\t\twhile (scope_Target.firstChild) {\r\n\t\t\tscope_Target.removeChild(scope_Target.firstChild);\r\n\t\t}\r\n\r\n\t\tdelete scope_Target.noUiSlider;\r\n\t}\r\n\r\n\t// Get the current step size for the slider.\r\n\tfunction getCurrentStep ( ) {\r\n\r\n\t\t// Check all locations, map them to their stepping point.\r\n\t\t// Get the step point, then find it in the input list.\r\n\t\tvar retour = scope_Locations.map(function( location, index ){\r\n\r\n\t\t\tvar step = scope_Spectrum.getApplicableStep( location ),\r\n\r\n\t\t\t\t// As per #391, the comparison for the decrement step can have some rounding issues.\r\n\t\t\t\t// Round the value to the precision used in the step.\r\n\t\t\t\tstepDecimals = countDecimals(String(step[2])),\r\n\r\n\t\t\t\t// Get the current numeric value\r\n\t\t\t\tvalue = scope_Values[index],\r\n\r\n\t\t\t\t// To move the slider 'one step up', the current step value needs to be added.\r\n\t\t\t\t// Use null if we are at the maximum slider value.\r\n\t\t\t\tincrement = location === 100 ? null : step[2],\r\n\r\n\t\t\t\t// Going 'one step down' might put the slider in a different sub-range, so we\r\n\t\t\t\t// need to switch between the current or the previous step.\r\n\t\t\t\tprev = Number((value - step[2]).toFixed(stepDecimals)),\r\n\r\n\t\t\t\t// If the value fits the step, return the current step value. Otherwise, use the\r\n\t\t\t\t// previous step. Return null if the slider is at its minimum value.\r\n\t\t\t\tdecrement = location === 0 ? null : (prev >= step[1]) ? step[2] : (step[0] || false);\r\n\r\n\t\t\treturn [decrement, increment];\r\n\t\t});\r\n\r\n\t\t// Return values in the proper order.\r\n\t\treturn inSliderOrder( retour );\r\n\t}\r\n\r\n\t// Attach an event to this slider, possibly including a namespace\r\n\tfunction bindEvent ( namespacedEvent, callback ) {\r\n\t\tscope_Events[namespacedEvent] = scope_Events[namespacedEvent] || [];\r\n\t\tscope_Events[namespacedEvent].push(callback);\r\n\r\n\t\t// If the event bound is 'update,' fire it immediately for all handles.\r\n\t\tif ( namespacedEvent.split('.')[0] === 'update' ) {\r\n\t\t\tscope_Handles.forEach(function(a, index){\r\n\t\t\t\tfireEvent('update', index);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t// Undo attachment of event\r\n\tfunction removeEvent ( namespacedEvent ) {\r\n\r\n\t\tvar event = namespacedEvent && namespacedEvent.split('.')[0],\r\n\t\t\tnamespace = event && namespacedEvent.substring(event.length);\r\n\r\n\t\tObject.keys(scope_Events).forEach(function( bind ){\r\n\r\n\t\t\tvar tEvent = bind.split('.')[0],\r\n\t\t\t\ttNamespace = bind.substring(tEvent.length);\r\n\r\n\t\t\tif ( (!event || event === tEvent) && (!namespace || namespace === tNamespace) ) {\r\n\t\t\t\tdelete scope_Events[bind];\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t// Updateable: margin, limit, step, range, animate, snap\r\n\tfunction updateOptions ( optionsToUpdate, fireSetEvent ) {\r\n\r\n\t\t// Spectrum is created using the range, snap, direction and step options.\r\n\t\t// 'snap' and 'step' can be updated, 'direction' cannot, due to event binding.\r\n\t\t// If 'snap' and 'step' are not passed, they should remain unchanged.\r\n\t\tvar v = valueGet(), newOptions = testOptions({\r\n\t\t\tstart: [0, 0],\r\n\t\t\tmargin: optionsToUpdate.margin,\r\n\t\t\tlimit: optionsToUpdate.limit,\r\n\t\t\tstep: optionsToUpdate.step === undefined ? options.singleStep : optionsToUpdate.step,\r\n\t\t\trange: optionsToUpdate.range,\r\n\t\t\tanimate: optionsToUpdate.animate,\r\n\t\t\tsnap: optionsToUpdate.snap === undefined ? options.snap : optionsToUpdate.snap\r\n\t\t});\r\n\r\n\t\t['margin', 'limit', 'range', 'animate'].forEach(function(name){\r\n\r\n\t\t\t// Only change options that we're actually passed to update.\r\n\t\t\tif ( optionsToUpdate[name] !== undefined ) {\r\n\t\t\t\toptions[name] = optionsToUpdate[name];\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// Save current spectrum direction as testOptions in testRange call\r\n\t\t// doesn't rely on current direction\r\n\t\tnewOptions.spectrum.direction = scope_Spectrum.direction;\r\n\t\tscope_Spectrum = newOptions.spectrum;\r\n\r\n\t\t// Invalidate the current positioning so valueSet forces an update.\r\n\t\tscope_Locations = [-1, -1];\r\n\t\tvalueSet(optionsToUpdate.start || v, fireSetEvent);\r\n\t}\r\n\r\n\r\n\t// Throw an error if the slider was already initialized.\r\n\tif ( scope_Target.noUiSlider ) {\r\n\t\tthrow new Error('Slider was already initialized.');\r\n\t}\r\n\r\n\t// Create the base element, initialise HTML and set classes.\r\n\t// Add handles and links.\r\n\tscope_Base = addSlider( options.dir, options.ort, scope_Target );\r\n\tscope_Handles = addHandles( options.handles, options.dir, scope_Base );\r\n\r\n\t// Set the connect classes.\r\n\taddConnection ( options.connect, scope_Target, scope_Handles );\r\n\r\n\tif ( options.pips ) {\r\n\t\tpips(options.pips);\r\n\t}\r\n\r\n\tif ( options.tooltips ) {\r\n\t\ttooltips();\r\n\t}\r\n\r\n\tscope_Self = {\r\n\t\tdestroy: destroy,\r\n\t\tsteps: getCurrentStep,\r\n\t\ton: bindEvent,\r\n\t\toff: removeEvent,\r\n\t\tget: valueGet,\r\n\t\tset: valueSet,\r\n\t\tupdateOptions: updateOptions,\r\n\t\toptions: originalOptions, // Issue #600\r\n\t\ttarget: scope_Target, // Issue #597\r\n\t\tpips: pips // Issue #594\r\n\t};\r\n\r\n\t// Attach user events.\r\n\tevents( options.events );\r\n\r\n\treturn scope_Self;\r\n\r\n}\r\n\r\n\r\n\t// Run the standard initializer\r\n\tfunction initialize ( target, originalOptions ) {\r\n\r\n\t\tif ( !target.nodeName ) {\r\n\t\t\tthrow new Error('noUiSlider.create requires a single element.');\r\n\t\t}\r\n\r\n\t\t// Test the options and create the slider environment;\r\n\t\tvar options = testOptions( originalOptions, target ),\r\n\t\t\tslider = closure( target, options, originalOptions );\r\n\r\n\t\t// Use the public value method to set the start values.\r\n\t\tslider.set(options.start);\r\n\r\n\t\ttarget.noUiSlider = slider;\r\n\t\treturn slider;\r\n\t}\r\n\r\n\t// Use an object instead of a function for future expansibility;\r\n\treturn {\r\n\t\tcreate: initialize\r\n\t};\r\n\r\n}));\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/nouislider/distribute/nouislider.js\n// module id = 1033\n// module chunks = 4 5","import mixins from './../../../decorators/mixins.decorator';\n\n// function floatingPlaceholderDecorator ( opts ) {\n\t\n// \treturn target => {\n// \t\tconst\n// \t\t\toldInit = target.init;\n\n// \t\tconsole.log( 'working?', target );\n\n// \t\tconst\n// \t\t\textend = {\n// \t\t\t\tinit : function init ( ...args ) {\n// \t\t\t\t\tthis::oldInit( ...args );\n// \t\t\t\t\tconsole.log( this.$scope, this.$input );\n// \t\t\t\t},\n// \t\t\t\tisFloatingPlaceholder : true\n// \t\t\t}\n\n// \t\tmixins( extend )( target );\n// \t}\n// }\n\nconst\n\tcls = 'floating-placeholder';\n\nfunction setupFloatingPlaceholder () {\n\tconst\n\t\tplaceholder = this.$input.siblings( 'label.' + cls );\n\n\tthis.$input.on( 'focus', e => {\n\t\tplaceholder.addClass( 'shrinked' );\n\t} );\n\n\tthis.$input.on( 'blur', e => {\n\t\tif ( !this.$input.val() ) {\n\t\t\tplaceholder.removeClass( 'shrinked' );\n\t\t}\n\t} );\n\n\tplaceholder.on( 'click', e => this.$input.trigger( 'focus' ) )\n}\n\nfunction checkApplyFloatingPlaceholder () {\n\tif ( this.$scope.hasClass( cls ) ) {\n\t\tthis::setupFloatingPlaceholder();\n\t}\n}\n\nfunction floatingPlaceholderDecoratorInit ( target, name, descriptor ) {\n\tconst\n\t\toriginal = descriptor.value;\n\n\tif (typeof original === 'function') {\n\t\tdescriptor.value = function ( ...args ) {\n\t\t\ttry {\n\t\t\t\tconst result = original.apply( this, args );\n\t\t\t\tthis::checkApplyFloatingPlaceholder();\n\t\t\t\treturn result;\n\t\t\t} catch (e) {\n\t\t\t\tthrow e;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn descriptor;\n}\n\nclass floatingPlaceholderClass {\n\t@floatingPlaceholderDecoratorInit\n\tinit( $scope ) {\n\t\tthis.$scope = $scope;\n\t\tthis.$input = this.$scope.find( 'input' )\n\t}\n}\n\n// export default floatingPlaceholderDecorator;\nexport { floatingPlaceholderDecoratorInit, floatingPlaceholderClass };\n\n\n\n// WEBPACK FOOTER //\n// ./js/forms/v2/decorators/FloatingPlaceholder.decorator.js","export const IDENTIFIERS = {\n\tFORM_ELEMENT : '[data-element=\"form-element\"],.floating-placeholder',\n\tFORM : {\n\t\tROOT : '[data-tpl*=form]'\n\t},\n\tSELECT : {\n\t\tROOT : '[data-tpl=select]'\n\t},\n\tAUTOCOMPLETE : {\n\t\tROOT : '.autocomplete'\n\t},\n\tINLINE_EDITING : {\n\t\tROOT : '[data-tpl=\"inline-editing\"]'\n\t},\n\tFILE_UPLOAD : {\n\t\tROOT : '[data-tpl=\"file-upload\"]'\n\t}\n};\n\n\n\n// WEBPACK FOOTER //\n// ./js/forms/v2/constants/Identifiers.const.js","import $ from 'jquery';\r\n\r\nimport DebugController from './../../../base/controller/Debug.controller';\r\nimport WindowGateway from './../../../services/gateways/WindowGateway.service';\r\nimport bucket from './../../../services/Bucket.service';\r\n\r\nimport FormController from './../Form.controller';\r\nimport { IDENTIFIERS } from './../constants/Identifiers.const';\r\n\r\nimport StyleInjector from './../../../../../../local-packages/services/style-injector/StyleInjector.service';\r\n\r\n// const htmlMap = {},\r\nconst controllerMap = {},\r\n EVENTS = {\r\n\t FORMREADY : 'formReady',\r\n\t FORMREINITSINGLE : 'formReInitSingleComponent'\r\n },\r\n\t\t\tBASE_PATH = GLOBAL_CONFIG.CSS_PATH, //eslint-disable-line\r\n PREFIX = 'forms-v2';\r\n\r\n// /**\r\n// * Testing method\r\n// * todo: remove this when everything works fine\r\n// * @param id {string} - form id\r\n// * @return {void}\r\n// */\r\n// function resetForm ( id ) {\r\n// \tconst $el = $( '#' + id ),\r\n// \t $parent = $el.parent(),\r\n// \t $lead = $el.prev(),\r\n// \t event = document.createEvent( 'HTMLEvents' ),\r\n// \t html = htmlMap.hasOwnProperty( id ) ?\r\n// \t htmlMap[ id ] :\r\n// \t 'not found';\r\n//\r\n// \tevent.initEvent( 'message', true, true );\r\n// \tevent.eventName = 'message';\r\n// \tevent.data = JSON.stringify( { type : 'formReady', data : { id : 'myFormID' } } );\r\n//\r\n// \tfasterdom.measureInstant( () => {\r\n// \t\t$el.remove();\r\n// \t} );\r\n//\r\n// \tfasterdom.measureInstant( () => {\r\n// \t\tif ( $lead.length > 0 ) {\r\n// \t\t\t$lead.after( html );\r\n// \t\t} else {\r\n// \t\t\t$parent.append( html );\r\n// \t\t}\r\n//\r\n// \t\twindow.dispatchEvent( event );\r\n// \t}, 1 );\r\n// }\r\n\r\nfunction checkLoadStyles () {\r\n\tconst\r\n\t\tformLoaderMeta = document.querySelector( 'meta[name=\"formLoader\"]');\r\n\r\n\tif ( !formLoaderMeta || ( formLoaderMeta && formLoaderMeta.getAttribute( 'content' ) === 'true' ) ) {\r\n\t\t// TODO: reafactor to be cool\r\n\t\tlet\r\n\t\t\tthePath = BASE_PATH;\r\n\r\n\t\tif ( formLoaderMeta && formLoaderMeta.getAttribute( 'path' ) ) {\r\n\t\t\tthePath = formLoaderMeta.getAttribute( 'path' );\r\n\t\t}\r\n\t\tStyleInjector.injectImmediate( thePath + PREFIX, PREFIX );\r\n\t}\r\n}\r\n\r\n/**\r\n * Re/-Initializes form controller\r\n * @param {string} id - form id\r\n * @returns {void}\r\n */\r\nfunction initController ( id ) {\r\n\tconst $el = $( '#' + id );\r\n\r\n\tif ( !$el.is( '[data-tpl=form-v2]' ) && $el.parent( '[data-tpl=form-v2]' ).length === 0 ) {\r\n\t\tthis.logger.info( 'Not a v2 form, skip initializing' );\r\n\t\treturn;\r\n\t}\r\n\r\n\tthis::checkLoadStyles();\r\n\r\n\tif ( $el.length > 0 ) {\r\n\t\tif ( !controllerMap.hasOwnProperty( id ) ) {\r\n\t\t\tconst controller = new FormController();\r\n\r\n\t\t\tcontroller.init( $el );\r\n\t\t\tcontrollerMap[ id ] = controller;\r\n\t\t\tthis.logger.log( 'Form controller initialized:', $el );\r\n\t\t} else {\r\n\t\t\tcontrollerMap[ id ].reInit( $el );\r\n\t\t\tthis.logger.warn( 'Form controller reinitialized:', $el );\r\n\t\t}\r\n\t} else {\r\n\t\tthis.logger.warn( 'No form with id found:', id );\r\n\t}\r\n}\r\n\r\nfunction initSingleController ( id ) {\r\n\tconst\r\n\t\t$el = $( '#' + id ),\r\n\t\t$form = $el.closest( '[data-tpl=form-v2]' ),\r\n\t\tformID = $form.attr( 'id' );\r\n\r\n\tif ( $el.length > 0 ) {\r\n\t\tif ( !controllerMap.hasOwnProperty( formID ) ) {\r\n\t\t\tconst\r\n\t\t\t\tcontroller = new FormController();\r\n\r\n\t\t\tcontroller.initSingle( $el );\r\n\t\t\tcontrollerMap[ formID ] = controller;\r\n\t\t} else {\r\n\t\t\tconst\r\n\t\t\t\tcontroller = controllerMap[ formID ];\r\n\r\n\t\t\tcontroller.reInitSingleController( $el );\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Receives message event and checks if it's type of formReady\r\n * Checks if form id is set and initializes form controller\r\n * @param {object} message - event data object\r\n * @returns {void}\r\n */\r\nfunction receiveMessage ( message ) {\r\n\tthis.logger.log( 'message event received after ready (1):', message );\r\n\r\n\tif ( message.type === EVENTS.FORMREADY && message.data.hasOwnProperty( 'id' ) ) {\r\n\r\n\t\tinitController.call( this, message.data.id );\r\n\t}\r\n}\r\n\r\nfunction receiveMessageSingle ( message ) {\r\n\tthis.logger.log( 'message event received after ready (2):', message );\r\n\r\n\tif ( message.type === EVENTS.FORMREINITSINGLE && message.data.hasOwnProperty( 'id' ) ) {\r\n\r\n\t\tinitSingleController.call( this, message.data.id );\r\n\t}\r\n}\r\n\r\n/**\r\n * Class representing an singleton forms service instance.\r\n * Will be executed after formReady event is thrown.\r\n * Checks if form is available in DOM and initializes a form controller.\r\n * @extends { AbstractController }\r\n */\r\nclass Forms extends DebugController {\r\n\r\n\tinit () {\r\n\t\tthis.debug = false;\r\n\r\n\t\tif ( bucket.formReady.size > 0 ) {\r\n\t\t\tthis.logger.warn( 'message event received before ready: ', bucket.formReady );\r\n\r\n\t\t\tfor ( const id of bucket.formReady ) {\r\n\t\t\t\tinitController.call( this, id );\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tconst\r\n\t\t\t\t$formRoots = $( IDENTIFIERS.FORM.ROOT );\r\n\r\n\t\t\tif ( $formRoots.length ) {\r\n\t\t\t\tthis::checkLoadStyles();\r\n\t\t\t}\r\n\r\n\t\t\t$.each( $formRoots, function createInstance () {\r\n\t\t\t\tconst controllerInstance = new FormController();\r\n\r\n\t\t\t\tcontrollerInstance.init( $( this ) );\r\n\t\t\t} );\r\n\t\t}\r\n\r\n\t\tthis.gateway = new WindowGateway();\r\n\t\tthis.gateway.messageEvent.subscribe( receiveMessage.bind( this ) );\r\n\t\tthis.gateway.messageEvent.subscribe( receiveMessageSingle.bind( this ) );\r\n\t}\r\n\r\n\t// /**\r\n\t// * Testing method\r\n\t// * todo: remove this when everything works fine\r\n\t// * @param id {string} - form id\r\n\t// * @return {void}\r\n\t// */\r\n\t// reset ( id ) {\r\n\t// \tresetForm.call( this, id );\r\n\t// }\r\n}\r\n\r\nconst instance = new Forms(); // eslint-disable-line one-var\r\n\r\nexport default instance;\r\n\n\n\n// WEBPACK FOOTER //\n// ./js/forms/v2/services/Forms.service.js","import AbstractController from './../../base/controller/Abstract.controller';\nimport FormElementController from './controller/FormElement.controller';\n\nimport { IDENTIFIERS as FormElementIdentifiers } from './constants/Identifiers.const';\n\n// Non form element dependencies\nimport TooltipController from '../../components/controller/Tooltip.controller';\nimport FileUploadController from './controller/FileUpload.controller';\n\nimport { IDENTIFIERS as ComponentIdentifiers } from '../../components/constants/Identifiers.const';\n\nimport LOGGER from 'frontend-logger';\nimport $ from 'jquery';\n\nconst\n\t\tcomponentControllerMap = {\n\t\ttooltip : TooltipController,\n\t\tfileUpload : FileUploadController,\n\t},\n\tcomponentControllerSelectors = {\n\t\ttooltip : ComponentIdentifiers.TOOLTIP.ROOT,\n\t\tfileUpload : FormElementIdentifiers.FILE_UPLOAD.ROOT\n\t};\n\n/**\n * Initializes sub controller instances for sub controller elements\n * @return {void}\n */\nfunction initController () {\n\tthis.$scope.find( FormElementIdentifiers.FORM_ELEMENT ).each( ( i, el ) => {\n\t\tconst\n\t\t\t$el = el instanceof $ ? el : $( el ),\n\t\t\tcontrollerInstance = initSingleController( $el );\n\n\t\tthis.subController.push( controllerInstance );\n\t} );\n\n\tObject.keys( componentControllerMap ).forEach( ( v, i ) => {\n\t\tif ( !componentControllerSelectors[ v ] ) {\n\t\t\tthrow new Error( 'Missing component selector for dependency component!' );\n\t\t}\n\n\t\tthis.$scope.find( componentControllerSelectors[ v ] ).each( ( j, el ) => {\n\t\t\tconst $el = el instanceof $ ? el : $( el ),\n\t\t\t type = [ 'module', 'tpl', 'element' ].filter( l => !!$el.data( l ) )[ 0 ], // eslint-disable-line arrow-parens\n\t\t\t config = $el.data( type + '-config' ) || {},\n\t\t\t controllerInstance = new componentControllerMap[ v ]();\n\n\t\t\tcontrollerInstance.init( $el, config );\n\t\t\tthis.subController.push( controllerInstance );\n\t\t} );\n\t} );\n\n\tLOGGER.warn( 'controller initialized:', this.subController );\n}\n\nfunction initSingleController ( $el ) {\n\tconst\n\t\tconfig = $el.data( 'element-config' ) || {},\n\t\tcontrollerInstance = new FormElementController();\n\n\tcontrollerInstance.init( $el, config );\n\n\treturn controllerInstance;\n}\n\n/**\n * Destroy all cached Controller instances\n * @return {void}\n */\nfunction destroyController () {\n\tfor ( let i = this.subController.length - 1; i >= 0; i-- ) {\n\t\tif ( typeof this.subController[ i ].destroy === 'function' ) {\n\t\t\tthis.subController[ i ].destroy();\n\t\t}\n\t\tthis.subController[ i ] = null;\n\t\tdelete this.subController[ i ];\n\t}\n\n\tthis.subController = [];\n\tLOGGER.warn( 'controller destroyed:', this.subController );\n}\n\nfunction destroySingleController ( $el ) {\n\tfor ( let i = this.subController.length - 1; i >= 0; i-- ) {\n\t\tconst\n\t\t\tcontroller = this.subController[ i ];\n\n\t\tif ( controller.$scope.is( $el ) ) {\n\t\t\tif ( typeof this.subController[ i ].destroy === 'function' ) {\n\t\t\t\tthis.subController[ i ].destroy();\n\t\t\t}\n\t\t\tthis.subController[ i ] = null;\n\t\t\tdelete this.subController[ i ];\n\t\t}\n\t}\n}\n\n// /**\n// * Testing method\n// * todo: remove this when everything works fine\n// * @return {void}\n// */\n// function addHandler () {\n// \tconst $submit = this.$scope.find( '[type=\"submit\"]' );\n//\n// \t$submit.on( 'click', () => {\n// \t\tForms.reset( this.$scope.attr( 'id' ) );\n// \t} );\n// }\n\n/**\n * Class representing an form instance.\n * Initializes necessary sub controllers.\n * @extends { AbstractController }\n */\nclass FormController extends AbstractController {\n\n\tconstructor () {\n\t\tsuper();\n\n\t\tthis.$scope = null;\n\t\tthis.subController = [];\n\t}\n\n\t/**\n\t * Initialiss the controller.\n\t * Has to be called after ready event.\n\t * @override\n\t * @param { object } $root - jQuery wrapped DOM node\n\t * @public\n\t */\n\tinit ( $root ) {\n\t\tlet $dataTPL = $root;\n\n\t\tif ( !$root.is( FormElementIdentifiers.FORM.ROOT ) ) {\n\t\t\t$dataTPL = $root.closest( FormElementIdentifiers.FORM.ROOT );\n\t\t}\n\n\t\tif ( $dataTPL.data( 'noJs' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.$scope = $root;\n\n\t\t// getControllerElements.call( this );\n\t\tinitController.call( this );\n\t\t// addHandler.call( this );\n\t}\n\n\t/**\n\t * Reinitialiss the controller.\n\t * Has to be called after forms element was send.\n\t * @param { object } $root - jQuery wrapped DOM node\n\t * @public\n\t * @return {void}\n\t */\n\treInit ( $root ) {\n\t\tdestroyController.call( this );\n\t\tthis.init( $root );\n\t}\n\n\tinitSingle ( $el ) {\n\t\tthis.subController.push( initSingleController( $el ) );\n\t}\n\n\treInitSingleController ( $el ) {\n\t\tdestroySingleController.call( this );\n\t\tthis.initSingle( $el );\n\t}\n}\n\nexport default FormController;\n\n\n\n// WEBPACK FOOTER //\n// ./js/forms/v2/Form.controller.js","import AbstractController from '../../../base/controller/Abstract.controller.js';\n\nimport DatepickerController from './Datepicker.controller';\nimport PasswordController from './Password.controller';\nimport ValueSliderController from './ValueSlider.controller';\nimport AutocompleteController from './Autocomplete.controller';\nimport InlineEditingController from './InlineEditing.controller';\nimport ClearInputController from './ClearInput.controller';\nimport SelectReplaceController from './Select.controller';\nimport { floatingPlaceholderDecoratorInit } from './../decorators/FloatingPlaceholder.decorator'\n\n// const this.featureControllerMap = [];\n\nfunction checkFeatures () {\n\tif ( this.$scope.hasClass( 'datepicker' ) ) {\n\t\tif ( !this.config.datePicker ) {\n\t\t\tthrow new Error( 'Missing Config for DatePicker FormElement!' );\n\t\t}\n\t\tconst controllerInstance = new DatepickerController().init( this.$scope, this.config.datePicker );\n\n\t\tthis.featureControllerMap.push( controllerInstance );\n\t\tthis.state.isDatepicker = true;\n\t}\n\n\tif ( this.$scope.hasClass( 'password' ) ) {\n\t\tconst controllerInstance = new PasswordController().init( this.$scope, this.config.password || {} );\n\n\t\tthis.featureControllerMap.push( controllerInstance );\n\t\tthis.state.isPassword = true;\n\t}\n\n\tif ( this.$scope.hasClass( 'value-slider' ) ) {\n\t\tif ( !this.config.valueSlider ) {\n\t\t\tthrow new Error( 'Missing Config for ValueSlider FormElement!' );\n\t\t}\n\t\tconst controllerInstance = new ValueSliderController().init( this.$scope, this.config.valueSlider );\n\n\t\tthis.featureControllerMap.push( controllerInstance );\n\t\tthis.state.isValueSlider = true;\n\t}\n\n\tif ( this.$scope.hasClass( 'autocomplete' ) ) {\n\t\tif ( !this.config.autocomplete ) {\n\t\t\tthrow new Error( 'Missing Config for Autocomplete FormElement!' );\n\t\t}\n\t\tconst controllerInstance = new AutocompleteController().init( this.$scope, this.config.autocomplete );\n\n\t\tthis.featureControllerMap.push( controllerInstance );\n\t\tthis.state.isAutocomplete = true;\n\t}\n\n\tif ( this.$scope.hasClass( 'inline-editing' ) ) {\n\t\tconst controllerInstance = new InlineEditingController().init( this.$scope, this.config.inlineEditing || {} );\n\n\t\tthis.featureControllerMap.push( controllerInstance );\n\t\tthis.state.isInlineEditing = true;\n\t}\n\n\tif ( this.$scope.hasClass( 'select-replace' ) ) {\n\t\tconst controllerInstance = new SelectReplaceController().init( this.$scope, this.config.selectReplace || {} );\n\n\t\tthis.featureControllerMap.push( controllerInstance );\n\t\tthis.state.isSelectReplace = true;\n\t}\n\n\tif ( this.$scope.hasClass( 'clear-input' ) ) {\n\t\tconst controllerInstance = new ClearInputController().init( this.$scope, this.config.clearInput || {} );\n\n\t\tthis.featureControllerMap.push( controllerInstance );\n\t\tthis.state.isClearInput = true;\n\t}\n}\n\nfunction addHandler () {\n\tthis.$input.on( 'blur', () => {\n\t\tthis.$scope.trigger( 'blur' );\n\t} );\n}\n\n\nclass FormElementController extends AbstractController {\n\n\tconstructor () {\n\t\tsuper();\n\n\t\tthis.state = {};\n\t\tthis.featureControllerMap = [];\n\t}\n\n\t@floatingPlaceholderDecoratorInit\n\tinit ( $root, config = {} ) {\n\t\tthis.$scope = $root;\n\t\tthis.config = config;\n\n\t\tthis.$input = this.$scope.find( 'input' );\n\n\t\tcheckFeatures.call( this );\n\t\taddHandler.call( this );\n\t}\n\n\tdestroy () {\n\t\tfor ( let i = 0; i < this.featureControllerMap.length; i++ ) {\n\t\t\tconst\n\t\t\t\tcontroller = this.featureControllerMap[ i ];\n\t\t\t\n\t\t\tif ( controller && typeof controller.destroy === 'function' ) {\n\t\t\t\tcontroller.destroy();\n\t\t\t}\n\t\t}\n\t\tthis.state = {};\n\t\tthis.featureControllerMap = [];\n\t}\n\n}\n\nexport default FormElementController;\n\n\n\n// WEBPACK FOOTER //\n// ./js/forms/v2/controller/FormElement.controller.js","import $ from 'jquery';\n\nimport AbstractController from '../../../base/controller/Abstract.controller';\n\nimport 'pickadate/lib/compressed/picker.date';\n//import 'pickadate/lib/picker.date';\nimport { fasterdomPromised as fasterdom } from 'fasterdom';\n\nimport {IDENTIFIERS as FRAMEWORK_IDENTIFIERS} from './../../../framework/constants/Identifiers.const';\nimport { ResizeService, ScrollService } from \"device\";\n\nconst useragent = window.UserAgent;\n\nfunction checkMobile () {\n\tif ( !useragent.isMobile ) {\n\t\treturn fasterdom.mutateInstant( () => {\n\t\t\tif ( this.state.isDestroyed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.$input.attr( 'type', 'text' );\n\t\t\tthis.$input.pickadate( this.config );\n\t\t\tthis.picker = this.$input.pickadate( 'picker' );\n\t\t\tthis.disabled = false;\n\t\t\tthis.picker.on( 'set', ( context ) => {\n\t\t\t\tif ( context && context.select ) {\n\t\t\t\t\tconst e = document.createEvent('HTMLEvents');\n\n\t\t\t\t\te.initEvent('change', false, true);\n\t\t\t\t\tthis.$scope[0].dispatchEvent(e);\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t} else {\n\t\treturn Promise.reject();\n\t}\n}\n\nfunction addHandler () {\n\tthis\n\t\t::checkMobile()\n\t\t.then( () => {\n\t\t\tif ( !this.disabled && !this.state.isDestroyed && this.$trigger ) {\n\t\t\t\tthis.picker.on( 'open', ::this.calculateVerticalPositioning )\n\t\t\t\tthis.picker.on( 'open', ::this.calculateHorizontalPositioning )\n\t\t\t\tthis.picker.on( 'open', () => ScrollService.toElement( this.$scope ) );\n\t\t\t\tthis.$trigger.on( 'click', ( e ) => {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t$( '#page-wrapper' ).trigger( 'click' );\n\n\t\t\t\t\tif ( this.picker.get( 'open' ) ) {\n\t\t\t\t\t\tthis.picker.close();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.picker.open();\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\n}\n\nclass Datepicker extends AbstractController {\n\tdebug = false\n\n\tconstructor () {\n\t\tsuper();\n\n\t\tthis.disabled = true;\n\n\t\treturn this;\n\t}\n\n\tdestroy () {\n\t\tthis.logger.log( 'destroy ' + this._uid );\n\t\tthis.state.setDestroyed();\n\n\t\tif ( this.picker ) {\n\t\t\tthis.picker.stop();\n\t\t\tthis.$input.attr( 'type', 'date' );\n\t\t}\n\t\tthis.$trigger.off( 'click' );\n\t}\n\n\tinit ( $scope, config ) {\n\t\tif ( $scope.data( 'noJs' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.logger.log( 'init' );\n\t\tthis.state.setInitialized();\n\t\tthis.state.removeDestroyed();\n\n\t\tthis.$scope = $scope;\n\t\tthis.$input = this.$scope.find( 'input[type=date]' );\n\t\tthis.$trigger = this.$scope.find('[aria-controls=\"' + this.$input.attr('id') + '\"]');\n\n\t\tfasterdom.measureInstant( () => {\n\t\t\tthis.offScreenContent = $( FRAMEWORK_IDENTIFIERS.OFF_SCREEN.CONTENT );\n\t\t} );\n\n\t\tlet selectYears = true;\n\n\t\tif ( config.min && !config.selectYears ) {\n\t\t\tselectYears = ( config.max ? config.max[ 0 ] : ( new Date() ).getFullYear() ) - config.min[ 0 ];\n\t\t} else if ( config.selectYears ) {\n\t\t\tselectYears = config.selectYears;\n\t\t}\n\n\t\tif ( config.max && Array.isArray( config.max ) ) {\n\t\t\tconst maxDate = new Date( config.max[ 0 ], config.max[ 1 ], config.max[ 2 ] ),\n\t\t\t\t\t\ttoday = new Date();\n\n\t\t\tif ( maxDate.getTime() < today.getTime() ) {\n\t\t\t\tfasterdom.mutateInstant( () => {\n\t\t\t\t\tthis.$trigger.addClass( 'today-out-of-range' );\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\n\t\tif ( typeof config.today !== 'undefined' && !config.today ) {\n\t\t\tfasterdom.mutateInstant( () => {\n\t\t\t\tthis.$scope.addClass( 'datepicker--no-today-button' );\n\t\t\t} );\n\t\t}\n\n\t\tthis.config = Object.assign( {}, config, {\n\t\t\tselectYears : selectYears,\n\t\t\tselectMonths : true,\n\t\t\tclear : false,\n\t\t\tclose : false,\n\t\t\teditable : true\n\t\t\t// container : this.calButton\n\t\t} );\n\n\t\tthis::addHandler();\n\n\t\treturn this;\n\t}\n\n\tcalculateHorizontalPositioning ( e ) {\n\t\t\tlet leftOffset;\n\t\t\tlet width;\n\t\t\tconst pickerHolder = this.$scope.find( $('.picker__holder') );\n\n\t\t\tfasterdom.measureInstant( () => {\n\t\t\t\t\tleftOffset = pickerHolder.offset().left;\n\t\t\t\t\twidth = pickerHolder.width()\n\n\t\t\t\t\tif ( !pickerHolder.is( ':visible' ) ) {\n\t\t\t\t\t\t\twindow.setTimeout( () => {\n\t\t\t\t\t\t\t\t\tResizeService.getCurrent().then( ::this.calculateHorizontalPositioning );\n\t\t\t\t\t\t\t}, 200 );\n\t\t\t\t\t}\n\t\t\t} );\n\n\t\t\tfasterdom.mutateInstant( () => {\n\n\t\t\t\t\tif ( leftOffset < 0 ) {\n\t\t\t\t\t\t\tpickerHolder.parent().addClass( 'picker--left' ).removeClass( 'picker--right' );\n\t\t\t\t\t}\n\n\t\t\t} );\n\n\t}\n\n\tcalculateVerticalPositioning ( e ) {\n\t\tlet displayAbove = false;\n\n\t\tfasterdom.measureInstant( () => {\n\t\t\tconst\n\t\t\t\tpickerHeight = this.$scope.find( 'picker__holder' ).outerHeight(),\n\t\t\t\tcontainerBottom = this.$scope.offset().top + this.$scope.outerHeight();\n\n\t\t\tif ( containerBottom + pickerHeight > this.offScreenContent.outerHeight() ) {\n\t\t\t\tdisplayAbove = true;\n\t\t\t}\n\t\t} );\n\n\t\tfasterdom.measureInstant( () => {\n\t\t\tif ( displayAbove ) {\n\t\t\t\tthis.$scope.addClass( 'datepicker--top' );\n\t\t\t} else {\n\t\t\t\tthis.$scope.removeClass( 'datepicker--top' );\n\t\t\t}\n\t\t} );\n\t}\n\n}\n\nexport default Datepicker;\n\n\n\n// WEBPACK FOOTER //\n// ./js/forms/v2/controller/Datepicker.controller.js","import AbstractController from '../../../base/controller/Abstract.controller.js';\nimport dom from 'fasterdom';\n\n/**\n * Toggle input type between password and text\n * @return {void}\n */\nfunction handleToggleClick () {\n\tif ( this.isHidden ) {\n\t\tdom.mutateInstant( () => {\n\t\t\tthis.$input.attr( 'type', 'text' );\n\t\t\tthis.$trigger.attr( 'aria-selected', '' );\n\t\t\tthis.isHidden = false;\n\t\t} );\n\t} else {\n\t\tdom.mutateInstant( () => {\n\t\t\tthis.$input.attr( 'type', 'password' );\n\t\t\tthis.$trigger.removeAttr( 'aria-selected' );\n\t\t\tthis.isHidden = true;\n\t\t} );\n\t}\n}\n\n/**\n * Toggle 'empty' css class in relation to the password's input value\n * - update isEmpty state\n * - toggle 'empty' css class\n * return {void}\n */\nfunction handleInput () {\n\tdom.measureInstant( () => {\n\t\tthis.isEmpty = !this.$input.val();\n\t} );\n\n\tdom.mutateInstant( () => {\n\t\tif ( this.isEmpty ) {\n\t\t\tthis.$input.addClass( 'empty' );\n\t\t} else {\n\t\t\tthis.$input.removeClass( 'empty' );\n\t\t}\n\t} );\n}\n\n/**\n * Adds eventlistener to password trigger button and input element\n * @return {void}\n */\nfunction addHandler () {\n\tthis.$trigger.on( 'click', handleToggleClick.bind( this ) );\n\tthis.$input.on( 'change', handleInput.bind( this ) );\n}\n\n/**\n * Class representing an password input element instance.\n * @extends { AbstractController }\n */\nclass PasswordController extends AbstractController {\n\n\tconstructor () {\n\t\tsuper();\n\t}\n\n\tinit ( $root, config = {} ) {\n\t\tif ( $root.data( 'noJs' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.$scope = $root;\n\t\tthis.config = config;\n\n\t\tthis.$input = this.$scope.find( 'input[type=password]' );\n\t\tthis.$trigger = this.$scope.find( '.password-trigger' );\n\t\tthis.isHidden = true;\n\n\t\thandleInput.call( this );\n\t\taddHandler.call( this );\n\n\t\treturn this;\n\t}\n}\n\nexport default PasswordController;\n\n\n\n// WEBPACK FOOTER //\n// ./js/forms/v2/controller/Password.controller.js","import AbstractController from '../../../base/controller/Abstract.controller.js';\n\nimport noUiSlider from 'nouislider';\n// import fasterdom from 'fasterdom';\n\n// const sliderOpts = {\n// \twrapperClass : 'slider-wrapper',\n// \tslideClass : 'slider-slide',\n// \tpagination : '.slider-pagination',\n// \tnextButton : '.slider-next',\n// \tprevButton : '.slider-prev',\n// \tslidesPerView : 1,\n// \tpaginationClickable : true,\n// \tspeed : 400,\n// \tloop : false,\n// \tautoplay : 5000\n// };\n\n/**\n * Class representing a slider instance.\n * Controls the state of the slider navigation.\n * Controls slider behavior.\n * @extends { AbstractController }\n */\nclass ValueSliderController extends AbstractController {\n\n\tconstructor () {\n\t\tsuper();\n\n\t\tthis.$scope = null;\n\n\t\tthis.valueSlider = null;\n\t\tthis.valueSliderInput = null;\n\t\t// this.valueSlider = null;\n\t\t// this.opts = $.extend( true, {}, sliderOpts );\n\t}\n\n\t/**\n\t * Initialises the controller.\n\t * Has to be called after ready event.\n\t *\n\t * @param { object } $root - jQuery wrapped DOM node\n\t * @returns { void }\n\t * @public\n\t */\n\tinit ( $root ) {\n\t\tif ( $root.data( 'noJs' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.$scope = $root;\n\n\t\tthis.valueSlider = this.$scope.find( '.value-slider-container' ).get( 0 );\n\t\tthis.valueSliderInput = this.$scope.find( 'input' );\n\n\t\tnoUiSlider.create( this.valueSlider, {\n\t\t\tstart : parseInt( this.valueSliderInput.val() ) || 0,\n\t\t\tstep : 10,\n\t\t\trange : {\n\t\t\t\t'min' : 0,\n\t\t\t\t'max' : 100\n\t\t\t},\n\t\t\tformat : {\n\t\t\t\tto : function ( value ) {\n\t\t\t\t\treturn parseInt( value ) + ' km';\n\t\t\t\t},\n\t\t\t\tfrom : function ( value ) {\n\t\t\t\t\treturn parseInt( value );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\tthis.valueSlider.noUiSlider.on( 'update', ( values, handle ) => {\n\t\t\tthis.valueSliderInput.val( values[ handle ] );\n\t\t} );\n\n\t\tthis.valueSliderInput.on( 'change', ( e ) => {\n\n\t\t\tconst v = parseInt( this.valueSliderInput.val() ) || 0;\n\t\t\tthis.valueSlider.noUiSlider.set( [ v ] );\n\t\t} );\n\n\t}\n}\n\n/**\n * @public\n * @return {SliderController} SliderController class\n */\nexport default ValueSliderController;\n\n\n\n// WEBPACK FOOTER //\n// ./js/forms/v2/controller/ValueSlider.controller.js","import AbstractController from '../../../base/controller/Abstract.controller';\r\nimport fasterdom from 'fasterdom';\r\nimport ClickOutside from '../../../helper/clickoutside.class';\r\nimport debounce from 'lodash.debounce';\r\nimport $ from 'jquery';\r\n\r\nimport KEY_CODES from '../../../modules/repositories/Keycode.repository';\r\n\r\n/**\r\n * hide suggestions\r\n * @returns {void}\r\n */\r\nfunction hideSuggestions () {\r\n\tif ( !this.visible ) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tthis.clickoutside.destroy();\r\n\r\n\tfasterdom.mutate( () => {\r\n\t\tthis.visible = false;\r\n\t\tthis.$scope.removeClass( 'suggestions-open' );\r\n\t} );\r\n}\r\n\r\n/**\r\n * show suggestions\r\n * @returns {void}\r\n */\r\nfunction showSuggestions () {\r\n\tif ( this.visible ) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tthis.clickoutside = new ClickOutside( this.$scope, hideSuggestions.bind( this ) );\r\n\r\n\tfasterdom.mutate( () => {\r\n\t\tthis.visible = true;\r\n\t\tthis.$scope.addClass( 'suggestions-open' );\r\n\t} );\r\n}\r\n\r\n/**\r\n * Handle the click on a suggestion in the suggestion list\r\n * @param {Event} e Event sent by jQuery with the click handler\r\n * @return {void}\r\n */\r\nfunction handleClickOnSuggestion ( e ) {\r\n\tconst text = $( e.target ).text();\r\n\r\n\tif ( $( e.target ).is( '.empty-message' ) ) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tthis._selectSuggestion( text );\r\n}\r\n\r\n/**\r\n * @private\r\n * @param { object } e - input event\r\n * @returns { void }\r\n */\r\nfunction handleInput ( e ) {\r\n\tconst inputValue = e.target.value;\r\n\r\n\tif ( inputValue.length < 3 ) {\r\n\t\tif ( this.visible ) {\r\n\t\t\thideSuggestions.call( this );\r\n\t\t}\r\n\r\n\t\treturn;\r\n\t}\r\n\r\n\tthis.makeSuggestions();\r\n}\r\n\r\n/**\r\n * emits blur event on root dom node\r\n * @param {object} e - blur event\r\n * @returns {void}\r\n */\r\nfunction emitBlur ( e ) {\r\n\tif ( this.madeSuggestion ) {\r\n\t\tthis.$scope.trigger( 'blur' );\r\n\t\tthis.madeSuggestion = false;\r\n\t}\r\n}\r\n\r\n/**\r\n * handles enter keypress\r\n * @return {void}\r\n */\r\nfunction handleEnter () {\r\n\tconst $selectedSuggestion = this.$suggestions.find( '.selected' ),\r\n\t text = $selectedSuggestion.text();\r\n\r\n\tthis._selectSuggestion( text );\r\n}\r\n\r\n/**\r\n * selects suggestion by given direction from keyboard\r\n * @param {integer} direction - increases (1) or decrease (-1) index of selected option\r\n * @returns {void}\r\n */\r\nfunction selectOptionByKeyboard ( direction ) {\r\n\tconst $selectedSuggestion = this.$suggestions.find( '.selected' ),\r\n\t totalSuggestions = this.$suggestions.children().length;\r\n\r\n\t$selectedSuggestion.removeClass( 'selected' );\r\n\tlet newIndex = $selectedSuggestion.index() + direction;\r\n\r\n\tif ( newIndex >= totalSuggestions ) {\r\n\t\tnewIndex = 0;\r\n\t}\r\n\r\n\tif ( newIndex < 0 ) {\r\n\t\tnewIndex = totalSuggestions - 1;\r\n\t}\r\n\r\n\tif ( $selectedSuggestion.length ) {\r\n\t\tthis.$suggestions.children().eq( newIndex ).addClass( 'selected' );\r\n\t} else {\r\n\t\tthis.$suggestions.children().eq( 0 ).addClass( 'selected' );\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * handles keydown on input field\r\n * @param {object} e - keydown event\r\n * @returns {boolean} - execute the rest of handlers\r\n */\r\nfunction handleKeydown ( e ) {\r\n\tconst keyCode = e.keyCode || e.which;\r\n\r\n\t// if ( keyCode === KEYCODES.TAB ) {\r\n\t// \thideCustomSelectOptions.call( this );\r\n\t// \treturn true;\r\n\t// }\r\n\r\n\tswitch ( keyCode ) {\r\n\t\tcase KEY_CODES.UP:\r\n\t\t\tselectOptionByKeyboard.call( this, -1 );\r\n\t\t\te.preventDefault();\r\n\t\t\tbreak;\r\n\t\tcase KEY_CODES.DOWN:\r\n\t\t\tselectOptionByKeyboard.call( this, 1 );\r\n\t\t\te.preventDefault();\r\n\t\t\tbreak;\r\n\t\tcase KEY_CODES.ENTER:\r\n\t\t\thandleEnter.call( this );\r\n\t\t\te.preventDefault();\r\n\t\t\tbreak;\r\n\t\tdefault:\r\n\t\t\tbreak;\r\n\t}\r\n}\r\n\r\nfunction showEmptyMessage () {\r\n\tthis.$suggestions.empty();\r\n\r\n\t$( '<li class=\"empty-message\"/>' ).text( this.emptyMessage ).appendTo( this.$suggestions );\r\n\r\n\tshowSuggestions.call( this );\r\n}\r\n\r\n/**\r\n * Class representing autocompletion for an input field\r\n * @extends { AbstractController }\r\n */\r\nclass AutocompleteController extends AbstractController {\r\n\r\n\tconstructor ( autoSelectOne = false ) {\r\n\t\tsuper();\r\n\t\tthis._autoSelectOne = autoSelectOne;\r\n\t}\r\n\r\n\t/**\r\n\t * Initialises the controller.\r\n\t * Has to be called after ready event.\r\n\t *\r\n\t * @param { jQuery } $root - jQuery wrapped DOM node\r\n\t * @param { GatewayService } gateway - Service to connect to a gateway\r\n\t * @public\r\n\t * @return { LAS01Controller } instance\r\n\t */\r\n\tinit ( $root, gateway ) {\r\n\t\tif ( $root.data( 'noJs' ) ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.$root = $root;\r\n\t\tthis.$input = $root.find( 'input' );\r\n\t\tthis.$suggestions = $root.find( '.suggestions ol' );\r\n\t\tthis.visible = false;\r\n\t\tthis.gateway = gateway;\r\n\r\n\t\tthis.emptyMessage = $root.data( 'empty-message' );\r\n\r\n\t\tthis.madeSuggestion = false;\r\n\r\n\t\tthis.$input.on( 'input', debounce( handleInput.bind( this ), 250 ) );\r\n\t\tthis.$input.on( 'blur', debounce( emitBlur.bind( this ), 250 ) );\r\n\t\tthis.$input.on( 'keydown', handleKeydown.bind( this ) );\r\n\t\tthis.$root.on( 'click', '.suggestions li', handleClickOnSuggestion.bind( this ) );\r\n\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * handles selection of a suggestion\r\n\t * @param { String } text - Text of the seleted option\r\n\t * @returns {void}\r\n\t */\r\n\t_selectSuggestion ( text ) {\r\n\t\tthis.$scope.trigger( 'select-suggestion' );\r\n\t\tthis.$input.val( text );\r\n\t\thideSuggestions.call( this );\r\n\t}\r\n\r\n\t/**\r\n\t * gets suggestions from gateway and creates dom nodes\r\n\t *\r\n\t * @param { String } query - Query text\r\n\t * @returns {void}\r\n\t */\r\n\tmakeSuggestions ( query ) {\r\n\r\n\t\tlet value = this.$input.val();\r\n\r\n\t\tif ( query ) {\r\n\t\t\tvalue = query;\r\n\t\t}\r\n\r\n\t\tif ( !this.gateway || !this.gateway.getSuggestions ) {\r\n\t\t\tshowEmptyMessage.call( this );\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.gateway.getSuggestions( value ).then( ( suggestions ) => {\r\n\t\t\tif ( !suggestions.length ) {\r\n\t\t\t\tshowEmptyMessage.call( this );\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.$suggestions.empty();\r\n\t\t\t// if ( suggestions.length === 1 && this._autoSelectOne ) {\r\n\t\t\t// \tthis._selectSuggestion( suggestions[ 0 ] );\r\n\t\t\t// \treturn;\r\n\t\t\t// }\r\n\t\t\t//\r\n\t\t\t// if ( suggestions.length > 4 ) {\r\n\t\t\t// \tthis.$suggestions.addClass( 'scroll' );\r\n\t\t\t// } else {\r\n\t\t\t// \tthis.$suggestions.removeClass( 'scroll' );\r\n\t\t\t// }\r\n\r\n\t\t\t$.each( suggestions, ( i ) => {\r\n\t\t\t\t$( '<li/>' ).text( suggestions[ i ] ).appendTo( this.$suggestions );\r\n\t\t\t} );\r\n\t\t\tshowSuggestions.call( this );\r\n\t\t} ).catch( showEmptyMessage.bind( this ) );\r\n\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Initialises the controller.\r\n\t * Has to be called after ready event.\r\n\t *\r\n\t * @param { jQuery } $root - jQuery wrapped DOM node\r\n\t * @public\r\n\t * @return { LAS01Controller } instance\r\n\t */\r\n\tinit ( $root, config ) {\r\n\t\tthis.$scope = $root;\r\n\t\tthis.$input = $root.find( 'input' );\r\n\t\tthis.$suggestions = $root.find( '.suggestions ol' );\r\n\t\tthis.visible = false;\r\n\t\tthis.gateway = config.gateway;\r\n\r\n\t\tthis.emptyMessage = config.emptyMsg;\r\n\r\n\t\tthis.madeSuggestion = false;\r\n\r\n\t\tthis.$input.on( 'input', debounce( handleInput.bind( this ), 250 ) );\r\n\t\tthis.$input.on( 'blur', debounce( emitBlur.bind( this ), 250 ) );\r\n\t\tthis.$input.on( 'keydown', handleKeydown.bind( this ) );\r\n\t\tthis.$scope.on( 'click', '.suggestions li', handleClickOnSuggestion.bind( this ) );\r\n\r\n\t\treturn this;\r\n\t}\r\n\r\n}\r\n\r\nexport default AutocompleteController;\r\n\n\n\n// WEBPACK FOOTER //\n// ./js/forms/v2/controller/Autocomplete.controller.js","import AbstractController from '../../../base/controller/Abstract.controller';\r\n\r\nimport fasterdom from 'fasterdom';\r\n\r\n/**\r\n * Enables inline editing, sets necessary classes and properties\r\n * @return {void}\r\n */\r\nfunction enable () {\r\n\r\n\tfasterdom.mutateInstant( () => {\r\n\t\tthis.$scope.removeClass( 'inline-editing--disabled' );\r\n\t\tthis.$scope.removeClass( 'inline-editing--valid' );\r\n\t\tthis.$input.prop( 'readonly', false );\r\n\t\tthis.$input.trigger( 'focus' );\r\n\t\tthis.$scope.trigger( 'enable-inline-editing' );\r\n\t\tthis.disabled = false;\r\n\t} );\r\n}\r\n\r\n/**\r\n * Disables inline editing, sets necessary classes and properties\r\n * @return {void}\r\n */\r\nfunction disable () {\r\n\tfasterdom.measureInstant( () => {\r\n\r\n\t\tif ( this.$input.val() !== '' ) {\r\n\t\t\tfasterdom.mutateInstant( () => {\r\n\t\t\t\tthis.$scope.addClass( 'inline-editing--disabled' );\r\n\t\t\t\tthis.$input.prop( 'readonly', true );\r\n\t\t\t\tthis.$scope.trigger( 'disable-inline-editing' );\r\n\t\t\t\tthis.$input.get( 0 ).value = this.$input.val();\r\n\t\t\t\tthis.disabled = true;\r\n\t\t\t} );\r\n\t\t}\r\n\t} );\r\n}\r\n\r\n/**\r\n * Toggles inline editing, uses {@link enable} and {@link disable}\r\n * @return {void}\r\n */\r\nfunction toggleState () {\r\n\r\n\tif ( this.disabled ) {\r\n\t\tenable.call( this );\r\n\t} else {\r\n\t\tdisable.call( this );\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Class representing an inline editing input field\r\n * @extends { AbstractController }\r\n */\r\nclass InlineEditingController extends AbstractController {\r\n\r\n\tconstructor () {\r\n\t\tsuper();\r\n\t}\r\n\r\n\t/**\r\n\t * Initialises the controller.\r\n\t * Has to be called after ready event.\r\n\t *\r\n\t * @public\r\n\t * @param {jQuery} $scope jQuery wrapped DOM node\r\n\t * @return {InlineEditingController} Current instance of InlineEditingController\r\n\t */\r\n\tinit ( $scope ) {\r\n\t\tif ( $scope.data( 'noJs' ) ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tthis.$scope = $scope;\r\n\t\tthis.$input = $scope.find( 'input' );\r\n\t\tthis.$trigger = $scope.find( '.inline-editing-trigger' );\r\n\t\tthis.disabled = $scope.is( '.inline-editing--disabled' );\r\n\r\n\t\tthis.$trigger.on( 'click', toggleState.bind( this ) );\r\n\t\tthis.$scope.on( 'select-suggestion', disable.bind( this ) );\r\n\t\tthis.$scope.on( 'blur', disable.bind( this ) );\r\n\r\n\t\treturn this;\r\n\t}\r\n\r\n}\r\n\r\nexport default InlineEditingController;\r\n\n\n\n// WEBPACK FOOTER //\n// ./js/forms/v2/controller/InlineEditing.controller.js","import AbstractController from '../../../base/controller/Abstract.controller.js';\nimport fasterdom from 'fasterdom';\n\n/**\n * Set clear button disabled state depending if input value is empty or not\n *\n * @private\n * @param { object } e - input event or jQuery wrapped DOM node\n * @returns { void }\n */\nfunction handleInput ( e ) {\n\tconst inputValue = e.target ?\n\t e.target.value :\n\t e.val();\n\n\tfasterdom.mutateInstant( () => {\n\t\tthis.$trigger.attr( 'disabled', inputValue.length < 1 ?\n\t\t true :\n\t\t null );\n\t} );\n}\n\n/**\n * Add event listener to input and clear button\n *\n * @private\n * @returns { void }\n */\nfunction addHandler () {\n\n\tthis.$input.on( 'input', handleInput.bind( this ) );\n\n\tthis.$trigger.on( 'click', () => {\n\t\tfasterdom.mutateInstant( () => {\n\t\t\tthis.$input.val( '' );\n\t\t\tthis.$trigger.attr( 'disabled', true );\n\t\t} );\n\t} );\n}\n\n/**\n * Class representing clear function for an form control element\n * @extends { AbstractController }\n */\nclass ClearInputController extends AbstractController {\n\n\tconstructor () {\n\t\tsuper();\n\t}\n\n\tinit ( $root, config = {} ) {\n\t\tif ( $root.data( 'noJs' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.$scope = $root;\n\t\tthis.config = config;\n\n\t\tthis.$input = this.$scope.find( '.form-control__field' ).not( '[type=hidden]' );\n\t\tthis.$trigger = this.$scope.find( '.clear-trigger' );\n\n\t\thandleInput.call( this, this.$input );\n\t\taddHandler.call( this );\n\t}\n}\n\nexport default ClearInputController;\n\n\n\n// WEBPACK FOOTER //\n// ./js/forms/v2/controller/ClearInput.controller.js","import AbstractController from '../../../base/controller/Abstract.controller';\r\nimport fasterdom, { fasterdomPromised } from 'fasterdom';\r\nimport $ from 'jquery';\r\nimport ClickOutside from '../../../helper/clickoutside.class';\r\nimport KEY_CODES from '../../../modules/repositories/Keycode.repository';\r\n\r\nconst userAgent = window.UserAgent;\r\n\r\n/**\r\n * refreshes visible placeholder text of our custom selecta\r\n * @param {string} newText - Text which will be displayed\r\n * @return {void}\r\n */\r\nfunction refreshCustomSelectText ( newText ) {\r\n\tfasterdom.mutateInstant( () => this.$customSelect.text( !newText ? this.placeholder : newText ) );\r\n}\r\n\r\n/**\r\n * handles change event to set new value as displayed text\r\n *\r\n * @private\r\n * @returns { void }\r\n */\r\nfunction handleChange () {\r\n\tlet newText = '';\r\n\tconst selectedOptions = this.$nativeSelect.find( 'option:selected' );\r\n\t\r\n\tfasterdom.measureInstant( () => {\r\n\r\n\t\tif ( selectedOptions.length < 2 ) {\r\n\t\t\tnewText = selectedOptions.text();\r\n\t\t} else {\r\n\t\t\tnewText = selectedOptions.length + ' selected options';\r\n\t\t}\r\n\r\n\t\trefreshCustomSelectText.call( this, newText );\r\n\t} );\r\n\r\n}\r\n\r\n/**\r\n * hides the custom select options\r\n * @return {boolean} updated\r\n */\r\nfunction hideCustomSelectOptions () {\r\n\tif ( this.isDisabled || !this.isOpen ) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tif ( this.clickoutside ) {\r\n\t\tthis.clickoutside.destroy();\r\n\t}\r\n\r\n\tfasterdom.mutate( () => {\r\n\t\tthis.$nativeSelect.blur().removeAttr( 'aria-expanded' );\r\n\t\tthis.isOpen = false;\r\n\t} );\r\n\r\n\treturn true;\r\n}\r\n\r\n/**\r\n * shows the custom select options\r\n * @return {boolean} updated\r\n */\r\nfunction showCustomSelectOptions () {\r\n\tif ( this.isDisabled || this.isOpen ) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tfasterdom.measure( () => {\r\n\t\tconst scrollTop = $( document ).scrollTop(),\r\n\t\t\t\t\tviewportPosition = this.$root.offset().top - scrollTop + this.$root.outerHeight(),\r\n\t\t\t\t\tviewportHeight = $( window ).height(),\r\n\t\t\t\t\tminHeight = 160,\r\n\t\t\t\t\tmaxHeight = 320;\r\n\r\n\t\tlet height = viewportHeight - viewportPosition - 20;\r\n\r\n\t\tconst difference = minHeight - height; // eslint-disable-line one-var\r\n\r\n\t\tif ( height < minHeight ) {\r\n\t\t\t$( 'html, body' ).animate( { scrollTop : scrollTop + difference } );\r\n\t\t\theight = minHeight;\r\n\t\t}\r\n\r\n\t\tif ( height > maxHeight ) {\r\n\t\t\theight = maxHeight;\r\n\t\t}\r\n\r\n\t\tfasterdom.mutate( () => {\r\n\t\t\tthis.$nativeSelect.focus().attr( 'aria-expanded', '' );\r\n\t\t\tthis.$customOptionsWrapper.css( 'max-height', height );\r\n\t\t\tthis.isOpen = true;\r\n\t\t} );\r\n\t} );\r\n\r\n\tthis.clickoutside = new ClickOutside( this.$customOptions, hideCustomSelectOptions.bind( this ) );\r\n\r\n\treturn true;\r\n}\r\n\r\n/**\r\n * validates key of a selected option by keyboard (ignores disabled options etc)\r\n * @param {integer} nextSelectedKey - index of option which will be selected\r\n * @param {integer} optionCount - total length of options\r\n * @param {integer} direction - increases (1) or decrease (-1) nextSelectedKey if its not valid\r\n * @returns {integer} nextSelectedKey - returns valid key of next selectable option\r\n */\r\nfunction validateSelectKey ( nextSelectedKey, optionCount, direction ) {\r\n\tlet newSelectedKey = nextSelectedKey;\r\n\r\n\tif ( nextSelectedKey >= optionCount ) {\r\n\t\tnewSelectedKey = 0;\r\n\t}\r\n\r\n\tif ( nextSelectedKey < 0 ) {\r\n\t\tnewSelectedKey = optionCount - 1;\r\n\t}\r\n\r\n\tif ( this.$options[ newSelectedKey ].disabled ) {\r\n\t\tnewSelectedKey += direction;\r\n\t\treturn validateSelectKey.call( this, newSelectedKey, optionCount, direction );\r\n\t}\r\n\r\n\treturn newSelectedKey;\r\n}\r\n\r\nfunction buildSelectedOptionsString () {\r\n\treturn this.selectedOptions.reduce( ( val, item ) => val + ( val === '' ? '' : ', ' ) + item.text, '' );\r\n}\r\n\r\nfunction clearSelectedOptions () {\r\n\tthis.selectedOptions = [];\r\n}\r\n\r\nfunction addSelectedOption ( selectedIndex, $selectedCustomOption, $selectedNativeOption ) {\r\n\tthis.selectedOptions.push( {\r\n\t\tindex : selectedIndex,\r\n\t\ttext : $selectedNativeOption.text()\r\n\t} );\r\n\r\n\treturn fasterdomPromised.mutateInstant( () => {\r\n\t\t$selectedNativeOption.prop( 'selected', true );\r\n\t\t$selectedCustomOption.addClass( 'selected' );\r\n\t} );\r\n}\r\n\r\nfunction removeSelectedOption ( selectedIndex, $selectedCustomOption, $selectedNativeOption ) {\r\n\tthis.selectedOptions = this.selectedOptions.filter( item => item.index !== selectedIndex );\r\n\r\n\treturn fasterdomPromised.mutateInstant( () => {\r\n\t\t$selectedNativeOption.prop( 'selected', false );\r\n\t\t$selectedCustomOption.removeClass( 'selected' );\r\n\t} );\r\n}\r\n\r\nasync function multipleSelectOption ( selectedIndex ) {\r\n\tconst\r\n\t\t$selectedCustomOption = this.$customOptions.find( '[data-key=' + selectedIndex + ']' ),\r\n\t\t$selectedNativeOption = $( this.$options.get( selectedIndex ) );\r\n\r\n\tif ( $selectedCustomOption.hasClass( 'selected' ) ) {\r\n\t\tawait this::removeSelectedOption( selectedIndex, $selectedCustomOption, $selectedNativeOption );\r\n\t} else {\r\n\t\tawait this::addSelectedOption( selectedIndex, $selectedCustomOption, $selectedNativeOption );\r\n\t}\r\n\r\n\tthis.$nativeSelect.trigger( 'change' );\r\n\r\n\tconst\r\n\t\tnativeChangeEvent = document.createEvent( 'Event' );\r\n\r\n\tnativeChangeEvent.initEvent( 'change', false, true );\r\n\r\n\tthis.$nativeSelect[ 0 ].dispatchEvent( nativeChangeEvent );\r\n\r\n\trefreshCustomSelectText.call( this, this::buildSelectedOptionsString() );\r\n}\r\n\r\n/**\r\n * selects the option with given index\r\n * @param {integer} selectedIndex - index of option which will be selected\r\n * @returns {void}\r\n */\r\nfunction selectOption ( selectedIndex ) {\r\n\tif ( typeof selectedIndex === 'undefined' ) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tif ( this.isMultiSelect ) {\r\n\t\tthis::multipleSelectOption( selectedIndex );\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst $selectedOptions = this.$customOptions.find( '.selected' ),\r\n\t\t\t\t$clickedCustomOption = this.$customOptions.find( '[data-key=' + selectedIndex + ']' ),\r\n\t\t\t\t$clickedNativeOption = $( this.$options.get( selectedIndex ) ),\r\n\t\t\t\tnewText = $clickedNativeOption.text();\r\n\r\n\tfasterdom.mutateInstant( () => {\r\n\t\tthis.$options.prop( 'selected', false );\r\n\t\t$selectedOptions.removeClass( 'selected' );\r\n\t\t$clickedNativeOption.prop( 'selected', true );\r\n\t\t$clickedCustomOption.addClass( 'selected' );\r\n\t\tthis.$nativeSelect.trigger( 'change' );\r\n\t\t\r\n\t\tconst\r\n\t\t\tnativeChangeEvent = document.createEvent( 'Event' );\r\n\r\n\t\tnativeChangeEvent.initEvent( 'change', false, true );\r\n\r\n\t\tthis.$nativeSelect[ 0 ].dispatchEvent( nativeChangeEvent );\r\n\t} );\r\n\trefreshCustomSelectText.call( this, newText );\r\n}\r\n\r\n/**\r\n * selects option by given direction from keyboard\r\n * @param {integer} direction - increases (1) or decrease (-1) index of selected option\r\n * @returns {void}\r\n */\r\nfunction selectOptionByKeyboard ( direction ) {\r\n\tconst $selectedOption = this.$customOptions.find( '.selected' ),\r\n\t\t\t\tselectedKey = $selectedOption.data( 'key' ),\r\n\t\t\t\toptionCount = this.$options.length;\r\n\r\n\tlet nextSelectedKey = 0;\r\n\r\n\tif ( !selectedKey ) {\r\n\t\tnextSelectedKey = 1;\r\n\t} else {\r\n\t\tnextSelectedKey = selectedKey + direction;\r\n\t}\r\n\r\n\tselectOption.call( this, validateSelectKey.call( this, nextSelectedKey, optionCount, direction ) );\r\n\r\n}\r\n\r\n/**\r\n * handles enter keypress\r\n * @return {void}\r\n */\r\nfunction handleEnter () {\r\n\thideCustomSelectOptions.call( this );\r\n}\r\n\r\n/**\r\n * handles keydown on select\r\n * @param {object} e - keydown event\r\n * @returns {boolean} - execute the rest of handlers\r\n */\r\nfunction handleKeydown ( e ) {\r\n\tif ( this.isDisabled || !this.isOpen ) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tconst keyCode = e.keyCode || e.which;\r\n\r\n\tif ( keyCode === KEY_CODES.TAB ) {\r\n\t\thideCustomSelectOptions.call( this );\r\n\t\treturn true;\r\n\t}\r\n\r\n\te.preventDefault();\r\n\r\n\tswitch ( keyCode ) {\r\n\r\n\t\tcase KEY_CODES.UP:\r\n\t\t\tselectOptionByKeyboard.call( this, -1 );\r\n\t\t\tbreak;\r\n\t\tcase KEY_CODES.DOWN:\r\n\t\t\tselectOptionByKeyboard.call( this, 1 );\r\n\t\t\tbreak;\r\n\t\tcase KEY_CODES.ENTER:\r\n\t\t\thandleEnter.call( this );\r\n\t\t\tbreak;\r\n\t\tdefault:\r\n\t\t\tbreak;\r\n\t}\r\n\r\n\treturn false;\r\n}\r\n\r\n/**\r\n * handles mousedown event to prevent the native select behavior\r\n *\r\n * @private\r\n * @param {object} e - mousedown event\r\n * @returns {void}\r\n */\r\nfunction handleMousedown ( e ) {\r\n\te.preventDefault();\r\n}\r\n\r\n/**\r\n * handles click event to open (and close) custom select dropdown\r\n *\r\n * @param {object} e - click event\r\n * @returns {void}\r\n */\r\nfunction handleClick ( e ) {\r\n\te.preventDefault();\r\n\r\n\tif ( this.isOpen ) {\r\n\t\thideCustomSelectOptions.call( this );\r\n\t} else {\r\n\t\tshowCustomSelectOptions.call( this );\r\n\t}\r\n}\r\n\r\n/**\r\n * handles click on a custom option\r\n * @param {object} e - click event\r\n * @returns {void}\r\n */\r\nfunction handleCustomOptionClick ( e ) {\r\n\te.preventDefault();\r\n\r\n\tfasterdom.measure( () => {\r\n\t\tconst $clickedOption = $( e.target ),\r\n\t\t\t\t\tselectedIndex = $clickedOption.data( 'key' );\r\n\r\n\t\tif ( !this.isMultiSelect ) {\r\n\t\t\thideCustomSelectOptions.call( this );\r\n\t\t}\r\n\t\tselectOption.call( this, selectedIndex );\r\n\t} );\r\n}\r\n\r\n/**\r\n * generates html code and adds events for custom options\r\n * @return {void}\r\n */\r\nfunction generateCustomOptions () {\r\n\tconst $customOptions = $( '<div class=\"custom-options\"></div>' ),\r\n\t\t\t\t$customOptionsWrapper = $( '<div class=\"custom-options-wrapper\"></div>' );\r\n\r\n\t$customOptions.append( $customOptionsWrapper );\r\n\r\n\t$.each( this.$options, ( index, option ) => {\r\n\t\tconst $option = $( option );\r\n\r\n\t\tif ( !$option.attr( 'disabled' ) ) {\r\n\t\t\tconst $customOpt = $( '<div class=\"option\" data-key=\"' + index + '\"><span>' + $option.text() + '</span></div>' );\r\n\r\n\t\t\t$customOpt.on( 'click', handleCustomOptionClick.bind( this ) );\r\n\t\t\tfasterdom.mutateInstant( () => $customOptionsWrapper.append( $customOpt ) );\r\n\t\t}\r\n\t} );\r\n\r\n\tthis.$customOptions = $customOptions;\r\n\tthis.$customOptionsWrapper = $customOptionsWrapper;\r\n\tfasterdom.mutateInstant( () => this.$customSelect.after( $customOptions ) );\r\n}\r\n\r\n/**\r\n * Class representing a select dropdown\r\n * @extends { AbstractController }\r\n */\r\nclass SelectController extends AbstractController {\r\n\r\n\tconstructor () {\r\n\t\tsuper();\r\n\t}\r\n\r\n\t/**\r\n\t * Initialises the controller.\r\n\t * Has to be called after ready event.\r\n\t *\r\n\t * @param { object } $root - jQuery wrapped DOM node\r\n\t * @public\r\n\t * @return { void }\r\n\t */\r\n\tinit ( $root ) {\r\n\t\tif ( $root.data( 'noJs' ) ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.$root = $root;\r\n\t\tthis.scope = $root[ 0 ];\r\n\t\tthis.isOpen = false;\r\n\t\tthis.isDisabled = false;\r\n\r\n\t\tthis.$nativeSelect = this.$root.find( 'select' );\r\n\t\tthis.$options = this.$root.find( 'option' );\r\n\t\tthis.$customSelect = this.$root.find( '.select-replace-container' );\r\n\r\n\t\tthis.placeholder = this.$nativeSelect.attr( 'placeholder' );\r\n\t\tthis.selectedOptions = [];\r\n\t\tthis.isMultiSelect = this.$nativeSelect.attr( 'multiple' );\r\n\r\n\t\tfasterdom.measureInstant( () => {\r\n\t\t\tthis.isDisabled = this.$nativeSelect.is( ':disabled' );\r\n\t\t} );\r\n\r\n\t\thandleChange.call( this );\r\n\r\n\t\tthis.$nativeSelect.on( 'change', handleChange.bind( this ) );\r\n\r\n\t\tif ( !userAgent.isMobile ) {\r\n\t\t\tgenerateCustomOptions.call( this );\r\n\t\t\tthis.$nativeSelect.on( 'mousedown', handleMousedown.bind( this ) );\r\n\t\t\tthis.$customSelect.on( 'click', handleClick.bind( this ) );\r\n\t\t\tthis.$nativeSelect.on( 'focus', showCustomSelectOptions.bind( this ) );\r\n\t\t\tthis.$nativeSelect.on( 'keydown', handleKeydown.bind( this ) );\r\n\t\t}\r\n\t\t\r\n\t\treturn this;\r\n\t}\r\n\r\n\tdestroy () {\r\n\t\tif ( this.$customOptions ) {\r\n\t\t\tthis.$customOptionsWrapper = null;\r\n\t\t\tthis.$customOptions.remove();\r\n\t\t\tthis.$customOptions = null;\r\n\t\t}\r\n\r\n\t\tthis.$nativeSelect.off( 'change' );\r\n\t\tthis.$nativeSelect.off( 'mousedown' );\r\n\t\tthis.$customSelect.off( 'click' );\r\n\t\tthis.$nativeSelect.off( 'focus' );\r\n\t\tthis.$nativeSelect.off( 'keydown' );\r\n\t}\r\n\r\n}\r\n\r\nexport default SelectController;\r\n\n\n\n// WEBPACK FOOTER //\n// ./js/forms/v2/controller/Select.controller.js","module.exports = require(\"regenerator-runtime\");\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/babel-runtime/regenerator/index.js\n// module id = 1439\n// module chunks = 4","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// This method of obtaining a reference to the global object needs to be\n// kept identical to the way it is obtained in runtime.js\nvar g = (function() { return this })() || Function(\"return this\")();\n\n// Use `getOwnPropertyNames` because not all browsers support calling\n// `hasOwnProperty` on the global `self` object in a worker. See #183.\nvar hadRuntime = g.regeneratorRuntime &&\n Object.getOwnPropertyNames(g).indexOf(\"regeneratorRuntime\") >= 0;\n\n// Save the old regeneratorRuntime in case it needs to be restored later.\nvar oldRuntime = hadRuntime && g.regeneratorRuntime;\n\n// Force reevalutation of runtime.js.\ng.regeneratorRuntime = undefined;\n\nmodule.exports = require(\"./runtime\");\n\nif (hadRuntime) {\n // Restore the original runtime.\n g.regeneratorRuntime = oldRuntime;\n} else {\n // Remove the global property added by runtime.js.\n try {\n delete g.regeneratorRuntime;\n } catch(e) {\n g.regeneratorRuntime = undefined;\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/babel-runtime/node_modules/regenerator-runtime/runtime-module.js\n// module id = 1440\n// module chunks = 4","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n!(function(global) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration. If the Promise is rejected, however, the\n // result for this iteration will be rejected with the same\n // reason. Note that rejections of yielded Promises are not\n // thrown back into the generator function, as is the case\n // when an awaited Promise is rejected. This difference in\n // behavior between yield and await is important, because it\n // allows the consumer to decide what to do with the yielded\n // rejection (swallow it and continue, manually .throw it back\n // into the generator, abandon iteration, whatever). With\n // await, by contrast, there is no opportunity to examine the\n // rejection reason outside the generator function, so the\n // only option is to throw it from the await expression, and\n // let the generator function handle the exception.\n result.value = unwrapped;\n resolve(result);\n }, reject);\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() { return this })() || Function(\"return this\")()\n);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/babel-runtime/node_modules/regenerator-runtime/runtime.js\n// module id = 1441\n// module chunks = 4","\"use strict\";\n\nexports.__esModule = true;\n\nvar _promise = require(\"../core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (fn) {\n return function () {\n var gen = fn.apply(this, arguments);\n return new _promise2.default(function (resolve, reject) {\n function step(key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n return _promise2.default.resolve(value).then(function (value) {\n step(\"next\", value);\n }, function (err) {\n step(\"throw\", err);\n });\n }\n }\n\n return step(\"next\");\n });\n };\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/babel-runtime/helpers/asyncToGenerator.js\n// module id = 1442\n// module chunks = 4","import AbstractController from '../../../base/controller/Abstract.controller';\n\n\n\nclass FileUploadController extends AbstractController {\n\n\tinit ( $scope, config ) {\n\t\tthis.$scope = $scope;\n\t\tthis.scope = $scope[ 0 ];\n\t\tthis.config = config;\n\n\t\tthis.input = this.scope.querySelector( 'input[type=\"file\"]' );\n\n\t\t// this.uploader = uploader( {\n\t\t// \tel : this.input\n\t\t// } );\n\t\t// console.log( 'DAHUI', this.input );\n\t\t//\n\t\t// this.uploader.on( 'files:added', ( files ) => {\n\t\t// \tconsole.log( files );\n\t\t// } );\n\t}\n\n}\n\nexport default FileUploadController;\n\n\n\n// WEBPACK FOOTER //\n// ./js/forms/v2/controller/FileUpload.controller.js","/**\n * Basic module class definition providing basic interface functions\n */\nclass BaseModule {\n\n\t/**\n\t * Initialize a module with a config provided by the AppConmoduleConfig\n\t * @param {moduleConfig} moduleConfig - Config parsed from teh DOM\n\t */\n\tconstructor ( moduleConfig ) {\n\n\t\t/**\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.node = moduleConfig.node;\n\t\t/**\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.config = moduleConfig.config;\n\t\t/**\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tthis.identifier = moduleConfig.identifier;\n\t}\n\n\tinit () {\n\t\treturn this;\n\t}\n\n\t/**\n\t * @return {string} returns the identifier for the module instance\n\t */\n\tgetIdentifier () {\n\t\treturn this.identifier;\n\t}\n}\n\nexport default BaseModule;\n\n\n\n// WEBPACK FOOTER //\n// ./js/modules/Base.module.js","import BaseModule from './../../Base.module';\r\nimport FormServiceV2 from './../../../forms/v2/services/Forms.service';\r\n\r\n/**\r\n * @extends {BaseModule}\r\n */\r\nclass FormV2 extends BaseModule {\r\n\r\n\tconstructor ( config ) {\r\n\r\n\t\tsuper( config );\r\n\t}\r\n\r\n\tinit () {\r\n\t\tsuper.init();\r\n\t\tFormServiceV2.init();\r\n\t}\r\n}\r\n\r\nexport default FormV2;\r\n\n\n\n// WEBPACK FOOTER //\n// ./js/modules/forms/v2/index.js","export default {\r\n\tTAB : 9,\r\n\tUP : 38,\r\n\tDOWN : 40,\r\n\tENTER : 13\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./js/modules/repositories/Keycode.repository.js"],"sourceRoot":""}